Validation and Terminology

Validation of FHIR structures is expected to be performed against the UK Core package listed within the IG dependencies. This validation can be performed using any open source FHIR validator (the current Alpha FHIR validation is being performed via the HAPI FHIR validation tool).

Validation of codes is split into 2 parts:

  • Validation of codes defined within FHIR CodeSystems, either FHIR R4, UK Core or Genomics specific will occur locally on the central broker, via loading in of the associated packages.
  • Validation of codes defined within external terminologies is expected to occur against central terminology servers, such as the NHS England OntoServer. For the alpha, this is currently limited to validation of HPO and SNOMED CT terms against the versions loaded into the terminology server. Discussions are ongoing for support of further genomics specific terminologies and nomenclatures used within Genomic Reporting
    • The NHS Ontology Server mark Fully Specified Names (FSNs) used in messages as invalid. If a display term is provided, a synonym SHALL be used, preferrably the preferred term as defined within the UK Edition of SNOMED CT.

Users will be able to validate resources against the Genomics IG (UK Core STU3 plus genomic specific business logic) by using the Alpha implementation of the $validate operation.

Note on use of Other

Some ConceptMaps or bindings to ValueSets may not cover the full list of possible codes which could be used, e.g. if driven by shortlists within the Genomics MDS, such as the reasons for reanalysis ServiceRequest.category codes.

If a concept which is not covered by the shortlist needs to be used, the 'other' option SHOULD be used instead, if provided in the ConceptMap or ValueSet. To continue to capture the information entered by the source system, this can be entered into the CodeableConcept.text field.

"code": {
    "coding": [
        {
            "system": "https://fhir.nhs.uk/CodeSystem/reasonfortesting-genomics",
            "code": "other"
        }
    ],
    "text": "Reinterpretation required"
}

Note on incorrect use of display terms for SNOMED CT Concepts

Occasionally, terms in internal supplier lists may differ from recognised SNOMED CT display terms. While native use of the NHS Terminology server is preferred, where terms differ the SNOMED CT code SHALL still be sent in the code element. Additionally, the display term selected by the user SHOULD be sent within the CodeableConcept.text element to preserve what was actually selected, and avoid possible harm due to interpretation of only the code. In this case the display element cannot be used as the code, display pair would not pass validation against the Terminology Server.

"code": {
    "coding": [
        {
            "system": "http://snomed.info/sct",
            "code": "92818009"
        }
    ],
    "text": "Chronic myeloid leukaemia"
}

Where internal lists have not been updated to the latest version available on the Terminology Server, some inactive descriptions may be used. Where the Concept is active but the display term used is inactive, FHIR validation will normally return a warning, but the resource will still be accepted by the server, e.g. for the CodeableConcept

"code": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "127294003",
        "display": "Traumatic AND/OR non-traumatic brain injury"
      }
    ]
  },

the following warning will be returned:

"diagnostics": "'Traumatic AND/OR non-traumatic brain injury' is no longer considered a correct display for code '127294003' (status = inactive). The correct display is one of Brain tissue injury,Intracerebral injury,Brain damage,Traumatic or nontraumatic brain injury,Traumatic or nontraumatic brain injury (disorder)",

Where inactived/retired concepts/codes are used, FHIR validation will similarly return a warning, e.g. for the code

"code": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "43470008",
        "display": "Pain in heart"
      }
    ]
  },

the following warning will be returned:

"diagnostics": "The concept '43470008' has a status of inactive and its use should be reviewed",