North West Genomic Medicine Service Alliance
0.0.1 - ci-build
DRAFT Implementation Guide
This is for collaboration and discussion purposes and is subject to change.
North West Genomic Medicine Service Alliance - Local Development build (v0.0.1) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Clean Architecture
Domain Archetype is the result of a collaboration process which aims to form a series of common archetypes within a domain (the domain in this case is Genomics). The initial format for this archetype is often a spreadsheet that is expressed in an electronic format. The format we are using in this guide is HL7 FHIR Questionnaire, other formats can be used such as openEHR Archetype (see Genomic Variant Result)
For communication between different systems, these archetypes are mapped to a Common Information Model.
Domain Archetype
The domain archetypes are implemented via a Canonical Data Model, which is common across all technical formats (i.e. HL7 v2 and HL7 FHIR) and is described using HL7 FHIR.
Elements from NHS England FHIR Genomics Implementation Guide have been incorporated into this guide, in particular the use of NHS Data Model and Dictionary Model identifiers and other identifiers already present in HL7 v2 OML and ORU. See Identities and Codes for more details.
Enterprise Canonical Data Model
Both domain archetypes have a very strong focus on the use of Correlation Identifier (Enterprise Integration Patterns) or Rule 3: Reference Other Aggregates by Identity (Implementing Domain Driven Design), which is also consistent with IHE/HL7 concepts of Bounded Context (martinfowler.com)
In practice this means, the following FHIR resources will have the following identifiers within the IHE Laboratory Testing Workflow
domain:
This includes making use of FHIR Identifier assigner.identifier.value
(HL7 v2 Assigning Facility
in a variety of ID types) to distinguish these identifiers between different organisations, the recommendation is to use ODS Code, e.g.
{
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
"code" : "ACSN"
}
]
},
"value" : "1001166717",
"assigner" : {
"identifier" : {
"system" : "https://fhir.nhs.uk/Id/ods-organization-code",
"value" : "699X0"
}
}
}
Is present around Organisation, Practioner and PractitionerRole. NHS England has expressed a preference to use NHS England Identifiers, these are:
TODO Explains how questions and answers are converted into v2 OBX/FHIR Observations based on https://build.fhir.org/ig/HL7/sdc/extraction.html
The following information is presented as a HOWTO guide, it is not recommending any clinical coding.
The following is an extract from Digital Health and Care Wales HL7 2.5.1 ORU_R01.
NHS England has not defined HL7 v2 ORU standards, and the use of HL7 v2 ORU is common in England. DHCW example is being used for documentation reasons, the clinical coding shown here is an example and not a standard.
OBR|2||914694928301|B0001^Full blood count|||201803091500|||^ABM: Sian Jones||||201803091500|^^Dr Jones
Indiana|^Jones^Indiana^^^Dr||||||201803091500|||F
TQ1|||||||201803091400|201803091500|S^^^^^^^^Urgent
OBX|1|NM|B0300^White blood cell (WBC) count||3.5|x10\S\9/L|4.0-11.0|L|||F|||201803091500
OBX|2|SN|B0307^Haemoglobin (Hb)||<^149|g/L|130-180|H|||F|||201803091500
OBX|3|NM|B0314^Platelet (PLT) count||500|x10\S\9/L|150-400|H|||F|||201803091500
OBX|4|NM|B0306^Red blood cell (RBC) count||6.00|x10\S\12/L|4.50-6.00|N|||F|||201803091500
OBX|6|CE|B0309^Mean cell volume (MCV)||NA^Not assayed^ACME|fL|80-100|N|||F|||201803091500
The coding (B0001, B0300, B0307, etc) is using local laboratory coding, ideally we want all organisations to communicate via standard coding and in the UK this preferred clinical coding is SNOMED CT UK Edition 83821000000107 and the preferred coding standard for units is UCUM. To use local codes would mean 20+ organisation maintaining code mappings between all the different local codesystems, by using SNOMED (or LOINC) this means they only need to maintain mappings between local codes and SNOMED (or LOINC)
At the time of writing, there is no definition of Complete Blood Count in the NHS. So instead, we look elsewhere:
LOINC CBC panel - Blood by Automated count:
LOINC | Name | R/O/C | UCUM Units |
---|---|---|---|
58410-2 | CBC panel - Blood by Automated count | ||
- 6690-2 | Leukocytes [#/volume] in Blood by Automated count | R | 10*3/uL |
- 789-8 | Erythrocytes [#/volume] in Blood by Automated count | R | 10*6/uL |
- 718-7 | Hemoglobin [Mass/volume] in Blood | R | g/dL |
- 4544-3 | Hematocrit [Volume Fraction] of Blood by Automated count | R | % |
- 787-2 | MCV [Entitic mean volume] in Red Blood Cells by Automated count | R | fL |
- 785-6 | MCH [Entitic mass] by Automated count | R | pg |
- 786-4 | MCHC [Entitic Mass/volume] in Red Blood Cells by Automated count | R | g/dL |
- 788-0 | Erythrocyte [DistWidth] in Red Blood Cells by Automated count | O | % |
- 777-3 | Platelets [#/volume] in Blood by Automated count | R | 10*3/uL |
- 32207-3 | Platelet distribution width [Entitic volume] in Blood by Automated count | O | fL |
- 32623-1 | Platelet [Entitic mean volume] in Blood by Automated count | O | fL |
Armed with this information which provides more details on the names and units to use, we can search UK sources. Some suggested resources include:
University Hospitals of Liverpool Group - Full Blood Count
Based on the results we have found so far, we could start to infer LOINC - Local Codes - SNOMED mappings, this is not recommended for a developer or business analyst.
Code mappings should be created by a clinical coder. In HL7 FHIR this code mapping is known as a ConceptMap. NHS England has produced instructions for creating a ConceptMap using the NHS England Ontology Server
However, LOINC and SNOMED have collaborated to produce The LOINC Ontology SNOMED CT Browser. Which allows us to alter our previous definition of the panel to:
LOINC | SNOMED | Name | R/O/C | UCUM Units |
---|---|---|---|---|
58410-2 | CBC panel - Blood by Automated count | |||
- 6690-2 | 147071010000102 | Leukocytes [#/volume] in Blood by Automated count | R | 10*3/uL |
- 789-8 | 249121010000107 | Erythrocytes [#/volume] in Blood by Automated count | R | 10*6/uL |
- 718-7 | 168331010000106 | Hemoglobin [Mass/volume] in Blood | R | g/dL |
- 4544-3 | 558261010000109 | Hematocrit [Volume Fraction] of Blood by Automated count | R | % |
- 787-2 | 613061010000108 | MCV [Entitic mean volume] in Red Blood Cells by Automated count | R | fL |
- 785-6 | 612991010000106 | MCH [Entitic mass] by Automated count | R | pg |
- 786-4 | 613001010000107 | MCHC [Entitic Mass/volume] in Red Blood Cells by Automated count | R | g/dL |
- 788-0 | 613181010000104 | Erythrocyte [DistWidth] in Red Blood Cells by Automated count | O | % |
- 777-3 | 218801010000106 | Platelets [#/volume] in Blood by Automated count | R | 10*3/uL |
- 32207-3 | Platelet distribution width [Entitic volume] in Blood by Automated count | O | fL | |
- 32623-1 | 528301010000103 | Platelet [Entitic mean volume] in Blood by Automated count | O | fL |
Note these SNOMED codes do not appear to be supported in the UK Edition of SNOMED.
As a Domain Archetype or Panel, we can represent this as a FHIR Questionnaire
This format is useful as it is supported by tooling, for example, National Laboratory of Medicine - NLM Form Builder which was used to help produce the CBC example.
NLM Form Builder
An example for Full Blood Count:
Archetype/Panel CBC panel - Blood by Automated count.
FHIR Questionnaire can hold mappings between different structures and codes. In the example below we can see LOINC codes for questions in the LinkId
column and where the questions should map to in FHIR Resources (for FHIR Observation resource this also implies HL7 v2 OBX segments, both are commonly used for exchanging questions and answers between systems).
FHIR Questionnaire Example
The JSON/XML representation can also contain coding for different codesystems, e.g.
"code": [
{
"system": "http://loinc.org",
"code": "6690-2",
"display": "WBC # Bld Auto"
},
{
"system": "http://snomed.info/sct",
"code": "147071010000102",
"display": "WBC Auto (Bld) [#/Vol]"
}
]
Armed with this information, we can create a FHIR Observation Example Observation: MCV - Mean corpuscular volume. This is similar to the earlier DHCW example for OBX-6.
OBX|6|CE|B0309^Mean cell volume (MCV)||NA^Not assayed^ACME|fL|80-100|N|||F|||201803091500
The main difference is the use of clinical coding instead of the B0309
local code. Note also the ranges are different and will vary between labs.
Another way of handling the mapping between coding is FHIR ConceptMap. A simple example of this mapping between the UK and LOINC SNOMED coding can be found here:
FHIR ConceptMap SNOMED LOINC Edition to SNOMED UK Edition Example
FHIR ConceptMap LOINC to SNOMED UK Example
This is for discussion, this applies to FHIR resources identified as not being entities (and the use of identifier is not mandatory). These include:
In FHIR the codes for these will be CodeableConcept (HL7 v2 CE Data Types). It is excepted NHS England will
The use of FHIR resources for data which is currently HL7 v2 CE Data Type may need to be questioned.
For example mapping of HL7 v2 ORC-16
is to ServiceRequest.requestCode
according to ServiceRquest - HL7 v2 Mapping, this is a v2 CE to FHIR CodeableConcept conversion.
Curently this is stated as an implied ServiceRequest.requestReference
mapping (ISSUE link: NHS England Developer Community Genomics Order Management Service - FHIR ServiceRequest reason)