The current ballot does not have documentation on what to return when specific circumstances happen that would preclude returning a proper response. Furthermore it is very important that Immunization Decision Support systems inspect all input data to ensure that it is read properly otherwise the decision support may indicate the wrong action. If the incoming data cannot be read properly than a negative Operation Outcome should be returned.
Brian Lee from STC has proposed a set of possible Operation Outcomes and created software code to demonstrate this. The project is available here on github.
The table below is the summary of his proposed conditions. These need to reviewed by the group and additional concepts added as needed. The last three columns are the values that should be sent in Operation Outcome.
|HTTP Error||Condition||Explanation||severity |
|404 (Resource not found)||This message is returned when the requested resource doesn't exist.|
|405 (Method not allowed)||This message is returned when an HTTP operation isn't allowed for a resource.|
|422 (Client error, data validation fault)||Assessment Date is before DOB||Illogical Date error: Assessment date must be after date of birth||error|
|Vaccination Date is before DOB||Illogical Date error: Vaccination Date must be on or after date of birth||error|
|Medical Observation Date is before DOB||Illogical Date error: Medical Observation Date must be on or after date of birth|
|Observation Code is not recognized||Unrecognized observation code|
|Antigen Series is not recognized||Unrecognized antigen series|
|Patient DOB is missing||Missing Date error: patientDob is required||error||required|
|Vaccination Date is missing||Missing Date error: vaccineDate is required||error|
|Date is not valid||DOB value, invalid date||error||structure||MSG_BAD_FORMAT|
|vaccineCode is not recognized||Vaccination code is not recognized||error or warning|
|vaccineCode is not supported||Vaccination code is a concept that is not supported or accounted in the forecast||warning|
|500 (Non-Transient Exception, not going to get better, don't retry)||This message is returned when a non-transient exception is encountered. An example could be when a configuration file isn't found.|
|503 (Transient Exception, might get better later)||This message is returned when a transient Exception is encountered. Like when all the connections in a connection pool are being used. Connections might be available later as connections are released to the pool.|
- How is the Operation Outcome is returned? Can it be returned in the case of warnings? How would this look?
- Can more than Operation Outcome be returned?
- Should we require systems requesting to always display errors and warnings?
- Should we require that there be human readable details about the error? Or just recommend this? The text of the error can be placed in details.text. Additional information can also be placed in diagnostics.