Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

There are a number of different standard standards available for exchanging clinical information between disparate systems. For the OpenHIE Shared Health Record (SHR) we need to choose to support the standards that make the most sense for our environment. The chosen standard will be used to help define the format of the message that get exchanged with the SHR via its interface. OpenHIE implementations will focus on middle to low income countries so that we can make the most impact. Therefore, we have some key criteria that will influence the decision of what standards would be the 'best' to support. These are as follows:

...

  • Custom profiles of HL7 v2
  • Custom profiles of HL7 v3
  • IHE profiles
  • FHIR profiles

Each of these has are described in more details below:

HL7 v2

Overview

HL7 v2 messages are very popular and are commonly used as a message exchange format. This standard has been around for a long time so it has a large number of freely available tools that developers can make use of. It consists of a large number of message types for many different use cases each with their own structure and defined syntax. For technical interoperability HL7v2 employs the MLLP protocol that build upon TCP sockets. HL7 v2 messages can be encoded in either the ER7 (pipes and bars) format or as XML. The XML format allows HL7 v2 to be used in more current day web services.

How could this standard be used in the SHR

We could make use of a specific message types that we profile ourselves so that the use of them well known. For example we could make use of the ORU_R01 message type to transmit patient encounters by using OBX segments within the message.

Pros/Cons

Pros:

  • Mature tooling
  • Well known and understood
  • Efficient message size

Cons

  • Legacy format
  • Z segments ruins interoperability
  • The base standard need to be profiled to provide actual interoperability between systems

Sample Messages

A question has been raised about whether we should support multiple standards. The feeling of the community is that we would eventually like to support multiple standards that are deemed useful. For example, FHIR may be useful in the future for more advanced querying of the SHR data. This brings up the question of external-facing standards (the ones the users of the HIE use) and the internal-facing standards (the ones used between components of the HIE) should always be the same or if we can expect to do transformation between different standards. The feeling of the community has been that we should not do transformations between different standards and rather expose multiple standards interfaces both internally and externally if needed. the reason for this is that it can be complex mapping and transforming messages between formats. This does not mean that we will do no transformation of messages, merely, that the transformation that we expect will be needed are transformation of the base standards to a more conformant form of that same base standards. For example, enriching a HL7 message to contain additional required patient information. 

Each of the above standards are described in more detail below:

HL7 v2

Overview

HL7 v2 messages are very popular and are commonly used as a message exchange format. This standard has been around for a long time so it has a large number of freely available tools that developers can make use of. It consists of a large number of message types for many different use cases each with their own structure and defined syntax. For technical interoperability HL7v2 employs the MLLP protocol that build upon TCP sockets. HL7 v2 messages can be encoded in either the ER7 (pipes and bars) format or as XML. The XML format allows HL7 v2 to be used in more current day web services.

How could this standard be used in the SHR

We could make use of a specific message types that we profile ourselves so that the use of them well known. For example we could make use of the ORU_R01 message type to transmit patient encounters by using OBX segments within the message.

Pros/Cons

Pros:

  • Mature tooling
  • Well known and understood
  • Efficient message size

Cons

  • Legacy format
  • Z segments ruins interoperability
  • The base standard need to be profiled to provide actual interoperability between systems

Sample Messages

Code Block
languagexml
titleHL7 v2 ORU_R01 in XML format
collapsetrue
<?xml version="1.0"?>
<ORU_R01 xmlns="urn:hl7-org:v2xml">
    <MSH>
        <MSH.1>|</MSH.1>
        <MSH.2>^~\&amp;amp;</MSH.2>
        <MSH.4>
            <HD.1>363</HD.1>
        </MSH.4>
        <MSH.6>
            <HD.1>Shared Health Record</HD.1>
        </MSH.6>
        <MSH.7>
            <TS.1>20120918160235</TS.1>
        </MSH.7>
        <MSH.9>
            <MSG.1>ORU</MSG.1>
            <MSG.2>R01</MSG.2>
            <MSG.3>ORU_R01</MSG.3>
        </MSH.9>
        <MSH.10>63357449-6a6c-4faa-af7a-e8843a545c31</MSH.10>
        <MSH.11>
            <PT.1>D</PT.1>
            <PT.2>C</PT.2>
        </MSH.11>
        <MSH.12>
            <VID.1>2.5</VID.1>
            <VID.2>
                <CE.1>RWA</CE.1>
            </VID.2>
        </MSH.12>
        <MSH.21>
            <EI.1>CLSM_V0.83</EI.1>
        </MSH.21>
    </MSH>
    <ORU_R01.PATIENT_RESULT>
        <ORU_R01.PATIENT>
            <PID>
                <PID.3>
                    <CX.1>1234567890456789</CX.1>
                    <CX.5>NID</CX.5>
                </PID.3>
                <PID.3>
                    <CX.1>3630NX3X-J</CX.1>
                    <CX.5>OMRS363</CX.5>
                </PID.3>
                <PID.5>
                    <XPN.1>
                        <FN.1>Umurwayi</FN.1>
                    </XPN.1>
                    <XPN.2>Test</XPN.2>
                </PID.5>
            </PID>
            <ORU_R01.VISIT>
                <PV1>
                    <PV1.2>0</PV1.2>
                    <PV1.3>
                        <PL.1>111</PL.1>
                        <PL.4>
                            <HD.1>Ruhunda</HD.1>
                        </PL.4>
                    </PV1.3>
                    <PV1.4>ANC</PV1.4>
                    <PV1.7>
                        <XCN.1>3525410</XCN.1>
                        <XCN.2>
                            <FN.1>doctor</FN.1>
                        </XCN.2>
                        <XCN.3>john</XCN.3>
                        <XCN.13>NID</XCN.13>
                    </PV1.7>
                    <PV1.44>
                        <TS.1>201209180402</TS.1>
                    </PV1.44>
                </PV1>
            </ORU_R01.VISIT>
        </ORU_R01.PATIENT>
        <ORU_R01.ORDER_OBSERVATION>
            <ORC>
                <ORC.1>RE</ORC.1>
                <ORC.9>
                    <TS.1>201209181602</TS.1>
                </ORC.9>
                <ORC.12>
                    <XCN.1>259086</XCN.1>
                </ORC.12>
                <ORC.16>
                    <CE.1>Identifier</CE.1>
                    <CE.2>Text</CE.2>
                    <CE.3>Name of Coding System</CE.3>
                </ORC.16>
            </ORC>
            <OBR>
                <OBR.1>0</OBR.1>
                <OBR.3>
                    <EI.1>1437</EI.1>
                </OBR.3>
                <OBR.4>
                    <CE.2>ANC</CE.2>
                </OBR.4>
                <OBR.7>
                    <TS.1>201209180000</TS.1>
                </OBR.7>
                <OBR.20>111</OBR.20>
                <OBR.21>Ruhunda</OBR.21>
            </OBR>
        </ORU_R01.ORDER_OBSERVATION>
        <ORU_R01.ORDER_OBSERVATION>
            <OBR>
                <OBR.1>1</OBR.1>
                <OBR.18>0</OBR.18>
                <OBR.29>
                    <EIP.2>
                        <EI.3>1437</EI.3>
                    </EIP.2>
                </OBR.29>
            </OBR>
            <ORU_R01.OBSERVATION>
                <OBX>
                    <OBX.1>0</OBX.1>
                    <OBX.2>CE</OBX.2>
                    <OBX.3>
                        <CE.1>72179-5</CE.1>
                        <CE.2>Given Sulfadoxin Pyrimethamine</CE.2>
                        <CE.3>LOINC</CE.3>
                    </OBX.3>
                    <OBX.5>
                        <CE.1>1065</CE.1>
                        <CE.2>YES</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.5>
                    <OBX.14>
                        <TS.1>20120918160235</TS.1>
                    </OBX.14>
                </OBX>
            </ORU_R01.OBSERVATION>
            <ORU_R01.OBSERVATION>
                <OBX>
                    <OBX.1>1</OBX.1>
                    <OBX.2>CE</OBX.2>
                    <OBX.3>
                        <CE.1>8406</CE.1>
                        <CE.2>Given Mebendazole</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.3>
                    <OBX.5>
                        <CE.1>1065</CE.1>
                        <CE.2>YES</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.5>
                    <OBX.14>
                        <TS.1>20120918160235</TS.1>
                    </OBX.14>
                </OBX>
            </ORU_R01.OBSERVATION>
            <ORU_R01.OBSERVATION>
                <OBX>
                    <OBX.1>2</OBX.1>
                    <OBX.2>CE</OBX.2>
                    <OBX.3>
                        <CE.1>72187-8</CE.1>
                        <CE.2>Given tetanus vaccine</CE.2>
                        <CE.3>LOINC</CE.3>
                    </OBX.3>
                    <OBX.5>
                        <CE.1>1065</CE.1>
                        <CE.2>YES</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.5>
                    <OBX.14>
                        <TS.1>20120918160235</TS.1>
                    </OBX.14>
                </OBX>
            </ORU_R01.OBSERVATION>
            <ORU_R01.OBSERVATION>
                <OBX>
                    <OBX.1>3</OBX.1>
                    <OBX.2>CE</OBX.2>
                    <OBX.3>
                        <CE.1>72180-3</CE.1>
                        <CE.2>Was the woman given iron and folic acid?</CE.2>
                        <CE.3>LOINC</CE.3>
                    </OBX.3>
                    <OBX.5>
                        <CE.1>1065</CE.1>
                        <CE.2>YES</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.5>
                    <OBX.14>
                        <TS.1>20120918160235</TS.1>
                    </OBX.14>
                </OBX>
            </ORU_R01.OBSERVATION>
            <ORU_R01.OBSERVATION>
                <OBX>
                    <OBX.1>4</OBX.1>
                    <OBX.2>CE</OBX.2>
                    <OBX.3>
                        <CE.1>72178-7</CE.1>
                        <CE.2>Given Mosquito Nets</CE.2>
                        <CE.3>LOINC</CE.3>
                    </OBX.3>
                    <OBX.5>
                        <CE.1>1065</CE.1>
                        <CE.2>YES</CE.2>
                        <CE.3>RWCS</CE.3>
                    </OBX.5>
                    <OBX.14>
                        <TS.1>20120918160235</TS.1>
                    </OBX.14>
                </OBX>
            </ORU_R01.OBSERVATION>
        </ORU_R01.ORDER_OBSERVATION>
    </ORU_R01.PATIENT_RESULT>
</ORU_R01>

...

Integrating the Healthcare Enterprise (IHE) is an initiative that attempts to improve the way in which health information systems share information. IHE produce technical specifications for health information systems interoperability. Specifications that relate to a particular problem are grouped in an IHE profile. Standardised IHE profiles such as XDS or PIX describe and restrict the use of other standards in order to achieve full system, syntactic and semantic interoperability. IHE profiles are pragmatic as they attempt to make use of existing standard that already have wide adoption so that integration of the IHE profile into existing systems can be simplified. IHE profiles are also very use case specific. This has the benefit of allowing them to clearly specify exactly how semantic interoperability can be achieved, however, it also mean means that different IHE profiles are needed for each different use casescase. IHE covers many of the priority use cases, however, it is difficult to cover all use cases due to the many different uses of health system information exchange world-wide.

...

We could identify certain profiles that could achieve the goals needed for a SHR (transmitting structured and unstructured clinical information). For example, we could make use of the XDS profile to convey documents and make use of defined CDA document types to ensure semantic interoperability.

Pros/Cons

Pros:

We could make use of the IHE Patient Care Coordination technical framework to provide specifications for the specific CDA document types that we support: http://wiki.ihe.net/index.php?title=Patient_Care_Coordination_Technical_Framework

Pros/Cons

Pros:

  • Standards are tested in the Standards are tested in the field
  • Highly specified transaction and message formats

...

Our current reasoning about the choice of standards

It seems from our reading that the use of HL7 v3 in its base form is too difficult and takes a lot of health informatics experts to specify the messages that are needed. So base HL7 v3 does not seem like the way to go for our use case. FHIR looks like a good option for the future but it is currently too new, the tooling support is poor and fact that it is only now entering its trial use period makes it a poor first choice. This leaves us with profiles HL7 v2 which many people are familiar with and have used with success and IHE profiles (perhaps using HL7 v3 CDA for clinical content). With HL7v2 we will have to profile our own messages to gain semantic interoperability and this can be time consuming and would require end users to know how we profile our HL7v2 but the process is known and building and modifying HL7 v2 message is simple due to the age of the standard. IHE profiles have the benefit of being highly specified so that systems can easily interoperate 'out-of-the-box' however, only specific use cases are profiled and if the data we want to collect falls outside of these profiles then this would not work or would require custom specification.

The SHR community believes that we should support IHE profiled CDA documents as the primary mechanism for transmitting clinical content due to OpenHIEs involvement with IHE and due to the wide spread use of CDA at the moment. We also believe that HL7 v2 messages should be supported at a base level to allow legacy systems to communicate in this simpler format until such time as they can be upgraded to support CDA documents.