Skip to content

Commit

Permalink
3.4.0 (#146)
Browse files Browse the repository at this point in the history
* Added Location and PractitionerRole

* fatfingered a '*'

* Moved NPU subset into its own Code System fragment.

* Remove special treatment of NPU

* Testing out fragments for NPU

* Adjusted unicodes

* Corrected descriptions

* Mapped "comments" using https://hl7.org/fhir/codesystem.html#defined-props

* Added correct property concept values

* Removed locale duplicate displays
Made SCT alias target DK by default

* Refined used of DK profiles

* indented properties

* Reintroduced special url for NPU to remove IGP error.

* Feature ipa support (#132)

* Introduced IPA support

* Update dep of IPA

* Adjusted to 1.0.0

* Removed merge files

* Added compliesWith and child profile for IPA compliance (#133)

* Changed to imposeProfile

* Update release-notes.md

* Update release-notes.md

* Added proper base definition

* Fix: Changed to assignment instead of declaration of imposeProfile

* Update DkCoreObservation.fsh

* Initial commit of ServiceRequest

* Update DkCoreServiceRequest.fsh

* Added content for ServiceRequest

* Update DkCoreServiceRequest.fsh

* Added ignores for NPU-errors

* Update name of profile and content of DkCoreServiceRequestCodes

* priority valueset, reasoncode and reason reference added to ServiceRequest

* changed slice name

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

* Updated name of intro-file

* Update valueSets.fsh

* ServiceRequest coding updated in the profile, as well as in the documentation.

* ServiceRequest example corrected, documentation for priority and reasonCode added

* Updated scope and usage section according to #136

* Updated scope and usage section according to #135

* added to relationship value set and code system supplement to account for #135 and #134

* Handled issues from consultation

#140, #139, #137

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

#138

* Update DkCorePatient.fsh

#126

* Update DkCorePatient.fsh

#126

* Updated ServiceRequest ValueSet

* Updated scope and usage section according to #136

* Updated scope and usage section according to #135

* added to relationship value set and code system supplement to account for #135 and #134

* Update DkCorePatient.fsh

#126

* Fixed NPU error codes

* no message

* doc start on IPA inspired by fhir.fh

* Added parts of documentation

* Fixed note templates

* Disabling gh builds as they are not needed.
Added documentation

* Updated Continua/PHD examples to latest PHD release and fixed license-messages and other QA issues

* Fixed some obvious QA warnings: IPA patient and practitioner names should have a .text element and UCUM units with annotations should have the display value including the annotation

* Handled comments from review

* Updated reference to DkCorePractitionerRole

* Separated the IPA profiles into their own file

* Change listing of profiles

* Adjusted naming

* Fixed bugs

* A bit of layout changes

* Added kebab cased id's.

* Added textual descriptions to IPA profiles

* Fixed link

* Removed wrong valueset binding - #152
Created DK supplement for standard codesystem

* Removed QA error

* Update release-notes.md

* Update publication-request.json

* syntax ...

* Update codeSystems.fsh

* Correction to #152

* Removed QA errors

* removed IG version warning

* Fixed spelling error

---------

Co-authored-by: tmsMedcom <[email protected]>
Co-authored-by: kirstinerosenbeck <[email protected]>
Co-authored-by: Christian Gasser <[email protected]>
Co-authored-by: Jacob Andersen <[email protected]>
Co-authored-by: hagensen-software <[email protected]>
  • Loading branch information
6 people authored Feb 1, 2025
1 parent 8f00d01 commit ec273a5
Show file tree
Hide file tree
Showing 31 changed files with 1,576 additions and 398 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ jobs:
# Run the publisher - don't run the batch script but run the line directly
args: java -jar ./input-cache/publisher.jar publisher -ig .

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./output
# - name: Deploy
# uses: peaceiris/actions-gh-pages@v3
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# publish_dir: ./output

12 changes: 6 additions & 6 deletions input/fsh/DkCoreBasicParameter.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ 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) = ?"
* code.coding[NPU] = $NPU#NPU27280
* valueQuantity.value = 0.97
* valueQuantity.code = #1
* valueQuantity.system = $ucum
Expand Down Expand Up @@ -269,13 +269,13 @@ Usage: #example
* code.coding[LOINC] = $LOINC#9269-2
* code.coding[+] = $sct#248241002
* subject = Reference(Max)
* valueQuantity = 13 '{score}'
* referenceRange[0].high = 8 '{score}'
* valueQuantity = 13 '{score}' "score"
* referenceRange[0].high = 8 '{score}' "score"
* referenceRange[=].type.text = "Severe TBI"
* referenceRange[+].low = 9 '{score}'
* referenceRange[=].high = 12 '{score}'
* referenceRange[+].low = 9 '{score}' "score"
* referenceRange[=].high = 12 '{score}' "score"
* referenceRange[=].type.text = "Moderate TBI"
* referenceRange[+].low = 13 '{score}'
* referenceRange[+].low = 13 '{score}' "score"
* referenceRange[=].type.text = "Mild TBI"
* effectiveDateTime = "2023-08-08T13:30:00.000Z"
* component[0].code = $LOINC#9268-4 "Glasgow coma score motor"
Expand Down
4 changes: 2 additions & 2 deletions input/fsh/DkCoreCondition.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ Description: "HL7 Denmark core profile for professionally asserted conditions, a
* system 1..
* system = "urn:oid:1.2.208.176.2.31"
* subject only Reference(DkCorePatient)
* recorder only Reference(DkCorePractitioner or PractitionerRole or DkCorePatient or DkCoreRelatedPerson)
* asserter only Reference(DkCorePractitioner or PractitionerRole)
* recorder only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCorePatient or DkCoreRelatedPerson)
* asserter only Reference(DkCorePractitioner or DkCorePractitionerRole)

Instance: ConditionPressureUlcer
InstanceOf: DkCoreCondition
Expand Down
35 changes: 35 additions & 0 deletions input/fsh/DkCoreLocation.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Profile: DkCoreLocation
Parent: Location
Id: dk-core-location
Title: "Danish Core Location Profile"
Description: "HL7 Denmark core profile for locations"
* managingOrganization only Reference(DkCoreOrganization)
* partOf only Reference(DkCoreLocation)


Instance: ambulance
InstanceOf: DkCoreLocation
Usage: #example
* status = #active
* description = "Ambulance provided by Acme Corp"
* mode = #kind
* type = http://terminology.hl7.org/CodeSystem/v3-RoleCode#AMB "Ambulance"
* telecom.system = #phone
* telecom.value = "+4523292833"
* telecom.use = #mobile
* physicalType = http://terminology.hl7.org/CodeSystem/location-physical-type#ve "Vehicle"
* managingOrganization = Reference(Organization/b08997bb-4476-4dd0-84dd-2e297f809364)


Instance: neuroradiologyUnit
InstanceOf: DkCoreLocation
Usage: #example
* status = #active
* name = "Neuro unit"
* mode = #instance
* type = http://terminology.hl7.org/CodeSystem/v3-RoleCode#RNEU "Neuroradiology unit"
* telecom.system = #phone
* telecom.value = "+4523292329"
* physicalType = http://terminology.hl7.org/CodeSystem/location-physical-type#ro "Room"
* managingOrganization = Reference(Organization/CenterForDiabetesTeamKvalitet)
* partOf = Reference(Location/ambulance)
63 changes: 49 additions & 14 deletions input/fsh/DkCoreObservation.fsh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Profile: DkCoreObservation
Parent: Observation
Id: dk-core-observation
Title: "Danish Core Observation Profiles"
Title: "Danish Core Observation Profile"
Description: "HL7 Denmark core profile for observations"
* obeys dk-core-observation-mandatory-units
* code.coding ^slicing.discriminator.type = #value
Expand Down Expand Up @@ -44,9 +44,9 @@ Description: "HL7 Denmark core profile for observations"
* system 1..
* system = $SKS (exactly)
* code 1..
* subject only Reference(DkCorePatient or Group or Location or Device)
* subject only Reference(DkCorePatient or Group or DkCoreLocation or Device)
* subject 1..
* performer only Reference(DkCorePractitioner or DkCoreOrganization or DkCorePatient or PractitionerRole or CareTeam or DkCoreRelatedPerson)
* performer only Reference(DkCorePractitioner or DkCoreOrganization or DkCorePatient or DkCorePractitionerRole or CareTeam or DkCoreRelatedPerson)
* device ^short = "The device used for the measurement. It is recommended that when information about the device is sent, it is contained in the same Bundle as the Observation the device measured."
* valueQuantity.system = $ucum
* component.code.coding ^slicing.discriminator.type = #value
Expand Down Expand Up @@ -206,6 +206,7 @@ Alias: $BD_ADDR = http://hl7.org/fhir/sid/eui-48/bluetooth
Alias: $ContinuaDeviceIdentifiers = http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaDeviceIdentifiers
Alias: $ContinuaPHD = http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaPHD
Alias: $ContinuaHFS = http://hl7.org/fhir/uv/phd/CodeSystem/ContinuaHFS
Alias: $PhdObservationCategory = http://hl7.org/fhir/uv/phd/CodeSystem/PhdObservationCategories
Alias: $observation-gatewayDevice = http://hl7.org/fhir/StructureDefinition/observation-gatewayDevice
Alias: $v2-0136 = http://terminology.hl7.org/CodeSystem/v2-0136
Alias: $v2-0203 = http://terminology.hl7.org/CodeSystem/v2-0203
Expand All @@ -214,13 +215,20 @@ Alias: $ASN1ToHL7 = http://hl7.org/fhir/uv/phd/CodeSystem/ASN1ToHL7

Instance: Poul
InstanceOf: DkCorePatient
Title: "Poul Hansen"
Description: """
A patient admitted to a remote monitoring programme, performing measurements
at home.
"""
Usage: #example
* meta.profile = $PhdPatient
* identifier[cpr].system = "urn:oid:1.2.208.176.1.2"
* identifier[cpr].value = "3001749995"
* identifier[cpr].type = $v2-0203#NI
* name
* family = "Hansen"
* given[+] = "Poul"
* text = "Poul Hansen"


Instance: WeightScale.606405FFFECFC604
Expand Down Expand Up @@ -300,7 +308,7 @@ Usage: #example


Instance: Weight.Poul.230221
InstanceOf: DkCoreObservation
InstanceOf: IpaDkCoreObservation
Title: "Poul's daily weighing on Feb. 21st"
Description: """
Poul has been instructed to perform a daily weighing in the morning. This is his
Expand All @@ -312,20 +320,21 @@ Usage: #example
* meta.profile[+] = $observation-vitalsigns
* meta.profile[+] = $observation-bodyweight
* status = #final
* category.coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $PhdObservationCategory#phd-observation "PHD generated Observation"
* code
* coding[+] = $LOINC#29463-7 "Body weight"
* coding[+] = $IEEEx73#188736 "MDC_MASS_BODY_ACTUAL"
* coding[+] = $NPU#NPU03804 "Pt—Body; mass = ? kg"
* text = "MDC_MASS_BODY_ACTUAL: Body weight"
* subject = Reference(http://example.org/fhir/Patient/Poul)
* performer = Reference(http://example.org/fhir/Patient/Poul)
* subject = Reference(Poul)
* performer = Reference(Poul)
* effectiveDateTime = "2023-02-21T08:36:40+01:00"
* valueQuantity = 74.0 'kg' "kg"
* device = Reference(WeightScale.606405FFFECFC604)
* extension
* url = $observation-gatewayDevice
* valueReference = Reference(http://example.org/fhir/Telma.FEEDDADADEADBEEF)
* valueReference = Reference(Telma.FEEDDADADEADBEEF)
* derivedFrom = Reference(http://example.org/fhir/CoincidentTimeStamp.0123)


Expand All @@ -338,6 +347,11 @@ Usage: #example

Instance: Telma.FEEDDADADEADBEEF
InstanceOf: Device
Title: "Poul's remote patient monitoring app"
Description: """
Poul has been enrolled in a Remote Patient Monitoring programme in order to monitor the
state of his CHF condition. This is the app he uses to report the data to his doctor.
"""
Usage: #example
* meta.profile = $PhgDevice
* identifier[+]
Expand Down Expand Up @@ -407,6 +421,11 @@ Usage: #example

Instance: BPMonitor.C4F312FFFE53F2C9
InstanceOf: Device
Title: "Poul's A&D blood pressure monitor"
Description: """
This device is Poul's personal blood pressure monitor, which he keeps in the bedroom
of his home, and uses for daily monitoring due to his CHF condition.
"""
Usage: #example
* meta.profile = $PhdDevice
* identifier[+]
Expand Down Expand Up @@ -489,6 +508,7 @@ InstanceOf: DkCoreObservation
Usage: #inline
* meta.profile[+] = $PhdNumericObservation
* status = #final
* category[+].coding = $PhdObservationCategory#phd-observation "PHD generated Observation"
* code
* coding[+] = $IEEEx73#67996 "MDC_ATTR_VAL_BATT_CHARGE"
* text = "MDC_ATTR_VAL_BATT_CHARGE: Battery level"
Expand All @@ -504,6 +524,13 @@ Usage: #inline

Instance: CoincidentTimeStamp.0222
InstanceOf: DkCoreObservation
Title: "Coincident time stamp from Poul's home blood pressure measurement"
Description: """
A coincident time stamp observation is used to ensure and inspect the consistency
of timelines when using battery-operated health devices having their own clock that may
or may not be synchronized to local time - and may even travel with their owner across
time zones.
"""
Usage: #example
* meta.profile[+] = $PhdCoincidentTimeStampObservation
* status = #final
Expand All @@ -521,14 +548,15 @@ Usage: #example


Instance: BloodPressure.Poul.643992
InstanceOf: DkCoreObservation
InstanceOf: IpaDkCoreObservation
Usage: #inline
* identifier.value = "C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-150020-118-266016-87-266016-99-266016-20230223T102408.00"
* meta.profile[+] = $PhdCompoundNumericObservation
* meta.profile[+] = $observation-vitalsigns
* meta.profile[+] = $observation-bp
* status = #final
* category.coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $PhdObservationCategory#phd-observation "PHD generated Observation"
* code
* coding[+] = $LOINC#85354-9 "Blood pressure panel with all children optional"
* coding[+] = $IEEEx73#150020 "MDC_PRESS_BLD_NONINV"
Expand All @@ -541,14 +569,14 @@ Usage: #inline
* code
* coding[+] = $LOINC#8480-6 "Systolic blood pressure"
* coding[+] = $IEEEx73#150021 "MDC_PRESS_BLD_NONINV_SYS"
* coding[+] = $Medcom#MCS88019 "Arm—Blodtryk(systolisk) hjemme; tryk = ? mmHg"
* coding[+] = $NPU#DNK05472 "Arm—Blodtryk(systolisk); tryk = ? mmHg"
* text = "MDC_PRESS_BLD_NONINV_SYS: Systolic Blood Pressure"
* valueQuantity = 118 'mm[Hg]' "mmHg"
* component[+]
* code
* coding[+] = $LOINC#8462-4 "Diastolic blood pressure"
* coding[+] = $IEEEx73#150022 "MDC_PRESS_BLD_NONINV_DIA"
* coding[+] = $Medcom#MCS88020 "Arm—Blodtryk(diastolisk) hjemme; tryk = ? mmHg"
* coding[+] = $NPU#05473 "Arm—Blodtryk(diastolisk); tryk = ? mmHg"
* text = "MDC_PRESS_BLD_NONINV_DIA: Diastolic Blood Pressure"
* valueQuantity = 87 'mm[Hg]' "mmHg"
* component[+]
Expand All @@ -564,14 +592,20 @@ Usage: #inline


Instance: HeartRate.Poul.1974654
InstanceOf: DkCoreObservation
InstanceOf: IpaDkCoreObservation
Title: "Poul's heart rate measurement"
Description: """
Poul has been instructed to measure his blood pressure due to his CHF condition. This heart rate
measurement was produced by his blood pressure monitor during one of these measurements.
"""
Usage: #example
* identifier.value = "C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-149546-93-{beat}/min-20230223T102408.00"
* meta.profile[+] = $PhdNumericObservation
* meta.profile[+] = $observation-vitalsigns
* meta.profile[+] = $observation-heartrate
* status = #final
* category.coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $observation-category#vital-signs "Vital signs"
* category[+].coding = $PhdObservationCategory#phd-observation "PHD generated Observation"
* code
* coding[+] = $LOINC#8867-4 "Heart rate"
* coding[+] = $IEEEx73#149546 "MDC_PULS_RATE_NON_INV"
Expand All @@ -594,6 +628,7 @@ Usage: #inline
* identifier.value = "C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-8410608-8192-20230223T102408.00"
* meta.profile[+] = $PhdBitsEnumerationObservation
* status = #final
* category[+].coding = $PhdObservationCategory#phd-observation "PHD generated Observation"
* code
* coding = $IEEEx73#8410608 "MDC_BLOOD_PRESSURE_MEASUREMENT_STATUS"
* text = "MDC_BLOOD_PRESSURE_MEASUREMENT_STATUS: Blood Pressure measurement problem"
Expand Down
27 changes: 21 additions & 6 deletions input/fsh/DkCorePatient.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,22 @@ Description: "HL7 Denmark core profile for a patient"
* address ^definition = "An address for the individual. Danish addresses must comply with directions issued by https://dawa.aws.dk/ and underlying authorities"
* extension contains
MunicipalityCodes named municipalityCode 0..1 and
RegionalSubDivisionCodes named regionalSubDivisionCodes 0..1
RegionalSubDivisionCodes named regionalSubDivisionCodes 0..1 and
http://hl7.org/fhir/StructureDefinition/address-official named address-official 0..1
* extension[municipalityCode] ^short = "[DA] Kommunekode"
* extension[regionalSubDivisionCodes] ^short = "[DA] Regionskode"
* extension[address-official] ^short = "Indicate that this address is meant to be the 'official' address for that person. This can be indicated by setting the boolean to 'true' or adding a code for the country, e.g. 'DK'. In Denmark the official is the address registered in the CPR-register, see: https://www.retsinformation.dk/eli/lta/2023/1010."
* maritalStatus from $dk-marital-status_1 (extensible)
* generalPractitioner ^slicing.discriminator.type = #value
* ^slicing.discriminator.path = "identifier.system"
* ^slicing.rules = #open
* generalPractitioner only Reference(DkCoreOrganization or DkCorePractitioner or DkCorePractitionerRole)
* generalPractitioner contains referencedSORUnit 0..*
* generalPractitioner[referencedSORUnit] ^short = "[DA] Praktiserende læges SOR-id på sundhedsinstistutionsniveau"
* identifier only SORIdentifier
* contact.relationship from RelatedPersonRelationshipTypes (extensible)
* managingOrganization only Reference(DkCoreOrganization)
* link.other only Reference(DkCorePatient or DkCoreRelatedPerson)
* contact.relationship from extended-patient-contactrelationship (extensible)

Instance: 283
InstanceOf: DkCorePatient
Expand All @@ -54,12 +58,15 @@ Usage: #example
* name.family = "Mosebryggersen"
* name.given[0] = "Schwendlund"
* name.given[1] = "Test"
* name.text = "Schwendlund Test Mosebryggersen"
* gender = #male
* birthDate = "1958-08-01"
* address.extension[0].url = "http://hl7.dk/fhir/core/StructureDefinition/dk-core-municipalityCodes"
* address.extension[=].valueCodeableConcept = $dk-core-municipality-codes#0330
* address.extension[+].url = "http://hl7.dk/fhir/core/StructureDefinition/dk-core-RegionalSubDivisionCodes"
* address.extension[=].valueCodeableConcept = $dk-core-regional-subdivision-codes#DK-85
* address.extension[municipalityCode].url = "http://hl7.dk/fhir/core/StructureDefinition/dk-core-municipalityCodes"
* address.extension[municipalityCode].valueCodeableConcept = $dk-core-municipality-codes#0330
* address.extension[regionalSubDivisionCodes].url = "http://hl7.dk/fhir/core/StructureDefinition/dk-core-RegionalSubDivisionCodes"
* address.extension[regionalSubDivisionCodes].valueCodeableConcept = $dk-core-regional-subdivision-codes#DK-85
* address.extension[address-official].url = "http://hl7.org/fhir/StructureDefinition/address-official"
* address.extension[address-official].valueCodeableConcept = urn:iso:std:iso:3166#DK
* address.use = #home
* address.type = #postal
* address.line = "Nordre Ringgade 3"
Expand All @@ -86,6 +93,7 @@ Usage: #example
* name.family = "Berggren"
* name.given[0] = "Ruddi"
* name.given[1] = "Test"
* name.text = "Ruddi Test Berggren"
* gender = #male
* birthDate = "1977-02-15"
* address.use = #home
Expand All @@ -105,6 +113,7 @@ Usage: #example
* name.family = "Lauridsen"
* name.given[0] = "Else"
* name.given[+] = "Test"
* name.text = "Else Test Lauridsen"
* gender = #female
* birthDate = "1991-02-02"
* maritalStatus = $v3-MaritalStatus#M "Married"
Expand All @@ -121,8 +130,10 @@ Usage: #example
* name[=].given[0] = "John"
* name[=].given[+] = "Christian"
* name[=].prefix = "Mr"
* name[=].text = "Mr. John Christian Meyerhofen"
* name[+].use = #usual
* name[=].given = "Johnny"
* name[=].text = "Johnny"
* gender = #male
* birthDate = "1960-01-02"
* generalPractitioner.identifier.system = "urn:oid:1.2.208.176.1.1"
Expand All @@ -141,6 +152,7 @@ Usage: #example
* name.given[0] = "Max"
* name.given[1] = "Test"
* name.prefix = "Mr"
* name.text = "Mr. Max Test Berggren"
* gender = #male
* birthDate = "1972-07-01"
* maritalStatus = $dk-marital-status#P
Expand All @@ -156,6 +168,7 @@ Usage: #example
* name.family.extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
* name.family.extension.valueCode = http://terminology.hl7.org/CodeSystem/data-absent-reason#unknown
* name.given = "Anders"
* name.text = "Anders"
* gender = #male
* birthDate = "1983-06-07"

Expand All @@ -171,6 +184,7 @@ Usage: #example
* name.family.extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
* name.family.extension.valueCode = http://terminology.hl7.org/CodeSystem/data-absent-reason#unknown
* name.given = "Peter"
* name.text = "Peter"
* gender = #male

Instance: ukendt-X-eCPR
Expand All @@ -182,6 +196,7 @@ Usage: #example
* identifier.value = "0703921VJ4"
* name.use = #temp
* name.family = "Madsen"
* name.text = "Madsen"
* gender = #female
* birthDate = "1992-03-07"

Expand Down
Loading

0 comments on commit ec273a5

Please sign in to comment.