StructureDefinition UKCore-Specimen

Used to capture information on Samples which will undergo or have undergone processing for genomic testing.

Within FHIR R4, there is no way to capture location against a sample to aid tracking, one of the key requirements of the Genomic Medicine Service. Investigation of a possible solution through backporting the container.location element within R5 is currently being investigated. Until this backport is adopted by UK Core, the location of samples, including interactions to manage and track samples, will be performed through changes to Task resources generated on submission of a ServiceRequest.

A diagram illustrating the links between resources is provided below (Duo Scenario)

Note: links from ServiceRequest.supportingInfo to samples collected after submission are pending further investigation

Profile url FHIR Module Normative Status
https://fhir.hl7.org.uk/StructureDefinition/UKCore-Specimen UKCore trial-use

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
sampleCategoryI0..1Extension(CodeableConcept)
modifierExtension?! I0..*Extension
identifierΣ0..*Identifier
accessionIdentifierΣ0..1Identifier
statusS Σ ?!0..1codeBinding
typeS Σ0..1CodeableConceptBinding
subjectS Σ I0..1Reference(Patient | Group | Device | Substance | Location)
receivedTimeS Σ0..1dateTime
parentI0..*Reference(Specimen)
requestI0..*Reference(ServiceRequest)
id0..1string
specialHandlingI0..*Extension(CodeableConcept)
modifierExtensionΣ ?! I0..*Extension
id0..1string
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
valueReferenceReference(Patient | RelatedPerson)
referenceΣ I0..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
collectedDateTimedateTime
collectedPeriodPeriod
durationΣ I0..1Duration
quantityI0..1SimpleQuantity
method0..1CodeableConcept
id0..1string
id0..1string
extensionI0..*Extension
url1..1uriFixed Value
valueReferenceReference(BodyStructure)
codingΣ0..*Coding
textΣ0..1string
fastingStatusCodeableConceptCodeableConcept
fastingStatusDurationDuration
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
description0..1string
procedure0..1CodeableConcept
additiveI0..*Reference(Substance)
timeDateTimedateTime
timePeriodPeriod
id0..1string
deviceR5I0..1Extension(Reference(UKCoreDevice))
locationR5I0..1Extension(Reference(UKCoreLocation))
modifierExtensionΣ ?! I0..*Extension
identifierΣ0..*Identifier
description0..1string
type0..1CodeableConceptBinding
capacityI0..1SimpleQuantity
specimenQuantityI0..1SimpleQuantity
additiveCodeableConceptCodeableConcept
additiveReferenceReference(Substance)
conditionΣ0..*CodeableConceptBinding
note0..*Annotation

FHIRMDSHL7v2
SpecimenSample/Biopsy inc germline, Extracted SpecimenSPM
Specimen.subjectFetus - Is sample for fetal or unregistered neonate, Raw specimen/biopsy - Family member provided byPID segment attached to SPM
Specimen.collection.quantityPLCM activity - Sample volume, Raw specimen/biopsy - VolumeSPM-12
Specimen.typePLCM activity - Sample category codeSPM-4
Specimen.identifier.assignerRaw specimen/biopsy - Id assigning authority ODS code (many), Raw specimen/biopsy - Is assigning authority a histopathology laboratory (many), Extracted specimen - Id assigning authority ODS code (many)SPM-2.1.2
Specimen.identifier.valueRaw specimen/biopsy - Id (many), Extracted specimen - Id (many)SPM-2
Specimen.container.identifierRaw specimen/biopsy - Sample well identifierSAC-3
Specimen.noteRaw specimen/biopsy - Location details (will use backported R5 container.location once released), Extracted specimen - Location details, Raw specimen/biopsy - Sample to follow reason, Raw specimen/biopsy - Additional specimen/biopsy information, Extracted specimen - Additional specimen informationSAC-15, NTE segment attached to ORC, OBX segments attached to SPM
Specimen.extension:sampleCategoryRaw specimen/biopsy - WGS specimen type categorySPM-5
Specimen.typeRaw specimen/biopsy - Type, Raw specimen/biopsy - Blood component, Extracted specimen - TypeSPM-4
Specimen.conditionRaw specimen/biopsy - StateSPM-24
Specimen.processingRaw specimen/biopsy - Sample preparation (submitted to GLH)Combination of SPM-6/SPM-24 or NTE segments if other processing
Specimen.collection.collectedDateTimeRaw specimen/biopsy - Obtained dateSPM-17
Specimen.receivedTimeRaw specimen/biopsy - Received dateSPM-18
Specimen.collection.extension:specimen-specialHandling.valueCoding.codeRaw specimen/biopsy - High risk reason, Raw specimen/biopsy - Option for products of conceptionSPM-16.2, SPM-15
Specimen.collection.bodySiteRaw specimen/biopsy - Biopsy siteSPM-8/SPM-9
Specimen.statusRaw specimen/biopsy - Sample to followN/A implied through absence of SPM segment in test order
Specimen.conditionExtracted specimen - StateSPM-24
Specimen.processing.timeDateTimeExtracted specimen - Extracted dateOBR-7 attached to processing procedure in SAC-30

Additional Guidance

extension:sampleCategory

Allows the categorisation of a sample into either tumour or germline. Additional terms may be added upon review though the valueCodeableConcept.text field MAY be used as a free text representation if needed.
"extension": [
        {
            "url": "https://fhir.hl7.org.uk/StructureDefinition/Extension-UKCore-SampleCategory",
            "valueCodeableConcept": {
                "coding": [
                    {
                        "system": "https://fhir.hl7.org.uk/CodeSystem/UKCore-SampleCategory",
                        "code": "germline",
                        "display": "Germline"
                    }
                ]
            }
        }
    ]

identifier

Multiple identifiers MAY be assigned to a sample as it travels between labs. Each lab SHOULD append their local identifier to the identifier array if needed, ensuring either the system or assigner, is able to disambiguate any identifiers from possibly overlapping numbers from other organizations. Assigner is preferred in this case (see identifier example on the
Command 'pagelink' could not render: Page not found.
page for further guidance)

Note: accessionIdentifier is unused by the Genomic Medicine Service to facilitate movement of samples across organizational boundaries.

"identifier":  [
        {
            "system": "https://fhir.add.nhs.uk/Id/specimenId",
            "value": "RGT03135"
        }
    ],

status

If a Specimen has not been collected, the status SHOULD be marked as 'unavailable'. If the quality of the Specimen is such that it cannot be processed, the status SHOULD be 'unsatisfactory' (this is equivalent to a QC status of Failed). If the Specimen passes quality control, the status SHOULD be set as 'available
"status": "unsatisfactory",

type

The sample type, SNOMED CT preferred. Used to differentiate between raw and extracted (DNA) samples.

ConceptMaps for the allowed values for primary (raw) and final (extracted DNA) samples upon release of MDSv1.04, to aid identification of whether a sample is primary vs. final

"type": {
        "coding":  [
            {
                "system": "http://snomed.info/sct",
                "code": "445295009",
                "display": "Blood specimen with EDTA"
            }
        ]
    },

subject

SHALL be provided. This SHOULD be a reference to the Patient resource or the identifier, NHS number, for the patient.

Samples collected from a Fetus SHOULD reference a Patient resource for the Fetus. This should then be linked to relevant maternal/paternal resources through the RelatedPerson resource. Further information can be found on the Fetus Management clinical scenario. It is not envisaged that samples would need to be linked to more than one person e.g. both fetus and mother, though this assumption will be tested within the Alpha phase of the Genomic Medicine Service.

"subject": {
        "reference": "Patient/Patient-MeirLieberman-Example",
        "identifier": {
            "system": "https://fhir.nhs.uk/Id/nhs-number",
            "value": "9449307873"
        }
    },

receivedTime

SHOULD be updated upon receipt at a destination lab
"receivedTime": "2023-09-18T18:30:00Z"

parent

If a sample has been split into multiple parts, such as DNA being extracted from a primary sample, each SHOULD be represented using an additional Specimen resource, referencing the parent sample through the parent element.

The central Order Management broker will only create Tasks for Specimen resources which do not have a parent element, i.e. primary samples. If required, clients can create Tasks for processing of derivative samples manually.

"parent": [
        {
            "reference": "Specimen/Specimen-BloodEDTA-Example"
        }
    ],

request

SHALL be provided. This SHOULD be a reference to the request which initiated collection of the sample. SHALL NOT be updated if the sample is used for another test e.g. for re-analysis. In the case that a Specimen needs to be processed as part of a new request, e.g. using a sample in storage, the ServiceRequest SHALL reference the pre-existing sample via ServiceRequest.specimen.
"request":  [
        {
            "reference": "ServiceRequest/ServiceRequest-NonWGSTestOrderForm-Example"
        }
    ]

collection

Additional information which can be collected about the circumstances under which as sample was collected, if relevant. This include extensions for specialHandling of the sample, e.g. due to high risk of infection, as well as an extension to bodySite to extend the coding to a BodyStructure reference, for more detailed collection of structural information e.g. where tumour morphology and topography need to be collected.

Where the collector is an Organization, or where the individual is not known, ODS codes MAY be used as identifiers in place of SDS-User-IDs. However, if referencing a resource, the PractitionerRole resource SHOULD still be referenced. In this case the PractitionerRole.identifier and PractitionerRole.practitioner reference would not be filled, leaving only the reference to an Organization from PractitionerRole.organization.

Note on quanitities

The Specimen.collection.quantity is the amount of the sample collected at collection time. This quantity does not change as the sample is processed.

The Specimen.container.specimenQuantity is the amount of sample remaining in a container, this is equivalent to GEL 1001 banked volume. This value should be updated as the specimen is used.

If a specimen is split, additional specimen resources SHOULD be created (referencing the parent specimen), with individual container.specimenQuantity values.

"collection": {
        "collector": {
            "identifier": {
                "system": "https://fhir.nhs.uk/Id/sds-user-id",
                "value": "999999"
            }
        },
        "collectedDateTime": "2022-07-11T09:00:00Z",
        "quantity": {
            "system": "http://unitsofmeasure.org",
            "code": "mL",
            "value": 2.5
        },
        "method": {
            "coding":  [
                {
                    "system": "http://snomed.info/sct",
                    "code": "129300006",
                    "display": "Puncture - action"
                }
            ]
        },
        "bodySite": {
            "coding":  [
                {
                    "system": "http://snomed.info/sct",
                    "code": "14975008",
                    "display": "Forearm structure (body structure)"
                }
            ]
        }
    },

processing

SHOULD be updated if processing occurs on the sample which affects later use, e.g. additives added
"processing": [
    {
      "description": "Acidify to pH < 3.0 with 6 N HCl.",
      "procedure": {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/v2-0373",
            "code": "ACID"
          }
        ]
      },
      "additive": [
        {
          "display": "6 N HCl"
        }
      ],
      "timeDateTime": "2015-08-18T08:10:00Z"
    }
  ],

container

The UK Core STU3 version of Specimen backports the R5 changes to the container BackboneElement to support capturing of storage location for a sample (through `container.location`) and recursive capture of device identifiers (e.g. tube, well, rack, freezer through `container.device`).

Additional examples/guidance will be provided within this IG once use of the fields has been appropriately tested.

Sample tracking information SHOULD be added to Tasks acting on Specimen resources, e.g. Tasks marked SamplePreparation or SampleProcessing, on either the output or input elements. This information MAY include consignment number, destination, date sent etc.

"container":  [
        {
            "extension":  [
                {
                    "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-Specimen.container.location",
                    "valueReference": {
                            "reference": "Location/Location-NTGLHFridge-Example"
                    }
                }
            ]
        }
    ]

condition

Used to record the condition of a specimen. Within Genomics, SHOULD be used to record the fixed/frozen state, using the UK Core bound ValueSet.
"condition":  [
        {
            "coding":  [
                {
                    "system": "https://fhir.hl7.org.uk/CodeSystem/UKCore-BiopsyState",
                    "code": "fresh-frozen",
                    "display": "Fresh Frozen"
                }
            ]
        }
    ]