HdBe-LaboratoryTestResult

ProfileDescriptionStatusURL
HdBe-LaboratoryTestResult

A laboratory result describes the result of a laboratory analysis. These are specimen-oriented tests as performed in laboratories such as Clinical Chemistry, Serology, Microbiology, etc. In addition to the results of tests with a singular result, this concept can also contain the results of more complex tests with multiple results or a ‘panel’.

drafthttps://fhir.healthdata.be/StructureDefinition/HdBe-LaboratoryTestResult
HdBe-LaboratoryTestResult.Specimen

Obtained specimen material or a microbial isolate that is used in a laboratory analysis.

drafthttps://fhir.healthdata.be/StructureDefinition/HdBe-LaboratoryTestResult.Specimen

UML overview profiles



HdBe-LaboratoryTestResult

Instructions

1. Guidance on use for singular tests and panels

The CBB LaboratoryTestResult captures both singular laboratory tests and panels/clusters of multiple related tests requested together (e.g., blood gases and EBV serology)*. This profile should be used slightly different in these two situations:

  • For singular laboratory test results
    • A single instance of this profile is to be used.
    • Observation.code represents concept TestCode (the name and code of the executed test) while concept PanelOrBattery (the name and code of the compound test) is not expected to be present.
    • Observation.status represents concept TestResultStatus (the status of the test result). ResultStatus is redundant in this situation and not expected to be present.
  • For a panel or cluster:
    • There is a single instance for the overall result plus an instance for each test result.
    • The concepts Comment (Observation.note), ResultType ( Observation.category:resultType) and Performer ( Observation.performer) are repeated in the instance for the overall result and in all instances for the individual test results.
    • For the instance representing the overall result:
      • Observation.code represents concept PanelOrBattery (the name and code of the compound test), which is required for panels/clusters.
      • Observation.status represents concept ResultStatus (the overall status of the test result). This status should be in accordance with the statuses of each individual test.
      • The instances representing the individual test results are referenced using Observation.hasMember.
    • For the instances representing the individual test results:
      • Observation.code represents concept TestCode (the name and code of the executed test) for that particular test.
      • Observation.status represents concept TestResultStatus (the status of the test result) for that particular test.

Note 1: The CBB also recognizes the RelatedResult concept. This is unrelated to the use of panels/clusters. This concept is represented either using Observation.derivedFrom or Observation.extension:relatedResult.

2. Unmapped CBB concepts

  • The concept Requester is not implemented because it is deemed unimplementable as-is. It will be removed in the next version of the zib (see https://bits.nictiz.nl/browse/ZIB-1269 for more information).
  • The concept InterpretationMethod is not implemented because there's no obvious mapping to FHIR while the definition is problematic, and there doesn't seem to be a use case for exchanging this information (see https://bits.nictiz.nl/browse/ZIB-1292 for more information).
ReTaM

Observation.code SHOULD be populated with LOINC codes as per the subset defined by the FPS Health, for the majority of commonly used lab measurements and demands. This subset is available on the website of the FPS Health.

At least the below stated rules need to be followed.

  1. The actual observation is coded in LOINC (subset as defined by FPS Health).

    "code":{
        "coding":[
            {
                "system": "http://loinc.org",
                "code": "30341-2",
                "display": "Erythrocyte sedimentation rate"
            }
        ]
    }
    
  2. If the above is not possible, ALBERT codes are used (subset as defined by FPS Health). The NamingSystem 'https://www.ehealth.fgov.be/standards/fhir/lab/CodeSystem/albert' is used for code.coding.system.

    "code":{
        "coding":[
                {
                    "system": "https://www.ehealth.fgov.be/standards/fhir/lab/CodeSystem/albert",
                    "code": "26224",
                    "display": "Glucose (urine 24h)"
                }
            ]
        }
    
  3. If the above is not possible, other (internally used) codes plus obligatory a text element to further explain are used.

    "code":{
        "coding":[
            {
                "system": "OWNSYSTEM",
                "code": "OWNCODE",
                "display": "DISPLAYOWNCODE"
            }
        ],
        "text": "TEXTEXPLAINING"
    } 
    
  4. If the above is not possible the kind of observation may be expressed only in text (allowed but discouraged).

    "code":{
     "text": "TEXTEXPLAINING"
    } 
    

Note that the FHIR CodeableConcept data type allows multiple codes (if they represent the same concept) because code.coding is 0..*. For example, LOINC codes may be supplemented with codes from other codesystems.


url1..1System.StringFixed Value
valueReferenceReference(Observation | HdBe LaboratoryTestResult)
identifierΣ0..*Identifier
basedOnΣ I0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)
partOfΣ I0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy)
statusΣ ?!1..1codeBinding
resultType0..1CodeableConceptBinding
codeΣ1..1CodeableConcept
subjectΣ I0..1Reference(Patient | Group | Device | Location | HdBe Patient)
focusΣ I0..*Reference(Resource)
encounterΣ I0..1Reference(Encounter)
effectivePeriodPeriod
effectiveTimingTiming
effectiveInstantinstant
effectiveDateTimeΣ0..1dateTime
issuedΣ0..1instant
performerΣ I0..1Reference(Practitioner | PractitionerRole | Patient | Organization | CareTeam | RelatedPerson | HdBe HealthProfessional PractitionerRole | HdBe HealthProfessional Practitioner)
valueQuantityQuantity
valueCodeableConceptCodeableConcept
dataAbsentReasonI0..1CodeableConceptBinding
codingΣ1..*Coding
textΣ0..1string
codingΣ0..0Coding
textΣ0..1string
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown
bodySite0..1CodeableConcept
method0..1CodeableConceptBinding
specimenI0..1Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
deviceI0..1Reference(Device | DeviceMetric)
lowI0..1SimpleQuantity
highI0..1SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
hasMemberΣ I0..*Reference(Observation | QuestionnaireResponse | MolecularSequence | HdBe LaboratoryTestResult)
derivedFromΣ I0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence | HdBe LaboratoryTestResult)
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
referenceRange0..*see (referenceRange)

url1..1System.StringFixed Value
valueReferenceReference(Observation | HdBe LaboratoryTestResult)
identifierΣ0..*Identifier
basedOnΣ I0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)
partOfΣ I0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy)
statusΣ ?!1..1codeBinding
resultType0..1CodeableConceptBinding
codeΣ1..1CodeableConcept
subjectΣ I0..1Reference(Patient | Group | Device | Location | HdBe Patient)
focusΣ I0..*Reference(Resource)
encounterΣ I0..1Reference(Encounter)
effectivePeriodPeriod
effectiveTimingTiming
effectiveInstantinstant
effectiveDateTimeΣ0..1dateTime
issuedΣ0..1instant
performerΣ I0..1Reference(Practitioner | PractitionerRole | Patient | Organization | CareTeam | RelatedPerson | HdBe HealthProfessional PractitionerRole | HdBe HealthProfessional Practitioner)
valueQuantityQuantity
valueCodeableConceptCodeableConcept
dataAbsentReasonI0..1CodeableConceptBinding
codingΣ1..*Coding
textΣ0..1string
codingΣ0..0Coding
textΣ0..1string
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown
bodySite0..1CodeableConcept
method0..1CodeableConceptBinding
specimenI0..1Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
deviceI0..1Reference(Device | DeviceMetric)
lowI0..1SimpleQuantity
highI0..1SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
hasMemberΣ I0..*Reference(Observation | QuestionnaireResponse | MolecularSequence | HdBe LaboratoryTestResult)
derivedFromΣ I0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence | HdBe LaboratoryTestResult)
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
referenceRange0..*see (referenceRange)

url1..1System.StringFixed Value
valueReferenceReference(Observation | HdBe LaboratoryTestResult)
identifierΣ0..*Identifier
basedOnΣ I0..*Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest)
partOfΣ I0..*Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy)
statusΣ ?!1..1codeBinding
resultType0..1CodeableConceptBinding
codeΣ1..1CodeableConcept
subjectΣ I0..1Reference(Patient | Group | Device | Location | HdBe Patient)
focusΣ I0..*Reference(Resource)
encounterΣ I0..1Reference(Encounter)
effectivePeriodPeriod
effectiveTimingTiming
effectiveInstantinstant
effectiveDateTimeΣ0..1dateTime
issuedΣ0..1instant
performerΣ I0..1Reference(Practitioner | PractitionerRole | Patient | Organization | CareTeam | RelatedPerson | HdBe HealthProfessional PractitionerRole | HdBe HealthProfessional Practitioner)
valueQuantityQuantity
valueCodeableConceptCodeableConcept
dataAbsentReasonI0..1CodeableConceptBinding
codingΣ1..*Coding
textΣ0..1string
codingΣ0..0Coding
textΣ0..1string
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown
bodySite0..1CodeableConcept
method0..1CodeableConceptBinding
specimenI0..1Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
deviceI0..1Reference(Device | DeviceMetric)
lowI0..1SimpleQuantity
highI0..1SimpleQuantity
type0..1CodeableConceptBinding
appliesTo0..*CodeableConcept
ageI0..1Range
text0..1string
hasMemberΣ I0..*Reference(Observation | QuestionnaireResponse | MolecularSequence | HdBe LaboratoryTestResult)
derivedFromΣ I0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence | HdBe LaboratoryTestResult)
codeΣ1..1CodeableConcept
valueQuantityQuantity
valueCodeableConceptCodeableConcept
valueStringstring
valueBooleanboolean
valueIntegerinteger
valueRangeRange
valueRatioRatio
valueSampledDataSampledData
valueTimetime
valueDateTimedateTime
valuePeriodPeriod
dataAbsentReasonI0..1CodeableConceptBinding
interpretation0..*CodeableConceptBinding
referenceRange0..*see (referenceRange)

Mapping FHIR profile to CBB

Pathmap
Observationlaboratory_test_result
Observationlaboratory_test
Observation.extension:sequelTo.value[x]related_result
Observation.statusresult_status
Observation.statuslaboratory_test.test_result_status
Observation.category:resultTyperesult_type
Observation.codepanel_or_battery
Observation.codelaboratory_test.test_code
Observation.effective[x]:effectiveDateTimelaboratory_test.test_date_time
Observation.performerperformer.healthcare_provider
Observation.value[x]laboratory_test.test_result
Observation.interpretation:resultFlagslaboratory_test.result_flags
Observation.interpretation:resultInterpretation.textlaboratory_test.result_interpretation
Observation.note.textlaboratory_test.comment
Observation.methodlaboratory_test.test_method
Observation.specimenspecimen
Observation.referenceRange.lowlaboratory_test.reference_range_lower_limit
Observation.referenceRange.highlaboratory_test.reference_range_upper_limit
Observation.referenceRange.textlaboratory_test.reference_range_lower_limit
Observation.referenceRange.textlaboratory_test.reference_range_upper_limit
Observation.derivedFromrelated_result

zib LaboratoryTestResult difference

Concept Category Description
code terminology Removed ValueSet binding and described in the comment the use of Loinc and Albert codes as per the subset defined by the FPS Health (ReTaM). Added a reference to the subset on the website of the FPS Health. The ReTaM codes are not duplicated in a FHIR ValueSet because this would require extensive maintenance in keeping the ValueSet up-to-date.
performer reference Added reference to HdBe-HealthcareProvider-Organization (seems missing in the current zib profile implementation).
performer slicing Removed slicing because this caused an error in the FHIR validator.
value[x] textual Added textual guidance to include the unit for quantitative results.
interpretation.resultFlags terminology Added ConceptMap ResultFlagsCodelist-to-ObservationInterpretation (seems missing in the current zib profile implementation).
interpretation.resultFlags terminology Removed concepts 'Resistent', 'Intermediate' and 'Susceptible' from the ValueSet. These codes are seen as a quantitative result. (zib ticket #1555)
interpretation.resultFlags textual Removed notion of 'Resistent', 'Intermediate' and 'Susceptible' codes in definition.
derived_from reference Added reference to HdBe-LaboratoryTestResult (seems missing in the current zib profile implementation).
referenceRange.text mapping Added mapping to ReferenceRangeLowerLimit and ReferenceRangeUpperLimit for when the quantaty datatype does not suffice.



HdBe-LaboratoryTestResult.Specimen

Instructions

The Specimen concept from the CCB HdBe-LaboratoryTestResult contains a concept for SpecimenMaterial and for Microorganism. These two concepts cannot be represented in the same Specimen resources; if there's a need to communicate both the microorganism and the sample material from which it was isolated, two instances need to be used. The instance representing the microorganism should refer to the instance respresenting the sample material using Specimen.parent. All other zib concepts should be repeated in both resources.


identifierΣ0..*Identifier
accessionIdentifierΣ0..1Identifier
statusΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
subjectΣ I0..1Reference(Patient | Group | Device | Substance | Location)
receivedTimeΣ0..1dateTime
parentI0..*Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
requestI0..*Reference(ServiceRequest)
collectorΣ I0..1Reference(Practitioner | PractitionerRole)
collectedDateTimeΣ0..1dateTime
collectedPeriodΣ0..1Period
durationΣ I0..1DurationBinding
quantityI0..1SimpleQuantity
method0..1CodeableConceptBinding
url1..1System.StringFixed Value
valueCodeableConceptCodeableConcept
morphologyI0..1Extension(CodeableConcept)
codingΣ0..*Coding
textΣ0..1string
fastingStatusCodeableConceptCodeableConcept
fastingStatusDurationDuration
description0..1string
procedure0..1CodeableConcept
additiveI0..*Reference(Substance)
timeDateTimedateTime
timePeriodPeriod
url1..1System.StringFixed Value
valueIntegerinteger
identifierΣ0..*Identifier
description0..1string
type0..1CodeableConceptBinding
capacityI0..1SimpleQuantity
specimenQuantityI0..1SimpleQuantity
additiveCodeableConceptCodeableConcept
additiveReferenceReference(Substance)
conditionΣ0..*CodeableConceptBinding
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown

identifierΣ0..*Identifier
accessionIdentifierΣ0..1Identifier
statusΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
subjectΣ I0..1Reference(Patient | Group | Device | Substance | Location)
receivedTimeΣ0..1dateTime
parentI0..*Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
requestI0..*Reference(ServiceRequest)
collectorΣ I0..1Reference(Practitioner | PractitionerRole)
collectedDateTimeΣ0..1dateTime
collectedPeriodΣ0..1Period
durationΣ I0..1DurationBinding
quantityI0..1SimpleQuantity
method0..1CodeableConceptBinding
url1..1System.StringFixed Value
valueCodeableConceptCodeableConcept
morphologyI0..1Extension(CodeableConcept)
codingΣ0..*Coding
textΣ0..1string
fastingStatusCodeableConceptCodeableConcept
fastingStatusDurationDuration
description0..1string
procedure0..1CodeableConcept
additiveI0..*Reference(Substance)
timeDateTimedateTime
timePeriodPeriod
url1..1System.StringFixed Value
valueIntegerinteger
identifierΣ0..*Identifier
description0..1string
type0..1CodeableConceptBinding
capacityI0..1SimpleQuantity
specimenQuantityI0..1SimpleQuantity
additiveCodeableConceptCodeableConcept
additiveReferenceReference(Substance)
conditionΣ0..*CodeableConceptBinding
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown

identifierΣ0..*Identifier
accessionIdentifierΣ0..1Identifier
statusΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
subjectΣ I0..1Reference(Patient | Group | Device | Substance | Location)
receivedTimeΣ0..1dateTime
parentI0..*Reference(Specimen | HdBe LaboratoryTestResult.Specimen)
requestI0..*Reference(ServiceRequest)
collectorΣ I0..1Reference(Practitioner | PractitionerRole)
collectedDateTimeΣ0..1dateTime
collectedPeriodΣ0..1Period
durationΣ I0..1DurationBinding
quantityI0..1SimpleQuantity
method0..1CodeableConceptBinding
url1..1System.StringFixed Value
valueCodeableConceptCodeableConcept
morphologyI0..1Extension(CodeableConcept)
codingΣ0..*Coding
textΣ0..1string
fastingStatusCodeableConceptCodeableConcept
fastingStatusDurationDuration
description0..1string
procedure0..1CodeableConcept
additiveI0..*Reference(Substance)
timeDateTimedateTime
timePeriodPeriod
url1..1System.StringFixed Value
valueIntegerinteger
identifierΣ0..*Identifier
description0..1string
type0..1CodeableConceptBinding
capacityI0..1SimpleQuantity
specimenQuantityI0..1SimpleQuantity
additiveCodeableConceptCodeableConcept
additiveReferenceReference(Substance)
conditionΣ0..*CodeableConceptBinding
authorStringstring
authorReferenceReference(Practitioner | Patient | RelatedPerson | Organization)
timeΣ0..1dateTime
textΣ1..1markdown

Mapping FHIR profile to CBB

Pathmap
Specimenspecimen
Specimen.identifierspecimen.specimen_id
Specimen.typespecimen.specimen_material
Specimen.typespecimen_microorganism
Specimen.receivedTimespecimen.received_date_time
Specimen.collection.collected[x]:collectedDateTimespecimen.collection_date_time
Specimen.collection.collected[x]:collectedPeriodspecimen.collection_period
Specimen.collection.durationspecimen.collection_period
Specimen.collection.quantityspecimen.collected_volume
Specimen.collection.methodspecimen.collection_method
Specimen.collection.bodySitespecimen.anatomical_location
Specimen.collection.bodySite.extension:morphologyspecimen.morphology
Specimen.container.extension:specimenNumberExtension.value[x]specimen.specimen_number_extension
Specimen.container.typespecimen.container_type
Specimen.note.textspecimen.comment

zib LaboratoryTestResult.Specimen difference

Concept Category Description
type terminology Replaced SpecimenMaterial valueset values from a SNOMED descendent-of 105590001 (Substance) to a descendent-of 123038009 (Specimen) because this makes it simpler, it is already in use in the DCD's like this and the container element can be used when additional information is required.
type terminology Replaced Dutch reference set for Microorganism by changing the SNOMED hierarchy 2581000146104 (Dutch microorganism simple reference set) to 410607006 (Organism).
type terminology Combined ValueSet for SpecimenMaterial and Microorganism in new ValueSet SpecimenMaterial-and-Microorganism.
receivedTime textual Removed sentence 'This is the issue...' (zib ticket #1551)
container.type terminology Relaxed binding from required to preferred. (zib ticket #1552)



Terminology Bindings

PathNameStrengthURLConceptMap
Observation.statusobservation-status|4.0.1requiredhttp://hl7.org/fhir/ValueSet/observation-status|4.0.1https://fhir.healthdata.be/ConceptMap/TestResultStatus-to-ObservationStatus
Observation.categoryResultTyperequiredhttps://fhir.healthdata.be/ValueSet/ResultTypeNo bound ConceptMap
Observation.interpretationobservation-interpretationextensiblehttp://hl7.org/fhir/ValueSet/observation-interpretationhttps://fhir.healthdata.be/ConceptMap/ResultFlags-to-ObservationInterpretationCodes
Observation.methodTestMethodrequiredhttps://fhir.healthdata.be/ValueSet/TestMethodNo bound ConceptMap
Specimen.typeSpecimenMaterial-and-Microorganismrequiredhttps://fhir.healthdata.be/ValueSet/SpecimenMaterial-and-MicroorganismNo bound ConceptMap
Specimen.collection.methodCollectionMethodrequiredhttps://fhir.healthdata.be/ValueSet/CollectionMethodNo bound ConceptMap
Specimen.collection.bodySiteLocationrequiredhttps://fhir.healthdata.be/ValueSet/LocationNo bound ConceptMap
Specimen.container.typeContainerTypepreferredhttps://fhir.healthdata.be/ValueSet/ContainerTypeNo bound ConceptMap