Skip to content

Commit

Permalink
V.3.1.0 rc1 (#112)
Browse files Browse the repository at this point in the history
* Prepared for 2.3.0

* fixed template

* Initial commit of DkCoreBasicParameter

#86

* Updated DkCoreBasicParameter and included ValueSets

* Updated the IEEEBasicParameter ValueSet: Removed supplemental codes and added descriptions.

* Fixed errors and warnings related to observations

* BasicParameter examples

* Added use of DAR

* Update DkCoreObservation.fsh

#93 and #88 are handled

* Updated naming and added examples

* Updated Observation.coding.system

#94 and #85

* loinc, and snomed ct codes in basic observation corrected

* Condition-instance with SKS Tillægskode added #100

* fixing DkCoreCondition - handling of unconfirmed conditions #98

* Updated Patient instances, version number, removed LPR3

#103, #102 and #101 are handled

* Update DkCoreObservation.fsh

#94

* Updated observation values and description of profile

* Update StructureDefinition-dk-core-observation-intro.md

#95 and #96 are handled

* adding vital signs panel

* Link to Vital signs panel added

* Added DAR documentation

* Addition of eCPR-identifiers and Patient.identifier slice

* Added description of eCPR and update of instances

* Update DkCoreeCprIdentifier.fsh

* Solved warnings associated with extension, that could be used anywhere

* Updated after FHIR SIG review

* Fixed QA-errors, updated template

Invariant on Observation and ^constraint.requirement = "link"

* Updated Conscious-examples and link

* Technical FHIRPath correction value. and Observation.

* Updated Observation-instances due to publisher update

* Updated Observation-instances to accommodate update of publisher

* Added note about consequences of new FHIR validator

* Corrected misspelling in TechniquesSCTCodes

* Updated link to eCPR, added link to hl7.dk and release-note

* Update sushi-config.yaml

* Update StructureDefinition-dk-core-observation-intro.md

---------

Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Jacob Andersen <jacob.andersen@alexandra.dk>
Co-authored-by: kirstinerosenbeck <kirstine.rosenbeck@gmail.com>
  • Loading branch information
4 people authored Jan 6, 2024
1 parent 9711778 commit 8fa8979
Show file tree
Hide file tree
Showing 20 changed files with 757 additions and 133 deletions.
1 change: 0 additions & 1 deletion ig.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
[IG]
ig = fsh-generated/resources/ImplementationGuide-hl7.fhir.dk.core.json
template = https://github.com/hl7dk/dk-ig-template
;template = fhir.base.template#current
328 changes: 328 additions & 0 deletions input/fsh/DkCoreBasicParameter.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,328 @@
Profile: DkCoreBasicObservation
Parent: dk-core-observation
Id: dk-core-basic-observation
Title: "Danish Core Basic Observation Profile"
Description: "HL7 Denmark core profile for basic observations, which is a profiling of DkCoreObservation."
* category 1..1
* category = $observation-category#vital-signs
* code.coding[LOINC] 1..
* code.coding[LOINC] from LoincBasicObservation (extensible)
* code.coding[SNOMEDCT] from SCTBasicObservation (extensible)
* code.coding[NPU] from NPUBasicObservation (extensible)
* code.coding[IEEE] from IEEEBasicObservation (extensible)
* valueQuantity.system from UCUMBasicUnits (extensible)
* component.valueQuantity.system from UCUMBasicUnits (extensible)



Instance: ObservationRespiratoryBasicObservation
InstanceOf: DkCoreBasicObservation
Title: "John's Respiratory rate measurement (Basic observation)"
Description: "A simple basic observation of a hyperventilating patient"
Usage: #example
* category = $observation-category#vital-signs
* status = #final
* code.coding[LOINC] = $LOINC#9279-1 "Respiratory rate"
* valueQuantity.value = 50
* valueQuantity.code = #/min
* valueQuantity.system = $ucum
* valueQuantity.unit = "/min"
* effectiveDateTime = 2023-11-20T18:00:00+01:00
* subject = Reference(john)
* performer = Reference(AbrahamLaege)

Instance: ObservationOxySatBasicObservationOrg
InstanceOf: DkCoreBasicObservation
Title: "John's oxygen saturation measurement (Basic observation)"
Usage: #example
* category = $observation-category#vital-signs
* status = #final
* code.coding[LOINC] = $LOINC#2708-6 "Oxygen saturation in Arterial blood"
* code.coding[IEEE] = $IEEEx73#150456 "MDC_PULS_OXIM_SAT_O2"
* valueQuantity.value = 97.0
* valueQuantity.code = #%
* valueQuantity.system = $ucum
* valueQuantity.unit = "%"
* effectiveDateTime = 2023-11-01T12:00:00+01:00
* subject = Reference(john)
* performer = Reference(AbrahamLaege)

Instance: ObservationOxySatObservation
InstanceOf: DkCoreObservation
Title: "John's oxygen saturation measurement (Observation)"
Description: """
This example suggests a way to handle the oxygen saturation case, where the original measurement
was reported in '%' by a device or typed in manually, and then 'translated' to the NPU system,
which requires the value to be unitless.
"""
Usage: #example
* category = $observation-category#vital-signs
* status = #final
* code.coding[NPU] = $NPU#NPU27280 "Hb(Fe; O₂-bind.;aB)—Oxygen(O₂); sat.(Pulse oximetry) = ?"
* valueQuantity.value = 0.97
* valueQuantity.code = #1
* valueQuantity.system = $ucum
* subject = Reference(john)
* performer = Reference(AbrahamLaege)
* effectiveDateTime = 2023-11-01T12:00:00+01:00
* contained[0] = ObservationOxySatBasicObservationOrg
* derivedFrom = Reference(ObservationOxySatBasicObservationOrg)


/* **************
*
* TOBS example
*
* ************** */

Instance: ElseConsciousness
InstanceOf: DkCoreObservation
Usage: #example
* status = #final
* code = $sct#6942003
* subject = Reference(else)
* valueCodeableConcept.coding[+] = $sct#450847001
* method = $sct#733985002 "Reported (qualifier value)"
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* performer = Reference(SidselSygeplejerske)

Instance: ElseBloodPressure
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SNOMEDCT] = $sct#75367002
* code.coding[LOINC] = $LOINC#85354-9
* subject = Reference(else)
* component[0].code.coding[LOINC] = $LOINC#8480-6
* component[=].code.coding[SNOMEDCT] = $sct#407554009
* component[=].valueQuantity = 147 'mm[Hg]' "mmHg"
* component[+].code.coding[LOINC] = $LOINC#8462-4
* component[=].code.coding[SNOMEDCT] = $sct#407555005
* component[=].valueQuantity = 95 'mm[Hg]' "mmHg"
* method = $sct#272391002 "Measurement technique (qualifier value)"
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* performer = Reference(SidselSygeplejerske)


Instance: ElseBodyTemperature
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SNOMEDCT] = $sct#276885007
* code.coding[LOINC] = $LOINC#8310-5
* subject = Reference(else)
* method = $sct#272391002 "Measurement technique (qualifier value)"
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* valueQuantity = 38.7 'Cel' "grader celcius"
* performer = Reference(SidselSygeplejerske)

Instance: ElseHeartRate
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SNOMEDCT] = $sct#364075005
* code.coding[LOINC] = $LOINC#8867-4
* subject = Reference(else)
* method = $sct#272391002 "Measurement technique (qualifier value)"
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* valueQuantity = 92 '/min' "slag/minut"
* performer = Reference(SidselSygeplejerske)

Instance: ElseRespirationRate
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SNOMEDCT] = $sct#86290005
* code.coding[LOINC] = $LOINC#9279-1
* subject = Reference(else)
* method = $sct#272391002 "Measurement technique (qualifier value)"
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* valueQuantity = 19 '/min' "/min"
* performer = Reference(SidselSygeplejerske)

Instance: ElsesTOBSscore
InstanceOf: DkCoreObservation
Usage: #example
* status = #final
* code.coding = $Medcom#MCS88125 "Pt—Tidlig Opsporing af Begyndende Sygdom (TOBS) score; antal (værdi 0-15) = ?"
* subject = Reference(else)
* effectiveDateTime = "2023-09-12T17:45:00.000Z"
* valueQuantity.value = 3
* valueQuantity.code = #1
* valueQuantity.system = $ucum
* performer = Reference(SidselSygeplejerske)


Instance: ElsesTOBS
InstanceOf: Bundle
Title: "Else's TOBS measurements"
Description: "An example of TOBS (Danish: Tidlig opsporing af begyndende sygdom), which includes level of consciousness, heart rate, respiration rate, blood pressure and temperature."
Usage: #example
* type = #collection
* timestamp = "2023-09-12T17:45:00.000Z"
* entry[+].fullUrl = "Patient/else"
* entry[=].resource = else
* entry[+].fullUrl = "Observation/ElseConsciousness"
* entry[=].resource = ElseConsciousness
* entry[+].fullUrl = "Observation/ElseBloodPressure"
* entry[=].resource = ElseBloodPressure
* entry[+].fullUrl = "Observation/ElseBodyTemperature"
* entry[=].resource = ElseBodyTemperature
* entry[+].fullUrl = "Observation/ElseHeartRate"
* entry[=].resource = ElseHeartRate
* entry[+].fullUrl = "Observation/ElseRespirationRate"
* entry[=].resource = ElseRespirationRate
* entry[+].fullUrl = "Observation/ElsesTOBSscore"
* entry[=].resource = ElsesTOBSscore
* entry[+].fullUrl = "Practitioner/SidselSygeplejerske"
* entry[=].resource = SidselSygeplejerske

/* **************
*
* TOKS eksempel inkl. GCS
*
* ************** */

Instance: MaxConsciousness
InstanceOf: DkCoreObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[0] = $sct#6942003
* code.coding[LOINC] = $LOINC#80288-4
* subject = Reference(Max)
* valueCodeableConcept.coding = $sct#450847001
* method = $sct#733985002 "Reported (qualifier value)"
* effectiveDateTime = "2023-08-08T13:30:00.000Z"

Instance: MaxRespirationRate
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* code.coding[SNOMEDCT] = $sct#86290005
* code.coding[LOINC] = $LOINC#9279-1
* subject = Reference(Max)
* method = $sct#272391002 "Measurement technique (qualifier value)"
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* valueQuantity = 13 '/min' "/min"

Instance: MaxHeartRate
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SKS] = $SKS#ZZ3140
* code.coding[LOINC] = $LOINC#8867-4
* subject = Reference(Max)
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* method = $sct#272391002 "Measurement technique (qualifier value)"
* valueQuantity = 68 '/min' "slag/minut"

Instance: MaxBodyTemperature
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SKS] = $SKS#ZZ0253
* code.coding[LOINC] = $LOINC#8310-5
* subject = Reference(Max)
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* method = $sct#272391002 "Measurement technique (qualifier value)"
* valueQuantity = 37 'Cel' "grader celcius"

Instance: MaxBloodPressure
InstanceOf: DkCoreBasicObservation
Usage: #example
* status = #final
* category = $observation-category#vital-signs
* code.coding[SKS] = $SKS#ZZ3160
* code.coding[LOINC] = $LOINC#85354-9
* subject = Reference(Max)
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* method = $sct#272391002 "Measurement technique (qualifier value)"
* component[0].code.coding[0] = $LOINC#8480-6
* component[=].code.coding[+] = $sct#407554009
* component[=].valueQuantity = 156 'mm[Hg]' "mmHg"
* component[+].code.coding[0] = $LOINC#8462-4
* component[=].code.coding[+] = $sct#407555005
* component[=].valueQuantity = 78 'mm[Hg]' "mmHg"

Instance: MaxSaturation
InstanceOf: DkCoreBasicObservation
Usage: #example
* category = $observation-category#vital-signs
* status = #final
* code.coding[LOINC] = $LOINC#2708-6 "Oxygen saturation in Arterial blood"
* valueQuantity = 99.0 '%' "%"
* subject = Reference(Max)
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* method = $sct#272391002 "Measurement technique (qualifier value)"

Instance: MaxGlasgowComaScale
InstanceOf: DkCoreObservation
Usage: #example
* status = #final
* code.coding[LOINC] = $LOINC#9269-2
* code.coding[+] = $sct#248241002
* subject = Reference(Max)
* valueQuantity = 13 '{score}'
* referenceRange[0].high = 8 '{score}'
* referenceRange[=].type.text = "Severe TBI"
* referenceRange[+].low = 9 '{score}'
* referenceRange[=].high = 12 '{score}'
* referenceRange[=].type.text = "Moderate TBI"
* referenceRange[+].low = 13 '{score}'
* referenceRange[=].type.text = "Mild TBI"
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* component[0].code = $LOINC#9268-4 "Glasgow coma score motor"
* component[=].valueCodeableConcept.coding = $LOINC#LA6566-9 "Localizing pain"
* component[+].code = $LOINC#9270-0 "Glasgow coma score verbal"
* component[=].valueCodeableConcept.coding = $LOINC#LA6560-2 "Confused"
* component[+].code = $LOINC#9267-6 "Glasgow coma score eye opening"
* component[=].valueCodeableConcept.coding = $LOINC#LA6556-0 "Eyes open spontaneously"


Instance: MaxTOKS
InstanceOf: Bundle
Title: "Max TOKS measurements, including Glasgow Coma Scale assesment"
Description: "An example of TOBS (Danish: Tidlig opsporing af begyndende sygdom), which includes level of consciousness, heart rate, respiration rate, blood pressure and temperature."
Usage: #example
* type = #collection
* timestamp = "2023-08-08T13:30:00.000Z"
* entry[+].fullUrl = "Patient/Max"
* entry[=].resource = Max
* entry[+].fullUrl = "Observation/MaxConsciousness"
* entry[=].resource = MaxConsciousness
* entry[+].fullUrl = "Observation/MaxBloodPressure"
* entry[=].resource = MaxBloodPressure
* entry[+].fullUrl = "Observation/MaxBodyTemperature"
* entry[=].resource = MaxBodyTemperature
* entry[+].fullUrl = "Observation/MaxHeartRate"
* entry[=].resource = MaxHeartRate
* entry[+].fullUrl = "Observation/MaxRespirationRate"
* entry[=].resource = MaxRespirationRate
* entry[+].fullUrl = "Observation/MaxGlasgowComaScale"
* entry[=].resource = MaxGlasgowComaScale

/* **************
*
* Vital signs panel
*
* ************** */

Instance: MaxVitalSignsPanel
InstanceOf: DkCoreBasicObservation
Usage: #example
* category = $observation-category#vital-signs
* status = #final
* code.coding[LOINC] = $LOINC#85353-1 "Vital signs, weight, height, head circumference, oxygen saturation and BMI panel"
* subject = Reference(Max)
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* hasMember[+] = Reference(MaxBloodPressure)
* hasMember[+] = Reference(MaxRespirationRate)
* hasMember[+] = Reference(MaxHeartRate)
* hasMember[+] = Reference(MaxBodyTemperature)
Loading

0 comments on commit 8fa8979

Please sign in to comment.