Message Structure ***************** This section describes the message structure used by LinuxForHealth connect, and shows typical examples. Structure ========= The following JSON message structure is used throughout LinuxForHealth:: { uuid: uuid, lfh_id: string, creation_date: datetime, store_date: datetime, consuming_endpoint_url: string, data: string, data_format: string, status: string, data_record_location: string, target_endpoint_url: string, elapsed_storage_time: float, transmit_date: datetime, elapsed_transmit_time: float, elapsed_total_time: float } Description =========== The LinuxForHealth connect message format captures metadata pertaining to the data transaction. Data is received via an endpoint, as noted by the consuming_endpoint_url, and then persisted to the connect database. Data is transmitted to an external service if a transmission URL is configured. +------------------------+-----------+---------------------------------------------------------------------+ | Key | Type | Description | +========================+===========+=====================================================================+ | uuid | string | The message uuid assigned during route invocation. | +------------------------+-----------+---------------------------------------------------------------------+ | lfh_id | string | The LinuxForHealth connect node identifier. | +------------------------+-----------+---------------------------------------------------------------------+ | creation_date | datetime | The message creation timestamp. | +------------------------+-----------+---------------------------------------------------------------------+ | store_date | datetime | The message storage timestamp. | +------------------------+-----------+---------------------------------------------------------------------+ | consuming_endpoint_url | string | The LinuxForHealth connect endpoint which received the message. | +------------------------+-----------+---------------------------------------------------------------------+ | data | string | Data content received as a base-64 encoded string. | +------------------------+-----------+---------------------------------------------------------------------+ | status | string | Indicates if the message was persisted. Either "success" or "error".| +------------------------+-----------+---------------------------------------------------------------------+ | data_record_location | string | The data record's URI within the LinuxForHealth connect datastore. | +------------------------+-----------+---------------------------------------------------------------------+ | target_endpoint_url | string | The external URL where the data is transmitted. | +------------------------+-----------+---------------------------------------------------------------------+ | elapsed_storage_time | float | Elapsed data storage time in seconds. | +------------------------+-----------+---------------------------------------------------------------------+ | transmit_date | datetime | The data transmission timestamp. | +------------------------+-----------+---------------------------------------------------------------------+ | elapsed_transmit_time | datetime | Elapsed external transmission time in seconds. | +------------------------+-----------+---------------------------------------------------------------------+ | elapsed_total_time | datetime | Elapsed total transmission time including storage and transmission | +------------------------+-----------+---------------------------------------------------------------------+ Examples ======== The LinuxForHealth message for a FHIR-R4 Patient resource which is persisted to the connect db:: { "uuid": "fd09c54d-4e64-478c-93bb-456e0cfe67f4", "lfh_id": "My-Computer.net", "creation_date": "2021-04-07T21:08:45+00:00", "store_date": "2021-04-07T21:08:45+00:00", "consuming_endpoint_url": "/fhir/Patient", "data": "eyJiaXJ0aERhdGUiOiAiMTk3NC0xMi0yNSIsICJnZW5kZXIiOiAibWFsZSIsICJpZGVudGlmaWVyIjogW3sic3lzdGVtIjogInVybjpvaWQ6MS4yLjM2LjE0Ni41OTUuMjE3LjAuMSIsICJ2YWx1ZSI6ICIxMjM0NSJ9XSwgIm5hbWUiOiBbeyJmYW1pbHkiOiAiRHVjayIsICJnaXZlbiI6IFsiRG9uYWxkIiwgIkQuIl19XSwgInJlc291cmNlVHlwZSI6ICJQYXRpZW50In0=", "data_format": "FHIR-R4", "status": null, "data_record_location": null, "target_endpoint_url": null, "elapsed_storage_time": null, "transmit_date": null, "elapsed_transmit_time": null, "elapsed_total_time": null } The **data** field contains a base64-encoded version of the original data sent to LinuxForHealth. Some fields, like **data_record_location**, are not available until after the storage is complete. When a transaction is complete, the resulting LinuxForHealth message contains the **data_record_location**, as well as the storage **status** and metrics such as **elapsed_storage_time**:: { "uuid": "290487e0-2864-445b-acc7-907c227ba2d3", "lfh_id": "3b935d2b1441", "creation_date": "2021-04-09T20:34:36+00:00", "store_date": "2021-04-09T20:34:36+00:00", "consuming_endpoint_url": "/fhir/Patient", "data": "eyJpZCI6ICIwMDEiLCAiYWN0aXZlIjogdHJ1ZSwgInJlc291cmNlVHlwZSI6ICJQYXRpZW50In0=", "data_format": "FHIR-R4", "status": "success", "data_record_location": "FHIR-R4:0:0", "target_endpoint_url": null, "elapsed_storage_time": 1.64379, "transmit_date": null, "elapsed_transmit_time": null, "elapsed_total_time": 1.680011 } You may also define an external server to which LinuxForHealth will send messages, such as a FHIR server. In this case, the message stored in the connect DB will include a value for **target_endpoint_url**:: { "uuid": "fd09c54d-4e64-478c-93bb-456e0cfe67f4", "lfh_id": "My-Computer.net", "creation_date": "2021-04-07T21:08:45+00:00", "store_date": "2021-04-07T21:08:45+00:00", "consuming_endpoint_url": "/fhir/Patient", "data": "eyJiaXJ0aERhdGUiOiAiMTk3NC0xMi0yNSIsICJnZW5kZXIiOiAibWFsZSIsICJpZGVudGlmaWVyIjogW3sic3lzdGVtIjogInVybjpvaWQ6MS4yLjM2LjE0Ni41OTUuMjE3LjAuMSIsICJ2YWx1ZSI6ICIxMjM0NSJ9XSwgIm5hbWUiOiBbeyJmYW1pbHkiOiAiRHVjayIsICJnaXZlbiI6IFsiRG9uYWxkIiwgIkQuIl19XSwgInJlc291cmNlVHlwZSI6ICJQYXRpZW50In0=", "data_format": "FHIR-R4", "status": null, "data_record_location": null, "target_endpoint_url": "https://fhiruser:change-password@localhost:9443/fhir-server/api/v4", "elapsed_storage_time": null, "transmit_date": null, "elapsed_transmit_time": null, "elapsed_total_time": null } When an external server is defined, the return value is the actual response from that external server (such as an HTTP 201 - created response). In this case, the LinuxForHealth message UUID is included in the **LinuxForHealth-MessageId** header of the response.