HOWTO - HL7v3/IHE XDS OID's, URI's and HL7v2 Tables and new Terminology Support in CCRI

We have a number CodeSystems, ValueSets and Systems that exist on all these standards (including openEHR)… and also the NHS Data Dictionary.

One of the main systems we all know about is NHS Number which is referred as

You may have noticed we have two ways of representing NHS Number in FHIR. So in theory this FHIR Patient extract below contains the patient NHS Number twice.

{
"resourceType": "Patient",
...
"identifier": [
    {
        "extension": [
            {
                "url": "https://fhir.hl7.org.uk/STU3/StructureDefinition/Extension-CareConnect-NHSNumberVerificationStatus-1",
                "valueCodeableConcept": {
                    "coding": [
                        {
                            "system": "https://fhir.hl7.org.uk/STU3/CodeSystem/CareConnect-NHSNumberVerificationStatus-1",
                            "code": "01",
                            "display": "Number present and verified"
                        }
                    ]
                }
            }
        ],
        "system": "https://fhir.nhs.uk/Id/nhs-number",
        "value": "9876543210"
    },
    {
        "system": "urn:oid:2.16.840.1.113883.2.1.4.1",
        "value": "9876543210"
    },
    {
        "system": "https://fhir.leedsth.nhs.uk/Id/pas-number",
        "value": "ABC8650149"
    },
    {
        "system": "https://fhir.leedsth.nhs.uk/Id/PPMIdentifier",
        "value": "1"
    }
]
...
} 

It’s pretty easy for a human (such as developers and IT support staff) to read the above and work out what the Leeds Teaching trust PPM, PAS numbers are and also the NHS Number. This is why FHIR recommends using a URI but if you’re working with IHE XDS and FHIR systems (as may happen with Transfer of Care FHIR Documents) you may want to transform FHIR Messages (or HL7v2) in your Trust Integration Engine (TIE).

This is where the FHIR NamingSystem could be used. This is an experimental feature of the latest version of the CCRI.

This can accessed via FHIR Explorer

The UI allows you to search on the name or OID/URI

From a TIE or other system that wants to perform a lookup, the query is:

OID/uri search - https://data.developer.nhs.uk/ccri-fhir/STU3/NamingSystem?value={uri/oi}
e.g. https://data.developer.nhs.uk/ccri-fhir/STU3/NamingSystem?value=2.16.840.1.113883.2.1.4.1

Name search https://data.developer.nhs.uk/ccri-fhir/STU3/NamingSystem?name={name}
e.g. https://data.developer.nhs.uk/ccri-fhir/STU3/NamingSystem?name=Address

The last example returns a couple of HSCIC ITK NameSystems, these have been extracted from the ITK Specification Reference Pack. This is an experimental feature used to test the software but it shows how the same set of codes or systems exist across the standards. [The uri are not official, they are show what the uri could look like]

Looking at HL7v2 Address Type we can see it is a CodeSystem (NHS Number is an identifier).

We can see this has uri of https://hl7.nhs.uk/itk/v2/0190-AddressType
using this uri we can now find the CodeSystem (in postman this would be GET https://data.developer.nhs.uk/ccri-fhir/STU3/CodeSystem?url=https://hl7.nhs.uk/itk/v2/0190-AddressType)

(in postman this would be GET https://data.developer.nhs.uk/ccri-fhir/STU3/CodeSystem/1165)

To complete the loop, this CodeSystem is also available as a ValueSet. Again you can search on name or uri (not OID)
From postman this would be:
https://data.developer.nhs.uk/ccri-fhir/STU3/ValueSet?name={name}
https://data.developer.nhs.uk/ccri-fhir/STU3/ValueSet?uri={uri}

Lastly, note the ValueSet is supporting the $expand operation, the default request

https://data.developer.nhs.uk/ccri-fhir/STU3/ValueSet/1441

Does not return the codes, it just says all codes in the CodeSystem for Address Type
Using the $expand returns the codes
https://data.developer.nhs.uk/ccri-fhir/STU3/ValueSet/1441/$expand