Submitting FHIR Messages

How to send a FHIR request to innovation-lab's LITE & FULL Services


Message Submission Overview

 

eHealth Ontario’s current FHIR web services are based on FHIR JSON RESTful services.

 

REST stands for Representational State Transfer. It is built on top of the HTTP protocol and is simply a set of rules that both server and client use to exchange data over the web. HTTP is a request/response protocol meaning that you (the client) make a request and the server replies with a response. Each transaction is performed directly on the server resource but does not directly address authentication, authorization, and audit collection. 

 

  • In order to send FHIR messages to eHealth’s innovation-lab, the message must have:
    • GET request followed by a URL
    • HTTP Header

 

HTTP Header:

Client Transaction ID

A custom HTTP header with the client transaction ID call ClientTxID must be included in the HTTP headers.  The consumer application must create a unique client transaction ID for each transaction. These will be used during troubleshooting in order to identify the transaction from point of view of the consumer.

 

X-Sender-Id (LITE Services specific)

This is where you indicate who you are and send your Unique Sender Identifier

 

X-License-Text (LITE Services specific)

This is where "Terms and Conditions" clause is used: I hereby accept the service agreement here: https://innovation-lab.ca/media/1147/innovation-lab-terms-of-use.pdf

 

Authentication (FULL Services specific)

This variable carries "Bearer" authentication token:  Bearer <followed by base64 encoded SAML>

 

Registry Specific Values 

Some Registries require specific variables, you can look to see what the Test Harness generates and use them from there, or just look it up in the documentation

 

Example of a GET request with HTTP header: 

GET http://lite.innovation-lab.ca:9443/dispense-service/MedicationDispense?patient:patient.identifier=https://ehealthontario.ca/API/FHIR/NamingSystem/ca-on-patient-hcn|6948425589  HTTP/1.1

ClientTxID: 12345

X-Sender-Id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

X-License-Text: I hereby accept the service agreement here: https://innovation-lab.ca/media/1147/innovation-lab-terms-of-use.pdf

User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

 

FHIR Response

After processing the request message, a response message will be sent to the caller.  The response message will be in a FHIR Bundle Resource that contains the Operation Outcome and Diagnostic Report Resources.  FHIR uses Operation Outcome to provide detailed information about the success of a request/response.  The Bundle contains a Diagnostic Report entry for each lab result; each Diagnostic Report resource will have internal “contained” resources packaged inside for internal references.

 

Errors

FHIR uses Operation Outcome specifies error, warning and additional information messages regarding direct system response, component, or detail about the outcome of an operation. Further information regarding error message handling and its application in FHIR can be found at the HL7.org FHIR documentation for the OperationOutcome resource. 

Example error message: 

 <Bundle xmlns="http://hl7.org/fhir">

               <id value="0d1ae135-3f06-4592-a5b2-9eb0c470f1a0"/>

               <meta>

                              <lastUpdated value="2016-10-25T12:52:07.708-04:00"/>

               </meta>

               <type value="searchset"/>

               <total value="1"/>

               <link>

                              <relation value="self"/>

                              <url value="http://localhost:6758/DiagnosticReport?issued=2009-08-17"/>

               </link>

               <entry>

               <fullUrl value="http://localhost:6758/OperationOutcome/ec37c27b-985e-4c6a-839b-dd8233b2f9b1"/>

                              <resource>

                                             <OperationOutcome xmlns="http://hl7.org/fhir">

                                             <id value="ec37c27b-985e-4c6a-839b-dd8233b2f9b1"/>

                                             <issue>

                                                            <severity value="error"/>

                                             </issue>

                                             </OperationOutcome>

                              </resource>

               </entry>

</Bundle>