FHIR:Vprepub-1.0 FHIR Error handling examples: verschil tussen versies

Uit informatiestandaarden
Naar navigatie springen Naar zoeken springen
(MM-3475: Changed incorrect HTTP status code of request with syntactically incorrect parameter, fixed several typos and inconsistencies)
 
(6 tussenliggende versies door 3 gebruikers niet weergegeven)
Regel 2: Regel 2:
 
__NUMBEREDHEADINGS__
 
__NUMBEREDHEADINGS__
 
{{DISPLAYTITLE:FHIR IG Error handling examples}}
 
{{DISPLAYTITLE:FHIR IG Error handling examples}}
{{MedMij:V2020.01/Issuebox_FHIR_IG}}
 
 
=Error handling examples=
 
=Error handling examples=
 
This page provides guidance on how a server could handle errors. Examples are provided in XML format but could have been in JSON format as well. Please note: these examples are not considered to be part of the normative content of the implementation guide.  
 
This page provides guidance on how a server could handle errors. Examples are provided in XML format but could have been in JSON format as well. Please note: these examples are not considered to be part of the normative content of the implementation guide.  
  
 
==All interactions==
 
==All interactions==
 +
===Not authorized===
 +
{| class="wikitable"
 +
|-
 +
| '''Scenario'''
 +
| Not authorized.
 +
|-
 +
| '''Request'''
 +
| <pre> GET [base]/Practitioner/86475712701</pre>
 +
|-
 +
| '''Response'''
 +
|
 +
* HTTP 401 Unauthorized
 +
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|security}} or if applicable a more specific child code.
 +
|}
 +
{{Collapse top|XML contents - response}}
 +
<syntaxhighlight lang="xml">
 +
<OperationOutcome xmlns="http://hl7.org/fhir">
 +
    <id value="01464674-b4b6-11eb-8529-0242ac130003" />
 +
    <text>
 +
    ...
 +
    </text>
 +
    <issue>
 +
        <severity value="error"/>
 +
        <code value="security"/>
 +
        <details>
 +
            <text value="Not authorized to access this resource"/>
 +
        </details>
 +
    </issue>
 +
</OperationOutcome>
 +
</syntaxhighlight>
 +
{{Collapse bottom}}
 
===Invalid authorization===
 
===Invalid authorization===
 
{| class="wikitable"  
 
{| class="wikitable"  
Regel 18: Regel 48:
 
| '''Response'''
 
| '''Response'''
 
|  
 
|  
* HTTP 401 Unauthorized
+
* HTTP 403 Forbidden
* OperationOutcome with <code>code</code> set to "''security''" or if applicable a more specific child code.  
+
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|security}} or if applicable a more specific child code.  
 
|}
 
|}
 
{{Collapse top|XML contents - response}}
 
{{Collapse top|XML contents - response}}
Regel 32: Regel 62:
 
         <code value="security"/>
 
         <code value="security"/>
 
         <details>
 
         <details>
             <text value="User authentication failed."/>
+
             <text value="Read access forbidden"/>
 
         </details>
 
         </details>
 
     </issue>
 
     </issue>
Regel 38: Regel 68:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{Collapse bottom}}
 
{{Collapse bottom}}
 +
 
===Resource is not supported===
 
===Resource is not supported===
 
{| class="wikitable"  
 
{| class="wikitable"  
Regel 50: Regel 81:
 
|
 
|
 
* HTTP 404 Not Found
 
* HTTP 404 Not Found
* OperationOutcome with <code>code</code> set to "''not-supported''"
+
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|not-supported}}.
 
|}
 
|}
  
Regel 70: Regel 101:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{Collapse bottom}}
 
{{Collapse bottom}}
 +
 
==Search==
 
==Search==
 
===Unkown or unsupported search parameter value===
 
===Unkown or unsupported search parameter value===
Regel 84: Regel 116:
 
|
 
|
 
* HTTP 200 OK
 
* HTTP 200 OK
* Empty Bundle of <code>type</code> "''searchset''"
+
* Empty Bundle of {{fhir|.type}} {{term|searchset}}.
* OperationOutcome in Bundle as an entry marked with <code>Bundle.entry.search.mode</code> of "''outcome''"
+
* OperationOutcome in Bundle as an entry marked with {{fhir|Bundle.entry.search.mode}} set to {{term|outcome}}.
* OperationOutcome with <code>code</code> set to "''not-found''" and <code>severity</code> not set to "''fatal''" or "''error''"
+
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|not-found}} and {{fhir|OperationOutcome.severity}} not set to {{term|fatal}} or {{term|error}}.
 
|}
 
|}
 
{{Collapse top|XML contents - response}}
 
{{Collapse top|XML contents - response}}
Regel 135: Regel 167:
 
|-
 
|-
 
| '''Response'''
 
| '''Response'''
| * HTTP Status code 404 Not Found<br />* OperationOutcome
+
|  
 +
* HTTP 400 Bad Request
 +
* OperationOutcome. There are various issue type codes that could be used, depending on the nature of the error.
 
|}
 
|}
 +
 
{{Collapse top|XML contents - response}}
 
{{Collapse top|XML contents - response}}
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
Regel 160: Regel 195:
 
|-
 
|-
 
| '''Scenario'''
 
| '''Scenario'''
| The id is not known by the server
+
| The id is not known by the server.
 
|-
 
|-
 
| '''Request'''
 
| '''Request'''
Regel 166: Regel 201:
 
|-
 
|-
 
| '''Response'''
 
| '''Response'''
| * HTTP Status code 404 Not Found<br />* OperationOutcome
+
|  
 +
* HTTP 404 Not Found
 +
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|not-found}}.
 
|}
 
|}
 +
 
{{Collapse top|XML contents - response}}
 
{{Collapse top|XML contents - response}}
 
<syntaxhighlight lang="xml">
 
<syntaxhighlight lang="xml">
Regel 197: Regel 235:
 
|  
 
|  
 
* HTTP 400 Bad Request
 
* HTTP 400 Bad Request
OperationOutcome with <code>code</code> set to "''invalid''"
+
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|invalid}}.
 
|}
 
|}
  
Regel 232: Regel 270:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{Collapse bottom}}
 
{{Collapse bottom}}
===Resource syntax or data is incorrect or invalid===
+
 
 +
===Resource syntax or data is incorrect, invalid or unsupported===
 
{| class="wikitable"  
 
{| class="wikitable"  
 
|-
 
|-
 
| '''Scenario'''
 
| '''Scenario'''
| Resource syntax or data is incorrect or invalid.
+
| Resource syntax or data is incorrect, invalid or unsupported.
 
|-
 
|-
 
| '''Request'''
 
| '''Request'''
Regel 243: Regel 282:
 
| '''Response'''
 
| '''Response'''
 
|  
 
|  
* HTTP 400 Bad Request or HTTP 422 Uprocessable Entity
+
* HTTP 400 Bad Request or HTTP 422 Unprocessable Entity
* OperationOutcome with <code>code</code> set to "''invalid''" or a more specific child code.
+
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|invalid}} or a more specific child code.
 
|}
 
|}
 
{{Collapse top|XML contents - request}}
 
{{Collapse top|XML contents - request}}
Regel 281: Regel 320:
 
         <diagnostics value="value.empty() or system.exists()" />
 
         <diagnostics value="value.empty() or system.exists()" />
 
         <location value="Patient.telecom[0]" />
 
         <location value="Patient.telecom[0]" />
 +
    </issue>
 +
</OperationOutcome>
 +
</syntaxhighlight>
 +
{{Collapse bottom}}
 +
 +
{| class="wikitable"
 +
|-
 +
| '''Scenario'''
 +
| Resource syntax or data is incorrect, invalid or unsupported.
 +
|-
 +
| '''Request'''
 +
| <pre> POST [base]/Observation</pre>
 +
|-
 +
| '''Response'''
 +
|
 +
* HTTP 400 Bad Request or HTTP 422 Unprocessable Entity
 +
* OperationOutcome with {{fhir|OperationOutcome.issue.code}} set to {{term|invalid}} or a more specific child code.
 +
|}
 +
{{Collapse top|XML contents - request}}
 +
<syntaxhighlight lang="xml">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
 +
<Observation xmlns="http://hl7.org/fhir">
 +
    <id value="example"/>
 +
    ...
 +
    <category>
 +
        <coding>
 +
            <system value="http://hl7.org/fhir/observation-category"/>
 +
            <code value="vital-signs"/>
 +
            <display value="Vital Signs"/>
 +
        </coding>
 +
    </category>
 +
    <code>
 +
        <coding>
 +
            <system value="http://loinc.org"/>
 +
            <code value="39156-5"/>
 +
            <display value="Body mass index (BMI)"/>
 +
        </coding>
 +
    </code>
 +
    ...
 +
</Observation>
 +
</syntaxhighlight>
 +
{{Collapse bottom}}
 +
 +
{{Collapse top|XML contents - response}}
 +
<syntaxhighlight lang="xml">
 +
<OperationOutcome xmlns="http://hl7.org/fhir">
 +
    <id value="c8bc9de0-5141-40dd-9a06-7134109d8ce0" />
 +
    <text>
 +
    ...
 +
    </text>
 +
    <issue>
 +
        <severity value="error" />
 +
        <code value="not-supported" />
 +
        <details>
 +
            <text value="Unsupported code value" />
 +
        </details>
 +
        <location value="Observation.code[0]" />
 
     </issue>
 
     </issue>
 
</OperationOutcome>
 
</OperationOutcome>
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{Collapse bottom}}
 
{{Collapse bottom}}

Huidige versie van 24 aug 2022 om 06:14


1 Error handling examples

This page provides guidance on how a server could handle errors. Examples are provided in XML format but could have been in JSON format as well. Please note: these examples are not considered to be part of the normative content of the implementation guide.

1.1 All interactions

1.1.1 Not authorized

Scenario Not authorized.
Request
 GET [base]/Practitioner/86475712701
Response
  • HTTP 401 Unauthorized
  • OperationOutcome with OperationOutcome.issue.code set to security or if applicable a more specific child code.

1.1.2 Invalid authorization

Scenario Invalid authorization.
Request
 GET [base]/Patient/20118482245
Response
  • HTTP 403 Forbidden
  • OperationOutcome with OperationOutcome.issue.code set to security or if applicable a more specific child code.

1.1.3 Resource is not supported

Scenario The Resource is not supported by the resource server.
Request
GET [base]/Questionnaire
Response
  • HTTP 404 Not Found
  • OperationOutcome with OperationOutcome.issue.code set to not-supported.

1.2 Search

1.2.1 Unkown or unsupported search parameter value

Scenario

Unknown or unsupported search parameter value. In this example scenario, the Consent endpoint is supported. Although a system has implemented support for the HCIM TreatmentDirective (category=http://snomed.info/sct|11291000146105) it has not implemented the HCIM AdvanceDirective (category=http://snomed.info/sct|11341000146107).

Request
GET [base]/Consent?category=http://snomed.info/sct|11341000146107
Response
  • HTTP 200 OK
  • Empty Bundle of .type searchset.
  • OperationOutcome in Bundle as an entry marked with Bundle.entry.search.mode set to outcome.
  • OperationOutcome with OperationOutcome.issue.code set to not-found and OperationOutcome.severity not set to fatal or error.

1.2.2 Syntactically incorrect parameter

Scenario Syntactically incorrect parameter in the search request.
Request
 GET [base]/Procedure?patient:john
Response
  • HTTP 400 Bad Request
  • OperationOutcome. There are various issue type codes that could be used, depending on the nature of the error.

1.3 Read

1.3.1 Request on an unknown id

Scenario The id is not known by the server.
Request
GET [base]/Patient/wrong-id
Response
  • HTTP 404 Not Found
  • OperationOutcome with OperationOutcome.issue.code set to not-found.

1.4 Create/Update

1.4.1 No or incorrect Resource id

Scenario Update an existing Patient resource, using a wrong id in the Resource.
Request
 PUT [base]/Patient/34235234
Response
  • HTTP 400 Bad Request
  • OperationOutcome with OperationOutcome.issue.code set to invalid.

1.4.2 Resource syntax or data is incorrect, invalid or unsupported

Scenario Resource syntax or data is incorrect, invalid or unsupported.
Request
 POST [base]/Patient
Response
  • HTTP 400 Bad Request or HTTP 422 Unprocessable Entity
  • OperationOutcome with OperationOutcome.issue.code set to invalid or a more specific child code.
Scenario Resource syntax or data is incorrect, invalid or unsupported.
Request
 POST [base]/Observation
Response
  • HTTP 400 Bad Request or HTTP 422 Unprocessable Entity
  • OperationOutcome with OperationOutcome.issue.code set to invalid or a more specific child code.