From 721d134f328678c254e8899314e989136b025758 Mon Sep 17 00:00:00 2001 From: Lars-Andreas Nystad Date: Tue, 16 Jan 2024 08:00:41 +0000 Subject: [PATCH 01/26] Changes done after review Jan 2024 --- VitalSigns/_updatePublisher.sh | 3 + VitalSigns/input/fsh/aliases.fsh | 6 -- .../NoDomainVitalSignPulsRhythm.fsh | 15 ++++ ...ervationHeartRateBodyPositionExtension.fsh | 13 ---- ...nsObservationHeartRatePulsBodyPosition.fsh | 12 +++ ...alSignsObservationHeartRhythmExtension.fsh | 3 - ...ignsObservationInspiredOxygenExtension.fsh | 10 --- ...SignsObservationPulsRhythmIrregularity.fsh | 12 +++ .../input/fsh/instances/CommonInstance.fsh | 57 -------------- .../fsh/instances/CommonInstance.fsh.bak | 77 ------------------- .../input/fsh/instances/NoDomainCommon.fsh | 49 ++++++++++++ .../instances/no-blood-pressure-create.fsh | 50 +++++++----- .../fsh/instances/no-body-height-create.fsh | 14 ++-- .../instances/no-body-temperature-create.fsh | 10 +-- .../fsh/instances/no-body-weight-create.fsh | 12 ++- .../fsh/instances/no-heart-rate-create.fsh | 19 ++--- .../instances/no-oxygen-saturation-create.fsh | 24 ++---- .../{no-pulse-create.fsh => no-puls-rate.fsh} | 32 ++++---- .../instances/no-respiratory-rate-create.fsh | 19 ++--- ...mainVitalSignsObservationBloodpressure.fsh | 75 ++++++++++++------ ...oDomainVitalSignsObservationBodyHeight.fsh | 12 ++- .../NoDomainVitalSignsObservationBodyTemp.fsh | 17 ++-- ...oDomainVitalSignsObservationBodyWeight.fsh | 7 +- ...NoDomainVitalSignsObservationHeartRate.fsh | 19 +++-- ...nVitalSignsObservationOxygenSaturation.fsh | 12 ++- .../NoDomainVitalSignsObservationPuls.fsh | 59 ++++++++++++++ .../NoDomainVitalSignsObservationPulse.fsh | 57 -------------- ...inVitalSignsObservationRespirationRate.fsh | 13 +++- ...ervationBloodPressureMeasurementMethod.fsh | 24 ++++++ ...ationBloodPressureBodyPositionValueSet.fsh | 6 +- ...servationBloodPressureBodySiteValueSet.fsh | 16 ++-- ...alSignsObservationBodyExposureValueSet.fsh | 7 +- ...ervationBodyHeightBodyPositionValueSet.fsh | 4 +- ...gnsObservationBodyTempBodySiteValueSet.fsh | 17 ++-- ...lSignsObservationClothingStateValueSet.fsh | 12 +-- ...nVitalSignsObservationCuffsizeValueSet.fsh | 10 +-- ...nsObservationDiastolicEndpointValueSet.fsh | 2 +- ...nsObservationHeartRateBodySiteValueSet.fsh | 13 +--- ...sObservationHeartRatePulsBodyPosition.fsh} | 14 ++-- ...ignsObservationHeartRhythmIrregularity.fsh | 4 +- ...talSignsObservationHeartRhythmValueSet.fsh | 4 +- ...omainVitalSignsObservationPulsBodySite.fsh | 32 ++++++++ ...italSignsObservationPulsRhythmValueSet.fsh | 22 ++++++ ...ionRespirationRateBodyPositionValueSet.fsh | 8 +- ...bservationRespirationRateDepthValueSet.fsh | 2 +- ...talSignsObservationSleepStatusValueSet.fsh | 4 +- ...bservationSpontaneousBreathingValueSet.fsh | 4 +- ...oDomainVitalSignsPulsMeasurementMethod.fsh | 8 ++ ...oDomainVitalSignsPulsRythmIrregularity.fsh | 22 ++++++ ...ianVitalSignHeartRateMeasurementMethod.fsh | 6 ++ 50 files changed, 512 insertions(+), 437 deletions(-) create mode 100644 VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh delete mode 100644 VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRateBodyPositionExtension.fsh create mode 100644 VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh create mode 100644 VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh delete mode 100644 VitalSigns/input/fsh/instances/CommonInstance.fsh delete mode 100644 VitalSigns/input/fsh/instances/CommonInstance.fsh.bak create mode 100644 VitalSigns/input/fsh/instances/NoDomainCommon.fsh rename VitalSigns/input/fsh/instances/{no-pulse-create.fsh => no-puls-rate.fsh} (63%) create mode 100644 VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh delete mode 100644 VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPulse.fsh create mode 100644 VitalSigns/input/fsh/valuesets/NoDomainVitalSignObservationBloodPressureMeasurementMethod.fsh rename VitalSigns/input/fsh/valuesets/{NoDomainVitalSignsObservationHeartRateBodyPositionValueSet.fsh => NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh} (75%) create mode 100644 VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh create mode 100644 VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh create mode 100644 VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh create mode 100644 VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh create mode 100644 VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh diff --git a/VitalSigns/_updatePublisher.sh b/VitalSigns/_updatePublisher.sh index f127f6612..0f9ecbed9 100644 --- a/VitalSigns/_updatePublisher.sh +++ b/VitalSigns/_updatePublisher.sh @@ -117,13 +117,16 @@ if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then curl -L $gencont_sh_url -o /tmp/_gencontinuous.new cp /tmp/_gencontinuous.new _gencontinuous.sh + chmod +x _gencontinuous.sh rm /tmp/_gencontinuous.new curl -L $gen_sh_url -o /tmp/_genonce.new cp /tmp/_genonce.new _genonce.sh + chmod +x _genonce.sh rm /tmp/_genonce.new curl -L $update_sh_url -o /tmp/_updatePublisher.new cp /tmp/_updatePublisher.new _updatePublisher.sh + chmod +x _updatePublisher.sh rm /tmp/_updatePublisher.new fi diff --git a/VitalSigns/input/fsh/aliases.fsh b/VitalSigns/input/fsh/aliases.fsh index 43b12fe8b..15864d052 100644 --- a/VitalSigns/input/fsh/aliases.fsh +++ b/VitalSigns/input/fsh/aliases.fsh @@ -12,13 +12,7 @@ Alias: $no-basis-Patient = http://hl7.no/fhir/StructureDefinition/no-basis-Patie Alias: $no-basis-Practitioner = http://hl7.no/fhir/StructureDefinition/no-basis-Practitioner Alias: $no-basis-PractitionerRole = http://hl7.no/fhir/StructureDefinition/no-basis-PractitionerRole Alias: $no-basis-Organization = http://hl7.no/fhir/StructureDefinition/no-basis-Organization -Alias: $no-bloodpressurebodysite-valueset = http://hl7.no/fhir/ValueSet/no-bloodpressurebodysite-valueset -Alias: $no-domain-vital-signs-observations-measurementmethodvalueSet = http://hl7.no/fhir/ValueSet/no-domain-vitalsignsobservation-measurementmethodvalueSet -Alias: $no-domain-vital-signs-observations-oxygensaturation-bodysitevalueset = http://hl7.no/fhir/ValueSet/no-domain-vitalsignsobservation-oxygensaturation-bodysitevalueset -Alias: $no-heartrhythm-valueset = http://hl7.no/fhir/ValueSet/no-heartrhythm-valueset -Alias: $no-domain-vital-signs-observations-respirationrate-patternvalueset = http://hl7.no/fhir/ValueSet/no-domain-vital-signs-observations-respirationrate-patternvalueset // Instances Alias: $sct = http://snomed.info/sct Alias: $loinc = http://loinc.org Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $clinical-codes = http://acme.org/devices/clinical-codes diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh new file mode 100644 index 000000000..8e8970cc8 --- /dev/null +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh @@ -0,0 +1,15 @@ +Extension: NoDomainVitalSignsObservationPulsRhythm +Id: NoDomainVitalSignsObservationPulsRhythm +Description: "Regularity of the pulse or heart beat." +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" +* ^version = "0.9.0000" +* ^status = #draft +* ^date = "2021-05-01" +* ^context.type = #element +* ^context.expression = "Observation" +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" (exactly) +* value[x] only Coding +* value[x] from NoDomainVitalSignsObservationPulsRhythm (required) +// * value[x].coding ..1 +// * value[x].coding from NoDomainVitalSignsObservationHeartRhythm (required) +// * value[x].coding.system from $no-heartrhythm-valueset (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRateBodyPositionExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRateBodyPositionExtension.fsh deleted file mode 100644 index cc17f2c59..000000000 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRateBodyPositionExtension.fsh +++ /dev/null @@ -1,13 +0,0 @@ -Extension: NoDomainVitalSignsObservationHeartRateBodyPosition -Id: NoDomainVitalSignsObservationHeartRateBodyPosition -Description: "The body position of the subject during the observation." -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRateBodyPosition" -* ^version = "0.9.0000" -* ^status = #draft -* ^date = "2021-05-01" -* ^context.type = #element -* ^context.expression = "Observation" -* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRateBodyPosition" (exactly) -* value[x] only Coding -* value[x] from NoDomainVitalSignsObservationHeartRateBodyPosition (required) -// * value[x].coding from NoDomainVitalSignsObservationHeartRateBodyPosition (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh new file mode 100644 index 000000000..f3f7f96a5 --- /dev/null +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh @@ -0,0 +1,12 @@ +Extension: NoDomainVitalSignsObservationHeartRatePulsBodyPosition +Id: NoDomainVitalSignsObservationHeartRatePulsBodyPosition +Description: "Record which Korotkoff sound is used for determining diastolic pressure using auscultative method." +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" +* ^version = "0.9.0000" +* ^status = #draft +* ^date = "2021-05-01" +* ^context.type = #fhirpath +* ^context.expression = "Observation" +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" (exactly) +* value[x] only Coding +* value[x] from NoDomainVitalSignsObservationHeartRatePulsBodyPosition (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh index 8518bd834..bcf490105 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh @@ -10,6 +10,3 @@ Description: "Regularity of the pulse or heart beat." * url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythm" (exactly) * value[x] only Coding * value[x] from NoDomainVitalSignsObservationHeartRhythm (required) -// * value[x].coding ..1 -// * value[x].coding from NoDomainVitalSignsObservationHeartRhythm (required) -// * value[x].coding.system from $no-heartrhythm-valueset (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationInspiredOxygenExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationInspiredOxygenExtension.fsh index 3a5dbb4af..372aeb06b 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationInspiredOxygenExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationInspiredOxygenExtension.fsh @@ -13,16 +13,6 @@ Description: "Details of the amount of oxygen available to the subject at the ti ProsentO2 named ProsentO2 0..1 and OnAir named OnAir 0..1 and MethodofOxygenDelivery named MethodofOxygenDelivery 0..1 -// * extension[oxygenAdministrationMethod] ^short = "http://dips.no/fhir/StructureDefinition/oxygenAdministrationMethod" -// * extension[oxygenAdministrationMethod].value[x] only string -// * extension[Flow] ^short = "http://dips.no/fhir/StructureDefinition/Flow" -// * extension[Flow].value[x] only Quantity -// * extension[FiO2] ^short = "http://dips.no/fhir/StructureDefinition/FiO2" -// * extension[FiO2].value[x] only Ratio -// * extension[FiO2] ^short = "http://dips.no/fhir/StructureDefinition/FiO2" -// * extension[ProsentO2].value[x] only Ratio -// * extension[onAir] ^short = "http://dips.no/fhir/StructureDefinition/onAir" -// * extension[onAir].value[x] only boolean * url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationInspiredOxygen" (exactly) diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh new file mode 100644 index 000000000..1ced3a4a8 --- /dev/null +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh @@ -0,0 +1,12 @@ +Extension: NoDomainVitalSignsObservationPulsRhythmIrregularity +Id: NoDomainVitalSignsObservationPulsRhythmIrregularity +Description: "More specific pattern of an irregular pulse or heart beat." +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" +* ^version = "0.9.0000" +* ^status = #draft +* ^date = "2021-05-01" +* ^context.type = #element +* ^context.expression = "Observation" +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" (exactly) +* value[x] only Coding +* value[x] from NoDomainVitalSignsObservationPulsRhythmIrregularity (required) diff --git a/VitalSigns/input/fsh/instances/CommonInstance.fsh b/VitalSigns/input/fsh/instances/CommonInstance.fsh deleted file mode 100644 index fcb47de77..000000000 --- a/VitalSigns/input/fsh/instances/CommonInstance.fsh +++ /dev/null @@ -1,57 +0,0 @@ -Instance: afa22 -InstanceOf: Organization -Usage: #example -Title: "Organization details of afa22" -Description: "" -* id = "afa22" -* name = "Organization/afa22" - -Instance: cdp1000807 -InstanceOf: Patient -Usage: #example -Title: "Patient details of cdp1000807" -Description: "" -* id = "cdp1000807" - -Instance: cdp1000239 -InstanceOf: Patient -Usage: #example -Title: "Patient details of cdp1000239" -Description: "" -* id = "cdp1000239" - -Instance: agy1002679 -InstanceOf: Encounter -Usage: #example -Title: "Encounter details of agy1002679" -Description: "" -* id = "agy1002679" -* status = #finished -* class.code = #AMB -* class.system = "http://terminology.hl7.org/CodeSystem/v3-ActCode" - -Instance: agy1000245 -InstanceOf: Encounter -Usage: #example -Title: "Encounter details of agy1000245" -Description: "" -* id = "agy1000245" -* status = #finished -* class.code = #AMB -* class.system = "http://terminology.hl7.org/CodeSystem/v3-ActCode" - -Instance: agb103 -InstanceOf: PractitionerRole -Usage: #example -Title: "Practioner details of agb103" -Description: "" -* id = "agb103" - -Instance: agb27 -InstanceOf: Practitioner -Usage: #example -Title: "Practioner details of agb27" -Description: "" -* id = "agb27" - - diff --git a/VitalSigns/input/fsh/instances/CommonInstance.fsh.bak b/VitalSigns/input/fsh/instances/CommonInstance.fsh.bak deleted file mode 100644 index 2a6ee523a..000000000 --- a/VitalSigns/input/fsh/instances/CommonInstance.fsh.bak +++ /dev/null @@ -1,77 +0,0 @@ -Instance: afa22 -InstanceOf: Organization -Usage: #example -Title: "Organization details of afa22" -Description: "" -* id = "afa22" -* name = "Organization/afa22" - -Instance: cdp1000807 -InstanceOf: Patient -Usage: #example -Title: "Patient details of cdp1000807" -Description: "" -* id = "cdp1000807" - -Instance: cdp1000239 -InstanceOf: Patient -Usage: #example -Title: "Patient details of cdp1000239" -Description: "" -* id = "cdp1000239" - -Instance: agy1002679 -InstanceOf: Encounter -Usage: #example -Title: "Encounter details of agy1002679" -Description: "" -* id = "agy1002679" -* status = #finished -* class.code = #AMB -* class.system = "http://terminology.hl7.org/CodeSystem/v3-ActCode" - -Instance: agy1000245 -InstanceOf: Encounter -Usage: #example -Title: "Encounter details of agy1000245" -Description: "" -* id = "agy1000245" -* status = #finished -* class.code = #AMB -* class.system = "http://terminology.hl7.org/CodeSystem/v3-ActCode" - -Instance: agb103 -InstanceOf: PractitionerRole -Usage: #example -Title: "Practioner details of agb103" -Description: "" -* id = "agb103" - -Instance: agb27 -InstanceOf: Practitioner -Usage: #example -Title: "Practioner details of agb27" -Description: "" -* id = "agb27" - -Instance: ako124 -InstanceOf: DocumentReference -Usage: #example -Title: "ako124" -Description: "DocumentReference" -* status = #current -* docStatus = #final -* content.attachment.title = "DocumentReference" - -Instance: agy100247 -InstanceOf: DIPSVitalSignsObservationEncounterReference -Usage: #example -Title: "100247" -Description: "instance of DIPSVitalSignsObservationEncounterReference" -* identifier[0].system = "http://dips.no/fhir/namingsystem/dips-omsorgsepisodeid" -* identifier[=].value = "agy100247" -* status = #arrived -* class.code = #AMB -* class.system = "http://terminology.hl7.org/CodeSystem/v3-ActCode" - - diff --git a/VitalSigns/input/fsh/instances/NoDomainCommon.fsh b/VitalSigns/input/fsh/instances/NoDomainCommon.fsh new file mode 100644 index 000000000..06101a9c4 --- /dev/null +++ b/VitalSigns/input/fsh/instances/NoDomainCommon.fsh @@ -0,0 +1,49 @@ +Instance: afa23 +InstanceOf: Organization +Usage: #example +Title: "Organization details of afa23" +Description: "" +* identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" +* identifier.value = "23" + +Instance: cdp1000808 +InstanceOf: Patient +Usage: #example +Title: "Patient details of cdp1000808" +Description: "" +* identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* identifier.value = "1000808" + +Instance: cdp1000240 +InstanceOf: Patient +Usage: #example +Title: "Patient details of cdp1000240" +Description: "" +* identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* identifier.value = "1000240" + + +Instance: agb104 +InstanceOf: PractitionerRole +Usage: #example +Title: "Practioner details of agb104" +Description: "" +* identifier.system = "urn:oid:1.3.6.1.4.1.9038.51.1" +* identifier.value = "104" + + +Instance: agb30 +InstanceOf: PractitionerRole +Usage: #example +Title: "PractitionerRole details of agb30" +Description: "" +* identifier.system = "urn:oid:1.3.6.1.4.1.9038.51.1" +* identifier.value = "30" + + + + + + + + diff --git a/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh b/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh index 210893096..ca4a333b9 100644 --- a/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh +++ b/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh @@ -12,10 +12,6 @@ Usage: #example * extension[=].valueCoding.code = #720740000 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Lår voksne" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationDiastolicEndPoint" -* extension[=].valueCoding.code = #1081871000202109 -* extension[=].valueCoding.system = $sct -* extension[=].valueCoding.display = "Fase IV" * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationSleepStatus" * extension[=].valueCoding.code = #248218005 * extension[=].valueCoding.system = $sct @@ -30,30 +26,42 @@ Usage: #example * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationBloodpressureMeanArterialFormula" * extension[=].valueString = "sample formula 3" * status = #final -* code = $loinc#85354-9 "Blood pressure (observable entity)" -* category = $observation-category#vital-signs "vital-signs" -* subject = Reference(Patient/cdp1000807) -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" -* subject.identifier.value = "1000807" -* encounter = Reference(Encounter/agy1002679) -* encounter.identifier.system = "http://dips.no/fhir/namingsystem/dips-omsorgsepisodeid" -* encounter.identifier.value = "1002679" +* code = $loinc#85354-9 +* code.text = "BP pnl w all optional" + +* category = $observation-category#vital-signs "Vital Signs" +* subject = Reference(Patient/cdp1000808) +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* subject.identifier.value = "1000808" + * effectiveDateTime = "2021-05-10" -* performer[0] = Reference(PractitionerRole/agb103) +* performer[0] = Reference(PractitionerRole/agb104) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.51.1" -* performer[=].identifier.value = "103" -* performer[+] = Reference(Organization/afa22) +* performer[=].identifier.value = "104" +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * note.text = "Demo Blood Pressure" * bodySite = $sct#7569003 "Finger structure (body structure)" //* method = $sct#129436005 "Auscultation - action (qualifier value)" * component[0].code.coding[0] = $loinc#8480-6 "Systolic blood pressure" -* component[=].code.coding[+] = $clinical-codes#bp-s "Systolic Blood pressure" +* component[=].code.coding[+] = $sct#4471000202106 "Systolic blood pressure" * component[=].valueQuantity = 123 'mm[Hg]' "mm[Hg]" -* component[+].code = $loinc#8462-4 "Diastolic blood pressure" +* component[=].referenceRange.low.value = 120 +* component[=].referenceRange.low.unit = "mm[Hg]" +* component[=].referenceRange.high.value = 139 +* component[=].referenceRange.high.unit = "mm[Hg]" +* component[+].code.coding[0] = $loinc#8462-4 "Diastolic blood pressure" +* component[=].code.coding[+] = $sct#4481000202108 "Diastolic blood pressure" * component[=].valueQuantity = 78 'mm[Hg]' "mm[Hg]" -* component[+].code = $loinc#8478-0 "Mean arterial pressure (observable entity)" +* component[=].referenceRange.low.value = 60 +* component[=].referenceRange.low.unit = "mm[Hg]" +* component[=].referenceRange.high.value = 89 +* component[=].referenceRange.high.unit = "mm[Hg]" +* component[+].code.coding[0] = $loinc#8478-0 "BP mean" +* component[=].code.coding[+] = $sct#4491000202105 "Mean arterial pressure (observable entity)" * component[=].valueQuantity = 93 'mm[Hg]' "mm[Hg]" -* component[+].code = $sct#4461000202102 "Arterial pulse pressure" -* component[=].valueQuantity = 45 'mm[Hg]' "mm[Hg]" \ No newline at end of file +* component[=].referenceRange.low.value = 60 +* component[=].referenceRange.low.unit = "mm[Hg]" +* component[=].referenceRange.high.value = 100 +* component[=].referenceRange.high.unit = "mm[Hg]" \ No newline at end of file diff --git a/VitalSigns/input/fsh/instances/no-body-height-create.fsh b/VitalSigns/input/fsh/instances/no-body-height-create.fsh index e9ea8f6da..98e372e23 100644 --- a/VitalSigns/input/fsh/instances/no-body-height-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-height-create.fsh @@ -8,19 +8,17 @@ Usage: #example * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Stående" * status = #final -* category = $observation-category#vital-signs "vital-signs" -* code = $loinc#8302-2 "Body height measure (observable entity)" -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#8302-2 "Body height" +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000807" -* encounter = Reference(Encounter/agy1002679) -* encounter.identifier.system = "http://dips.no/fhir/namingsystem/dips-omsorgsepisodeid" -* encounter.identifier.value = "1002679" + * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * note.text = "Demo Body Height" * valueQuantity = 156 'cm' "cm" diff --git a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh index f409e8ec5..73c1617fe 100644 --- a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh @@ -13,19 +13,17 @@ Usage: #example * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationDaysSinceMenstruationStart" * extension[=].valuePositiveInt = 12 * status = #final -* category = $observation-category#vital-signs +* category = $observation-category#vital-signs "Vital Signs" * code = $loinc#8310-5 * code.text = "Body temperature" -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000239" -* encounter.identifier.system = "http://dips.no/fhir/namingsystem/dips-omsorgsepisodeid" -* encounter.identifier.value = "1000245" * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * bodySite = $sct#34402009 "Endetarm" * note.text = "Demo Body Temperature" * valueQuantity = 37 'Cel' "Cel" \ No newline at end of file diff --git a/VitalSigns/input/fsh/instances/no-body-weight-create.fsh b/VitalSigns/input/fsh/instances/no-body-weight-create.fsh index a196df65a..5c47674fa 100644 --- a/VitalSigns/input/fsh/instances/no-body-weight-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-weight-create.fsh @@ -5,23 +5,21 @@ Usage: #example * meta.versionId = "0" * meta.source = "META_VISION" * extension[NoDomainVitalSignsObservationClothingState].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClothingState" -* extension[NoDomainVitalSignsObservationClothingState].valueCoding.code = #1081761000202100 +* extension[NoDomainVitalSignsObservationClothingState].valueCoding.code = #8101000202100 * extension[NoDomainVitalSignsObservationClothingState].valueCoding.system = $sct * extension[NoDomainVitalSignsObservationClothingState].valueCoding.display = "Naken" * extension[NoDomainVitalSignsObservationConfoundingFactor].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" * extension[NoDomainVitalSignsObservationConfoundingFactor].valueString = "sample confounding factor" * status = #final -* category = $observation-category#vital-signs "vital-signs" +* category = $observation-category#vital-signs "Vital Signs" * code = $loinc#29463-7 "Body weight" -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000807" -* encounter.identifier.system = "http://dips.no/fhir/namingsystem/dips-omsorgsepisodeid" -* encounter.identifier.value = "1002679" * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * note.text = "Demo Body Weight" * valueQuantity = 49000 'g' "g" \ No newline at end of file diff --git a/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh b/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh index 0f280ab18..3f83a457f 100644 --- a/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh +++ b/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh @@ -15,29 +15,26 @@ Usage: #example * extension[=].valueAnnotation.text = "character sample" * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClinicalDescription" * extension[=].valueAnnotation.text = "Clinical description sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRateBodyPosition" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" * extension[=].valueCoding.code = #33586001 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Sittende" * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -* identifier.system = "http://dips.no/fhir/namingsystem/externalId" -* identifier.value = "External Id: testpulseExternalId6" * status = #final -* code = $loinc#8867-4 "Heart rate (observable entity)" +* code = $loinc#8867-4 "Heart rate" * category = $observation-category#vital-signs -* subject = Reference(Patient/cdp1000239) -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" -* subject.identifier.value = "1000239" -* encounter = Reference(Encounter/agy1000245) +* subject = Reference(Patient/cdp1000240) +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* subject.identifier.value = "1000240" * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" -* bodySite = $sct#7569003 "Finger structure (body structure)" +* performer[=].identifier.value = "23" +* bodySite = $sct#80891009 "Hjerte" * note.text = "Demo heart rate" * valueQuantity = 61 '/min' "/min" diff --git a/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh b/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh index 9cfd47540..f9a1f8e5a 100644 --- a/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh +++ b/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh @@ -4,12 +4,6 @@ Usage: #example * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -// * identifier.system = "http://dips.no/fhir/namingsystem/externalId" -// * identifier.value = "External Id: testOxySatexternalId5" -// * extension[0].url = "http://hl7.no/fhir/StructureDefinition/DIPSVitalSignsObservationPrePostduktal" -// * extension[=].valueCoding.code = #1541 -// * extension[=].valueCoding.system = $sct -// * extension[=].valueCoding.display = "Preduktal" * extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationInspiredOxygen" * extension[=].extension[0].url = "http://hl7.no/fhir/StructureDefinition/Flow" * extension[=].extension[=].valueQuantity.value = 6100 @@ -24,23 +18,19 @@ Usage: #example * extension[=].extension[=].valueBoolean = true * extension[=].extension[+].url = "http://hl7.no/fhir/StructureDefinition/MethodofOxygenDelivery" * extension[=].extension[=].valueString = "Oxygen administration method" -// * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationSpO2" -// * extension[=].valueRatio.numerator.value = 24 -// * extension[=].valueRatio.denominator.value = 25 * status = #final -* category = $observation-category#vital-signs "vital-signs" +* category = $observation-category#vital-signs "Vital Signs" * category.text = "Vital Signs" -* code = $loinc#2708-6 "Pulse oximeter (physical object)" -* subject = Reference(Patient/cdp1000239) -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" -* subject.identifier.value = "1000239" -* encounter = Reference(Encounter/agy1000245) +* code = $loinc#2708-6 "Oxygen saturation in Arterial blood" +* subject = Reference(Patient/cdp1000240) +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* subject.identifier.value = "1000240" * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * bodySite.text = "Demo pulse oxymetri bodysite" * note.text = "Demo pulse oxymetri" * valueQuantity.value = 24 diff --git a/VitalSigns/input/fsh/instances/no-pulse-create.fsh b/VitalSigns/input/fsh/instances/no-puls-rate.fsh similarity index 63% rename from VitalSigns/input/fsh/instances/no-pulse-create.fsh rename to VitalSigns/input/fsh/instances/no-puls-rate.fsh index ef6ef5ea0..9442b4524 100644 --- a/VitalSigns/input/fsh/instances/no-pulse-create.fsh +++ b/VitalSigns/input/fsh/instances/no-puls-rate.fsh @@ -1,11 +1,13 @@ -Instance: no-pulse-create -InstanceOf: NoDomainVitalSignsObservationPulse +Instance: no-pulse-rate +InstanceOf: NoDomainVitalSignsObservationPuls Usage: #example -* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythm" +* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" * extension[=].valueCoding.code = #271636001 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Regelmessig" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythmIrregularity" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" +* extension[=].valueString = "sample confounding factor" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" * extension[=].valueCoding.code = #271638000 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Regelmessig uregelmessig" @@ -13,30 +15,26 @@ Usage: #example * extension[=].valueAnnotation.text = "character sample" * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClinicalDescription" * extension[=].valueAnnotation.text = "Clinical description sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRateBodyPosition" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" * extension[=].valueCoding.code = #33586001 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Sittende" * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -* identifier.system = "http://dips.no/fhir/namingsystem/externalId" -* identifier.value = "External Id: testpulseExternalId6" * status = #final -* code = $sct#78564009 "Pulse (observable entity)" +* code = $loinc#8867-4 "Heart rate" * category = $observation-category#vital-signs -* subject = Reference(Patient/cdp1000239) -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" -* subject.identifier.value = "1000239" -* encounter = Reference(Encounter/agy1000245) +* subject = Reference(Patient/cdp1000240) +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* subject.identifier.value = "1000240" * effectiveDateTime = "2021-05-10" * performer[0].identifier.system = "urn:oid:2.16.578.1.12.4.1.2" * performer[=].identifier.value = "889911" -* performer[+] = Reference(Organization/afa22) +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" -//* method = $sct#129434008 "Palpation" -* bodySite = $sct#7569003 " Finger" -* note.text = "Demo heart rate" +* performer[=].identifier.value = "23" +* bodySite = $sct#29707007 "Tå" +* note.text = "Demo Puls Rate" * valueQuantity = 61 '/min' "/min" diff --git a/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh b/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh index 34f5dc0b5..3a7c9ce4d 100644 --- a/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh +++ b/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh @@ -4,8 +4,6 @@ Usage: #example * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -// * identifier.system = "http://dips.no/fhir/namingsystem/externalId" -// * identifier.value = "External Id: testresprateExternalId7" * extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationRespirationRateBodyPosition" * extension[=].valueCoding.code = #10904000 * extension[=].valueCoding.system = $sct @@ -40,18 +38,17 @@ Usage: #example * extension[=].extension[=].valueString = "Maske" * status = #final * code = $loinc#9279-1 "Respiratory rate" -* category = $observation-category#vital-signs "vital-signs" -* subject = Reference(Patient/cdp1000239) -* subject.identifier.system = "http://dips.no/fhir/namingsystem/dips-patientid" -* subject.identifier.value = "1000239" -* encounter = Reference(Encounter/agy1000245) +* category = $observation-category#vital-signs "Vital Signs" +* subject = Reference(Patient/cdp1000240) +* subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" +* subject.identifier.value = "1000240" * effectiveDateTime = "2021-05-10" -* performer[0] = Reference(Practitioner/agb27) +* performer[0] = Reference(PractitionerRole/agb30) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.51.1" -* performer[=].identifier.value = "27" -* performer[+] = Reference(Organization/afa22) +* performer[=].identifier.value = "30" +* performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" -* performer[=].identifier.value = "22" +* performer[=].identifier.value = "23" * interpretation.text = "Clinical interpretation of Respiration" * note.text = "Demo Respiration" * valueQuantity = 14 '/min' "/min" diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh index a044afb94..342e52592 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh @@ -19,8 +19,8 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur NoDomainVitalSignsObservationBloodpressureBodyPosition named bodyPosition 0..1 and NoDomainVitalSignsObservationBloodpressureMeanArterialFormula named formulaMAPCalc 0..* and NoDomainVitalSignsObservationBloodpressureSystolicFormula named formulaSystolicCalc 0..* and - NoDomainVitalSignsObservationBloodpressureDiastolicFormula named formulaDiastolicCalc 0..* and - NoDomainVitalSignsObservationDiastolicEndPoint named diastolicEndpoint 0..1 + NoDomainVitalSignsObservationBloodpressureDiastolicFormula named formulaDiastolicCalc 0..* + * extension[headTiltAngle] ^short = "The craniocaudal tilt of the surface on which the person is lying at the time of measurement." * extension[headTiltAngle] ^definition = "The craniocaudal tilt of the surface on which the person is lying at the time of measurement." * extension[sleepStatus] ^short = "Sleep status - supports interpretation of 24 hour ambulatory blood pressure records." @@ -35,17 +35,15 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * extension[formulaSystolicCalc] ^definition = "Formula used to calculate the systolic pressure from mean arterial pressure" * extension[formulaDiastolicCalc] ^short = "Formula used to calculate the diastolic pressure from mean arterial pressure" * extension[formulaDiastolicCalc] ^definition = "Formula used to calculate the diastolic pressure from mean arterial pressure" -// * extension[diastolicEndpoint] from NoDomainVitalSignsObservationDiastolicEndpoint (required) -* extension[diastolicEndpoint] ^short = "Record which Korotkoff sound is used for determining diastolic pressure using auscultative method." -* extension[diastolicEndpoint] ^definition = "Record which Korotkoff sound is used for determining diastolic pressure using auscultative method." + * partOf ^comment = "To link an Observation to an Encounter use `encounter`. See the Notes below for guidance on referencing another Observation." * subject only Reference(Patient or $no-basis-Patient) * subject ^short = "The human subject referred to in this Observation" * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required." * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." * issued ^comment = "For Observations that don’t require review and verification, it may be the same as the `lastUpdated` time of the resource itself. For Observations that do require review and verification for certain updates, it might not be the same as the `lastUpdated` time of the resource itself due to a non-clinically significant update that doesn’t require the new version to be reviewed and verified again." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -59,15 +57,30 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * bodySite ^short = "Simple body site where blood pressure was measured." * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component." * bodySite.coding from NoDomainVitalSignsObservationBloodpressureBodySite (required) -// * bodySite.coding.system from $no-bloodpressurebodysite-valueset (required) * method ^short = "Method of measurement of blood pressure." * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see Notes below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." * component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." * component[SystolicBP] ^short = "Peak systemic arterial blood pressure - measured in systolic or contraction phase of the heart cycle." + + + + +* component[SystolicBP].code.coding contains SystolicSnomed 1..1 +* component[SystolicBP].code.coding[SystolicSnomed].code 1..1 +* component[SystolicBP].code.coding[SystolicSnomed].code = #4471000202106 (exactly) +* component[SystolicBP].code.coding[SystolicSnomed].system 1..1 +* component[SystolicBP].code.coding[SystolicSnomed].system = $sct (exactly) + + +* component[DiastolicBP].code.coding contains DiastolicBPSnomed 1..1 +* component[DiastolicBP].code.coding[DiastolicBPSnomed].code 1..1 +* component[DiastolicBP].code.coding[DiastolicBPSnomed].code = #4481000202108 (exactly) +* component[DiastolicBP].code.coding[DiastolicBPSnomed].system 1..1 +* component[DiastolicBP].code.coding[DiastolicBPSnomed].system = $sct (exactly) * component[DiastolicBP] ^short = "Minimum systemic arterial blood pressure - measured in the diastolic or relaxation phase of the heart cycle." * component contains - MeanArterialPressure 1..1 and + MeanArterialPressure 0..1 and PulsePressure 0..1 * component[MeanArterialPressure] ^short = "The average arterial pressure that occurs over the entire course of the heart contraction and relaxation cycle." * component[MeanArterialPressure] ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." @@ -80,23 +93,31 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * component[MeanArterialPressure].code.coding ^slicing.discriminator[=].path = "system" * component[MeanArterialPressure].code.coding ^slicing.ordered = false * component[MeanArterialPressure].code.coding ^slicing.rules = #open -* component[MeanArterialPressure].code.coding ^short = "Systolic Blood Pressure" -* component[MeanArterialPressure].code.coding ^definition = "Systolic Blood Pressure." -* component[MeanArterialPressure].code.coding contains MAPCode 1..1 -* component[MeanArterialPressure].code.coding[MAPCode] ^short = "Systolic Blood Pressure" -* component[MeanArterialPressure].code.coding[MAPCode] ^definition = "Systolic Blood Pressure." +* component[MeanArterialPressure].code.coding ^short = "Mean Arterial Pressure" +* component[MeanArterialPressure].code.coding ^definition = "Mean Arterial Pressure" +* component[MeanArterialPressure].code.coding contains MAPCode 1..1 and MAPSnomedCode 1..1 +* component[MeanArterialPressure].code.coding[MAPCode] ^short = "Mean Arterial Pressure loinc code" +* component[MeanArterialPressure].code.coding[MAPCode] ^definition = "Mean Arterial Pressure loinc code." * component[MeanArterialPressure].code.coding[MAPCode].system 1..1 * component[MeanArterialPressure].code.coding[MAPCode].system only uri * component[MeanArterialPressure].code.coding[MAPCode].system = "http://loinc.org" (exactly) * component[MeanArterialPressure].code.coding[MAPCode].code 1..1 * component[MeanArterialPressure].code.coding[MAPCode].code only code * component[MeanArterialPressure].code.coding[MAPCode].code = #8478-0 (exactly) +* component[MeanArterialPressure].code.coding[MAPSnomedCode] ^short = "Mean Arterial Pressure snomed code" +* component[MeanArterialPressure].code.coding[MAPSnomedCode] ^definition = "Mean Arterial Pressure snomed code" +* component[MeanArterialPressure].code.coding[MAPSnomedCode].system 1..1 +* component[MeanArterialPressure].code.coding[MAPSnomedCode].system only uri +* component[MeanArterialPressure].code.coding[MAPSnomedCode].system = "http://snomed.info/sct" (exactly) +* component[MeanArterialPressure].code.coding[MAPSnomedCode].code 1..1 +* component[MeanArterialPressure].code.coding[MAPSnomedCode].code only code +* component[MeanArterialPressure].code.coding[MAPSnomedCode].code = #4491000202105 (exactly) * component[MeanArterialPressure].value[x] only Quantity -* component[MeanArterialPressure].value[x] ^slicing.discriminator.type = #type -* component[MeanArterialPressure].value[x] ^slicing.discriminator.path = "$this" -* component[MeanArterialPressure].value[x] ^slicing.rules = #open -* component[MeanArterialPressure].valueQuantity only Quantity -* component[MeanArterialPressure].valueQuantity ^sliceName = "valueQuantity" +//* component[MeanArterialPressure].value[x] ^slicing.discriminator.type = #type +//* component[MeanArterialPressure].value[x] ^slicing.discriminator.path = "$this" +//* component[MeanArterialPressure].value[x] ^slicing.rules = #open +//* component[MeanArterialPressure].valueQuantity only Quantity +//* component[MeanArterialPressure].valueQuantity ^sliceName = "valueQuantity" * component[MeanArterialPressure].valueQuantity.value 1.. * component[MeanArterialPressure].valueQuantity.unit 1.. * component[MeanArterialPressure].valueQuantity.system 1.. @@ -118,15 +139,19 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * component[PulsePressure].code.coding[SAPSnomedCode].code = #4461000202102 (exactly) * component[PulsePressure].code.coding[SAPSnomedCode].userSelected ..0 * component[PulsePressure].value[x] only Quantity -* component[PulsePressure].value[x] ^slicing.discriminator.type = #type -* component[PulsePressure].value[x] ^slicing.discriminator.path = "$this" -* component[PulsePressure].value[x] ^slicing.rules = #open -* component[PulsePressure].valueQuantity only Quantity -* component[PulsePressure].valueQuantity ^sliceName = "valueQuantity" +//* component[PulsePressure].value[x] ^slicing.discriminator.type = #type +//* component[PulsePressure].value[x] ^slicing.discriminator.path = "$this" +//* component[PulsePressure].value[x] ^slicing.rules = #open +//* component[PulsePressure].valueQuantity only Quantity +//* component[PulsePressure].valueQuantity ^sliceName = "valueQuantity" * component[PulsePressure].valueQuantity.value 1.. * component[PulsePressure].valueQuantity.unit 1.. * component[PulsePressure].valueQuantity.system 1.. * component[PulsePressure].valueQuantity.system = "http://unitsofmeasure.org" (exactly) * component[PulsePressure].valueQuantity.code 1.. * component[PulsePressure].valueQuantity.code = #mm[Hg] (exactly) -* referenceRange ..1 \ No newline at end of file +* referenceRange ..1 +* code.coding 1.. +* method from NoDomainVitalSignObservationBloodPressureMeasurementMethod (extensible) +* method ^short = "Method of measurement of blood pressure." +* method.coding from NoDomainVitalSignObservationBloodPressureMeasurementMethod (extensible) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh index 3c4561f57..1b359005d 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh @@ -20,8 +20,8 @@ To be used for recording the measured height or body length of an individual at * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required." * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." * issued ^comment = "For Observations that don’t require review and verification, it may be the same as the `lastUpdated` time of the resource itself. For Observations that do require review and verification for certain updates, it might not be the same as the `lastUpdated` time of the resource itself due to a non-clinically significant update that doesn’t require the new version to be reviewed and verified again." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -32,4 +32,10 @@ To be used for recording the measured height or body length of an individual at * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component." * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see Notes below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." -* component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." \ No newline at end of file +* component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." +* code.coding contains BodyHeightSnomedCode 1..1 +* code.coding[BodyHeightSnomedCode] ^definition = "body Height Snomed Code" +* code.coding[BodyHeightSnomedCode] ^short = "body Height Snomed Code" +* code.coding[BodyHeightSnomedCode].system 1..1 +* code.coding[BodyHeightSnomedCode].system = $sct +* code.coding[BodyHeightSnomedCode].code = #50373000 \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh index f301546ec..469f15e62 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh @@ -24,8 +24,8 @@ Description: "Base profile for Norwegian Vital Signs Observation Body Temperatur * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -37,11 +37,18 @@ Description: "Base profile for Norwegian Vital Signs Observation Body Temperatur * note.id ..0 * note.author[x] ..0 * note.time ..0 -* bodySite from NoDomainVitalSignsObservationBodyTempBodySite (required) +* code.coding 1.. +* bodySite from NoDomainVitalSignsObservationBodyTempBodySite (extensible) * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." -* bodySite.coding from NoDomainVitalSignsObservationBodyTempBodySite (required) +* bodySite.coding from NoDomainVitalSignsObservationBodyTempBodySite (extensible) * bodySite.coding.system 1.. * bodySite.coding.code 1.. * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see [Notes](observation.html#obsgrouping) below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." -* component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." \ No newline at end of file +* component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." +* code.coding contains BodyTempSnomedCode 1..1 +* code.coding[BodyTempSnomedCode] ^definition = "body Height Snomed Code" +* code.coding[BodyTempSnomedCode] ^short = "body Height Snomed Code" +* code.coding[BodyTempSnomedCode].system 1..1 +* code.coding[BodyTempSnomedCode].system = $sct +* code.coding[BodyTempSnomedCode].code = #276885007 \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh index aa2562323..93a557c2a 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh @@ -22,12 +22,15 @@ Description: "Base profile for Norwegian Vital Signs Observation Body Weight inf * code.coding[BodyWeightCode].version ..0 * code.coding[BodyWeightCode].userSelected ..0 * code.text ..0 +* code.coding contains BodyWeightSnomedCode 1..1 +* code.coding[BodyWeightSnomedCode].code = #27113001 (exactly) +* code.coding[BodyWeightSnomedCode].system = $sct (exactly) * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode" * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." * issued ^comment = "For Observations that don’t require review and verification, it may be the same as the `lastUpdated` time of the resource itself. For Observations that do require review and verification for certain updates, it might not be the same as the `lastUpdated` time of the resource itself due to a non-clinically significant update that doesn’t require the new version to be reviewed and verified again." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh index ed63d7cdd..3cfcdeea8 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh @@ -17,7 +17,7 @@ Use to record the presence or absence of a pulse or heart beat.""" NoDomainVitalSignsObservationConfoundingFactor named confoundingFactor 0..1 and NoDomainVitalSignsObservationClinicalDescription named clinicalDescription 0..1 and NoDomainVitalSignsObservationCharacterOfHeartRate named characterOfHeartrate 0..1 and - NoDomainVitalSignsObservationHeartRateBodyPosition named BodyPosition 0..1 and + NoDomainVitalSignsObservationHeartRatePulsBodyPosition named BodyPosition 0..1 and NoDomainVitalSignsObservationHeartRhythmIrregularity named heartRythmIrregularity 0..1 * extension[heartRhythm] ^short = "Regularity of the pulse or heart beat." * extension[heartRhythm] ^definition = "Regularity of the pulse or heart beat." @@ -33,8 +33,8 @@ Use to record the presence or absence of a pulse or heart beat.""" * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -45,8 +45,15 @@ Use to record the presence or absence of a pulse or heart beat.""" * valueQuantity ^short = "The rate of the pulse or heart beat, measured in beats per minute." * valueQuantity ^definition = "The rate of the pulse or heart beat, measured in beats per minute." * valueQuantity ^comment = "An observation may have; 1) a single value here, 2) both a value and a set of related or component values, or 3) only a set of related or component values. If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value. For additional guidance, see the Notes section below." -* bodySite from NoDomainVitalSignsObservationHeartRateBodySite (required) +* bodySite from NoDomainVitalSignsObservationHeartRateBodySite (extensible) * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." -* bodySite.coding from NoDomainVitalSignsObservationHeartRateBodySite (required) +* bodySite.coding from NoDomainVitalSignsObservationHeartRateBodySite (extensible) * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases." -* derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." \ No newline at end of file +* derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." +* code.coding contains HearRateSNOMEDCode 1..1 +* code.coding[HearRateSNOMEDCode].system 1.. +* code.coding[HearRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[HearRateSNOMEDCode].code 1.. +* code.coding[HearRateSNOMEDCode].code = #364075005 (exactly) +* method from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) +* method.coding from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh index 9f928bab9..a39aed305 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh @@ -20,8 +20,8 @@ Use to record blood oxygen and related measurements, measured by pulse oximetry * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required." * effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." * issued ^comment = "For Observations that don’t require review and verification, it may be the same as the `lastUpdated` time of the resource itself. For Observations that do require review and verification for certain updates, it might not be the same as the `lastUpdated` time of the resource itself due to a non-clinically significant update that doesn’t require the new version to be reviewed and verified again." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -36,8 +36,12 @@ Use to record blood oxygen and related measurements, measured by pulse oximetry * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see Notes below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." * component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." - - +* code.coding 1.. +* code.coding contains ResRateSNOMEDCode 1..1 +* code.coding[ResRateSNOMEDCode].system 1.. +* code.coding[ResRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[ResRateSNOMEDCode].code 1.. +* code.coding[ResRateSNOMEDCode].code = #431314004 (exactly) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh new file mode 100644 index 000000000..7853d58b4 --- /dev/null +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh @@ -0,0 +1,59 @@ +Profile: NoDomainVitalSignsObservationPuls +Parent: $heartrate +Id: NoDomainVitalSignsObservationPuls +Title: "NO Domain VitalSigns Observation - Puls" +Description: """Base profile for Norwegian Vital Signs Observation Heart Rate information. +Use to record the presence or absence of a pulse or heart beat.""" +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPuls" +* ^version = "0.9.0000" +* ^status = #draft +* ^date = "2021-05-01" +* ^purpose = "Basisprofile for Norwegian VitalSigns Observation Heart Rate information. Defined by The Norwegian Directorate of eHealth and HL7 Norway. The profile adds Norwegian specific property information and further explanation of the use for the data-elements in a Norwegian VitalSigns Observation Heart Rate." +* extension ^slicing.discriminator.type = #value +* extension ^slicing.discriminator.path = "url" +* extension ^slicing.rules = #open +* extension contains + NoDomainVitalSignsObservationPulsRhythm named pulsRhythm 0..1 and + NoDomainVitalSignsObservationConfoundingFactor named confoundingFactor 0..1 and + NoDomainVitalSignsObservationClinicalDescription named clinicalDescription 0..1 and + NoDomainVitalSignsObservationCharacterOfHeartRate named characterOfHeartrate 0..1 and + NoDomainVitalSignsObservationHeartRatePulsBodyPosition named BodyPosition 0..1 and + NoDomainVitalSignsObservationPulsRhythmIrregularity named pulsRythmIrregularity 0..1 +* extension[pulsRhythm] ^short = "Regularity of the pulse or heart beat." +* extension[pulsRhythm] ^definition = "Regularity of the pulse or heart beat." +* extension[clinicalDescription] ^short = "Narrative description about the pulse or heart beat." +* extension[clinicalDescription] ^definition = "Narrative description about the pulse or heart beat." +* extension[characterOfHeartrate] ^short = "Description of the character of the pulse or heart beat." +* extension[characterOfHeartrate] ^definition = "Description of the character of the pulse or heart beat." +* extension[BodyPosition] ^short = "The body position of the subject during the observation." +* extension[BodyPosition] ^definition = "The body position of the subject during the observation." +* extension[pulsRythmIrregularity] ^short = "More specific pattern of an irregular pulse or heart beat." +* extension[pulsRythmIrregularity] ^definition = "More specific pattern of an irregular pulse or heart beat." +* partOf ^comment = "To link an Observation to an Encounter use `encounter`. See the Notes below for guidance on referencing another Observation." +* subject only Reference(Patient or $no-basis-Patient) +* focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." +* effective[x] ^comment = "At least a date should be present unless this observation is a historical report. For recording imprecise or \"fuzzy\" times (For example, a blood glucose measurement taken \"after breakfast\") use the Timing datatype which allow the measurement to be tied to regular life events." +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" +* performer ^slicing.rules = #open +* performer contains + Author 0..* and + organization 0..* +* performer[Author] only Reference(Practitioner or PractitionerRole or CareTeam or Patient or RelatedPerson or $no-basis-Practitioner or $no-basis-PractitionerRole) +* performer[organization] only Reference(Organization or $no-basis-Organization) +* value[x] ^slicing.rules = #open +* valueQuantity ^short = "The rate of the pulse or heart beat, measured in beats per minute." +* valueQuantity ^definition = "The rate of the pulse or heart beat, measured in beats per minute." +* valueQuantity ^comment = "An observation may have; 1) a single value here, 2) both a value and a set of related or component values, or 3) only a set of related or component values. If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value. For additional guidance, see the Notes section below." +* bodySite from NoDomainVitalSignsObservationPulsBodySite (extensible) +* bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." +* bodySite.coding from NoDomainVitalSignsObservationPulsBodySite (extensible) +* hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases." +* derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." +* code.coding contains PulseSNOMEDCode 1..1 +* code.coding[PulseSNOMEDCode].system 1.. +* code.coding[PulseSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[PulseSNOMEDCode].code 1.. +* code.coding[PulseSNOMEDCode].code = #78564009 (exactly) +* method from NoDomainVitalSignsPulsMeasurmentMethod (extensible) +* method.coding from NoDomainVitalSignsPulsMeasurmentMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPulse.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPulse.fsh deleted file mode 100644 index 3575678f9..000000000 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPulse.fsh +++ /dev/null @@ -1,57 +0,0 @@ -Profile: NoDomainVitalSignsObservationPulse -Parent: $vitalsigns -Id: NoDomainVitalSignsObservationPulse -Title: "NO Domain VitalSigns Observation - Pulse" -Description: "Base profile for Norwegian Vital Signs Observation Pulse information. The rate and associated attributes for a pulse." -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulse" -* ^version = "0.9.0000" -* ^status = #draft -* ^date = "2021-05-01" -* ^purpose = "To record details about the rate and associated attributes for a pulse" -* extension ^slicing.discriminator.type = #value -* extension ^slicing.discriminator.path = "url" -* extension ^slicing.rules = #open -* extension contains - NoDomainVitalSignsObservationHeartRhythm named heartRythm 0..1 and - NoDomainVitalSignsObservationClinicalDescription named clinicalDescription 0..1 and - NoDomainVitalSignsObservationCharacterOfHeartRate named characterOfHeartrate 0..1 and - NoDomainVitalSignsObservationHeartRateBodyPosition named BodyPosition 0..1 and - NoDomainVitalSignsObservationHeartRhythmIrregularity named heartRythmIrregularity 0..1 -* extension[heartRythm] ^short = "Regularity of the pulse or heart beat." -* extension[heartRythm] ^definition = "Regularity of the pulse or heart beat." -* extension[clinicalDescription] ^short = "Narrative description about the pulse or heart beat." -* extension[clinicalDescription] ^definition = "Narrative description about the pulse or heart beat." -* extension[characterOfHeartrate] ^short = "Description of the character of the pulse or heart beat." -* extension[characterOfHeartrate] ^definition = "Description of the character of the pulse or heart beat." -* extension[BodyPosition] ^short = "The body position of the subject during the observation." -* extension[BodyPosition] ^definition = "The body position of the subject during the observation." -* extension[heartRythmIrregularity] ^short = "More specific pattern of an irregular pulse or heart beat." -* extension[heartRythmIrregularity] ^definition = "More specific pattern of an irregular pulse or heart beat." -* code.coding ^slicing.discriminator.type = #value -* code.coding ^slicing.discriminator.path = "system" -* code.coding ^slicing.rules = #open -* code.coding contains PulseCode 1..1 -* code.coding[PulseCode].system 1.. -* code.coding[PulseCode].system = "http://snomed.info/sct" (exactly) -* code.coding[PulseCode].code 1.. -* code.coding[PulseCode].code = #78564009 (exactly) -* subject only Reference(Patient or $no-basis-Patient) -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" -* performer ^slicing.rules = #open -* performer contains - Author 0..* and - organization 0..* -* performer[Author] only Reference(Practitioner or PractitionerRole or CareTeam or Patient or RelatedPerson or $no-basis-Practitioner or $no-basis-PractitionerRole) -* performer[organization] only Reference(Organization or $no-basis-Organization) -* value[x] ^slicing.discriminator.type = #type -* value[x] ^slicing.discriminator.path = "$this" -* value[x] ^slicing.rules = #open -* valueQuantity only Quantity -* valueQuantity ^sliceName = "valueQuantity" -* valueQuantity.value 1.. -* valueQuantity.unit 1.. -* valueQuantity.system 1.. -* valueQuantity.code 1.. -* bodySite from NoDomainVitalSignsObservationHeartRateBodySite (required) -* bodySite.coding from NoDomainVitalSignsObservationHeartRateBodySite (required) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh index 88dbe8ff4..41cc008c7 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh @@ -29,8 +29,8 @@ Use to record the observed and measured characteristics of spontaneous breathing * partOf ^comment = "To link an Observation to an Encounter use `encounter`." * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." -* performer ^slicing.discriminator.type = #profile -* performer ^slicing.discriminator.path = "resolve()" +* performer ^slicing.discriminator.type = #type +* performer ^slicing.discriminator.path = "type" * performer ^slicing.rules = #open * performer contains Author 0..* and @@ -45,4 +45,11 @@ Use to record the observed and measured characteristics of spontaneous breathing * note.time ..0 * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." -* component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." \ No newline at end of file +* component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." +* code.coding 1.. +* code.coding contains ResRateSNOMEDCode 1..1 +* code.coding[ResRateSNOMEDCode].system 1.. +* code.coding[ResRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[ResRateSNOMEDCode].code 1.. +* code.coding[ResRateSNOMEDCode].code = #271625008 (exactly) + diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignObservationBloodPressureMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignObservationBloodPressureMeasurementMethod.fsh new file mode 100644 index 000000000..9d6c0cf72 --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignObservationBloodPressureMeasurementMethod.fsh @@ -0,0 +1,24 @@ +ValueSet: NoDomainVitalSignObservationBloodPressureMeasurementMethod +Id: NoDomainVitalSignObservationBloodPressureMeasurementMethod +Title: "NoDomainVitalSignObservationBloodPressureMeasurementMethod" +Description: "Codes representing measurement method for blood pressurerate" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignObservationBloodPressureMeasurementMethod" +* ^version = "4.0.0" +* ^status = #draft +* ^experimental = false +* ^date = "2021-03-17T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" +* SNOMED_CT#129436005 "Auskultasjon" +* SNOMED_CT#37931006 "Auskultasjon" +* SNOMED_CT#129434008 "Palpasjon" +* SNOMED_CT#113011001 "Palpasjon" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodyPositionValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodyPositionValueSet.fsh index 4b9a5ce11..dcf63af4c 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodyPositionValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodyPositionValueSet.fsh @@ -19,8 +19,8 @@ Description: "Codes representing body position for blood pressure" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#10904000 "Stående" * SNOMED_CT#4801000202104 "Liggende" +* SNOMED_CT#414585002 "Liggende lent mot venstre" * SNOMED_CT#33586001 "Sittende" -* SNOMED_CT#272580008 "Tilbakelent" -* SNOMED_CT#414585002 "Liggende lent mot venstre" \ No newline at end of file +* SNOMED_CT#10904000 "Stående" +* SNOMED_CT#272580008 "Tilbakelent" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodySiteValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodySiteValueSet.fsh index 834b62556..65417864e 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodySiteValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBloodPressureBodySiteValueSet.fsh @@ -18,15 +18,15 @@ Description: "Codes representing body site for blood pressure" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#368209003 "Overarm, høyre" -* SNOMED_CT#368208006 "Overarm, venstre" -* SNOMED_CT#11207009 "Lår, høyre" -* SNOMED_CT#61396006 "Lår, venstre" -* SNOMED_CT#9736006 "Håndledd, høyre" -* SNOMED_CT#5951000 "Håndledd, venstre" * SNOMED_CT#6685009 "Ankel, høyre" * SNOMED_CT#51636004 "Ankel, venstre" * SNOMED_CT#7569003 "Finger" -* SNOMED_CT#29707007 "Tå" * SNOMED_CT#2402003 "Fotrygg" -* SNOMED_CT#51114001 "Intra-arterielt" \ No newline at end of file +* SNOMED_CT#9736006 "Håndledd, høyre" +* SNOMED_CT#5951000 "Håndledd, venstre" +* SNOMED_CT#51114001 "Intraarterielt" +* SNOMED_CT#11207009 "Lår, høyre" +* SNOMED_CT#61396006 "Lår, venstre" +* SNOMED_CT#368209003 "Overarm, høyre" +* SNOMED_CT#368208006 "Overarm, venstre" +* SNOMED_CT#29707007 "Tå" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyExposureValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyExposureValueSet.fsh index 746fd3ec1..6690926e6 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyExposureValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyExposureValueSet.fsh @@ -16,8 +16,9 @@ Description: "Codes representing body exposure" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" + + * SNOMED_CT#5671000202107 "Naken" -* SNOMED_CT#5591000202105 "Redusert påkledning/tildekking" -* SNOMED_CT#5611000202100 "Passende påkledning/tildekking" * SNOMED_CT#5601000202102 "Økt påkledning/tildekking" - +* SNOMED_CT#5611000202100 "Passende påkledning/tildekking" +* SNOMED_CT#5591000202105 "Redusert påkledning/tildekking" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyHeightBodyPositionValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyHeightBodyPositionValueSet.fsh index d19b38b07..f05f17590 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyHeightBodyPositionValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyHeightBodyPositionValueSet.fsh @@ -18,5 +18,5 @@ Description: "Codes representing body position for body height" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#10904000 "Stående" -* SNOMED_CT#4801000202104 "Liggende" \ No newline at end of file +* SNOMED_CT#4801000202104 "Liggende" +* SNOMED_CT#10904000 "Stående" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyTempBodySiteValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyTempBodySiteValueSet.fsh index 2e529972a..f8f674290 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyTempBodySiteValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationBodyTempBodySiteValueSet.fsh @@ -18,16 +18,17 @@ Description: "Codes representing body site for body temperature" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#34402009 "Endetarm" * SNOMED_CT#91470000 "Armhule" -* SNOMED_CT#42859004 "Øre" -* SNOMED_CT#52795006 "Panne" +* SNOMED_CT#34402009 "Endetarm" +* SNOMED_CT#39937001 "Hud" +* SNOMED_CT#59820001 "Intravaskulært" +* SNOMED_CT#26893007 "Lyske" * SNOMED_CT#122861001 "Munn" * SNOMED_CT#71836000 "Nesesvelg" -* SNOMED_CT#89837001 "Urinblære" -* SNOMED_CT#59820001 "Intravaskulært" -* SNOMED_CT#39937001 "Hud" +* SNOMED_CT#42859004 "Øre" +* SNOMED_CT#52795006 "Panne" * SNOMED_CT#76784001 "Skjede" * SNOMED_CT#32849002 "Spiserør" -* SNOMED_CT#26893007 "Lyske" -* SNOMED_CT#450718002 "Tinning" \ No newline at end of file +* SNOMED_CT#450718002 "Tinning" +* SNOMED_CT#450721000 "Tinning" +* SNOMED_CT#89837001 "Urinblære" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationClothingStateValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationClothingStateValueSet.fsh index a9b773910..4e5aa0a2b 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationClothingStateValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationClothingStateValueSet.fsh @@ -1,6 +1,6 @@ ValueSet: NoDomainVitalSignsObservationClothingState Id: NoDomainVitalSignsObservationClothingState -Title: "Codes representing level of clothing" +Title: "NoDomainVitalSignsObservationClothingState" Description: "Codes representing level of clothing" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" @@ -18,8 +18,8 @@ Description: "Codes representing level of clothing" * ^publisher = "FHIR Project team" // * ^contact.telecom.system = #url // * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#1081761000202100 "Naken" -* SNOMED_CT#1081781000202100 "Lette klær / undertøy" -* SNOMED_CT#1081791000202100 "Fullt påkledt, uten sko" -* SNOMED_CT#1081801000202100 "Fullt påkledt inklusive sko" -* SNOMED_CT#1081771000202100 "Bleie" \ No newline at end of file +* SNOMED_CT#8121000202106 "Bleie" +* SNOMED_CT#8081000202108 "Fullt påkledd inklusive sko" +* SNOMED_CT#8091000202105 "Fullt påkledd, uten sko" +* SNOMED_CT#8111000202103 "Lette klær / undertøy" +* SNOMED_CT#8101000202100 "Naken" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh index feb8a70c8..97089831a 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh @@ -16,10 +16,10 @@ Description: "Codes representing cuff size" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* SNOMED_CT#720740000 "Lår voksne" -* SNOMED_CT#720738005 "Store voksne" -* SNOMED_CT#757991000202117 "Voksne" -* SNOMED_CT#720739002 "Små voksne" * SNOMED_CT#720736009 "Barn" +* SNOMED_CT#720740000 "Lår voksne" +* SNOMED_CT#4231000202108 "Neonatal" +* SNOMED_CT#720737000 "Små voksne" * SNOMED_CT#4281000202107 "Spedbarn" -* SNOMED_CT#4231000202108 "Neonatal" \ No newline at end of file +* SNOMED_CT#720737000 "Store voksne" +* SNOMED_CT#720737000 "Voksne" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationDiastolicEndpointValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationDiastolicEndpointValueSet.fsh index 6955ff03d..0a2cf2cb3 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationDiastolicEndpointValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationDiastolicEndpointValueSet.fsh @@ -1,6 +1,6 @@ ValueSet: NoDomainVitalSignsObservationDiastolicendPoint Id: NoDomainVitalSignsObservationDiastolicendPoint -Title: "Codes representing Diastolic end point" +Title: "NoDomainVitalSignsObservationDiastolicendPoint" Description: "Codes representing Diastolic end point" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodySiteValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodySiteValueSet.fsh index 3ca3db1fb..5f399051f 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodySiteValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodySiteValueSet.fsh @@ -18,15 +18,4 @@ Description: "Codes representing body site for heart rate" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#368504007 "Radialisarterien, venstre" -* SNOMED_CT#368503001 "Radialisarterien, høyre" -* SNOMED_CT#721028001 "Carotisarterien, venstre" -* SNOMED_CT#721033002 "Carotisarterien, høyre" -* SNOMED_CT#113270003 "Femoralisarterien, venstre" -* SNOMED_CT#69833005 "Femoralisarterien, høyre" -* SNOMED_CT#723962009 "Brachialisarterien, høyre" -* SNOMED_CT#723961002 "Brachialisarterien, venstre" -* SNOMED_CT#7569003 "Finger" -* SNOMED_CT#29707007 "Tå" -* SNOMED_CT#48800003 "Øreflipp" -* SNOMED_CT#364075005 "Hjertet" \ No newline at end of file +* SNOMED_CT#80891009 "Hjerte" diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodyPositionValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh similarity index 75% rename from VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodyPositionValueSet.fsh rename to VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh index ed8851522..201931030 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRateBodyPositionValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh @@ -1,6 +1,6 @@ -ValueSet: NoDomainVitalSignsObservationHeartRateBodyPosition -Id: NoDomainVitalSignsObservationHeartRateBodyPosition -Title: "NoDomainVitalSignsObservationHeartRateBodyPosition" +ValueSet: NoDomainVitalSignsObservationHeartRatePulsBodyPosition +Id: NoDomainVitalSignsObservationHeartRatePulsBodyPosition +Title: "NoDomainVitalSignsObservationHeartRatePulsBodyPosition" Description: "Codes representing body position for heart rate" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" @@ -10,7 +10,7 @@ Description: "Codes representing body position for heart rate" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRateBodyPosition" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" * ^version = "4.0.0" * ^status = #draft * ^experimental = false @@ -18,7 +18,7 @@ Description: "Codes representing body position for heart rate" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" * ^publisher = "FHIR Project team" -* SNOMED_CT#10904000 "Stående" +* SNOMED_CT#4801000202104 "Liggende" * SNOMED_CT#33586001 "Sittende" -* SNOMED_CT#272580008 "Tilbakelent" -* SNOMED_CT#4801000202104 "Liggende" \ No newline at end of file +* SNOMED_CT#10904000 "Stående" +* SNOMED_CT#272580008 "Tilbakelent" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmIrregularity.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmIrregularity.fsh index e0308697e..0095669e0 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmIrregularity.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmIrregularity.fsh @@ -18,5 +18,5 @@ Description: "Codes representing heart rhythm irregularity for heart rate" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#271638000 "Regelmessig uregelmessig" -* SNOMED_CT#271637005 "Uregelmessig uregelmessig" \ No newline at end of file +* SNOMED_CT#248652003 "Regelmessig uregelmessig" +* SNOMED_CT#248651005 "Uregelmessig uregelmessig" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmValueSet.fsh index 73dffead1..e3efa88ed 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRhythmValueSet.fsh @@ -18,5 +18,5 @@ Description: "Codes representing heart rhythm for heart rate" * ^publisher = "FHIR Project team" * ^contact.telecom.system = #url * ^contact.telecom.value = "http://hl7.org/fhir" -* SNOMED_CT#271636001 "Regelmessig" -* SNOMED_CT#61086009 "Uregelmessig" \ No newline at end of file +* SNOMED_CT#4251000202104 "Regelmessig" +* SNOMED_CT#361137007 "Uregelmessig" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh new file mode 100644 index 000000000..d114e892a --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh @@ -0,0 +1,32 @@ +ValueSet: NoDomainVitalSignsObservationPulsBodySite +Id: NoDomainVitalSignsObservationPulsBodySite +Title: "NoDomainVitalSignsObservationPulsBodySite" +Description: "Codes representing body site for heart rate" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsBodySite" +* ^version = "4.0.0" +* ^status = #draft +* ^experimental = false +* ^date = "2021-03-17T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" +* SNOMED_CT#723962009 "Brachialisarterien, høyre" +* SNOMED_CT#723961002 "Brachialisarterien, venstre" +* SNOMED_CT#721033002 "Carotisarterien, høyre" +* SNOMED_CT#721028001 "Carotisarterien, venstre" +* SNOMED_CT#69833005 "Femoralisarterien, høyre" +* SNOMED_CT#113270003 "Femoralisarterien, venstre" +* SNOMED_CT#7569003 "Finger" +* SNOMED_CT#48800003 "Øreflipp" +* SNOMED_CT#368503001 "Radialisarterien, høyre" +* SNOMED_CT#368504007 "Radialisarterien, venstre" +* SNOMED_CT#29707007 "Tå" + diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh new file mode 100644 index 000000000..0dbf4da8f --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh @@ -0,0 +1,22 @@ +ValueSet: NoDomainVitalSignsObservationPulsRhythm +Id: NoDomainVitalSignsObservationPulsRhythm +Title: "NoDomainVitalSignsObservationHeartRhythm" +Description: "Codes representing heart rhythm for heart rate" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsRhythm" +* ^version = "4.0.0" +* ^status = #draft +* ^experimental = false +* ^date = "2021-03-17T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" +* SNOMED_CT#271636001 "Regelmessig" +* SNOMED_CT#61086009 "Uregelmessig" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateBodyPositionValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateBodyPositionValueSet.fsh index 326f795fc..e2d7bcb8c 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateBodyPositionValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateBodyPositionValueSet.fsh @@ -16,8 +16,8 @@ Description: "Codes representing body position for respiration rate" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* SNOMED_CT#10904000 "Stående/Oppreist" -* SNOMED_CT#33586001 "Sittende" -* SNOMED_CT#272580008 "Tilbakelent" +* SNOMED_CT#1240000 "Mageleie" * SNOMED_CT#40199007 "Ryggleie" -* SNOMED_CT#1240000 "Mageleie" \ No newline at end of file +* SNOMED_CT#33586001 "Sittende" +* SNOMED_CT#10904000 "Stående/Oppreist" +* SNOMED_CT#272580008 "Tilbakelent" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateDepthValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateDepthValueSet.fsh index 6ff03ee28..e7fdc2e9b 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateDepthValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationRespirationRateDepthValueSet.fsh @@ -16,7 +16,7 @@ Description: "Codes representing depth for respiration rate" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" +* SNOMED_CT#289123006 "Dyp" * SNOMED_CT#301284009 "Normal" * SNOMED_CT#386616007 "Overfladisk" -* SNOMED_CT#289123006 "Dyp" * SNOMED_CT#248587009 "Varierende" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSleepStatusValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSleepStatusValueSet.fsh index 3d6443a34..93fc7c8b7 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSleepStatusValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSleepStatusValueSet.fsh @@ -16,5 +16,5 @@ Description: "Codes representing Sleep Status" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* SNOMED_CT#248218005 "Våken" -* SNOMED_CT#248220008 "Sovende" \ No newline at end of file +* SNOMED_CT#248220008 "Sovende" +* SNOMED_CT#248218005 "Våken" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSpontaneousBreathingValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSpontaneousBreathingValueSet.fsh index 536838a53..c7c64fc72 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSpontaneousBreathingValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationSpontaneousBreathingValueSet.fsh @@ -16,5 +16,5 @@ Description: "Codes representing Respiration Spontaneous breathing" * ^experimental = false * ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* SNOMED_CT#241700002 "Tilstede" -* SNOMED_CT#1081891000202100 "Fraværende" \ No newline at end of file +* SNOMED_CT#4891000202108 "Ikke observert" +* SNOMED_CT#241700002 "Tilstede" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh new file mode 100644 index 000000000..4d6ef69ee --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh @@ -0,0 +1,8 @@ +ValueSet: NoDomainVitalSignsPulsMeasurmentMethod +Id: NoDomainVitalSignsPulsMeasurmentMethod +Title: "NoDomainVitalSignsPulsMeasurmentMethod" +Description: "Codes representing measurement method for puls" +* SNOMED_CT#129436005 "Auskultasjon" +* SNOMED_CT#37931006 "Auskultasjon" +* SNOMED_CT#129434008 "Palpasjon" +* SNOMED_CT#113011001 "Palpasjon" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh new file mode 100644 index 000000000..205c343fb --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh @@ -0,0 +1,22 @@ +ValueSet: NoDomainVitalSignsObservationPulsRhythmIrregularity +Id: NoDomainVitalSignsObservationPulsRhythmIrregularity +Title: "NoDomainVitalSignsObservationPulsRhythmIrregularity" +Description: "Codes representing heart rhythm irregularity for Puls" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsRhythmIrregularity" +* ^version = "4.0.0" +* ^status = #draft +* ^experimental = false +* ^date = "2021-03-17T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" +* SNOMED_CT#271638000 "Regelmessig uregelmessig" +* SNOMED_CT#271637005 "Uregelmessig uregelmessig" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh new file mode 100644 index 000000000..948445223 --- /dev/null +++ b/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh @@ -0,0 +1,6 @@ +ValueSet : NoDomianVitalSignsObservationHeartRateMeasurementMethod +Id: NoDomianVitalSignsObservationHeartRateMeasurementMethod +Title: "NoDomianVitalSignsObservationHeartRateMeasurementMethod" +Description: "Codes representing measurement method for HeartRate" +* SNOMED_CT#37931006 "Auskultasjon" +* SNOMED_CT#113011001 "Palpasjon" \ No newline at end of file From 428f6d4939c05e17584b325e8344f08b8d32ed02 Mon Sep 17 00:00:00 2001 From: Thomas Tveit Rosenlund Date: Wed, 17 Jan 2024 08:03:40 +0100 Subject: [PATCH 02/26] Versjonsnummer 0.6.0 Update sushi-config.yaml --- VitalSigns/sushi-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/sushi-config.yaml b/VitalSigns/sushi-config.yaml index b268d9ad6..bc6b6f4bf 100644 --- a/VitalSigns/sushi-config.yaml +++ b/VitalSigns/sushi-config.yaml @@ -9,7 +9,7 @@ FSHOnly: false applyExtensionMetadataToRoot: false id: hl7.fhir.no.domain.vitalsigns status: draft -version: 0.5.1 +version: 0.6.0 releaseLabel: ci-build copyrightYear: 2021+ jurisdiction: urn:iso:std:iso:3166#NO "Norway" From 7d1da66c6f2b467389ac0c6f5284366055f3988c Mon Sep 17 00:00:00 2001 From: Lars-Andreas Nystad Date: Wed, 17 Jan 2024 08:29:43 +0000 Subject: [PATCH 03/26] Changed title and Description --- .../NoDomainVitalSignsObservationPulsRhythmValueSet.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh index 0dbf4da8f..bace3e8ee 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh @@ -1,7 +1,7 @@ ValueSet: NoDomainVitalSignsObservationPulsRhythm Id: NoDomainVitalSignsObservationPulsRhythm -Title: "NoDomainVitalSignsObservationHeartRhythm" -Description: "Codes representing heart rhythm for heart rate" +Title: "NoDomainVitalSignsObservationPulsRhythm" +Description: "Codes representing rhythm of Puls" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" From 9806e56d4a9cf52ee94c5b97d978f7a673696814 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 18 Jan 2024 12:14:51 +0100 Subject: [PATCH 04/26] Bugfix manglende experimental element i valueset definisjon --- .../NoDomainVitalSignsPulsMeasurementMethod.fsh | 16 ++++++++++++++++ ...DomianVitalSignHeartRateMeasurementMethod.fsh | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh index 4d6ef69ee..0b9615ad3 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh @@ -2,6 +2,22 @@ ValueSet: NoDomainVitalSignsPulsMeasurmentMethod Id: NoDomainVitalSignsPulsMeasurmentMethod Title: "NoDomainVitalSignsPulsMeasurmentMethod" Description: "Codes representing measurement method for puls" +* ^meta.lastUpdated = "2024-01-18T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsPulsMeasurmentMethod" +* ^version = "0.5.0" +* ^status = #draft +* ^experimental = false +* ^date = "2024-01-18T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" * SNOMED_CT#129436005 "Auskultasjon" * SNOMED_CT#37931006 "Auskultasjon" * SNOMED_CT#129434008 "Palpasjon" diff --git a/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh index 948445223..fe74b776a 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh @@ -2,5 +2,21 @@ ValueSet : NoDomianVitalSignsObservationHeartRateMeasurementMethod Id: NoDomianVitalSignsObservationHeartRateMeasurementMethod Title: "NoDomianVitalSignsObservationHeartRateMeasurementMethod" Description: "Codes representing measurement method for HeartRate" +* ^meta.lastUpdated = "2024-01-18T00:00:00+00:00" +* ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" +* ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" +* ^extension[=].valueCode = #oo +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" +* ^extension[=].valueCode = #draft +* ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" +* ^extension[=].valueInteger = 1 +* ^url = "http://hl7.no/fhir/ValueSet/NoDomianVitalSignsObservationHeartRateMeasurementMethod" +* ^version = "0.5.0" +* ^status = #draft +* ^experimental = false +* ^date = "2024-01-18T00:00:00+00:00" +* ^publisher = "FHIR Project team" +* ^contact.telecom.system = #url +* ^contact.telecom.value = "http://hl7.org/fhir" * SNOMED_CT#37931006 "Auskultasjon" * SNOMED_CT#113011001 "Palpasjon" \ No newline at end of file From a2373443c90fe178897a50fd841a0b1eefa10976 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 18 Jan 2024 12:27:26 +0100 Subject: [PATCH 05/26] oppgradere til 2.2.0 av no-basis i sushi og byggscript --- .github/workflows/testbuild-vitalsigns-gh-pages.yml | 2 +- .github/workflows/vitalsigns-gh-pages.yml | 2 +- VitalSigns/sushi-config.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/testbuild-vitalsigns-gh-pages.yml b/.github/workflows/testbuild-vitalsigns-gh-pages.yml index 2d1080194..2928e3047 100644 --- a/.github/workflows/testbuild-vitalsigns-gh-pages.yml +++ b/.github/workflows/testbuild-vitalsigns-gh-pages.yml @@ -34,7 +34,7 @@ jobs: # NPM and no-basis package - name: NPM install no-basis - run: npm --registry https://packages.simplifier.net install hl7.fhir.no.basis@2.1.2 + run: npm --registry https://packages.simplifier.net install hl7.fhir.no.basis@2.2.0 # Downloads the newest version of the IG Publisher, this could probable be cached. - name: 📥 Download IG Publisher diff --git a/.github/workflows/vitalsigns-gh-pages.yml b/.github/workflows/vitalsigns-gh-pages.yml index 6a07653fc..943275f18 100644 --- a/.github/workflows/vitalsigns-gh-pages.yml +++ b/.github/workflows/vitalsigns-gh-pages.yml @@ -34,7 +34,7 @@ jobs: # NPM and no-basis package - name: NPM install no-basis - run: npm --registry https://packages.simplifier.net install hl7.fhir.no.basis@2.1.1 + run: npm --registry https://packages.simplifier.net install hl7.fhir.no.basis@2.2.0 # Downloads the newest version of the IG Publisher, this could probable be cached. - name: 📥 Download IG Publisher diff --git a/VitalSigns/sushi-config.yaml b/VitalSigns/sushi-config.yaml index bc6b6f4bf..6524e31a6 100644 --- a/VitalSigns/sushi-config.yaml +++ b/VitalSigns/sushi-config.yaml @@ -9,12 +9,12 @@ FSHOnly: false applyExtensionMetadataToRoot: false id: hl7.fhir.no.domain.vitalsigns status: draft -version: 0.6.0 +version: 0.6.1 releaseLabel: ci-build copyrightYear: 2021+ jurisdiction: urn:iso:std:iso:3166#NO "Norway" dependencies: - hl7.fhir.no.basis: 2.1.1 + hl7.fhir.no.basis: 2.2.0 # ╭────────────────────────────────────────────menu.xml────────────────────────────────────────────╮ # │ To use a provided input/includes/menu.xml file, delete the "menu" property below. │ From 35d3fb37d8653c5b5c866480d096076e8cf0970c Mon Sep 17 00:00:00 2001 From: thomiz Date: Tue, 23 Jan 2024 08:12:52 +0100 Subject: [PATCH 06/26] =?UTF-8?q?Feil=20navn=20p=C3=A5=20verdisett=20"NoDo?= =?UTF-8?q?mian"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../profiles/NoDomainVitalSignsObservationHeartRate.fsh | 4 ++-- ...sh => NoDomainVitalSignHeartRateMeasurementMethod.fsh} | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) rename VitalSigns/input/fsh/valuesets/{NoDomianVitalSignHeartRateMeasurementMethod.fsh => NoDomainVitalSignHeartRateMeasurementMethod.fsh} (77%) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh index 3cfcdeea8..420bb2b71 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh @@ -55,5 +55,5 @@ Use to record the presence or absence of a pulse or heart beat.""" * code.coding[HearRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[HearRateSNOMEDCode].code 1.. * code.coding[HearRateSNOMEDCode].code = #364075005 (exactly) -* method from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) -* method.coding from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file +* method from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) +* method.coding from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh similarity index 77% rename from VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh rename to VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh index fe74b776a..87f9612ed 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomianVitalSignHeartRateMeasurementMethod.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh @@ -1,6 +1,6 @@ -ValueSet : NoDomianVitalSignsObservationHeartRateMeasurementMethod -Id: NoDomianVitalSignsObservationHeartRateMeasurementMethod -Title: "NoDomianVitalSignsObservationHeartRateMeasurementMethod" +ValueSet : NoDomainVitalSignsObservationHeartRateMeasurementMethod +Id: NoDomainVitalSignsObservationHeartRateMeasurementMethod +Title: "NoDomainVitalSignsObservationHeartRateMeasurementMethod" Description: "Codes representing measurement method for HeartRate" * ^meta.lastUpdated = "2024-01-18T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" @@ -10,7 +10,7 @@ Description: "Codes representing measurement method for HeartRate" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomianVitalSignsObservationHeartRateMeasurementMethod" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRateMeasurementMethod" * ^version = "0.5.0" * ^status = #draft * ^experimental = false From eb5afbefd29117c5c532a114504f2f6001e3c712 Mon Sep 17 00:00:00 2001 From: Lars-Andreas Nystad Date: Thu, 1 Feb 2024 08:21:29 +0000 Subject: [PATCH 07/26] Rename of puls tp pulse and added snomed codes for cuffsize and pulsebodysite --- .../NoDomainVitalSignPulsRhythm.fsh | 15 +++--- ...rvationBodyHeightBodyPositionExtension.fsh | 2 - ...servationCharacterOfHeartRateExtension.fsh | 2 +- ...gnsObservationCharacterOfPulsExtension.fsh | 11 +++++ ...nsObservationHeartRatePulsBodyPosition.fsh | 10 ++-- ...alSignsObservationHeartRhythmExtension.fsh | 2 +- ...vationHeartRhythmIrregularityExtension.fsh | 2 +- ...SignsObservationPulsRhythmIrregularity.fsh | 10 ++-- .../instances/no-blood-pressure-create.fsh | 46 ++++++++--------- .../fsh/instances/no-body-height-create.fsh | 2 +- .../instances/no-body-temperature-create.fsh | 20 ++++---- .../fsh/instances/no-body-weight-create.fsh | 14 +++--- .../fsh/instances/no-heart-rate-create.fsh | 40 +++++++-------- .../instances/no-oxygen-saturation-create.fsh | 2 - .../input/fsh/instances/no-puls-rate.fsh | 11 ++--- .../instances/no-respiratory-rate-create.fsh | 1 - ...NoDomainVitalSignsObservationHeartRate.fsh | 28 +++++------ .../NoDomainVitalSignsObservationPuls.fsh | 49 +++++++++---------- ...inVitalSignsObservationRespirationRate.fsh | 1 - ...nVitalSignsObservationCuffsizeValueSet.fsh | 4 +- ...nsObservationHeartRatePulsBodyPosition.fsh | 10 ++-- ...omainVitalSignsObservationPulsBodySite.fsh | 12 ++--- ...italSignsObservationPulsRhythmValueSet.fsh | 10 ++-- ...oDomainVitalSignsPulsMeasurementMethod.fsh | 20 ++++---- ...oDomainVitalSignsPulsRythmIrregularity.fsh | 10 ++-- 25 files changed, 166 insertions(+), 168 deletions(-) create mode 100644 VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfPulsExtension.fsh diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh index 8e8970cc8..28e0666f8 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignPulsRhythm.fsh @@ -1,15 +1,12 @@ -Extension: NoDomainVitalSignsObservationPulsRhythm -Id: NoDomainVitalSignsObservationPulsRhythm -Description: "Regularity of the pulse or heart beat." -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" +Extension: NoDomainVitalSignsObservationPulseRhythm +Id: NoDomainVitalSignsObservationPulseRhythm +Description: "Regularity of the pulse" +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythm" * ^version = "0.9.0000" * ^status = #draft * ^date = "2021-05-01" * ^context.type = #element * ^context.expression = "Observation" -* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" (exactly) +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythm" (exactly) * value[x] only Coding -* value[x] from NoDomainVitalSignsObservationPulsRhythm (required) -// * value[x].coding ..1 -// * value[x].coding from NoDomainVitalSignsObservationHeartRhythm (required) -// * value[x].coding.system from $no-heartrhythm-valueset (required) \ No newline at end of file +* value[x] from NoDomainVitalSignsObservationPulseRhythm (required) diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationBodyHeightBodyPositionExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationBodyHeightBodyPositionExtension.fsh index a5ce642a6..6a765e9ea 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationBodyHeightBodyPositionExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationBodyHeightBodyPositionExtension.fsh @@ -9,5 +9,3 @@ Description: "Position of individual when body height measured." * url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationBodyHeightBodyPosition" (exactly) * value[x] only Coding * value[x] from NoDomainVitalSignsObservationBodyHeightBodyPosition (required) -// * value[x].coding ..1 -// * value[x].coding from NoDomainVitalSignsObservationBodyHeightBodyPosition (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfHeartRateExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfHeartRateExtension.fsh index 3fe274b4c..2ecd6497a 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfHeartRateExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfHeartRateExtension.fsh @@ -1,6 +1,6 @@ Extension: NoDomainVitalSignsObservationCharacterOfHeartRate Id: NoDomainVitalSignsObservationCharacterOfHeartRate -Description: "Description of the character of the pulse or heart beat." +Description: "Description of the character of the heart beat." * ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationCharacterOfHeartRate" * ^version = "0.9.0000" * ^status = #draft diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfPulsExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfPulsExtension.fsh new file mode 100644 index 000000000..2c15b7c32 --- /dev/null +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationCharacterOfPulsExtension.fsh @@ -0,0 +1,11 @@ +Extension: NoDomainVitalSignsObservationCharacterOfPulse +Id: NoDomainVitalSignsObservationCharacterOfPulse +Description: "Description of the character of the pulse." +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationCharacterOfPulse" +* ^version = "0.9.0000" +* ^status = #draft +* ^date = "2021-05-01" +* ^context.type = #element +* ^context.expression = "Observation" +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationCharacterOfPulse" (exactly) +* value[x] only Annotation \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh index f3f7f96a5..268591bfa 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh @@ -1,12 +1,12 @@ -Extension: NoDomainVitalSignsObservationHeartRatePulsBodyPosition -Id: NoDomainVitalSignsObservationHeartRatePulsBodyPosition +Extension: NoDomainVitalSignsObservationHeartRatePulseBodyPosition +Id: NoDomainVitalSignsObservationHeartRatePulseBodyPosition Description: "Record which Korotkoff sound is used for determining diastolic pressure using auscultative method." -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulseBodyPosition" * ^version = "0.9.0000" * ^status = #draft * ^date = "2021-05-01" * ^context.type = #fhirpath * ^context.expression = "Observation" -* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" (exactly) +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulseBodyPosition" (exactly) * value[x] only Coding -* value[x] from NoDomainVitalSignsObservationHeartRatePulsBodyPosition (required) \ No newline at end of file +* value[x] from NoDomainVitalSignsObservationHeartRatePulseBodyPosition (required) \ No newline at end of file diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh index bcf490105..a6d31127e 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmExtension.fsh @@ -1,6 +1,6 @@ Extension: NoDomainVitalSignsObservationHeartRhythm Id: NoDomainVitalSignsObservationHeartRhythm -Description: "Regularity of the pulse or heart beat." +Description: "Regularity of the heart beat." * ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythm" * ^version = "0.9.0000" * ^status = #draft diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmIrregularityExtension.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmIrregularityExtension.fsh index 74ede607b..84a27f404 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmIrregularityExtension.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationHeartRhythmIrregularityExtension.fsh @@ -1,6 +1,6 @@ Extension: NoDomainVitalSignsObservationHeartRhythmIrregularity Id: NoDomainVitalSignsObservationHeartRhythmIrregularity -Description: "More specific pattern of an irregular pulse or heart beat." +Description: "More specific pattern of an irregular heart beat." * ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythmIrregularity" * ^version = "0.9.0000" * ^status = #draft diff --git a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh index 1ced3a4a8..520969ab9 100644 --- a/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh +++ b/VitalSigns/input/fsh/extensions/NoDomainVitalSignsObservationPulsRhythmIrregularity.fsh @@ -1,12 +1,12 @@ -Extension: NoDomainVitalSignsObservationPulsRhythmIrregularity -Id: NoDomainVitalSignsObservationPulsRhythmIrregularity +Extension: NoDomainVitalSignsObservationPulseRhythmIrregularity +Id: NoDomainVitalSignsObservationPulseRhythmIrregularity Description: "More specific pattern of an irregular pulse or heart beat." -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythmIrregularity" * ^version = "0.9.0000" * ^status = #draft * ^date = "2021-05-01" * ^context.type = #element * ^context.expression = "Observation" -* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" (exactly) +* url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythmIrregularity" (exactly) * value[x] only Coding -* value[x] from NoDomainVitalSignsObservationPulsRhythmIrregularity (required) +* value[x] from NoDomainVitalSignsObservationPulseRhythmIrregularity (required) diff --git a/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh b/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh index ca4a333b9..4e3518552 100644 --- a/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh +++ b/VitalSigns/input/fsh/instances/no-blood-pressure-create.fsh @@ -29,7 +29,7 @@ Usage: #example * code = $loinc#85354-9 * code.text = "BP pnl w all optional" -* category = $observation-category#vital-signs "Vital Signs" +//* category = $observation-category#vital-signs "Vital Signs" * subject = Reference(Patient/cdp1000808) * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000808" @@ -42,26 +42,26 @@ Usage: #example * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" * performer[=].identifier.value = "23" * note.text = "Demo Blood Pressure" -* bodySite = $sct#7569003 "Finger structure (body structure)" +* bodySite.coding = $sct#7569003 "Finger" //* method = $sct#129436005 "Auscultation - action (qualifier value)" -* component[0].code.coding[0] = $loinc#8480-6 "Systolic blood pressure" -* component[=].code.coding[+] = $sct#4471000202106 "Systolic blood pressure" -* component[=].valueQuantity = 123 'mm[Hg]' "mm[Hg]" -* component[=].referenceRange.low.value = 120 -* component[=].referenceRange.low.unit = "mm[Hg]" -* component[=].referenceRange.high.value = 139 -* component[=].referenceRange.high.unit = "mm[Hg]" -* component[+].code.coding[0] = $loinc#8462-4 "Diastolic blood pressure" -* component[=].code.coding[+] = $sct#4481000202108 "Diastolic blood pressure" -* component[=].valueQuantity = 78 'mm[Hg]' "mm[Hg]" -* component[=].referenceRange.low.value = 60 -* component[=].referenceRange.low.unit = "mm[Hg]" -* component[=].referenceRange.high.value = 89 -* component[=].referenceRange.high.unit = "mm[Hg]" -* component[+].code.coding[0] = $loinc#8478-0 "BP mean" -* component[=].code.coding[+] = $sct#4491000202105 "Mean arterial pressure (observable entity)" -* component[=].valueQuantity = 93 'mm[Hg]' "mm[Hg]" -* component[=].referenceRange.low.value = 60 -* component[=].referenceRange.low.unit = "mm[Hg]" -* component[=].referenceRange.high.value = 100 -* component[=].referenceRange.high.unit = "mm[Hg]" \ No newline at end of file +* component[SystolicBP].code.coding[SBPCode] = $loinc#8480-6 "Systolic blood pressure" +* component[SystolicBP].code.coding[SystolicSnomed] = $sct#4471000202106 "Systolic blood pressure" +* component[SystolicBP].valueQuantity = 123 'mm[Hg]' "mm[Hg]" +* component[SystolicBP].referenceRange.low.value = 120 +* component[SystolicBP].referenceRange.low.unit = "mm[Hg]" +* component[SystolicBP].referenceRange.high.value = 139 +* component[SystolicBP].referenceRange.high.unit = "mm[Hg]" +* component[DiastolicBP].code.coding[DBPCode] = $loinc#8462-4 "Diastolic blood pressure" +* component[DiastolicBP].code.coding[DiastolicBPSnomed] = $sct#4481000202108 "Diastolic blood pressure" +* component[DiastolicBP].valueQuantity = 78 'mm[Hg]' "mm[Hg]" +* component[DiastolicBP].referenceRange.low.value = 60 +* component[DiastolicBP].referenceRange.low.unit = "mm[Hg]" +* component[DiastolicBP].referenceRange.high.value = 89 +* component[DiastolicBP].referenceRange.high.unit = "mm[Hg]" +* component[MeanArterialPressure].code.coding[MAPCode] = $loinc#8478-0 "BP mean" +* component[MeanArterialPressure].code.coding[MAPSnomedCode] = $sct#4491000202105 "Mean arterial pressure (observable entity)" +* component[MeanArterialPressure].valueQuantity = 93 'mm[Hg]' "mm[Hg]" +* component[MeanArterialPressure].referenceRange.low.value = 60 +* component[MeanArterialPressure].referenceRange.low.unit = "mm[Hg]" +* component[MeanArterialPressure].referenceRange.high.value = 100 +* component[MeanArterialPressure].referenceRange.high.unit = "mm[Hg]" \ No newline at end of file diff --git a/VitalSigns/input/fsh/instances/no-body-height-create.fsh b/VitalSigns/input/fsh/instances/no-body-height-create.fsh index 98e372e23..33449f3df 100644 --- a/VitalSigns/input/fsh/instances/no-body-height-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-height-create.fsh @@ -8,7 +8,7 @@ Usage: #example * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Stående" * status = #final -* category = $observation-category#vital-signs "Vital Signs" + * code = $loinc#8302-2 "Body height" * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000807" diff --git a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh index 73c1617fe..b28cce0f7 100644 --- a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh @@ -4,16 +4,16 @@ Usage: #example * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationBodyExposure" -* extension[=].valueCoding.code = #5611000202100 -* extension[=].valueCoding.system = $sct -* extension[=].valueCoding.display = "Passende p�kledning/tildekking" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationActiveHeating" -* extension[=].valueString = "active heating sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationDaysSinceMenstruationStart" -* extension[=].valuePositiveInt = 12 +* extension[bodyExposure].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationBodyExposure" +* extension[bodyExposure].valueCoding.code = #518523001 +* extension[bodyExposure].valueCoding.system = $sct +* extension[bodyExposure].valueCoding.display = "Naken" +* extension[activeHeating].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationActiveHeating" +* extension[activeHeating].valueString = "active heating sample" +* extension[daysSinceMenstruationStart].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationDaysSinceMenstruationStart" +* extension[daysSinceMenstruationStart].valuePositiveInt = 12 * status = #final -* category = $observation-category#vital-signs "Vital Signs" + * code = $loinc#8310-5 * code.text = "Body temperature" * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" @@ -24,6 +24,6 @@ Usage: #example * performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" * performer[=].identifier.value = "23" -* bodySite = $sct#34402009 "Endetarm" +* bodySite.coding = $sct#34402009 "Endetarm" * note.text = "Demo Body Temperature" * valueQuantity = 37 'Cel' "Cel" \ No newline at end of file diff --git a/VitalSigns/input/fsh/instances/no-body-weight-create.fsh b/VitalSigns/input/fsh/instances/no-body-weight-create.fsh index 5c47674fa..168dbae3e 100644 --- a/VitalSigns/input/fsh/instances/no-body-weight-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-weight-create.fsh @@ -4,14 +4,14 @@ Usage: #example * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" -* extension[NoDomainVitalSignsObservationClothingState].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClothingState" -* extension[NoDomainVitalSignsObservationClothingState].valueCoding.code = #8101000202100 -* extension[NoDomainVitalSignsObservationClothingState].valueCoding.system = $sct -* extension[NoDomainVitalSignsObservationClothingState].valueCoding.display = "Naken" -* extension[NoDomainVitalSignsObservationConfoundingFactor].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" -* extension[NoDomainVitalSignsObservationConfoundingFactor].valueString = "sample confounding factor" +* extension[clothingState].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClothingState" +* extension[clothingState].valueCoding.code = #8101000202100 +* extension[clothingState].valueCoding.system = $sct +* extension[clothingState].valueCoding.display = "Naken" +* extension[confoundingFactor].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" +* extension[confoundingFactor].valueString = "sample confounding factor" * status = #final -* category = $observation-category#vital-signs "Vital Signs" + * code = $loinc#29463-7 "Body weight" * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000807" diff --git a/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh b/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh index 3f83a457f..af3b9651f 100644 --- a/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh +++ b/VitalSigns/input/fsh/instances/no-heart-rate-create.fsh @@ -1,30 +1,30 @@ Instance: no-heart-rate-create InstanceOf: NoDomainVitalSignsObservationHeartRate Usage: #example -* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythm" -* extension[=].valueCoding.code = #271636001 -* extension[=].valueCoding.system = $sct -* extension[=].valueCoding.display = "Regelmessig" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" -* extension[=].valueString = "sample confounding factor" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythmIrregularity" -* extension[=].valueCoding.code = #271638000 -* extension[=].valueCoding.system = $sct -* extension[=].valueCoding.display = "Regelmessig uregelmessig" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationCharacterOfHeartRate" -* extension[=].valueAnnotation.text = "character sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClinicalDescription" -* extension[=].valueAnnotation.text = "Clinical description sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" -* extension[=].valueCoding.code = #33586001 -* extension[=].valueCoding.system = $sct -* extension[=].valueCoding.display = "Sittende" +* extension[heartRhythm].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythm" +* extension[heartRhythm].valueCoding.code = #4251000202104 +* extension[heartRhythm].valueCoding.system = $sct +* extension[heartRhythm].valueCoding.display = "Regelmessig" +* extension[confoundingFactor].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" +* extension[confoundingFactor].valueString = "sample confounding factor" +* extension[heartRythmIrregularity].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRhythmIrregularity" +* extension[heartRythmIrregularity].valueCoding.code = #248652003 +* extension[heartRythmIrregularity].valueCoding.system = $sct +* extension[heartRythmIrregularity].valueCoding.display = "Regelmessig uregelmessig" +* extension[characterOfHeartrate].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationCharacterOfHeartRate" +* extension[characterOfHeartrate].valueAnnotation.text = "character sample" +* extension[clinicalDescription].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClinicalDescription" +* extension[clinicalDescription].valueAnnotation.text = "Clinical description sample" +* extension[BodyPosition].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulseBodyPosition" +* extension[BodyPosition].valueCoding.code = #33586001 +* extension[BodyPosition].valueCoding.system = $sct +* extension[BodyPosition].valueCoding.display = "Sittende" * meta.lastUpdated = "2014-01-30T22:35:23+11:00" * meta.versionId = "0" * meta.source = "META_VISION" * status = #final * code = $loinc#8867-4 "Heart rate" -* category = $observation-category#vital-signs + * subject = Reference(Patient/cdp1000240) * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000240" @@ -34,7 +34,7 @@ Usage: #example * performer[+] = Reference(Organization/afa23) * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" * performer[=].identifier.value = "23" -* bodySite = $sct#80891009 "Hjerte" +* bodySite.coding = $sct#80891009 "Hjerte" * note.text = "Demo heart rate" * valueQuantity = 61 '/min' "/min" diff --git a/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh b/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh index f9a1f8e5a..0a9e32e76 100644 --- a/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh +++ b/VitalSigns/input/fsh/instances/no-oxygen-saturation-create.fsh @@ -19,8 +19,6 @@ Usage: #example * extension[=].extension[+].url = "http://hl7.no/fhir/StructureDefinition/MethodofOxygenDelivery" * extension[=].extension[=].valueString = "Oxygen administration method" * status = #final -* category = $observation-category#vital-signs "Vital Signs" -* category.text = "Vital Signs" * code = $loinc#2708-6 "Oxygen saturation in Arterial blood" * subject = Reference(Patient/cdp1000240) * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" diff --git a/VitalSigns/input/fsh/instances/no-puls-rate.fsh b/VitalSigns/input/fsh/instances/no-puls-rate.fsh index 9442b4524..8f4191fb8 100644 --- a/VitalSigns/input/fsh/instances/no-puls-rate.fsh +++ b/VitalSigns/input/fsh/instances/no-puls-rate.fsh @@ -1,13 +1,13 @@ Instance: no-pulse-rate -InstanceOf: NoDomainVitalSignsObservationPuls +InstanceOf: NoDomainVitalSignsObservationPulse Usage: #example -* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythm" +* extension[0].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythm" * extension[=].valueCoding.code = #271636001 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Regelmessig" * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationConfoundingFactor" * extension[=].valueString = "sample confounding factor" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulsRhythmIrregularity" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulseRhythmIrregularity" * extension[=].valueCoding.code = #271638000 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Regelmessig uregelmessig" @@ -15,7 +15,7 @@ Usage: #example * extension[=].valueAnnotation.text = "character sample" * extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationClinicalDescription" * extension[=].valueAnnotation.text = "Clinical description sample" -* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" +* extension[+].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRatePulseBodyPosition" * extension[=].valueCoding.code = #33586001 * extension[=].valueCoding.system = $sct * extension[=].valueCoding.display = "Sittende" @@ -24,7 +24,6 @@ Usage: #example * meta.source = "META_VISION" * status = #final * code = $loinc#8867-4 "Heart rate" -* category = $observation-category#vital-signs * subject = Reference(Patient/cdp1000240) * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000240" @@ -35,6 +34,6 @@ Usage: #example * performer[=].identifier.system = "urn:oid:1.3.6.1.4.1.9038.70.3" * performer[=].identifier.value = "23" * bodySite = $sct#29707007 "Tå" -* note.text = "Demo Puls Rate" +* note.text = "Demo Pulse Rate" * valueQuantity = 61 '/min' "/min" diff --git a/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh b/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh index 3a7c9ce4d..4e8cc5db8 100644 --- a/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh +++ b/VitalSigns/input/fsh/instances/no-respiratory-rate-create.fsh @@ -38,7 +38,6 @@ Usage: #example * extension[=].extension[=].valueString = "Maske" * status = #final * code = $loinc#9279-1 "Respiratory rate" -* category = $observation-category#vital-signs "Vital Signs" * subject = Reference(Patient/cdp1000240) * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" * subject.identifier.value = "1000240" diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh index 420bb2b71..92d48246d 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh @@ -3,7 +3,7 @@ Parent: $heartrate Id: NoDomainVitalSignsObservationHeartRate Title: "NO Domain VitalSigns Observation - Heart Rate" Description: """Base profile for Norwegian Vital Signs Observation Heart Rate information. -Use to record the presence or absence of a pulse or heart beat.""" +Use to record the presence or absence of a heart beat.""" * ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationHeartRate" * ^version = "0.9.0000" * ^status = #draft @@ -17,18 +17,18 @@ Use to record the presence or absence of a pulse or heart beat.""" NoDomainVitalSignsObservationConfoundingFactor named confoundingFactor 0..1 and NoDomainVitalSignsObservationClinicalDescription named clinicalDescription 0..1 and NoDomainVitalSignsObservationCharacterOfHeartRate named characterOfHeartrate 0..1 and - NoDomainVitalSignsObservationHeartRatePulsBodyPosition named BodyPosition 0..1 and + NoDomainVitalSignsObservationHeartRatePulseBodyPosition named BodyPosition 0..1 and NoDomainVitalSignsObservationHeartRhythmIrregularity named heartRythmIrregularity 0..1 -* extension[heartRhythm] ^short = "Regularity of the pulse or heart beat." -* extension[heartRhythm] ^definition = "Regularity of the pulse or heart beat." -* extension[clinicalDescription] ^short = "Narrative description about the pulse or heart beat." -* extension[clinicalDescription] ^definition = "Narrative description about the pulse or heart beat." -* extension[characterOfHeartrate] ^short = "Description of the character of the pulse or heart beat." -* extension[characterOfHeartrate] ^definition = "Description of the character of the pulse or heart beat." +* extension[heartRhythm] ^short = "Regularity of the heart beat." +* extension[heartRhythm] ^definition = "Regularity of the heart beat." +* extension[clinicalDescription] ^short = "Narrative description about the heart beat." +* extension[clinicalDescription] ^definition = "Narrative description about the heart beat." +* extension[characterOfHeartrate] ^short = "Description of the character of the heart beat." +* extension[characterOfHeartrate] ^definition = "Description of the character of the heart beat." * extension[BodyPosition] ^short = "The body position of the subject during the observation." * extension[BodyPosition] ^definition = "The body position of the subject during the observation." -* extension[heartRythmIrregularity] ^short = "More specific pattern of an irregular pulse or heart beat." -* extension[heartRythmIrregularity] ^definition = "More specific pattern of an irregular pulse or heart beat." +* extension[heartRythmIrregularity] ^short = "More specific pattern of an irregular heart beat." +* extension[heartRythmIrregularity] ^definition = "More specific pattern of an irregular heart beat." * partOf ^comment = "To link an Observation to an Encounter use `encounter`. See the Notes below for guidance on referencing another Observation." * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." @@ -42,8 +42,8 @@ Use to record the presence or absence of a pulse or heart beat.""" * performer[Author] only Reference(Practitioner or PractitionerRole or CareTeam or Patient or RelatedPerson or $no-basis-Practitioner or $no-basis-PractitionerRole) * performer[organization] only Reference(Organization or $no-basis-Organization) * value[x] ^slicing.rules = #open -* valueQuantity ^short = "The rate of the pulse or heart beat, measured in beats per minute." -* valueQuantity ^definition = "The rate of the pulse or heart beat, measured in beats per minute." +* valueQuantity ^short = "The rate of the heart beat, measured in beats per minute." +* valueQuantity ^definition = "The rate of the heart beat, measured in beats per minute." * valueQuantity ^comment = "An observation may have; 1) a single value here, 2) both a value and a set of related or component values, or 3) only a set of related or component values. If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value. For additional guidance, see the Notes section below." * bodySite from NoDomainVitalSignsObservationHeartRateBodySite (extensible) * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." @@ -55,5 +55,5 @@ Use to record the presence or absence of a pulse or heart beat.""" * code.coding[HearRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[HearRateSNOMEDCode].code 1.. * code.coding[HearRateSNOMEDCode].code = #364075005 (exactly) -* method from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) -* method.coding from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file +* method from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) +* method.coding from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh index 7853d58b4..fbcce92a0 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh @@ -1,34 +1,33 @@ -Profile: NoDomainVitalSignsObservationPuls +Profile: NoDomainVitalSignsObservationPulse Parent: $heartrate -Id: NoDomainVitalSignsObservationPuls -Title: "NO Domain VitalSigns Observation - Puls" -Description: """Base profile for Norwegian Vital Signs Observation Heart Rate information. -Use to record the presence or absence of a pulse or heart beat.""" -* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPuls" +Id: NoDomainVitalSignsObservationPulse +Title: "NO Domain VitalSigns Observation - Pulse" +Description: """Base profile for Norwegian Vital Signs Observation Pulse information.""" +* ^url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationPulse" * ^version = "0.9.0000" * ^status = #draft * ^date = "2021-05-01" -* ^purpose = "Basisprofile for Norwegian VitalSigns Observation Heart Rate information. Defined by The Norwegian Directorate of eHealth and HL7 Norway. The profile adds Norwegian specific property information and further explanation of the use for the data-elements in a Norwegian VitalSigns Observation Heart Rate." +* ^purpose = "Basisprofile for Norwegian VitalSigns Observation pulse information. Defined by The Norwegian Directorate of eHealth and HL7 Norway. The profile adds Norwegian specific property information and further explanation of the use for the data-elements in a Norwegian VitalSigns Observation Pulse." * extension ^slicing.discriminator.type = #value * extension ^slicing.discriminator.path = "url" * extension ^slicing.rules = #open * extension contains - NoDomainVitalSignsObservationPulsRhythm named pulsRhythm 0..1 and + NoDomainVitalSignsObservationPulseRhythm named pulseRhythm 0..1 and NoDomainVitalSignsObservationConfoundingFactor named confoundingFactor 0..1 and NoDomainVitalSignsObservationClinicalDescription named clinicalDescription 0..1 and - NoDomainVitalSignsObservationCharacterOfHeartRate named characterOfHeartrate 0..1 and - NoDomainVitalSignsObservationHeartRatePulsBodyPosition named BodyPosition 0..1 and - NoDomainVitalSignsObservationPulsRhythmIrregularity named pulsRythmIrregularity 0..1 -* extension[pulsRhythm] ^short = "Regularity of the pulse or heart beat." -* extension[pulsRhythm] ^definition = "Regularity of the pulse or heart beat." -* extension[clinicalDescription] ^short = "Narrative description about the pulse or heart beat." -* extension[clinicalDescription] ^definition = "Narrative description about the pulse or heart beat." -* extension[characterOfHeartrate] ^short = "Description of the character of the pulse or heart beat." -* extension[characterOfHeartrate] ^definition = "Description of the character of the pulse or heart beat." + NoDomainVitalSignsObservationCharacterOfPulse named characterOfPulse 0..1 and + NoDomainVitalSignsObservationHeartRatePulseBodyPosition named BodyPosition 0..1 and + NoDomainVitalSignsObservationPulseRhythmIrregularity named pulseRythmIrregularity 0..1 +* extension[pulseRhythm] ^short = "Regularity of the pulse" +* extension[pulseRhythm] ^definition = "Regularity of the pulse" +* extension[clinicalDescription] ^short = "Narrative description about the pulse" +* extension[clinicalDescription] ^definition = "Narrative description about the pulse" +* extension[characterOfPulse] ^short = "Description of the character of the pulse" +* extension[characterOfPulse] ^definition = "Description of the character of the pulse" * extension[BodyPosition] ^short = "The body position of the subject during the observation." * extension[BodyPosition] ^definition = "The body position of the subject during the observation." -* extension[pulsRythmIrregularity] ^short = "More specific pattern of an irregular pulse or heart beat." -* extension[pulsRythmIrregularity] ^definition = "More specific pattern of an irregular pulse or heart beat." +* extension[pulseRythmIrregularity] ^short = "More specific pattern of an irregular pulse" +* extension[pulseRythmIrregularity] ^definition = "More specific pattern of an irregular pulse" * partOf ^comment = "To link an Observation to an Encounter use `encounter`. See the Notes below for guidance on referencing another Observation." * subject only Reference(Patient or $no-basis-Patient) * focus ^comment = "Typically, an observation is made about the subject - a patient, or group of patients, location, or device - and the distinction between the subject and what is directly measured for an observation is specified in the observation code itself ( e.g., \"Blood Glucose\") and does not need to be represented separately using this element. Use `specimen` if a reference to a specimen is required. If a code is required instead of a resource use either `bodysite` for bodysites or the standard extension focusCode." @@ -42,12 +41,12 @@ Use to record the presence or absence of a pulse or heart beat.""" * performer[Author] only Reference(Practitioner or PractitionerRole or CareTeam or Patient or RelatedPerson or $no-basis-Practitioner or $no-basis-PractitionerRole) * performer[organization] only Reference(Organization or $no-basis-Organization) * value[x] ^slicing.rules = #open -* valueQuantity ^short = "The rate of the pulse or heart beat, measured in beats per minute." -* valueQuantity ^definition = "The rate of the pulse or heart beat, measured in beats per minute." +* valueQuantity ^short = "The rate of the pulse, measured in beats per minute." +* valueQuantity ^definition = "The rate of the pulse , measured in beats per minute." * valueQuantity ^comment = "An observation may have; 1) a single value here, 2) both a value and a set of related or component values, or 3) only a set of related or component values. If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value. For additional guidance, see the Notes section below." -* bodySite from NoDomainVitalSignsObservationPulsBodySite (extensible) +* bodySite from NoDomainVitalSignsObservationPulseBodySite (extensible) * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component. \n\nIf the use case requires BodySite to be handled as a separate resource (e.g. to identify and track separately) then use the standard extension bodySite." -* bodySite.coding from NoDomainVitalSignsObservationPulsBodySite (extensible) +* bodySite.coding from NoDomainVitalSignsObservationPulseBodySite (extensible) * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." * code.coding contains PulseSNOMEDCode 1..1 @@ -55,5 +54,5 @@ Use to record the presence or absence of a pulse or heart beat.""" * code.coding[PulseSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[PulseSNOMEDCode].code 1.. * code.coding[PulseSNOMEDCode].code = #78564009 (exactly) -* method from NoDomainVitalSignsPulsMeasurmentMethod (extensible) -* method.coding from NoDomainVitalSignsPulsMeasurmentMethod (extensible) \ No newline at end of file +* method from NoDomainVitalSignsPulseMeasurmentMethod (extensible) +* method.coding from NoDomainVitalSignsPulseMeasurmentMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh index 41cc008c7..75c26d49c 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh @@ -15,7 +15,6 @@ Use to record the observed and measured characteristics of spontaneous breathing * extension ^slicing.discriminator.path = "url" * extension ^slicing.rules = #open * extension contains - //NoDomainVitalSignsObservationLevelOfExertion named levelOfExertion 0..1 and NoDomainVitalSignsObservationRespirationRateBodyPosition named bodyPosition 0..1 and NoDomainVitalSignsObservationRespirationRegularity named respirationRegularity 0..1 and NoDomainVitalSignsObservationSpontaneousBreathing named spontaneousBreathing 0..1 and diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh index 97089831a..058ee8f78 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationCuffsizeValueSet.fsh @@ -19,7 +19,7 @@ Description: "Codes representing cuff size" * SNOMED_CT#720736009 "Barn" * SNOMED_CT#720740000 "Lår voksne" * SNOMED_CT#4231000202108 "Neonatal" -* SNOMED_CT#720737000 "Små voksne" +* SNOMED_CT#397641000202108 "Små voksne" * SNOMED_CT#4281000202107 "Spedbarn" -* SNOMED_CT#720737000 "Store voksne" +* SNOMED_CT#397631000202102 "Store voksne" * SNOMED_CT#720737000 "Voksne" \ No newline at end of file diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh index 201931030..9eb733fc0 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationHeartRatePulsBodyPosition.fsh @@ -1,7 +1,7 @@ -ValueSet: NoDomainVitalSignsObservationHeartRatePulsBodyPosition -Id: NoDomainVitalSignsObservationHeartRatePulsBodyPosition -Title: "NoDomainVitalSignsObservationHeartRatePulsBodyPosition" -Description: "Codes representing body position for heart rate" +ValueSet: NoDomainVitalSignsObservationHeartRatePulseBodyPosition +Id: NoDomainVitalSignsObservationHeartRatePulseBodyPosition +Title: "NoDomainVitalSignsObservationHeartRatePulseBodyPosition" +Description: "Codes representing body position for heart rate or Pulse" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" @@ -10,7 +10,7 @@ Description: "Codes representing body position for heart rate" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRatePulsBodyPosition" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRatePulseBodyPosition" * ^version = "4.0.0" * ^status = #draft * ^experimental = false diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh index d114e892a..4670cb4bd 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsBodySite.fsh @@ -1,7 +1,7 @@ -ValueSet: NoDomainVitalSignsObservationPulsBodySite -Id: NoDomainVitalSignsObservationPulsBodySite -Title: "NoDomainVitalSignsObservationPulsBodySite" -Description: "Codes representing body site for heart rate" +ValueSet: NoDomainVitalSignsObservationPulseBodySite +Id: NoDomainVitalSignsObservationPulseBodySite +Title: "NoDomainVitalSignsObservationPulseBodySite" +Description: "Codes representing body site for pulse" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" @@ -10,7 +10,7 @@ Description: "Codes representing body site for heart rate" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsBodySite" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulseBodySite" * ^version = "4.0.0" * ^status = #draft * ^experimental = false @@ -29,4 +29,4 @@ Description: "Codes representing body site for heart rate" * SNOMED_CT#368503001 "Radialisarterien, høyre" * SNOMED_CT#368504007 "Radialisarterien, venstre" * SNOMED_CT#29707007 "Tå" - +* SNOMED_CT#86547008 "Dorsalis pedis" diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh index bace3e8ee..ee524064b 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsObservationPulsRhythmValueSet.fsh @@ -1,7 +1,7 @@ -ValueSet: NoDomainVitalSignsObservationPulsRhythm -Id: NoDomainVitalSignsObservationPulsRhythm -Title: "NoDomainVitalSignsObservationPulsRhythm" -Description: "Codes representing rhythm of Puls" +ValueSet: NoDomainVitalSignsObservationPulseRhythm +Id: NoDomainVitalSignsObservationPulseRhythm +Title: "NoDomainVitalSignsObservationPulseRhythm" +Description: "Codes representing rhythm of Pulse" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" @@ -10,7 +10,7 @@ Description: "Codes representing rhythm of Puls" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsRhythm" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulseRhythm" * ^version = "4.0.0" * ^status = #draft * ^experimental = false diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh index 0b9615ad3..f92ddbec9 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsMeasurementMethod.fsh @@ -1,23 +1,21 @@ -ValueSet: NoDomainVitalSignsPulsMeasurmentMethod -Id: NoDomainVitalSignsPulsMeasurmentMethod -Title: "NoDomainVitalSignsPulsMeasurmentMethod" -Description: "Codes representing measurement method for puls" -* ^meta.lastUpdated = "2024-01-18T00:00:00+00:00" +ValueSet: NoDomainVitalSignsPulseMeasurmentMethod +Id: NoDomainVitalSignsPulseMeasurmentMethod +Title: "NoDomainVitalSignsPulseMeasurmentMethod" +Description: "Codes representing measurement method for pulse" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" -* ^extension[=].valueCode = #oo +* ^extension[=].valueCode = #fhir * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsPulsMeasurmentMethod" -* ^version = "0.5.0" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsPulseMeasurmentMethod" +* ^version = "0.1.0" * ^status = #draft * ^experimental = false -* ^date = "2024-01-18T00:00:00+00:00" +* ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* ^contact.telecom.system = #url -* ^contact.telecom.value = "http://hl7.org/fhir" * SNOMED_CT#129436005 "Auskultasjon" * SNOMED_CT#37931006 "Auskultasjon" * SNOMED_CT#129434008 "Palpasjon" diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh index 205c343fb..27c87d0e5 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignsPulsRythmIrregularity.fsh @@ -1,7 +1,7 @@ -ValueSet: NoDomainVitalSignsObservationPulsRhythmIrregularity -Id: NoDomainVitalSignsObservationPulsRhythmIrregularity -Title: "NoDomainVitalSignsObservationPulsRhythmIrregularity" -Description: "Codes representing heart rhythm irregularity for Puls" +ValueSet: NoDomainVitalSignsObservationPulseRhythmIrregularity +Id: NoDomainVitalSignsObservationPulseRhythmIrregularity +Title: "NoDomainVitalSignsObservationPulseRhythmIrregularity" +Description: "Codes representing heart rhythm irregularity for Pulse" * ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" @@ -10,7 +10,7 @@ Description: "Codes representing heart rhythm irregularity for Puls" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 -* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulsRhythmIrregularity" +* ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationPulseRhythmIrregularity" * ^version = "4.0.0" * ^status = #draft * ^experimental = false From 4a0575286c0524d7fc9da849fae78861c5dd4186 Mon Sep 17 00:00:00 2001 From: Lars-Andreas Nystad Date: Thu, 1 Feb 2024 08:33:28 +0000 Subject: [PATCH 08/26] Fixed Code in no-body-temperature-create example --- VitalSigns/input/fsh/instances/no-body-temperature-create.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh index b28cce0f7..50e8fa228 100644 --- a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh @@ -5,7 +5,7 @@ Usage: #example * meta.versionId = "0" * meta.source = "META_VISION" * extension[bodyExposure].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationBodyExposure" -* extension[bodyExposure].valueCoding.code = #518523001 +* extension[bodyExposure].valueCoding.code = #5671000202107 * extension[bodyExposure].valueCoding.system = $sct * extension[bodyExposure].valueCoding.display = "Naken" * extension[activeHeating].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationActiveHeating" From 8cc2bff54f421b44bc67a35ef0eddd9c3a3cdceb Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 09:53:35 +0100 Subject: [PATCH 09/26] Bugfix NoDomianVitalSignsObservationHeartRateMeasurementMethod --- .../fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh index 92d48246d..d2396da30 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh @@ -55,5 +55,5 @@ Use to record the presence or absence of a heart beat.""" * code.coding[HearRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[HearRateSNOMEDCode].code 1.. * code.coding[HearRateSNOMEDCode].code = #364075005 (exactly) -* method from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) -* method.coding from NoDomianVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file +* method from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) +* method.coding from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file From 71c529cd784b06af630a454786a6c72c25db1e74 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 13:54:46 +0100 Subject: [PATCH 10/26] use-case images --- .../input/images-source/main-use-case.puml | 53 ++++++++++++++++++ .../images-source/verdikjede-vitalsigns.puml | 43 ++++++++++++++ VitalSigns/input/images/use-case.png | Bin 0 -> 53852 bytes VitalSigns/input/images/verdikjede.png | Bin 0 -> 55739 bytes VitalSigns/input/pages/index.md | 4 ++ 5 files changed, 100 insertions(+) create mode 100644 VitalSigns/input/images-source/main-use-case.puml create mode 100644 VitalSigns/input/images-source/verdikjede-vitalsigns.puml create mode 100644 VitalSigns/input/images/use-case.png create mode 100644 VitalSigns/input/images/verdikjede.png diff --git a/VitalSigns/input/images-source/main-use-case.puml b/VitalSigns/input/images-source/main-use-case.puml new file mode 100644 index 000000000..a8f62b6ac --- /dev/null +++ b/VitalSigns/input/images-source/main-use-case.puml @@ -0,0 +1,53 @@ +@startuml + +'note "Vitale parametere" as app +'note "Presentert av applikasjon" as presentasjon +'note "Assistanse for dokumentasjon\nog koding fra applikasjon" as dokumentasjon +note "Source of information outside\nthe clinicians organization" as source + +"Clinician" as kliniker + +'rectangle "test" as rect { +"search for information" as (søke) #lightblue +"indexing" as (indeksere) +"read information" as (lese) #lightblue +"share information" as (dele) #lightblue + +(søke) -down[hidden]- (lese) +(indeksere) -down[hidden]- (dele) +"External source" as applikasjon +applikasjon -left-> indeksere +applikasjon -left-> dele +dele -left- lese +indeksere -left- søke +source -down- applikasjon +'} +'actor "Pasient" as pasient +'[API] as api +'"skrive informasjon" as (skrive) #lightblue + +'kliniker -[hidden]right- api +'api -[hidden]right- pasient + +kliniker -up-> søke +'søke <-down- pasient + +kliniker -right-> (lese) +'(lese) <-right- pasient +'kliniker -down-> (skrive) + +'pasient -left-> lese +'pasient -[hidden]left-> skrive +'pasient -down-> skrive + +'(søke) -down- app +'app -down- (lese) +'(lese) -right- app +'app -down- pasient +'skrive -down- dokumentasjon +'lese -down- presentasjon + +'api .up. lese +'api .down. skrive + +@enduml \ No newline at end of file diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.puml b/VitalSigns/input/images-source/verdikjede-vitalsigns.puml new file mode 100644 index 000000000..8c2b0e657 --- /dev/null +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.puml @@ -0,0 +1,43 @@ +@startuml +!include +skinparam linetype ortho + +'archimate #Motivation "Samhandlings-\nbehov" as behov <> +archimate #Business "Patient" as patient <> + +rectangle "Organization" { + archimate #Business "Application" as app1 <> + archimate #Business "Practitioner" as pract1 <> + archimate #Business "Repository" as repo <> + archimate #Business "Device" as device <> + archimate #Business "Gateway" as gw <> + archimate #Business "Observation\nVital signs" as obs <> +} + +archimate #Business "National\nservice" as pmd <> + +rectangle "Receiving\nOrganization" as receiver { +archimate #Business "Practitioner" as pract2 <> +archimate #Business "Application" as app2 <> +} + +rectangle "Receiving\nOrganization2" as receiver2 { +archimate #Business "Application" as app3 <> +archimate #Business "Practitioner" as pract3 <> +pract3 <-right- app3 +} + +patient - obs +obs <-[dotted] device +device <- gw +gw <- repo +repo <- app1 +'repo <-- app2 +repo -down-> pmd +pmd -left[hidden]- receiver +app1 -> pract1 +app2 -> pract2 +repo -down-> app2 +app3 <-right- pmd + +@enduml \ No newline at end of file diff --git a/VitalSigns/input/images/use-case.png b/VitalSigns/input/images/use-case.png new file mode 100644 index 0000000000000000000000000000000000000000..8a191cc833070f0ea2c3c4da08d0c781f9c7faad GIT binary patch literal 53852 zcmYhi1yEaE+Xadim*P;gSdpRyio3hJ75C!q?(S9`f>T_IySux)yX2ntyZ_v|XC^}u zGABEGKf2a>!WHDiQ4k3bAs`@7Bqc#zb?(s*#c zi`v@SuobXmtVQW-6lxU|YO&k2WstGHC|V8dvxLU1%Gs43c-^Fp$oz1HHP@VMFLO$dsQmi{WJ9cp4(syaQ^oJ;C;(P zriuT3m@G&kGsqtG|DLZ=ORp%^M`$@a=;>P~1+F-xU-U z6+fV(lntOPms%XhA8F2{+9^D7v^28#xZ ziZUsw=;$aZK?Uz%;L&_%U|^t>qJ`G6pg}eWiIR~?#;;%rQAH&y=>CR1w{?yn?B*-v z5O^p49pXNxl3qQ(5gL+Hu+zzp0v<8lH)vp{a?Hk%^)I z*DrK*+}vN@;Dk{dM|?rQReB}G^^yO#2XheyS;9m_FqLO#XKQO~Sy_a5N`JBvr2|=_ zKS=tT-rm~Z+IifXY8-zHefni`Xkch$WM~xn1(WWJ2qhj%ZA}k6D^gUAfbp+irvB)v zn!`dQhNfl6b}}+dJqq|cX+s!4GDrO2x~nR%J{SY>G_^RDw3KwzlsHj8V}4W<_Mp(x ziARh?L>{pP$B9TIB1uO?Mv!ITV0FRVsSLupHMg`hx45~x9dX#=scjbpS`1;3{_kuL zfWvBVM4w>+E?RUm1w?P;G5d8Hm~C7}VtC*cpg%Q03TB8C)0` z*zvaaj6*#VTpT*G{UNbX>H5&b#72ji zxP>GQ4S5h(O@6)?X5w&f2nzW=RRFLz_^`0Bl1?-KU%z&CcHZ9J_9o!T=EMZDzVLeN{d;FGj6y%@I?%NFWn|Rw zmwThl)lO+1i)kWn;TtO}t3Lx3I|Dl(A90WNFC|;s7{4&Q&YEvcf6z<*Fzs>pkSP+A zkrDd{I&jP}U>!_5%*>K5?i&}*u*{erTeRR?;L}JVXLCzSNJvRZNk~hLNJ;yT1O&mf zd=Y|g;6pzwmPvow+NMzwgLgI{k3Nvg;JHcaZ4eHPVK>b0{TcdETUS?y*LsweHk77; zN7Xl&nw*LhA$1iQaUBtMD-?u@9Y{LZAIfdURi7X5Rx!6Xmb8~upR_i&cQ&^dwbvKG zlTnzI6crT}P!Sc7MHmG^Oib)R5`_Lz@?Qi231qc7+)pJ^>xH7}n)ir=0w+*w6kY>dV^e ziz$iWV9NQ5Fps!n4Jn-PP9zE!96Q zWfca^J*6cz;~5$nii%RInozP~n^00xT3C3^lLcu(0g+N68T1owS2pbkI7h0KoE%~d z3=BNNx9{*mI_3=D)rI5~CB)A#W* zER7zX91llBlMF|ck3o(^L&L_wIaz72ay_ro($YdiL^S>itobJp$Ma}A2RNsm{yXJ) zbxTW7ZtiBNd@jHDM^-|@*Xk?xQyzf$o1C{-41iHWg| zwdGoOa>mBS9>#)a(*fd!y}kWBdQxg?YI1US%?{j?*r#l6*N|g;kl~AeaBy&XI(|rn z(_EIKRS1xxREidU!V#qZcO08E-@ZLPUGI95Y@+=mNld`lXKM{BHy{Nm$3hr}%yzebq|e(hQ`6c!N|xMb#;B+4UcU2G1pUo6ZpTCR{<+e{BPx2LBYWt-k0b1 zAMe!q`l6LpGbg$xY^_qXw27ucT!n!DmD=fJ1pE_$d5VmTe4JUlH2SkyAdWT@wL%1M z1cWsUr?RrLVMYggL&AcPyL_4`10}bG4gD- zd%srwY1YWI;?R^OqO{Q!qcWX|LVqFSqo+7IEjg;rCELZv!$Uq>#O3q4K5?;82dujX zE!+uxj}$6AA_5T!N%+8@R774NnLN&mw7;R>h{!Oylpc{ZTL}_7ffk4m=mm*!adAmW zL3vn2#52nh|L;0T4!brffpwJ5W^&l&ba=+SGa(K>J0Ah z?%rM<-{Lar!AnZeIGvUiFGi|Mq}7uJ5tLTc{}?*dojXL^&(B{$FysK_OcjxM;7Ume`OMDF&cgPBzt^h4HPkUZJw(S~F3+8;wSsB6pL>hfL+vJCXS-TVV*8Ejtv7Kv*opUIw*o13b_W*b;9 z)Zb6JShapSThf-0Kwk#Rjf%3qwHV#sqd+6t7@GKKoAfm^dptg%W6Vnjhj)k77mLP$)EdYuONnnQL-NJw#Uace8r zMO%4Zjy)=uQB{?^TGbLZW+KG9wWj7UaC|jPLz4(hK37wpFcS^uXym7F5A9@S4@QS2 zqw!fq6v8>dr6-ve(lF3R6GvDp)D2s967Xa1{|bGdb)H2mq5X%}ng92!i| z%V$S+3IAZMZ}$!&BO^G7rmw$=M#AUyawn;y({8m`rF-<7WV#b7?_xBSQNPnC*!(*+bxBFdA`px4fZ8*G zhAR#D0jG`9#`7zBoAJW&<>1c zmc-v51jZqEb(AeuelCt0%>1}z?%X8NSU;TfXViDg<#yeE3`b=YoXrswH%mR|D^M(W z|GGOsugC3v&pze=-@v2EHvZWW=lfsR5wl&*`d{<;`*a(fzVa(m`q$UjwSWHt<(77x zv7~{4L8s3GaPG9)*?cw9`EZpBU{=(v7c8i%pB5s$p7Du=o)G(3~`CMWyr=yqq z)60#H%=mc0VqtzdI=aB^>TI4RKOk*R&Cd@_jxsVZkTo~~nTt`cJ(tI#HqO9RFQ8Q!yQrW zzjY20tlr?f@saftOX2O9^|oj}hdyS&e(K*LVn2?it&|g=Yj~JKEtFHeU+yYD+E6~4 z#q{(@wx`K{b-Q)`OSG&Is{GTYZ*;%Spn!>m^>LPt%LBs`*RBIjrgH(@I-cg_T7a!_ zV50-o!Xmx!9PY$_by1JXO zG3&H1WB3;9#ZOWcU3qBWrlH%Z?RSJPrS7VXj9 z3*FrtPs`<|+G~~RVLF(}aCM7Bfzs*6NyvX8!t2e%OFvv)?XSPQq)}7H)az18ZDYfx zrj{}@qvQbQVzOOtO^(WUpn#*NosO(;S5Dy0px#P&o?=|o={LwdwY9S@;TNP7R%-8jCg~$$4x># zJv}QcE97EPOzi9-KEta`c4&k@w=OUBH8j3`{o2#rEm&-|2!tWq&3~NZUO#9SA-Mu< ztK@HP5k2mXXi2-Yy&1FO;<^BT2t__texC`Rf?NN4SlE9y9~FgsaIpJwe~FJl=)TpJ zUNJ`43;9A%zlSIshmj{tLXyj4m>(ZE1zz{7))&^%CC*H>G(Fn6Sz0_CC3-aL z@Hi$QI6;bpMibGa4m0K2_6!VI8vpRi zfJhk`JdAwwhaIuSyUtlDB+r$f8sLyxU5<%(&mu0 z{PNK%c=D_T^;=(~EN&}owxkM`XvOsjzBei94(ZTNOtioE^fuNrE8{^FDY2Uy$}~Au z-N1&o(yo)(!$a4=I}agc*7_#l?ye#nQ@rOE$?>22ZTI*Ww3mnZ#5nY#$*A_N?PFrT ze129|ceC!3t{uUwz^1OK^x_%=@z|e0k?H-4qxL=ywH3_lI-wQjc-7-a1N-DoM5LR; z^H6b3@RS@9qV#y7wccj60LJ;8^9KZ?q@di(vQtu4K95x(Iy;NHI_8Ki6W4GZZ8KJIs7FnOS5)>4q)8=CHc(ES0GdDkfIG)L2 zztdNxn+Fsw|7^dITGP?eJ^+zmrQU++<6@nA2x!d>r~1_u%+U^wo}xVlIPL8XC7dQE zE~YXcJ$5tG)1mXia&t>S1)9C*tFi1AoBU=Ig>>q%QA{j9ewMzwxycw!Xi&*k%T#^DjE zhqE%-aY&Cbx|GZM`X6mh&vCWa0%2lIV7pDB>YtnbRW7O=tqk{?TRVN2XplO|D#%8K-NRus2`_^L&zMbPI~V0)W+H08o? zX=}#=;{r9Y+w$bdQm@kot@UYM8HESEP~@nMTbB#|i}77rw8Uv4v{DrTbpMwKe=F=#eJ;B$nGA)ZPvfvM1P|r;Dm%^NCN{Gh}uVq;& zsVFV$G>4hO_+txAz*$02F2RGh)$HeyI5|+z(7J9hzl<T`Mad`yXw(`>R`@9=!QySua9Xy*iiW+Juxz`#JlK@8%HZ{zC% zVdE+c4u8)CJi5-eh%+#2J>t^;QpYH@NoN=JNv2N=ve9e6qH||=o4C7 zG3XQgAfAhG?s66@n;2+lIy?{Y?~=<#wAeNY=KI~|NM&Um5-2pX{h{f6)3EUI#pmA! zIy{LtHhdy+CZ}eU@+=J;QNAp=4j^N~*Z=#cUp7LEK7YbRau5_wPFAD18xc_#hm(}N zKM+IIGos~wqMPS~?Qge+=XT7KI5ff@s5ov$%`_wriDrB4$ZX#koS-r?;&_6CAp|_QllR|~2{QRA;t272(6)PRTnD}`6t2jQU8>=j3 zm5SRi56+g{Mr^-&a++swH$mL#&!0<@{-`;yvAF8&)*A5A7$muGH${)NMsj~mt6JS} z$ zLrhw`b}$rP^#bKCIv*VJnP|ro%@qLnok9&i^oIIgafaAe@&5GaG3;M)wuBas(ymj} zP|BFgm&-O^*5p2r)8(|4_@x3Kp zESA@4*gsf*9aXE8l(pI67i#+M?(S|jk;Tl+4D|DW4OQv3y*$`>mcWbO1ErLaiOK%X z&R0f8w8^KF`SSO-Hwo>~zP`TFyu5nr$dpE28v9Y+a%o4)6s#V`$|ho@$CsL=!Z1~k?c8R{>=6u z{J}*DJ7aWDj&O>Wa7!4;_A8&)r0^A);HUF$2(*O-J{ybDJDbxe_&Ql36~{AT8@Ao6 zKg(ivfY0a6;{f@Kd&@@#K`)0L7Zy-szy7^RN>%S->FVkF8c*A*pDTFM|8{Xcc*5x1 z%-akW($S${r-IbGolE-uX;)`8B`eFi;rI36A9Olx&&rLELL9chot}VExX0#PeuQ0J z&&R|#<*luq;*6EJh#QATM`}i*C4_Bp>CV`sd=@lc&t@j9!sgx6R9}zt>kc2^Agf>s z?4**4&3;l+Q$DN4)KuKEbAu}VPClTW>FX2m^n6XGQ>Ue&iT^aW!OX%EL&Ea69Wd0IXGFnlGxP5NapQo2kr6f~W=vF6rO$ML zes>@(-KfoSU19sz_8m`==vA{$&(2PI4e2UHBY{2i&!1%^B`1f5zN+#IQ102_sHG6R zx@0Wu4(6c8x}NDkHbFw)kv08r7_A2mVY>uRs39QWuFm9dE?-+x_O9>4njR!1-yl*` zLgMLLIu|)PG`*OEl4bOex{)j0AGsedH}mrZ)s81FGlpi-ym8+lc6GGx0iYB%GWCun z8^rIyQzkSXo0u8eaZYWfCn%`#SxKNW%CaeEmgBO+>wF;n7FR;m)AeGF^UIga?cUJK zwH9T~^sFohXXDutd48ae|0pp*uf6A7DFSpR4MzP~?3%jJWO16eva-hS;Vn4eDu z`OJ{h(~~kXp6}iky%fy|0Lf0p~fk9|qph-zc3HhWvR}Q+h#DDYTH53A#TDKJ> zIPvzzS>wThYe{cf9Ri;r*13=p6jYj@KbFeay}aBq2ZN#nW_xKOU8AKP_IW3`x!#qZ z#Il~@$l+sBa`s3z6(TxVY$(^dpMw9~Kgk$|MNrz`=oQ&v4h4 z!uo{`fL+`wKMpvu>gp0+Ubx~?%EkHI#=$S165qdL!}};~2ED!zAnfX7-T`RCK709q zM)lbYGMvVNscCZ#pREy>b$dpijCXY4=z;fxm!g)^tz|;e3Faip+-=`L@^m-9_l`Oo z>$UIe%hHO;+~nj~Tlrai)`9zEL-SRMqlLo12)d<@hBoJ5W zp{o2in|mtTv-9Cr2dAQ2e@jE)fvsU9e6%gn>#7;)bRT95sVS^qUO9Iq=Ht3_3Rh`R zetv!i5Ucyg$50Ut>m??oRUQD!1K?=2YCYKz8+>l=w(RWe)KqnDxlVv-;dVKjnw|z| zF^~Hb>@u4YH}@9V!Pud(F}+5o!S%Mu^2>h!)wbTU+nktqIus9`lr*&LS9%O&yjWuU zij_RLM=tM|mA__sMuRBjAH7Tn2%pms=2DYYA8fZBKjzEP)T`F=v`(R4nxWwce(E|s zKNRqzu=?Wz7>tCRoRYwwn^cuJ30axYwpKp--_1&IyPzqi^w2?W)#UC4B=-5%-CC)@ zg`-Un4`s){iEAS{^e?3Z8spUR8(ogZzgQ~Nt8GvJlG+vtDs*e-8>gR zB9#fgGcs1IT0b9nPA|awBqZclRM08&lmExV>g=i6=x@o@WUuv{wDJPKf>`};4s{Jx1G3rW1gm7JucB~~Wx?JNz z%eC$f14CwHoyq&WJ8EVev3WAqMM}YtSF{-#nTlr11cfv?ASm}2iBu|k%@|r6K@F}E zPX@w%|E|$_^-!kl6pNmZF(+rUBRx4Ax;PZpbob5I);F)YbZY;u_JrZD;Z)w>d9rZdYAO9VlNh37R%=_b)!q7RgFEh@s<4zg8KJeJ z%9vMBj@w%vDRalF;UF==sACr3F>rkFx*N?|4}24OD61 z1{fvjR0eD;EC3j#))PdXx9kZ*i0cAcH4pHIx6-_vY??tm(6#F5%q%gh0hJWWYi2Ya zU%6{FLIOqyD&bF7@7CcHwp$Rm+5BvYj81KW*L|kNE;l@rop_~o_oqy!&FN=p>A#$g z0DX~=SQ6NMM>kZd-8MOA48RZ6VL@rlZTz;AU~f5q z@-HBLEW?7;T!Ha4c(!aXpgOHgd5~V0%c}PUnhBpCgJ;2Q7M5!FfSHLYO%{LreRu87 zxeQG3u8j`zT_-S2#1+QV=rlB(Pu|Z!uy%w`%;X@-&l#UDe{ebf1%qT{WORH%dw_j>aB^$T(C>h_jFlMB$7 z{D*(eVZvxz6vo5O(d+ymQlfMo)bF-(yI7N4SU9*MAZB;^L{Gft-CoAl{xOWje|7b{ zQriyY8B=fL>T4)v(7gX5^jfW%yp7SWzi}&0kbTwpa*JK38dy-*3fRUQG z>3T{w=GA#>1dHNOrE$dDmdpG6Fuk6aSghz6xH=72?TJc^iUx@$BC7_=b&=tM*Dh=J>OAP^^caOM$djyC#PYY<?-+>C3R7VLB8_Jle)wA&Q#Xx;im{&&%aZfx?l{V+rSJUs9)|K;!Bn;Pi8 z?=xzlJv=Lwi7p>{)nYQ)&S!blJSH_kgCw2IgxruguL}rm3HiCG7bR;v_RZDT&9jW& zh8`Mal`$NoUpk#SmSqlq?qg%HXSBH;5^IO?7J`UqXlb>YY_nrxCfeO^B~)3<@0%Rc z)6?o~Is+Tqo9 z?;JTQG0zha6PSEirYHXpYZ(#%)qtL+re;m@A9(F3nLGLWqiN_AIGnTPzaH<9Rnb75 zr&D9FQZngEHYXT6HOY82j46LqGLdER@-*B(Yv!^zgm89doyq>)<6^s_xETI@7y4D+ z(V=d$-Ng59DFrn8PjPRruu6xw&a0(=v6`&WlL!$hvTF0EDYKbU;KY)lc`0~jA6p|$ zJXTMbn)~O^U!w~}F}P@95s2|LN2#QN!J#HwhliXVbN0I-fy~SZIj7Z+1S->y5}Ot25n0668r%nK z{}^tk9ZKvE{*pDIB-3kNW6EJ}s=n4xnlGEx9h{BvY!VXkTk9Em0#C#VDEK(_*fU2?Z|mca-FbPncsy+T-_JZl5nm>M zmOGycTKa||Agpv6SN%zY>63$;20u=OdOsrrxMqK!!)Ip%XDyeM?D3uvqpJmLe6~?U zzV%WXR%PWs|Gx3t^&7%5<8y*;9!oX5hw7jo*1W*E4eSg&dtFL&Zq3P|@{&VfUrl*< zWHVRWAc2OHCC$J*a>?)SOP%E9INd@F%dSzOoshl*fxnv#Pc;5gmVD7{ zNUZ3;^9Y(X+PQ6ebPQlZ=Aup7>e(-~kGQ>L9hb8+|BdTJ0e>LmYZU}SmsfjQ*w+@E zvk$GZneOji8&}^~O#iJIQ@1T`z2Y6~wg97=;w-qYKB`W(&Ux$~nl5U5wB`^A*jy2u z-rui(Srx_6dg&l5y+!;04`-$)cme4;Xy}UV;jp|@fow>ZyOji^?Y>GFaHjhcUHhTD z$suMHlSEJNTNb;L1e-4$aSoof&ZlaC5WvdHO3Bs-T`mNT1XU6Aa-D*HcrcNTbS$B+ z{nEbs0s*>e*G$>qB7Uj zwFQV`*i2CkUOXQ!1b+v+)6&uPj**#rKi|NL0pJ`ffZTx|>HPrz)r5tE1HizQr6oMe zk&zM7fwQ$1%oBj5o|urU5`aZQzP-D?ws&%>@M))n;gpt^mPiBWVZSj1Y53%;-!=7d z2tdO;IrylYOT)&7JyVdG`K6*FB?ZUWI*pp=hs?p*+1t~#kp?5nap%G1Wv9h#@$KOx z-M6=kD1u4_7ng@58cY%%9?=m%*@a%NPDIE$P@&&BVw7|e;CZ-$CvJ9_Q$QUjq-J@BV8FyN|YR$8CQ|N(<-$h2m+tG9w3moR(?_6HpO6cKZJ=Q?QQcN7 z2_VJ;P~ZHSy0dxIMe9O+b@WEsFL2`T>P);e%r~pJ<2fA-cXW(FTCfLYvx^F<>Wn;H z{M;P}$F8Ry0pA=f30S1SB)HvUBT}*zbE-|WqmZ=T*tj@q`YK_TR`Nfq>bX^oIw{v` zU%bJncQw%b9=%r0ncG{ykA)A5I7T7NNKS#;PFGPam=i5|x#=oT&5lG8^Wm*;Mz|;D zcwYW%c7A4!4)FQ_F=9PT|LAGA`LDzA5LE}jGm=49!gH1HVGWrCVjW)1Ze^xE0qU#~S1H!vV&!xvRl zj9;NbC&$F3^Ob)Eq98XncN+L+f3&=Ajf9BTLq$~;`v%S0?CS1V8Aw_h5E`;9utdh9 zaBy%MY3ZzHFE1}bXF)Xj?QZc22~e6bGIN&ZR#v?Z3k}(yg-Xc*!AVMUbMxNRO|tWy zL`#_RpF7ug5-LH0=sMY3m zf8P9OT(bB9O>y*kuzw%|>kVXX59{-~!=|c)5dGh`NGf1^_2l|KH@pamVHGr{PBPl> zz5Tbdn}uWnb#?Pic6Xk0JrZ=~LWen^GN@$;3`XnHgnTescD_K3znd^(^usA)T}=&Q z1p8Kge*GDJ*mc59L?`jX@bEY}>DLqjlGIF9_m{ep6X3|bguXIC()nYiMeg$fVCS+38D6&&N6ejiB$<79fFI1F4pSs19~^ zv>L6KkERRCEI@QLG%fD8R5JfLCFt1j=kKkqBI(qSpdf)H5Z5Dt$=*=Ba*5pi-Cd9X z_UF%rR#r&20L$+jShWVRZ3ECcLPC4;*aQRw0ISJ_LHIVS*bQ)p=-Z@p06?6QfybxV z=6u>{*!#&%!7@Y51PB9wwrXQz1JK9{g#qFe?S!ozq|*%oR4bD({9gQy$`lfnmx>= zEi11N7?);`3vJ@c|MRsgU-bSUcR`f{aH=IKHVzP~jkIo)F>_;USq%mm^V)mI zPGB+#M!-<{&%4ab4)^xx>FCNo4vMDDYpyafGCDl&L43?4B%52^fs%O{0MDOBe6ZH$ zdP(5x8PHc$Pyk)YBoF99Vv)Krv;YOkPrHqFAbK)t)IeOwWt_qt(9^!m#v`@2C;Phi z&*w!X{rN*0mIP>_c6RvRkKr(gVC0m{O~j(`uJ?v9l?33)00m~%cZArmw~4hS^6?K~ zD#2r6rSd_3li2gfqQOKyRnPm@q0TPn=b6uiu_|0@dUA4dwy@&g^7q81ra(-q4pp$^ zJg|aIp5L2RyxdcV9k!kRtc%tgULPyNW|xy4*CZ_V1nH&gH1tE0!$VuxSRnf=vsEQE zEuql~jMQYaL+cj)CE*mumCjqBaei*$Brl$*+i?HAi2aCU*Ll(Tu2B|=nqKPOHPRCo znOc3%V>Ls2lEbJcklQwr&=^9`k)58d8BLA{=H%pTA>gMClyBB|4Kpz{EiNn!3lCR4 ze*)#_=L-#h{Erh85`=_>$r94vkO2TmMn*_TNK0$H0IyV-;cs1CX>P4-Hdk_)zi*Ep z{ouo`;90}P8WLJHPh?X?g>`f(!eeFpCv7xc-E}~4NYH{s7Q_W8S#2bJe0&V`vP&{- zw4$P9Fm57xOU4T2Xonc-2_E(x=Z|5^psz3r$WOWQ>q71dgF+{8|3tRGJhdddlnjjJ zRIj&nh9x1BV=DJgE~1yCojl5wUDw88lo3doT8_w#S`02Ql;0aCj0bUr|I*PIs^)f_ z!PxyfqvZAko2Hp@);wYgg+x5hP_dDEPbYm8mI-f$0LdarcN3UB9jE&HKQ)}VgS!7k}p`%Ur8HRDI(2vb|S05Rb z!cX_nO3SoC(X{1q8*Q2%#Q@~Bi`W#Fyr~?~Vv%8Ceg+3XuYb*2>hHm_&e-a5j);IM zMnOs0qJ8BpZZU2j1Bh;WY=m#W1L|@+0Q1546fzObkJe{b*w;^}!+v=sb$a6c0^k=& z;nG)#Y7d3wHIDY>Cr-dD!Ry_Ld-SaUg_vkX`p+4cc+q>ha1#n@pzBIjQ2b_^9{WRY?>V7l-g|I5aWy3r?&G8^61=EYOh3SLad>iY3yv_V8p( z-VQS5|5AEX32O7xMu&R=>UMGi@{16D>PeTQW>YG=S-fBzX!692;)T?Qo|&1t zdmSN=pg}E}gg|NeAxR!7Zg_Y&3JD(%6%|zpdxIWadrb|H!)75NA(?!DFbIc6tZ@Gw zFjxw1?o2E#d5>9O8GCjjBZOjsq-^iw49iQ|8e=~3xWxL@h)^J z>qej1?e|`_+6#U0qdevqfw^$&{V-ZO1a^DpIorZ?_FT+HwDTbkgc#s>F}lFx+-sO4*KnxS6-f(n=8LiDf<}%BOy6C_-A~A(k-H#q9R*$ zAQ}uTtl^7RZ0Q@ykX_u)K=hZxlarCjNnb#?7ZwITvrt${?7gy5Zx|1(iZgz&3L5{W!~fn1-yx%9ZUD#8sbizS=UvG7%TDn{bz#pfyF zbH0$?v10XD$(_0zR%`Z~$S|(+)!I2X2$`1YHRH0{ZMsM84)G{rZdbwka8VQESAtCA zqN1}Lexv!PZ2%hd&%2+}JC;PCQj0Wz!pkeJKucpCBO%^DMmg*kdpF?R&RdirM9{Q< zd!q!cXPl1ZHvBR+CSaSzn2C9u4W%1I38wVlPv2oY79 zI$K$EvzF4a*1M4RMAKMa5~V0I5(<1^$g*i0`pUOcVnqjz$d2^v2{5?=`8f60o>11C zyXl|Ib9Z}aN}De7N4&iWsy>5H1sa_L;m}YK5G*2JHGsh*&xbRF?UVjU+<9{JXfaO! zB&Sg!|N0ebnT?cm>wL9|?Q0^Sp7;0f&KHejVexr^h8ZKg`BK;ni-dzmKmd#k0C|$@ z=TDW+8aL(RnW9J#h?d@6X-1xUI5iUPl2toWdIWkj`eXo1t8tlUbY36n zcKO2WyZ``ZyT^_|A@SZp+g1|i{?Nt~0;9TXj4+OpqrX&mHM4{J8Rh0)E+QttujzF~ z_ml|khv!2`5dO_@lLr`YW)Uy)Ij)a1#>eg98~Og^p?{D%Q9EecLg@nZ{p+R0aNGF{A)(h+mp@Qe$jXkN@RJ9PeR2$W`$SVE z9!m_g2BxN_y`gA!#lj3^xX}b`BeS!PfEsr09?xKz&-Viu1bEonGX`q8{=q?NV2p`{ z37EV>&p*}Kl@BRR_IzKNUAQ>P;uV*~C!4F{b>yO?9%}RGcTlorG#yKW)cn;K_PKEF z4Up-gO`8LQT0mn#rFxer59AOIO3HqKig~dmkx)Bbs0@5lC?E!aF4K> z*=Hi+;&3NcV}xBC6_JsnBgu4z1Zl+iMA2e_%R;jOut@B78)MzwifsEpPn_~ydjXL2 z0;(g`?5MupUZa=0V@pd*YPl>0Rm#QvYO8C~A3|7f&dip&u5lR|t(Nn&z|00v41E7y z2~5zX9sUsvl#-S<^!L?$^o9TRx1r&_Cm6}9gG$6IB|DqfWTX!cO+Ma%Xbbl0V*T*$ zZj9L|Bn~8(ot3>_l39J_86fZ4MjneBaD0*6!E(Pw9STfs!!F>Px;PUkO* zs;aP{;+)c!^ca#_3uWjYcQLWX=lXpIhlKf5NVf1!AKKG0px;?(@VsJCQv$tF!WP}P zw`;e|m!rnu8!c4p^D9-MTx44ry*yr)%&Ly=j&K6QUk&=38=c`uFRgtZkTgx?RtpvW zUNbn12j0&*!p1U+qTb7NKn|GtqYe0YYMYd5>NWwZbL zQfF0JL*u9Sgigc1z*ZDuNf5fwxtx%3+HDoeAS#Kas`{F(5YV&g0u?qekwjJ-M>~h8 z;7QNQ!or}_3}Ki&_rZOY+yr1L@L2$wQV5bQJKW%8td4zuk!y8&o~pMnl2k3<5f`Z#a-OwZ#YggW0sVZbaE0ITC)#^4Jj5S%@E_dbtouXKR{rqsg3fQX;?<>Eh z8UUMacKU|Wzkj^Hg6NI~;{e^UzJ$b39GS42n_KCK?>>Oe0*9K;X0-qylai{QDjFK~ z1|I`H-qhVsPPf>|+1T0H>t$4kJlsHs!NHb3IXbJVR|OuyZrjZAM!AoU%9cdGPHGjK&m#9hBbN81P*TbX4l8 zD2Nygs`GGEfHkK&GV`Be2RvAeWqHu=qC`U%LoFMem5H9(p^ow|IQbLjClBs=w> zx8&|^?Ugy0T!kn{#_UBpo~OGc2tAm0g9i+OX;RCsX75TwArW$EqNZUmsxhc2SWUxT z!`toW%$pJZ);`QBY~?%&EDrJoRIDgA&0M+nO<_M%Z)=Y1NixJJ@+p#IaU;7mB5vxS zi3!o2o7?~pW)c+Vis6xv9?#cbQ~oMTS=W0l+7{xF%?)__T<^v7Zl7neM-!XKfL7Rs zkj2Erfc_Uylo*?s%+JkHpp>R}rvN_a>ged`;NSsR7T|G{IlOIv!)$GB!8(nNjTz72 zJl>x!0xHQF^LpUlkASXju2B|nHNcy*O!W?PP5&6_DkxBpG2CnicD6h>(N&SpkfD^+OYkj6LH^EvT6pIqDmD&h6iVS< zaIVe}9>CW1isAj7GMF*mUCU}W5@-D6gY@NR4KA+wezgplvY;=~LhB2Q!ec-`9-HOW z5wq|Qw&aeEcd|o(Kl_4r#KaVrjZ>pyxA8JiF;yhx`Aiy8UXEejBbuYPf0gBDh(b37=Hbrk% zB?CGj%pF`8EYj1DU3~-iK=Np~-;Rzwgn-@(O&(^?(2Wug?+D0@4>7NQfgI4@9&oaX z-v|OE{$>+8fs{dTC!3vSmX-s{tc&D5MxRhl#)pUHWW{U_fs_ZNEGIMu`k+Gj@O=HeNlRg@62ZN4IGA?tm-Ubd1 zrin4dANVbrjlYK!6$CP9+JE%HIb_}OaHv_sBV){jf6y|^Em_72JfHQX&kBdsuPXD+SuRv)rZVUvqMz?O-QBY5y&Qpvah z5D^g5fLT3X$BdK|k#l06-&+v$!`*>!Wmefuc2knsEGBoxe-)Wf1x>~?+^1qoGQMeQ zw%A^jFmMq8%*#suyy0sMHZUWTS0JBp+@UQ&db#1v<>-PY1Cf~RwB)|J4^x<0sU2f% z^1l65V2Wn5^YVv`*ZE8BDg*WQMQS!$FCi3kF9X*GpaQ0xosVs5A_m4o_+qWfl*J7nVtCQsvAiInT3cbC{#Z8U-z5gJjibN#4{9-ggEW=?L)&Y_Tu=p zoG-ON73cDL3Rzo!r6)@-MFk}5t4&0~!S2r|v^+3tM5a)g^$TWXR8)Cp^5^A?F~I>531*LRYYSwfMWot=!39m!tV zX$Yk<(?T*TM5HnzkzOPU*@Ti!^@^yh%&hDb{`aeM&i`EJ`dzKZ0^7%G42#eM81}Xu3N`KvaYklt6uvGV(h?R z49^AAI619DLTX3Y{95NZix;J@7Zl);gKd*Ys6VNfm$;I`;Ys5XbS3yunNV|hL^j(GVru6^#>4LSP3y-90w`|YMowmw) zb^90LdY*^w^{FBK^8xFREwXcn9dQKqbLUzG^iQiF2J-mzYk7Ngef5nij2xeH-4vaC zehi5{h_(qCMUFJsz# zGBRq>lOpgbt5Z@c;oa`qWo>Q{76dxnO?3 zKL{NMC#UKfjZznC%y3vNbd#~Mh26Y)%*4s0!?pKd07G!{RN(cBtoP)_w83gO_hG&& zHcM#>)uA`ve9Bxcd>YB-pS2}@^Q!g;xOS)GIl~m@CpEWv2heG}0Zo01kezLE%|Kv} z)<2%QL1dR1MaGh!$En)T5N+*uzkW3^h27!wN|5vFXh~!QAH>Y^ezs}=FYg+=9!*X1 z^XKVtLo1OS43{rmdoHH4ww0BKPdP)Mtz+t2Ax13m{C&LFj-~4)-B4pN5))~!-p#{V zJ!?*3c)Os$FN(_^wDsAn+Dv=2lCNG>9vicc4$ieJ$#?0$|ETIO>)p*{x0Gz+Fvlh+ z)EOvt_l-{1%hiWr@5|8ZzPz-y{!Ar0?KQ4z5BF=)U^jRQt4^UamecmHmL&sfv7?xGP|n%$KGuE*xtX3ot^7|?^zVB80AC- zr{X;tUA4|#noekGXl^bCNew&%5c&Qr{2Un`rc|FwNeOt$5_C>%SGFMNxZ_f~ZbtQG zMcnT0Miy1zWN$vMdG<)nd4_Cq;#8&$_mHHTA9w)*AuHG4=^xQu3qKH4T%4}RdIs$2 zM%|@d`!0;v(Nlf=DC73yx@dsiAzd@fqNwG4t@xvbnae$I>5mu;JC^xQN0k8P+mcLy zDI0b5*}2!EOr<7g%(}PY&mLZrOK*pBwcZ6|%uz4(I-0Oi+*PD-u)x7;m~hfgg^t`MBr+{q_OS6| zTlsGv1`XK0mdusAE!k^gC}umenbWCkhT-%#H*VhwhhU4GZ&6MD@6MkcYdCzXh(mY0 zt9BgV_&?O zLXiQlnw_5Ry*Ob#`V-z$T1hEkU)pO_q|0NUo<(*mc@G49mQ%OlybEa0H|GEZuKZRhaq+tUlmV*Fa~TM`*09bcy*<{@13 z^EnQGtn~lu-Fe(_sKF$W>8jDUVvm3&i7RK$%xQ;bSoL0_ecbVVZTs2XG&CQ=4XG+A zR9hPtY3VM%avJ25(KgFgda-?V>!95g@<$r_;a`@%ecN~Pt>jsoU!zIaJdf;f)udiM zqy77m!@16=y-6QL#C{j7{z5)~Sl?>xeVP5$X2DyZ_5MuGe(}vF&#UHksS^Bm1|MlKn8Z4hw33@lB<_GNf@;84Lghv3m39vK-MddIKN}ZyYN3)* zd+@?-pUoQPa5}8WNc8b!#oCM)Vtpou;(aHxELF7C_-5y5`9ea4#l?Fn{=9vB-K^>= zO@>>a7v<~8^514o%lxyEZTZ||!buyXh0jV%-*x%T;tI*Z*eEG=IQZOPBuiNuzj z{Vjb>lf9<>9b$*46T1NI!=ztdwYAc zO4#|Kk%0j{h|^s5^E(1W2Z$|lsilPladG#qOC2V$;dky-g6s;g!oa`)DG@{4&A7M@ zaQjJ||Ko3|&rPlWc}xhcQsCwZOnz~zArFOIrQfegQ3myO|F-1VS`PmVb|2O0dDeOgrZN4D#-xj^&pg`bVe89A$ARh2+6sXq@aOFs(?G|r;5 z>~DybNAWr{F+aXA@{>Gjx1yS@?P~Mb8H>|oEp3ttetl;nJFbs1{2sqi#J$BTD+5zv z!!1;75?`O(j--k@b8%VY*s-n`-}bNm>GbbEbd=8DKY3|-HS0d>XSQToKTgwk?0tog z9xRom@MtK>aUSHu{TXVai9L4D$VM9J0uzf&z7 zT`ptqS=%bF3>>R}&zMfnOH|&TR^w<_aqP4T|L?h;FR^t8D+AgtC&%5SUc2_PL0DM$ zVSGF%#w)?=`26|v?%lhA1|VckfGNbedpGVye9Y`8^}~dCwPSNjOI5y;-SFqQAXUKT zK%qcAecqL& zTLv7A^ioN$oK~+Vs}x2?QpJpoZ@TE1?_2rsq14xJSGzrJd(3Eu&+k@olOX2WxLb5u z3nbo8Paho?*XK!jbG$aKR_0C2|8sYLuDD7UXaseak40xTTs`{pKNMV9@D%5l7!Mnr zpP~5~#yEZ2-M#YET)&g%>4`3n-NQ6qp}#eU`l>4$w0w+BV^)1wngu08>C60UYgUqY z%(b<-_Alc%P%%8*`g1d_)W`aPu}|^|35`if6Bf@_1NX{b^;`e5gM{4FPK8F6SH3 zk$x+D@9>czApvRLk`?LLty@3p#XVqE_Fta){r0WW!Tay;aK1V|^fgxK(VxY5-JI^5 z{rRumRgSy5?mykC^*7}A`M&pOsGekJmtC97I32~ki(`@D$^w(;H?I+|m#G0>M>cB^ zB&;(Vrl-F7ek~Xn`;z8%JjigQHA(sM$>lt!^j&h~f`S=bDwl!tf9dI|^80lh!3M%q zpz>fOGfDZ9%t<m4o?b{!s! zXBV~B*XtgkTTgIsBn_-)ii(Po=7JaJ4LTfNU4|sh1rMJ+hPxWKSokUY=*a z&-*{B=3nREycKp8mR~vp{wy*-U%=46@8oNbQtu0+d6n%pg%6&u@sxE>*`5eEet?{u zJXooxg5lJuQ>|7Li`++--XHBL@j4AHhod3Z`E|9F>6T>sMb37yTS*dVo1Gf(eTd?6 z3}(U%cHG>^Ikm?@WlNLU?^{~ly<1p++O;@g@6&b8Oiyp@h5e#c(zh^%pNH(HcAI+m z9rf;bkyCX)E{?XAP4fHsqXB_RIfe@yg^asuI${K5od(q$R4(*2#{;<@1JHkM?4xzG zzNQ9W_WJhiubWpE0L=e+Zue45Svi!rw%OACQ-*e%N>T@L2QQJcD}dc|qQ!RcP?Y;N zrsef$!};u1`qg^1Ngc5E%%a%Zl$Bq3xn_M^U@7CMC;as$V+}T5J(aO1#DD(I^0KNt z|F`z`c9+pU%w@&ypPz}LeBJY-zrVV8mhJlW7( zmn6Tv(0=ELajn|=@B)WqThaNdv#IS9Ss_!ZMZ!OQ> zN{K2m%5@-LS$H>>Q)I$4Gcd|iWd82q?5rooU7=9~H93%)@Yp*ylaXD2?XRkH{`~YV zS?4#@P=`5bb(9~HmDGMP%6;tguc%mDczZ3;l&cP}S(U@VCByTdKH^BD2|_=6LL;cY zxsI1W)$(2Ojs@7$InsHNU|$1qK2t+OhO0wWmqsR6`^m{^!;>;z-%Ge(uEPciM;QtY zP9tw)HM{oCt~ZjmKHR;0S!HGZdN=`VzNlrB!u zZMzwTp>noR6v3EV_@7|8!QgmM066K?aPeR{7 zGS!U^?@^>$|6Oly@6xA{C`>`EuEc?BYHDq7ZlbND{m4=4-jQHq4y%WUpqZyfM{9VS zI+9^6<4IOlcG{=3#22q$@AnRG(4tRHF9KY2wcfAuiv6$XfDIS#}_2bM=#R9RX^SzL54ukt=g zA$@yI&9ZPyd3SeQN(qUtw2|G>qeSn!DK~iIjybe9b zXlRL`bG)8Q)*BRbL!|+_J{P%?CtGgOE{)7OhkW0XErEkvuVbOW>j$3kvJAYVaY#%h?rj}btdd}n$Q@A0=aHOF0CpfM(WamtRFnb|a)oeG+^ z1Zha}S@PoA@bU5O*{iIukFKu2%)s16N7ppe$nNk_Q=6lQ6ReCM9=UCt#xnc?EH1Ob zCuecqAAJLvu?QMO5@Qh)(Fp&%8|84@)_YVkC2d%goI&+4)rRXY9yrA zGUrZfe0clz$J<-X`uF!JL_nNhTv9BJhjjnM`T6-pZy%cDBW^;{*;{yqEy8>1>#pzW)4f$;zpQdeVm$M6oO0p_gT zBP=@xhS_*7YP#Dwafu7@s|cy!pW>4Ik(7hGGOaU3PCXSEAW5_i$e6}>%6vpl6yx2z zK6<=`x{w3!0Btznz)x?htE*qVdX>0b>hp6qCnpBp_KJ(2Zb{I#ctS~1O5V8k6{#Ow znC37lidOFctR>bA|88bxCM)~#_m&X9K0%)P2BG@aCPuQ{@w%EuovA3B>%g>ZELp|H zWDg37$;+vr)pk7 z4?ITW8`>5pPQ>bxrE*Ism5SRHZ-yG`Iv5PR#HXv#=GMAKMs0!X5Jf|FaB2B>iQjL9 zzPgsCx|Z7Nrnc&q+J;*FZ(SwD>wYp*1;ND;>09Jf$W3*8gu#S-JjD8Acz9&^$B1)n zobG{V67z3ry$^R$(fg`S(+R=kD{_Y9R9Bo}BL)w0vt zx$b+*Kjy)MqOlak8IuLh<>85svUss%byuZ@Il+g#Uhb(=`S%WvT5k(f_d1GFq}NOCG`d91CZJ?FS-%Na9Ho9LBdI`Mjwu2 z3WFcgo=r^nWjYX#!LyEUnGR|+eh^Dui&?0HrMYBe9xq>7oM&QSFkC>7Y!+gPvtpG2 zr%#LoZmDmqW6*TA++QsH@|8?}o=i10tr$Nott>6b&0@4-V*IkQ%(7mmm}O=8&4v`n z->R=Ltz9Pr9iN>1#A%(-MkoFkUA86;4knr9mVATVR3r$?ir@?rh@vbiP0x?0y0wZ$MQ zOU37e!1p;I;jC(M*PN(X&)XBHd6aK_{q}U+7(J!&^X8z4h`4pDI!!@Aos7n9x-mzN z>}A>;zmxaqD=FFh&8+tu?=?`azs$==ZK}bO^Owz-Un*FFU2aQsFQE{On=3{ss*|6d zF_!<*E7^~<5gIKQ@HnPBwyvgTGxLf2n$(3-H!rNMt=X4)Lum1a*3#$){*Qr7S)n><9$xFec^=H< z9c5v$FjXU5$Bn%sEG_*DY(WGn^Sie%5bxx&KQ^_uzXl17jX?lIEv>ij-kn-sTb=RP zI(Dw-wY#34UxH7t|7MRn;Xm6vB=+q)j61%A$&E+3YrBsYx@ozNRR|M?q*)|gT?2!V zzz6UvAeLqjhC$MT7v-UVM*6`UMnvs!Ruw2uAfbU25#9_hJ++UYW+RG(Z+z%1!>IWg8_zHA#^_8H$Lv>?oQ92 zf4VLCz{M9xVl1MJ!zivzs9w8#siH!o(Z}ys&7TjNz1RLQAWxwWrn2QTZvZu@u~Ae~ zGAbk_#QZ~!P2ueb=eaH$LBxrpAXhw#A$*7T=78WS`y-*Tr1ivbC z8_sWG-`TFb`uh4zvu6$!mswPgadL9%k!x_$skE;CRu)E6I4jG~Mt^>Z^pbx9ifZo& z><5ntGvI0#f&v022Sx!chSKfQuz+rK)%6evH{wlTb@& ztG|31T>IKK$ln2zI0!}+SRP>L3W;=GIEs|QgYkE8{FJ zyxzXp&+j0x-8fFnG)pH-y_2eXWkf?W&BA;}SDz@1!wW;HNP_6;Ira;SiJ|@~Uy&$A zuJ6`qhrxDAhTXcPM_f4rt`&x5$jHfSf$EFz-TS@b${}_px9L%jsf!PUH#s>i*D4Z^ z;sf7r=j3#U?onUgF*mmr3}e75KdOb54P((l!`S#ZU?3*|s2I2kHtOR)bO$PnG5dqN za~p4nm#kgLJ9Shz`SW%;);dMvb-&A(HH-#Ob0Ai}Dk>5x>_|^fe`5?8*7o-3EOm^< z?fLw|{?FgvUc9`iAOf`}$o&K-7r)aNCN;gp#zf`h23Ys z@*D3$j$wxeA(dn)P5_Zmd_fKqpf8uKGhOB?1yZ5Z)YOa&K@tJf%?;gm|GD8vfXASo z0g?wUrG;~IbSe1SJN>BE-ix4zRCf|@58t+Mm;VrHgk|6zNe&o}Lt~WN#N50b@e)PA z_sVN$PMs>m%Yypf$57)dzuwE*hKA}4UNYWTGcXw+6~*Yi!_MBGP29%2zlH*w)s4?^ z%+JdUG#bMz!zgfbvI>W4Hmr40!+~pZ>B>k=?Z7W(VZtx`Am5*WumNO;R0iQ`L+Lp{ zEuc=d)I5BcBzAu2&hFpKztZrSkb*^nSeHY?efO%la6s3AFe=+8bx2jag>GH|)$jPJ zQx$k-#3Vh^2Yf#LFz;N7C2zS@b;Nb8b4OkfW z(~OK4wngXqYeJBx!dPD4fV01l=QH&+{$9W~F4kvHp1?!OK`x(Yn55uAnxZHum`Bxv zl80~OvmS$U;s1N~)Npe=AQSvLRggqo)d-OQ64A!x3+WCHt?OePF^)x5+g%PWGx%kb zT`$w%YNLQR_7q9FV&aMD3|}|-t!xRe2O$N|gr9r|HUU42Pl!gKcXWYAYFEG%0iH!jZS*MK%@*cW?Q2r3^tJC|l>Z3^Auz=Q``;jFtm zQX9PL9L8(Yc8{oRLxZ)%#7+QFA;*VYA@rJ@{aXAIxGf5F4DYE$5^v*Sf`Ftf1W)O^N?A}D8;O|6WLdFb(`l{R58 zN(chD-%2~0n$EN)DZ&-DwYCbnQx~$&o2C9;V;_L8C+@@jdHn;7MBJZi%QLBwkuA5F zg*Gk_gY)4c|A%V|0RZa-ak1OS$($Lrntyl=5Bho71SrR=EsBmuY z-@a8)P;=ck^)SNbf=lJoEz^!h*I@LT||lJ z&~20}B;U|pHIvwMGb~gmlR${xtPzRb289lYM+uX0mjxkL3kvLx9ErHM&21k{KQ4&62wednm&grK_-%a7 z>U}H?00rirh#Afp36B48^Da09+N?9vyH~@!{J3@y@8KO=3dzcPA%Oi^oaB%>S^rO^ zljKo&%^87^gfVa`!I}8`ui=K1uExm7p>8I(ZI>?nE}VJ<;LW6N?(t*65d0vCnaBee zBmwQU`O$$TNYRy-mv5Yj8}*43gYci#MGbgQ8F-Y5E@?c9Y*Sm?X)NtIMtGXY$;zJg zBw|Ee-2jV++_a~@R~!KK8Buito*Eq%P;C*m#qg0c?gKx5ysfKyjZ_bpv?5?Vxqz2= zc6_COH#Kc|HJ&De^fatEKsZYHUNC@)^742{uE}_ij#G(^io~(LJ>FS5u;o-5A zuswnv98_;@Z7rAsO-;0w-o6uEcah@al$DUt6*_1t@7rf%y(_9f%Ybfh_sRowY-MmZ z_}24qL|7oQaW-yT=%1q>`6>q;DrwoFVp`*yr{1~ zs+=R>=80>qA081=ke8=$WpVG-i>0NdqQb(_8>ey#xz+b#j}xd8@DpwGj^VHkG&DBj zMxM8rdNg>FKZF~ZA1JVH6+1ZrTS|%$pFrGK1?fNHNDlf$t*v)Renw;c4!YNnA~+PW zvmdp$vopG+a=4U^4Q;unrV(NbZf|u^+bySpyEJ51>fHb_QCZnJg!`uZ;`}7LX|Kvi zP4z%X#PtXb3zJ06hyOt;r|45DpM3BPsFJ4U=Jgg^WxaYAHx-l!FaID7p1_)+}|x*PxS(8^55I_QCD1uLK{TrJY^Gql)|4 zY&=A4=rEQoMKuD~3JmwoZbfLQxovou!pp$Q;2)66LIH3NA_C1VEeHMo>UJ}&BdWgMyYl1W=ZYind+ z#dX?FSNGoS+e$dnbR22M1Ef_K`ZbnYW%utVr7uVoHvAOv^Ua$#Cy*x~G-Fcu_3PIl z7|+bk^0`y5KFQ0A#!?w_`eVD(zk|t-h>V2h zh0Cc^6xQe9$(d%*l0cO1XpbuRyYR%zgp}6>8pk59ONdEKOe`t+jeCf}tE&I{@4{>F zQ7~E%{Q-C@dj6wg*uQ$&rm4MMn1w|S4j~iSPbACE zoeI!y*Y&u6|2~Rtz^VTZr3zC=(2%9lRY)C9%FEdUn6h2h=!h(k}{nc!~WnZj@fZ33x(*g>?9% z9ZEijjoL)T#o3sd`A-EWu-7Th%L5thM4m91lAMfRd5C438^g|# z_7s%i)fYcP%LA@tU}EBVYN|RrY5kwMJX*oJ9`FkT!^7W8yq+N@g4U(W;r1+R`cayr z+HO(~#fCRSg;Y&iUOr&kKiMTPGoJnjU0VNp@w7bl&apWJqGLa|4x${lbO#i82|B!k46a#W5UDkv;O zWs37)jJ@1!Nc``r;3hipHKE zDAaCP8?_t-H0zMz0aOVHShvo1#*ao96w?2%BXrU%I9+$Kvp;?Q{Oy~-NAAS(8J19g z&!3;gy}afgK70ti*9(AA8{v?k_iJ_*=o=XV21EzrYb}xD}0-TmMU+Iw4H%>kB}&#AA@sRnxtt zjmoyJ@4F&#GakVZ(Ka5$MYs!;+kRlFqFKM;-%?pWAbn$Fdw?m~y0>rl0;a^HqA3qc z;p`wqpc@Kd$SGSOL2~FK>I@(y2xUGyUSQfli z2*jtXxcJS*dE^>L3=B}>8L%7wv|Q*Z+3?mrS=&>c!MNn#N<)KFVNX{8IEn|x5X8ST z`K)eb#a5YC1WlhoNc~{yUL0xzacsB_cM%W_Xycq|d z4|_%G0e+AqIw#QU$F35v*%1>>!;NJzXs-&7jWQJ+F;93|T;R|D$s?KEB>gU3Lh2F# zun?Fp(om3E+ge&83sPAz>i@o>VH-O;=A$*TnB4p!xWEf83~CD1tIHQa)dl*Hloa}E)F`-Ww!pE1n*Q|J>86H;yQ0Af+;t_3Z`#_< z17!oh4&?#tdJBLK64DfG{5~x$%?p4F9&`Wx*KpqeClAQWKPX6b2HhG641}tWG*TCW z(&3(*nAr1B`owl-W)!*Q&MoZ!g83cyx`({DY!x8@h-B7BB1O?TgH*A!o@BvCwksR`OIOHW1 z72^w11(7(%-oJnAS)rCV9fb4eAW;QZ6BZJJDXw$f1-CYgf_nA-ty>MaN5gF?)02}q zpu^x~@emrOrZLZ-(~*-ezAy=|VYA~H?CX;PM1dN0Ss@t-+D3q4%A&$RzPRn{q=NyK z$RdCqaw>YB#B_|SW+c8H8ZKH}sS9`DD0MDfDgnBM`UR4Fq|?;Y)ZB2Tkf{U23+L%j z>g|g4VkkHuvTw+4%zyIq2qDuINRIf^IVArL!fx-NUDPMr`TqU;j~_jOrEJvX8iZ}& zW09&G)LJ+>YCr5rO(&B}0_!q=j^*ZiG(f`NRCu|+LBXtZXZP6jG^090{>I|vghuER z@VrAED=01f66gu;9R8{?{Ji$Ni{NFO>JXk5G*o!agf_IchHeAq1TUHOszNDX?JvA3 zberK&m66;2%QA`Hs7sJ0{y_^*PEL;6&rf`!6bX#Rp?k5hu~3Sk#WZ~My`IXY*&k>N1I%crfLm>SW@c+nt^FcMTycnVrQFkmDz38<41y{wNO z{TD=y^RJ&{nJ?5$t@ZNt1^9dq+Xd$}=;`Qy*XfblA3gf;*|QOZSM2Iwm2{wsy-OKv zV|*sc3r;yu3XlB*pBIhg6F|p-J!2;&m!jvMOt(aIEXs~m2Ne_)z@AAot&Jds9eel> z+DJkoB8oV2h_IU4h9RTx>FF{1!=lRqE3tTA0zd%0yt6&8(R{mOzN+W#J&zU|B|Uoq ziagVf&vunpFLh*DAd*H8=|r+?lh7FWlyE;_r|hM?nh>41jI%!kD2@cg?n3f&dGIUT zz~9x?^(i`iIHOOWKf_c-M2a}0wUIY`LplO%^o*8eI0{D(% z!l;p2uF8^q1nPh2z!4wH*8-wOsR7_kzcI%_N2d-khcp?4=tu1%$Iz-n^1K=?;;O3t zaE16|Wf1U@USSPmS1hb+y2-8NP5qrbvcYrH z6oagy-wcmP(Qy!*1C1iV3A}RU3Kj;E9&G(BFb|}?>;c0h;afC%Q&1~A=SZ|Zefm@d z4MqTG>0ha(n6be1A+Jc$;WFRJAnIqRF9DK*_4Dt_1lzEB*NuCLE*u0U8gVikf|qcf zNjCOLUOql@2tXk^H>|7a^it!nNHh^CAG+<(9f1gR35m8#su6)vzrrFXI44{>y%G;n zF40?QfCkDlOSTb&na_{CYSy@#w>s-?&1pb}1Rt~p!~jnX@Xp-W_#f0royt0b(clYx zYNjsx+}$TRSiIsxQa9;VZUr&9`=>btt$RI)M zpCPtaVJkLx3R+tY)G_@ttcRbF_?cw{_L}gwbo0hv{%eMg1Hc2+dt7)c$P1yjul+Bk zv>&uEHLYoGKC;yyb-`QRu09UK^JL$Bn+F-xi143+Jr>X@d1Zsh^bAG-CPtACdMRRS6WxeuQ|qt=%d z*%tz+&;|GJKVL6(>`frDuo#WB>gUHo)7xJ?NlOc(=YUkB47@fvW#Dte8Eu$NqgvF5 zPoH9Uu!FaG2h1fctzh8&`(eY8oCg-+8q?cdq{Lvo1&T{3K1&b0V-_BqgCBZsO&m zQrp0UNwA|c{_N-|Y%CfLn58NEQF@RbHa;g0ECl$ryBZsxlHMLv>OCfdl??TsxPyWg z8~2gmlZb95G7Yp?G#Ueb0^Nd{kl@G&W3TbQtA8%abSI$1LRo}Kx{!MuBytF3a7p;< z(0vQQk<(73Q%QY21c!!LUV${&F+~>%>m(i&`4S)C9_uq-4^Z)hVq%pGe&rqq^%V8R zbt`LzV<57S{EFAg;w09p5=j_=CpnyP5*Q{hvqtkMHWS-Rc%3v9*w zUmua$==iHy+~{=RE8&;GuD@m8(S`tkDi2wcFj#%0963k6^*SV(uxA;TLTXBwud*JY zWUjSeyIjPz@gd`VNM%TivcM@<)8MzLqNqL(uL7A&q>`k>fE6zNaKHhpZ@51wm$9Bg z8Obs{zmya);xPaaJQ+F^pk3OdJB9!84_jc;2oR8y^8reZk&FZdj{*FoGv7uibC5J# zgF#>u3t9oddBh3yZxtJX^4QziArOcoY6%Iw2h}GI>@931o^k#OMhx0Us5|7OH=bD| zlFA+@ejfXgcCIu73kCTcf{Y+nBFdo*2N4~<9ECft89#BL`$$su=JUyLym&>`%fU3v zCr_QiXJ-m-m~?Q0Chi+ZK!}Y%jDcp5uNuK)d<<=``m{K(dkFcaRMLTq5*8bAK!Z?1 zv1Q9{K&Z$l&`huToMjXeM7kUJG=fC&MQHCZxtZWu1ibMnPraoyu4jnOP}r+e@$VR) zLiElEMQtyI93wq+liR~Ar?u-LcS`v|0lqN3+YKB;UgE@KTY%kk_VRAJ*BN%x=`l`G zjTV`FQ^+E>>WJi*eR6|g*W*$Tspm%A40&st%wl!{%7I52T8%bBI=@L%_(!#i6Yq}x zl*aY&t^GNU=H^=Kbi$!znjfkuBES7dQQ@(PLbkQItE5 z-86-Erh4YlRpU)N!=j=ZZHKB(v78!WVsWBVb!i-n-`1UJv}Hwzj3Y1rHv|7w?5nG8 zeOKM^jz(eA-`aN;)E#6lbV}au z-bn>|o|3%7vX(tjYvDTx)+w2a+~^ArFAvX8f85Qv?a54bS-+8V>cS%CoJ7UEIeZB*Z}_bbyLYjEYK@;{f>WvK&;*<+WX6 z@B3FEnl+`Cuv-g;XE+XIc(y%M4l zd-sZn?iGI$s{K@(;vL0ra6z>xE;K>E@!J(o4k)ffHLFOHS0hfL+ zFE9U2HCKE~4C^NKg$hYbVH1R7Jt|Ix=)3XpXz*KqdC){Q!|2`jc%7V+9pf8|jpuf= z(Na-~Q3=r=@b2qMwZb2^9Ibu%DXcvb=I)%iTO*i1>cduZLFLQS^p}04OzA3$YBWX* z)VW^}@*dyw&)#df*gv~~1AYAvC%4N(wyJ5f23Q(Z|E}qMLv2&*JMev*8XHYP9wvHGTvyL>k1OdQT_i@g6J@li_bqX&t#&CPpxcyxt$ z`1bA<-Lq#eoxGE9Z8YkHW`@-LwEqk)m0^p+Bp?i!+MZ|W8e~ddWAk_HK+KfqKIlED z;OD1!>33K0r7y+Bip7^wt=>1Z)V8+JUsD*qQyQBEf_VyMMUmZT-O$MJj&{$jykCbu z%zC|g%t$3~W4IslzutowL(mHD7u+kcmE39DHkk>RYmW16aSt8<@50DXwUo4oh_s@B z$S&1QqP_EvcJ0KRLh)}3#ot?Cd*}Z)E~y@ruiA8#T1sX$(f;(Lrk;rt*HxaAr-o0R z{_sk6Ex9PR(4W^R7O?uhweJG9r$BN#**R=2q=0E7HYiC-Mn zXF-3h7^~Mt>)yQ+dUKHGmY#@6gKK7Hbc-KFuphpAnWF3Wmg40tep|Lc_cfK{eNCO= zRMgsG4=1wu{>S7G5@}RQnuDG<|9u|OsA}h|v`1}&BW^NUrKfjOUr+buC+rT3KEO|; zMsW@g3snSd0G&geTgDOY4DcXTF5jD%a<`% z#j(ux$R<7gh9=!61EVHgJ&DIdH*e|d>g(g*8=EvF8A?4qwny?`)FkYOk$}ttV9M#P z$p>lanJE}9GwXvswrwLUEQ8xvnVDGFm{@KYZStfdj>pB_ch1;z>gk@-8G@fa#(0^= zLKYiRx&lwr0p;)bagt?d=;RpitA=ZUUH|)b^c$O+QW-&RWZAZhWfvzi3nzv8ok!vN zx^^+SuY`oEB}D~=1<4*MQvOXmXKU=>a6dk2%QuCc8r%}Hio7b)sRSNJ9UV(c9UVP& z2NQLNJ9o&u{0_y%#xkq3ZRgs?wQCnM=W2!7>1`sr$UO8Mr1ku!Y4vn}ZKa9LG&wL^ z@q|xBgv`@k=lE4aQ{}4)=>l~gUUR?*MMOji*wH5}jE=#;tpsCQu*z&mgLW2x$Znjo zb3x5|RLf6G%iBCX@aDtl^c_{f1%bu)^7ec^Y145_$9OO-V9L;7bg54}JKt_o;?+Kn^E`fB>wsC-JW+kO$|-p2oth}v$HeNP#By#u+fRwuz7nl zG&Iq6#~4u14Nc8jG@0KG{m?$SV@vu;ty4c93oYdu&P1-I&c6D1ulV7;uF+<{(Kp&c z@3cHUJb@Xw5i;GfvNN&ef_AVqe*a$FTQoX<7QM;st)!p|yLa#YVNqcky(XF_(VI;o zebTX`OMS6qs?0LS(@c-^G4t_jX=(Fz`gE9g5(#f30;V+$NJJj@HG`xw8_!{tHCFAfDrit{q4GMn<(#-!CSKj9>nhy-s%#$!&RRNV{!QikAtq_6Gu=Ka@TwGjzK7AN_ zkw))WgdFW8-+V3xGW{3l<`!3fV3YaUYFWYU(uXk#1+NkwCT))2oGNJH;K0hpp0smY z%xc^75pFgr1R#`q|zZ)L^2dZWk|7 zF0{257gtB;ew{d`7MPTfk)9QL?{;WJ7UkM9yx+s0AePh0AzqdVbaFP?RFzImfo^$cs$;y24Nj!yYquDJGdl5-nZ zD$(MQji#+(e)i*?4$e%4tTfx4q_3~N?5)(I3it%tvm@}~E4%uH$g>##lMy6@V3nnQ z8}QG{mc~|-i6>$?Pt%AN58@u(*oS=h_SRYc%By$&40Epy#XjB?Q1!in{?9_k=g)#I z1d;N9_3winKjj_HACQ$5^PZIGv|wBJyv>07!f#=G;fyl_gEprM#UxkE?MCoXEcsQH_civ)|D6k)9XPI8 zOB&QgH}O$HYUm$S25G0c@G}OOSxqJ~a?^V>bv15-KIQv1lv3M&k><~jmbw~czrHuA zHz>jJ1(Vqy9L)`fMYDy9>fq&-i7#^_bk8S5FISk))8)yAbq8aL$hddOsd8HMaCjI4 z*V%n%3Ab-=b=3^m&dR#j_bc|jQOc_e7c%E3(mtojukkSyGSb|2a#B5iqr4(GWJ@IA zKIyZ<4)hcjNU=!YG&)V%Nfxj?^S$;ELaa>%eFxpjE!{yzM&rbLyO~)ARt5Ve#au-i zKJZ6IL`KX^Q2T&ZSG?4B{m-{QA6~wksk55y;O<=}RNSVUVf?i?KX+C7Sf5&~2{t(| z3DOhD|Koy3&tt{sH&3ssfb~k#&U53}D20EHqWbPGjyB>B>a7e`{VIH7kVbHD2MdcH zIlyQ1YVHFA`orl#ArM)4gE&tIxN*|vl68D<_UY^Al^-fuym=qg(Djl;1_UVq)_De_ zcXAQAxw&%-i7Bc9pE-^bPrWhb@>d5N>Of5F-Nl6=v)&QLEAyk$J_B3+p0fAzTOK+i z55Vf#LGP2D*K2>dxDlnbDg0^te(zC|I#v_>>yx0-z~CUp!}$MmUW7`tj3w-R@7#|3 zx!>D-shS_P-ekh`C#sa>?`F{t@}*KTo^@_p(m158ZD0IjqW_m&ugmlAGavl?ZGt~; zA5cA5v9vJx6SIQN$>&GpP+pMC={**L6!X`tcH zl_K~tncm~CV`8>rC#uW7gxW82xCo>2zCqQ5UlB+AN&gX5?N8P(PMJ>nlK(8h zfUl51zF|<5vyvKxB9f9t2hJU=JuVS@bH034NV+NYj^63Myx&wt($so}iHbi*Z^gRL z=N_XU@L!t3X6n1H*7|qsM`c@|3*_5jc|@a!rf>73!%eMx7VgF~LMgx8w#yss796Uw zc$hNcyZH8an!i-h?;Dp_s;(KZcNc$*+1_^L1$Ki(&oa)W*P8VTCSUX4_OhS#vtUza zZ@{m{tBboqw;_T5;z)6`usLBV-F5i7G)?$K>nKNJboU~4sa?Cpa{Kb>QQ-|428a`4fx?HQn$^U7a z7n|3Gxo8_=Is~jGxW5kiukDGrIQh*;!!Y%m_oLVoX^eYcM$o$-9J^QZ4%-t83!3tz zo2+sbuTwC$3{2ih# zpX~A7_m?2uP=}nJEr*qZrB0oHUCaBbu?d#qYU)fk+JY6jhed5`XSC+`HeEs{NCN3> zw$v$_hZiQkF2A~7ef-&@40T7-kSr&s6NyDFi;sI`X@2WGdRLiF8b#H%F6;4qW^3E( z=;%?ej-;-j(1T^@@#2&X*8aA)gaE}QtuYWgVqqEQ`;pO13v+nd!f$cvEd(39HK6qZhYvKM?@qPG%7xpPQq^Gt< zrX9q?`iH+CEUEhBnQ-Z19LzHDSyaI2)qeSdcb{bRDqY#WkS`t9l5NI3pxe_1>CE8e zYsyt;m=`$mdz;J0pIOt~?Po}|s*ZX7NO^qWQI8ar48^r`WZxaA9<(H8=Bl@h|LO=w z6`Nk-@3uN=*O4~j?EFTvOX5`^Mc^TbA1W&;cA6HY%)K;!l%6Sjdu=f2gX; z*ZjekqhqV)&RienRsWo9$qvY^TX6in{YaenX3Ln~Ez<5VdMNxV64y`U9OMoeX^!5Co*96a}OfDj}t`boZHSKkqo>{dzu~{edyIgQ08v zqS0{SqcjG0PA)xBU#VN+mOag3^&L$Ep04bV3?|?Y%vA{e38f z>Y$SbjbI>H7o2p!kQxM@Xm=Vk<37~XK!M3tw{KbN*5#}5hWr|#YGZlw%){S}=X2vl z)HXPV2R34rVQrX?OP#eWkQcx25{P;sX_WR2cRXuUO{ z+tD>k|9_Kk5%*H;n@U$JFjl{W54A@%cVSgqS<(OMOb)l0)3)?svha#%)>2>dIHmXQ zL)IL%R6>4b63vQ`MTPI3{WHJWYiY=!Hr)}ya!U~^RB%5 zw}nU(je z`o=xB=MM~t_jB~y?^M02^C8@Iba`!>OV``L%C|Jec3R*6`siTT3}0NyNnF$2#G%MN{$m8VFl zmb9+%%#*VCHO}Wf(O!GfoRa)ZRo?uW#0QKwH#1Y7{~6>uxlGuPruLX>E;&(Oe)ng^ z*h2oHdh7kFXS`w)l}09)0yD7rfX@+a)B%~$uLgH!7z7ubSb;K`m(EoeWH4A=P*WZHMxvAFQB~cI^U_VfV#~=ou)Hyou9zWG)sE^hQ7Tt zOu!G~Ibsd@!$=B0Rz|!^A*c$|+A1T>GY^y<8WCRBEy|F680x)m9VbOVZ{~*`E!`GG z&q$@EW6HpIHemTn#Yo>rc*Q*}BTWtmj?}AC*53QUnW%|ps(np)GRGU+!H})D9N!az z6DSj$nNCaEr(2gzrrp^dv^cwXvlo;L?>mss`ffsy%*}FHjR?|&lOyEl95rEEupe$P zn-TRsrt!uX8cmDFnFxP1-U@?I9@dv~4umI8Ru_2%IUE(G8hzjX+24Jnrk$0|GPD#N zc4&e@F7!ppB-O^oR!^_skaGESdT_TSBIXBVT5Y`cB_pGzB)dkqd-?azc4lOPx>B>r z{yXzXF`ox2TH4UQ(jaNCj?(+H98bFKk<5_Dj&&es&Ae}KBr1&!*P(NNV5`1>#vGyX@-nkw>E8FctDv~nqwqPU8N60Q_q}pg08G5@rU2J>>+l`=DT0(>(Z9Jr6S*LmiWRJ7$hFka|u*& zox9_j5ubpMTc`F!su#i3P}NcBbg-<143P}@6j%ijInm9eMwK(tmJIzf3_JL?;zyRl zE6%2rEqO^hJ57RU{UEYbzsf4G{N z1PR}|`-z^t(A0WV;jp>NOujXYCFGa?_3u83hG3}QHOu*Tt*5akp+qM~7(djt9zMOo_;<%2K=I; zW0RAC{h31O_W!}9gOHOZfNJK{<+YMtUtI@H0gTKxM$2BNrs}G?o=Sw}<>loxpFSak zghdSqh!Zlgu02JbLU69S%S(^*qg0W-k~hCwJWo;D%j&s)CvJoL%}`Ll0C6F4EJyxa zdRpQ!uw9Bui?KrdLMP|qG-fakG^abea|X?#=aNsWW-Cs*cE8ND%p|Xb93Ab5Kd7qw zJ#erX`TOUFOS2!P{rB%Z=bif!S%o)cKP4IHgfGO_MP8RAlbl~`<{!%C(3OpiiS_Mx zaaHWT2CvU>`1Qn3oresPuW$RVVwv$mWN-c^W^mDY1C!j^@M)F7M6UJH-=?4^KdVCN zano>}eNNie;_tb9=<=1^!y#fNmidGeWlmoy{NPFNd1LvQwTd*XHBobN4P~f8c}hs% z{$j{9PPg*c&6{`v#WrxO(wBiOEq!?X&XeEI5~@q}H9gE`v!Z);4+BK4S1WBurRK`R z7sTQ0?oBWw-4wVM#pu1$TRetx&}|5tyO!WK)dI*pLmfBggGolAY^nC+gFfw=5naOF zUA+&@9nP7^aB@6q*rOn`TP>cT{M#xgziGj{GEF-iCu3&LZ{{csCE>wapS&z zBhGapDSv}{y2@UHm~w!~M_!?(gV8~GMRKZ&#HyjURjcD=TpWH91ewu!%bQHB}kF=!lCkxclb1 z%iyygeRHEJ*`!2)#LS{07dn3TyBu8JHrF|ut?`Uy5R4>0&AZqFPhbG;V5Yj6G}AR| z&ajtp#hHl0h@g{Po{pVQPt$)6(M#Lmyu5Ne9Uk-!Ioi53OD>rD_m^@mEH1kqH zpL9ZRBGx!i51RIbUj6)W&u@?R<|W9-U`JKc)N}{C2pG%sIN;r$Pfz0zkc6RP*|$MO z6hHdx+T2WtkDn~;eOOckT6MIF45C{qE3=10h|Ob;Rd0Y< zRM+BRC_;PR&FE!E7vhDeBtc!BRSq{KI!&8c>nTEucp-TCqUnoi=vIH{?xf97wJM>Z zo~wl4(|*Is*zTi?uaTKUEXbOs&+e<26U~HS+#?4Vvm+GhzIWpA3iBVu{SNne^L0Gm zVa@1^5pw{}=Q7KSG0J;_f`hV39Ex&H&CcOzIG2MPEjw?+J|^(-9i6$kzdpF(- zH*bzMzBNwgT{m=o@+14UxW7MjUH0l~Q*9i^hlK6+TjRdF@7Jq`i&qmkHRd9-w8z}o z9b;r=PP&@i>d(i2da+D2id4o9vD+xfBq5ovWlvyfTb|@{usb;+ot>Rj^iy|) zMJPIDT;kn0l?;vSFZ}P*Eva2_JJ&c%g6YVkHminyu6^D`ke1Aiv+7aA6bp} zsf6N@9GODz&E(D3H&ktK6lR))d=(_)$5x~5bVh1;j3>x6YeOeHZxr4(67OC3m4`dl z5|`!GFCr6pHg~u#^dv5^^YW?e6@O~|HMuU!kizLZo@F1IFOeqk`$O6o7Z=PjI|tbe z<{yLhvlnKyi$AGz{tlGiVct3E$*biW*mQ3UU6?nVHm|1Foh*rA@waK$BZ`ZQ?@XYg zzbYhA^pX3P^pDFKT&@Opr0*ZHr`3yHCz=E?8PGsaHw@5-~h)u%29 zQgn`}DcHK^4$n7Z(lo0qZd?tK-A!+p+C(qX^Z3WSi7koEJ@r2Xu?4viB<=QU`oo$96-_yxxQ;lOMv-s zo2b1bD$kpwuUGhvw7hKmJr$RgsfU$xaRSn~XAl)}mRPCVQ7Ge-EZP$r%=wTl?hH zOv&knk4~5yltR~qYyNd`7qcUnQ)ye78a7MUQUxIYlD7{77Sn@JA(1P0^^wNOoH5kC-f1~_z%-g?-yL4 z9YD2}srRw!p5cJuMP(W__SJ6r->kql&`y92jf6omGbi=;$(P%!b7JZ9Jc$)=%Ws`_ zvqV>kN(v;q*BMp*@FW*$K%CC#y-M@&V=^{Ler33|*CK1oh^w-;fU$$YU^(qAr}~WV z$|k4-6OVj0-u3xvp5nMak-7Jzljxo7>gU7-Yhc~8=*PlKOI$eH~96gq( ze_f36bZMxS=JN35&)&jXFD*mS!G6DK>$b9PxO4oK&Eh^r= zbv@A*6CD%Hb2k2C98v0VUEPEFGd=-+=gjHEMD}1Vy-Z_;nPbJT5^Oemw~ifon)#4} zKE7kJO8qqb=Q9p*^4ZHY#rr!~j;~zX8J|hY$sv50M`fG<5%QIVH3PGAeV5Yzo}NC| zJS||JY5At{kTtSV&sgW|(=Jg_9Le?A0WL`{0do>c@P$VZD~arcu4+9=c&+_acf@n2 zsnmYu*>>Xm4V``LAZmXjx{)0MiVr^mv+d07Pa+8&@{`}mcm@n~{P`1VVmwIpQ=)OPJAqrkIz_~LX4ee zq=Qu|oQWP6zD)=^xC0)X(0A`b33vtc^z}?7J~)h4{jre=@!=)Uu4FL$nJB6_*f;P% zLu+_MY}rZ9^#`|IVv3fGh0bi|i}&Tpb}!?6L-yZqL-E#>|{9>8(vE6+Ip@ z-)r(FB=w_Qyv){nFB^#Ozsn=`xAlbw4c&1SzrsTKS!Mq+>E`V{;v&>XR^5y#k zGGR06848_+h4pM-j3$GMnpm*Th>2Lw;*|L1X9 zo1JbCmGN2CJ1~6_?+4%!m=b}7MI%qz6%=gX14b=Baf%Y_{@<0WK)5)%;bX|P?uwc4 z%sR@QU2Fc}(mh4?V6?co?qf0Plt#0h(rxWi)$aEtd?KXp7fIjprd3Pd$8A5|T5Wtxdfh+G-ux~*2QS>H6e?_2n&sfwzZ*KE|yxBfcZb+|mhE9ATzcQTTn zlbcOsVbl8jk(AL*)#57Ev-+0TfdM_b2FmoF;=Ritr-l9jUT9DOz>h)gNXwi`a#*8|;lgA2Pik^Pnf9Kb*9FR8cW6;2&X03yDGtF?e|!!LJ)QH?LQTz z!k=Eco4Zkyznn!sO4>7YuiL z{5e850;(vVEKR&N5>Y8II|i9~*l7a~uU|+xZKYDeg{N8LCZg`VI+1;G{RPjrZ!F1^ zAr~=Fkp8e>X6E;9PG3gAuXx>oVgsrrd{pasy zA2+tXx&@zbDM$5S;eO@e2A!ej$w-(GiIYTtM?uHF2IHob_g{g&AD;|3`Y(N)T=sl5 zCl_HK*Rt;ZGW9n~m4u|Y{|5L+K_#)HB5#N3iE8QUGLp|89(_B0>24tuzf6|2|AAQ|;D@9g@h#!cGS;tLK^_C6|7Kn)h9>ivo}mdb?cZug zBV*J4g8lZYUxD3jQ|!X#sXTpsga1x=IoTZt!v6>c79UKi)9g!=QS`>_bL`1yYA%O= z#EmdR){ux+47!<~%&w&-(~>e{Z7(FH z$Z2m*z&D1dm;=hv1KPXAbEBU>o+JHNk4r=-#_U2jr{un^56qnYp0C}#|J{K}Ne-{> zl}PA2&x-*M6rz-AnVy+>b8gN96r|tO7N5TYjBjgeDQ3r?Q4h+k?bws*S23QUd)jNLn8}eR=>MPq5G^ z7?>(`ps?VAp7`G9PsvQpq9z1FneW>t~xY@d4-m+TBjq z%#TO)^$ZOmEHM;bck4=r>nv^2=zn8< zf1;88nvN{7imEDzqSGf$NtRbu7^VDJIxfc&`W#fLLF*}<@x3@`EB0Vy+Dja5mvWqe z8Rg)NpVirw^HO)d>mK^gS2PR-V0?Y;CWQEmU=ZjQo*R>W@OCO{W2BZ z7hkn;T)}cL73@iEy@LKtL==h!n(v-_H4nvs&qVLg>5pZzS|KQiGpMp+xu0|{qNFiY>(Mdz}%fQQyF4o#>**i0g7Uc6L;iPUd z&5Mn0>k~IgC{?Lf<6wjw3LKfau2@_wEZIcVmh>E6UE4v%_gwHC01&#X>*@)(=72*4 z=azCgL=UK4nD2Vtu0j-7byYQ;ozDtH`Q2jW`}_7MhrZHrntCqUEbe;$@7h}P=8%;V z!Mcj}>A`;5f87-nDO3 z2Tq@->ED5!qacAxtP0$fcmPg)|NcD*t!YoE$Jp*%Z}!!EeIY|_rjR3)s`tSMER-_O zD~qE(o!;3UO`!qB&(nTKoyh`_>@$czo!UL~KmFQ%Kqr$1cjXrq&EMmh#%s(J9~|f8 zCAojjaj>(4^#pvEl*T`PK`MIqV@3SdPBas<=$3OfI$6ajPBI*M8tl>n9Jl<`511c}3vC{`E}de3%Us zmvZZHGStLG095^;K{s){vtnv$%5b|_=JIS5;3ay&+i=Sn?>z;^7cIT@iw+aeI%iaw zHGA$iMZ}~xour9*QASJGe5ZWYxi;(!392L?jHI_Zl1-mlw2i=s7Yp_?CH--G^XbluoxbJiQF417K zvP{m=OXg1ViyR7SA^(&v0bNe0zLGHzMU(GsV)OH7p{!Irb_UUT((w9JV=dTdiU|sS zj7g6)0?7a@qpr|nE1t>(-v}&n5VV;2ihL7<_!sGi=l4mOGspLYR>zn(BV#A(5GBG#?dP63C=9d zwGG-8vomrg=G+ZwfuM4_m=H{`K1D{YL%+IsiWWeAfP!F@3PAn(m8r*yil2~^XaK+@ zSSKFlh$Zhd0NmTa&=B0+Ny1Llpo@Qbd472DC)DQ8eAB^(yQ6D`gS}h~9R4Ue<*jF0 zpA-2JhsJz)K`Z3FOa^mlVWQwk=y$vQ4kTONoOzp<>rr)avY2jrMV=8;@xGP2MGwvq zr*ag@b?KnaW$lj%OI+SS%K#-lI30!@XT%A?q_hTE%7Ue@8K#M8>%>Ad(S|P|-+>=j z^f|vocA;RarL+r;nYT zoQUXdJ1(;Xg11qa$b*lUcWpS8>t&uKh@ph)R&0if8r*2Sgoz3cZVGR?b_QMwUj7to z4R}s3;oY0mapdwoFBJ$?;P+uA8~gc_OaGw+SO%f;15+EUjz2nou1o<#2e!2WR*$yY z*BzF!{C9wk1OxhH9@Hur&CDUvq$Plnj>*k-Ot;zDw`)VHWPz&JGHOCaJH*YjHx{); zD%2ro1~!q?!-nfa7WePR5-H2DNK0Ro4<;-LnAr8hEKGv2$sGMqr95Vx6@{;C_N z-DYFnpV@M(=!@2A_|^4)TdN=Qz+9LKMoD14JSV2{4UXKa0$wn*>fpt#n4R(70GJXu zry@-?3^SSuH&`>m5@9W_`_BS{cn(hY)8pgzpj}SEt=!_oN;gBoha!aM@6zQvJ8g-g z{3@G}Jgj_orFi&mN)~_k_|Z_{dUHr{;NdEVfPm&_*<0~-cb4}1epV?&L_TajLe7TMq3GycX774u->8F zG_GyFX2Q$54>hZTgPfRfkUUiWI00>YD z+d?iNMj4rOCnJ4w!m%dY+Gr==hz&BLOBS4J6sTP{@NN5K-oH@EO%$(O)f}pN26I z5U3Y7Hr~B^2fq;tQdT^CeE&n%qu?h`{2UQArS&ld&uZGjQaL~3S zfL)M7A8(stro>BMUw;S(uq0>%IWoI%baWJ4!>}E1-t2FH;BtuNmO-m{W1?g4ze>w+ zrl;p!S*}>6L$1)NeVx_C8ond698LGk!$@_z@!9s{ZJ`tj3bW>HpG|wWVTe0?X9iW- zSHHMH5Vv8A_%269#l#RKJbO%=jaa_!OiN#}MwcQ)c49S_mR9beowfbmXnVN){jl)J zZBX1_uh-fje|*eqBZc&O}2~ltSmYxD(J~UHBC*)$i~86Tv}9xC@IP>sX!K$<;OQ` zhdRL?1Y~>v$6x)+RkKv_tG5ALurX1h{*%8Ha3oGnem(}LsYyv>OiULSHjW^WhGt}a z!F%MJg2MW?>^I>xrDAX=Nl-sfw(OrBID3}3xNO*NAdi#P{WA3-7u!NxA7xj<%>C)Q21+FnUsg15r}()!tEZe$FqCTDhH!Wgorp`rmIs7~}m z8LXSo{^{=Srd8RXpoGyWfXCCuM5$4twt6VLS7TIqW7K+M-P_89>ksLQ*kyQYS$HGg z3)!@fSvfX`65iZWQo+#Ff(|n2mb%2!`a1Cn!(UG{h6}j>2oYIj+?6S?MMKF;MoR=1 z2Q_$wz~NvmT#GA~4T|g})K{MJAu4@Gf^R!K$Qre8!trYI@<-lLVg|ap4+jUr4Xreu zs)lH&nu|$s-4ozdP<-?VA}mbQO$<%c4e#gNxOr1`I)+Rgn49n}2g%F31X)v1rKEOq zl)OTT+Ubwk>7l6fM5$1yg;(3Jo1RvcHc3E_o`si9Mx^L&>^M9Zob25BZ;Nd5%N&ZU z?rUpzm^c)qCnqJ%LPj5KW#C**L0(&!pTEJu0m`TVw6A|#Nn&YfslloXr*{GE-P2bG z1QqNk;N}CoSuuf+7QEzid@FQx3Zm_A2zbPu*axSxh@mCy(h>?G`XCG75gQ4TIW)))^sXhs-Yrkh-5M`X zIk}KG)d=o~2Igu88am4LA`g}2l?`-^am*?D-&L|dq-TC%ScWXbglu}D)(;<-DcAH# zeiwF*SW7_XaJI6v$ryl)P)&k^!rW;~W)D$)G1u|lH|iIx&vGvSHU}oJtd#UOIOkbe zLkE3oeYVtTwp3}3m964KX~~AgUwKvfc)im<{rS{_ZGyjek$V>OOB$}LH1*#MSzxFr z4ECiNYU$ZnZ_Etq8OBP(YSZ$T-02}O8gGk=n$_6i-`rIOCv|rd+7f!ljR8P33m-fr z4E6M|)(!#N31F zf5FjLm5!AJDj_)?LmeGVGkYCfQ=;>&P!Ief#K+9-XU{s0^o$9rbZ8rqH9D1E4sn=D zJ>80mJ&F)>tE5=K%YK7E0BmP+0NuvNS9po{HzXoLUcOU)t352A>W@TIdm& znEj!djKaJ_)>+RFc9)Eix+W&Nx+YgIVLYhU6QdJvu+`>$1(KcgYV;gN0 znKmQy;U2QzZRh5;+yHx@K(EdI=!%kefR(?$_(Np_c{Q~NPKAR-6_pzJ@l0J!*f}%M zi@iIamw#Ajh z$e0lj5GdmosJdeI<2z&T4ArA85{@_-IFIu2@T{VbJpF-CwoTN#<^Yc`IhheBJv}!19*(`+mQsqZECc{Cl$_4JiHb8gi5`g zPMP?|KDW~H$9{C85XuB*_U5?H)5q*egOiT%2?QzS>@m67JNrqa6_sW!tc0|+m*eB* z@oQALh2%JK&aVW7-TnK7g5uVWH)E89pkuMOL@Q($v#D@fxda$CEGEaRKm7?>Hp9wZc3@NP7 zV1QE^Gos)A)+d)=mFME!mrvKOEQaI?WKJebWKYm9lDwf`tdBB6yo+$fb9wAkQP2?I z$XiyEVr2Aied=aa%ng?S9$uv7s9r~q{;RYOLZ{3eoJA(4UaQBqv#B1csVN&9D`(@F zUC~c!$8e${byLs^{67b{#^&ZOrw2&m=!}e?0ES>G>Pq;mP3TnXO_Hr;YWfQkDe^+n%$xpDYXa#ON}vI!=C(`vwmu4-Y4& z+QD+QRIQkaptNTDKZF1UC_lYmllAg~>m3860!fsNxn`|>h=HSk9}86p;d<-S2HpKLjf%60Gk5F zt1mzk&(4B`adMWIm*GqcsiP^u+ zx~u)pj9EC)i1 zTY+~8k*_dL1w0A#ha+zIcQrtLCutkbq|?Kp!e|w8aki_evls(O(C=-&KoZ!)2M?fg zi@sbZF~D_!rnB7g7=rm(IkKWcm05ln_sOg8U>R|nY0FhEf)d&lvSxwfU@KduG1Lw) zkpH1FK^*`Mw^SlDGzRBKk3d-0fE*8p90Tkwwtre5yFf_OxX=}^j)XuTz zmuU5wZ&qA={zJE;9>_-U(trcWk_m7VdD+=&I9|JruP-GKK0z|MU^)#v*}M5%`MOj9 zV3!5U&w=2O4a*A5(9!)}>O;861trj^0$nC4tsu*d8=d3h{yR>Gfz3Iv|MQ zd}=w~=*9^DBBv`v(H{BdUAWqt*q|W;ICwZ|1oel?%0wg(Gegq&D1e@hh^hMK+dvObvCxX&9Yh`VH0OgH{ z?dOq}euK0XqzydWh|YI|>j-@wJ&x#XJVlSoi&KFX8a)F8ok&C`WlYVNSm;zkJ4Q>~ z?i-avuEulxSvH7XD?pQt1WEMqrEp0Y^6g9W^TXf+zFO-^ox!A||0^T7OP2AYCrj@Y zVeR_nrskLyJndLE@`Zg&L%=9ZqyD>!I(>(*i{;LK)$aJAjsF+qT=0q79VDf7$!1Sl z;MTp^WX_E|LxPDGX2v@HIz88`jp4o4R#kn*lbw@uc`)fdLr;w_|@{4JADE}!sUmUP9?X6g(K4HhP%E1Qn}&% zdveR%00K4vXhSK#fLhXK0DV1I1z9@6SjaHnD2qyt4g&QWaF%eCfUFT!b#MJUK^s$#BPw5T0MIbtYnPjs)33QM6A}a(GK3KYIXP>c1)oJ* z3%@iKC1nnz5w*4kTU*}<48p4=z`q{#;>za&o&t0#g`hA|v|lFj@3rELEps@4vadK(dxITwHN=N$1?}L=roUO;`|X>2hQvS<{?M7_dbm%;bV=|K-tVa? zSdtv!Y=We}x_${QdAP?2=T<828sFD%eihzXj$)k99rQy(%JYgTska*r=Kmc#_F1*ps zuu;K*q97+P&%($^b!;mRiFATZSv6bWAd?9hP zhj0elPd{fPSL>c~UmTS|mX18$c3P=sJ%H9Y>0UlhNg09N3ii|BprC-mjaHX&;qQZ6 zg)a<#!`1>&=dIy?h|x0$OM}qgM}IC}g8XpB`3gm5fY5ctoQL-_1<&C~1f0VTE=Ua` zq@WefH&RskuL@h4heel#P*_9+<~!IyBE*AB5ti3$q-krXiLSzW?c=i#NQS}iYzbhm>3P$WQ$76Y%1b>t_*WaXx<|d64afXc&NV8{8r&k6N z%TjcXUAV2j{tP$u3-QtMvG$)WJgg=_zChOkaN;77PX|PN# zOb;UWKSI*mNRGSN=k(;{?X5Wl$EIpzGSUFcS*+g{pu$~OhtO~&2)lw8NVQQ2w#Am< zQ?c8>;nvFONZ5QPdSsr-Qu)e{^*=}?nc>;l8ARGl0O=1ZZdsZWaT#v~vsYs$OaG*T zPpE1t0V~krw~cA<2Xk)0CDi%x-9e>xbvPZv!T#&l6^m;?EeH#{qQX*MfNsyErvnFy zIByuc(E@I8|4V>sm!IIMoZa>Brn&e1>Pr2IkJc#M2Ur>*d4c!&=^B-CL!fCLRp=YR*Hq(td=Uf~PKvcmcR ztz0s_RGw>iYOF#r<6#1^=eOV?9D@4R_GQRiAUbgc`}-3nm4>mZ$n1l2ZxY(;*Wn^F z8MCpwK(jl_B7taa766az!?{ca=G|%`sd@6X> z04;=u?{jWEH}Mtc`#||f7D?eL*=uIyq(}Z=6&y?xwGZDRdf6H9fk2}V%LZ86Lol>G z)8&U`G*#vVC@rBn0*?$txF24e2l6ySaoPsI1Z;~3_QV6wV~sd|fW!S%v+qj+ z$AUoMWW&W70=aPn4E#glU z9lkZd(2o;@KHNNvDgYNv4_IWFnvXL_T~UBt7h+mhF^xq;YN5NU-A6KmL-!JU{)tM? z`T036F+J8U5laVz-(LKADFX`QKY~ea6&ARn&quMc12Qck%Y%JpOZ`iC_a{<(XCgh= zuvcK2gZ0xERe!~V@=>a#2*!1Q>tbf!0l+Ol2jLV*o^o4wpR{-sztJ5c;Kw8L$h%FE#DPKoDhC?hA zCnbedK$vW@@lCpvC4z^J5>L21jFJZyA!1fKTLZEk?V>t9YU(tYwQo$+shgRdL-zpy zKS{HYY=FbFzP`?C7#?y!N!|!#X8^V2!gB>L5QLi*Laa+ubMs7#f30~Y4<8@V3{(G= zVjaM8qH5g7Yf6UgV)>k*tVX{He$>;j;a$C12x@vthmv4Ic-(T%;BmtoFc5E7qPb literal 0 HcmV?d00001 diff --git a/VitalSigns/input/images/verdikjede.png b/VitalSigns/input/images/verdikjede.png new file mode 100644 index 0000000000000000000000000000000000000000..95fe6f5e4f68d7b28d89d3756c2b32376c2e207b GIT binary patch literal 55739 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 literal 0 HcmV?d00001 diff --git a/VitalSigns/input/pages/index.md b/VitalSigns/input/pages/index.md index d5b591602..a13e446cb 100644 --- a/VitalSigns/input/pages/index.md +++ b/VitalSigns/input/pages/index.md @@ -2,8 +2,12 @@ The *Norwegian national vital signs profiles* have been designed for exchange of the most important [vital signs](https://en.wikipedia.org/wiki/Vital_signs) between systems, devices, and healthcare organizations in the national Norwegian healthcare system. +![Main use case search and share information](../images/use-case.png) + The initiative for the development of the profiles came from the regional health authority for Northern Norway (Helse Nord RHF) for the use case of exchanging the most commonly needed vital signs between an electronic charting and medication system, and the core electronic healthcare record (EHR) and patient management system. Additional initial use cases included exchanging vital signs between the EHR and the radiology system (RIS/PACS), neonatal and neonatal intensive care (NICU) system, the pharmacy and medication production system, and entry and lookup through multiple specialized mobile applications for bedside use. In the subsequent development of the profiles uses cases for home monitoring of patients, patient-provided data (e.g. from smartwatches or other personal health devices), and exchange between healthcare organizations (primary care, specialists, hospitals, and care homes, etc.) have been considered. National quality and research registries have been identified as a possible future use case. +![Typical value chain for exchanging observations from one organization to another](../images/verdikjede.png) + The profiles have been developed limited by the principle that all profiles should derive from the [international vital signs profiles](http://hl7.org/fhir/vitalsigns.html) provided by HL7 International and then constrain or extend these as needed. Additionally, as Norway has adopted [SNOMED CT](https://www.snomed.org) as the standard healthcare related terminology system, the development has adopted the constraint that all ValueSets, "Magic Value", and model bindings should be expressed as SNOMED CT pre-coordinated codes. Since the EHR system in question ([DIPS Arena](https://www.dips.com/)) uses [OpenEHR](https://www.openehr.org) archetypes as its internal information model, and there are both international and Norwegian national archetypes for vital signs that are clinically validated, the [Norwegian national archetypes](https://arketyper.no/ckm/) for the relevant vital signs were chosen as the [logical model](https://fhirblog.com/2016/10/17/logical-models-in-fhir/) for the profiles. The electronic charting and medication system ([IMDsoft Metavision](https://www.imd-soft.com/)) uses a proprietary information model which will need to be mapped to the logical model expressed in the FHIR profiles, but was consulted in order to identify any impedances in the models.[^1] From 83da92b7072b702e3595c30efea48f99be056ba0 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 14:00:09 +0100 Subject: [PATCH 11/26] versjonsnummer --- VitalSigns/sushi-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/sushi-config.yaml b/VitalSigns/sushi-config.yaml index 6524e31a6..d10f617c1 100644 --- a/VitalSigns/sushi-config.yaml +++ b/VitalSigns/sushi-config.yaml @@ -9,7 +9,7 @@ FSHOnly: false applyExtensionMetadataToRoot: false id: hl7.fhir.no.domain.vitalsigns status: draft -version: 0.6.1 +version: 0.6.2 releaseLabel: ci-build copyrightYear: 2021+ jurisdiction: urn:iso:std:iso:3166#NO "Norway" From 0f03dba8bf554a1f3625a6646c3687c106dc70f5 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 14:19:01 +0100 Subject: [PATCH 12/26] bugfix figurer --- VitalSigns/input/pages/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/pages/index.md b/VitalSigns/input/pages/index.md index a13e446cb..d22761532 100644 --- a/VitalSigns/input/pages/index.md +++ b/VitalSigns/input/pages/index.md @@ -2,11 +2,11 @@ The *Norwegian national vital signs profiles* have been designed for exchange of the most important [vital signs](https://en.wikipedia.org/wiki/Vital_signs) between systems, devices, and healthcare organizations in the national Norwegian healthcare system. -![Main use case search and share information](../images/use-case.png) +![Main use case search and share information](use-case.png) The initiative for the development of the profiles came from the regional health authority for Northern Norway (Helse Nord RHF) for the use case of exchanging the most commonly needed vital signs between an electronic charting and medication system, and the core electronic healthcare record (EHR) and patient management system. Additional initial use cases included exchanging vital signs between the EHR and the radiology system (RIS/PACS), neonatal and neonatal intensive care (NICU) system, the pharmacy and medication production system, and entry and lookup through multiple specialized mobile applications for bedside use. In the subsequent development of the profiles uses cases for home monitoring of patients, patient-provided data (e.g. from smartwatches or other personal health devices), and exchange between healthcare organizations (primary care, specialists, hospitals, and care homes, etc.) have been considered. National quality and research registries have been identified as a possible future use case. -![Typical value chain for exchanging observations from one organization to another](../images/verdikjede.png) +![Typical value chain for exchanging observations from one organization to another](verdikjede.png) The profiles have been developed limited by the principle that all profiles should derive from the [international vital signs profiles](http://hl7.org/fhir/vitalsigns.html) provided by HL7 International and then constrain or extend these as needed. Additionally, as Norway has adopted [SNOMED CT](https://www.snomed.org) as the standard healthcare related terminology system, the development has adopted the constraint that all ValueSets, "Magic Value", and model bindings should be expressed as SNOMED CT pre-coordinated codes. From 0a9279ef243985ce315215350126bd1ea1e4a39a Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 14:38:44 +0100 Subject: [PATCH 13/26] bugfix figur --- VitalSigns/input/pages/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/pages/index.md b/VitalSigns/input/pages/index.md index d22761532..eb39a3683 100644 --- a/VitalSigns/input/pages/index.md +++ b/VitalSigns/input/pages/index.md @@ -2,11 +2,11 @@ The *Norwegian national vital signs profiles* have been designed for exchange of the most important [vital signs](https://en.wikipedia.org/wiki/Vital_signs) between systems, devices, and healthcare organizations in the national Norwegian healthcare system. -![Main use case search and share information](use-case.png) +{% include main-use-case.svg %} The initiative for the development of the profiles came from the regional health authority for Northern Norway (Helse Nord RHF) for the use case of exchanging the most commonly needed vital signs between an electronic charting and medication system, and the core electronic healthcare record (EHR) and patient management system. Additional initial use cases included exchanging vital signs between the EHR and the radiology system (RIS/PACS), neonatal and neonatal intensive care (NICU) system, the pharmacy and medication production system, and entry and lookup through multiple specialized mobile applications for bedside use. In the subsequent development of the profiles uses cases for home monitoring of patients, patient-provided data (e.g. from smartwatches or other personal health devices), and exchange between healthcare organizations (primary care, specialists, hospitals, and care homes, etc.) have been considered. National quality and research registries have been identified as a possible future use case. -![Typical value chain for exchanging observations from one organization to another](verdikjede.png) +{% include verdikjede-vitalsigns.svg %} The profiles have been developed limited by the principle that all profiles should derive from the [international vital signs profiles](http://hl7.org/fhir/vitalsigns.html) provided by HL7 International and then constrain or extend these as needed. Additionally, as Norway has adopted [SNOMED CT](https://www.snomed.org) as the standard healthcare related terminology system, the development has adopted the constraint that all ValueSets, "Magic Value", and model bindings should be expressed as SNOMED CT pre-coordinated codes. From 037d2179d0fe7bb84912e4c0163231cda4435ef9 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 14:48:58 +0100 Subject: [PATCH 14/26] plantuml --- .../images-source/{main-use-case.puml => main-use-case.plantuml} | 0 ...{verdikjede-vitalsigns.puml => verdikjede-vitalsigns.plantuml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename VitalSigns/input/images-source/{main-use-case.puml => main-use-case.plantuml} (100%) rename VitalSigns/input/images-source/{verdikjede-vitalsigns.puml => verdikjede-vitalsigns.plantuml} (100%) diff --git a/VitalSigns/input/images-source/main-use-case.puml b/VitalSigns/input/images-source/main-use-case.plantuml similarity index 100% rename from VitalSigns/input/images-source/main-use-case.puml rename to VitalSigns/input/images-source/main-use-case.plantuml diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.puml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml similarity index 100% rename from VitalSigns/input/images-source/verdikjede-vitalsigns.puml rename to VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml From 941fd35c4d144983e003e0287f9979170aef274f Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 14:56:07 +0100 Subject: [PATCH 15/26] plantuml bugfix --- VitalSigns/input/images-source/main-use-case.plantuml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/VitalSigns/input/images-source/main-use-case.plantuml b/VitalSigns/input/images-source/main-use-case.plantuml index a8f62b6ac..e8d57645a 100644 --- a/VitalSigns/input/images-source/main-use-case.plantuml +++ b/VitalSigns/input/images-source/main-use-case.plantuml @@ -8,18 +8,18 @@ note "Source of information outside\nthe clinicians organization" as source "Clinician" as kliniker 'rectangle "test" as rect { -"search for information" as (søke) #lightblue +"search for information" as (soke) #lightblue "indexing" as (indeksere) "read information" as (lese) #lightblue "share information" as (dele) #lightblue -(søke) -down[hidden]- (lese) +(soke) -down[hidden]- (lese) (indeksere) -down[hidden]- (dele) "External source" as applikasjon applikasjon -left-> indeksere applikasjon -left-> dele dele -left- lese -indeksere -left- søke +indeksere -left- soke source -down- applikasjon '} 'actor "Pasient" as pasient @@ -29,7 +29,7 @@ source -down- applikasjon 'kliniker -[hidden]right- api 'api -[hidden]right- pasient -kliniker -up-> søke +kliniker -up-> soke 'søke <-down- pasient kliniker -right-> (lese) From 3720ef7982d5b3609b98fd70ad822cc51039c81f Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 15:00:22 +0100 Subject: [PATCH 16/26] hidden bug? --- VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml index 8c2b0e657..9dfbd8a8f 100644 --- a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml @@ -34,7 +34,7 @@ gw <- repo repo <- app1 'repo <-- app2 repo -down-> pmd -pmd -left[hidden]- receiver +pmd -left- receiver2 app1 -> pract1 app2 -> pract2 repo -down-> app2 From cf269eca819d7f06d987e3b44766c8ad6cef148c Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 17:47:50 +0100 Subject: [PATCH 17/26] plantuml bugfix --- VitalSigns/input/images-source/main-use-case.plantuml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/images-source/main-use-case.plantuml b/VitalSigns/input/images-source/main-use-case.plantuml index e8d57645a..5d92210f5 100644 --- a/VitalSigns/input/images-source/main-use-case.plantuml +++ b/VitalSigns/input/images-source/main-use-case.plantuml @@ -13,8 +13,8 @@ note "Source of information outside\nthe clinicians organization" as source "read information" as (lese) #lightblue "share information" as (dele) #lightblue -(soke) -down[hidden]- (lese) -(indeksere) -down[hidden]- (dele) +'(soke) -down[hidden]- (lese) +'(indeksere) -down[hidden]- (dele) "External source" as applikasjon applikasjon -left-> indeksere applikasjon -left-> dele From 5c1f5259102d4eac4761b510bf6b6e785a583bfc Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 18:08:20 +0100 Subject: [PATCH 18/26] bugfix plantuml rendering --- VitalSigns/input/pages/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/pages/index.md b/VitalSigns/input/pages/index.md index eb39a3683..ab5ab3bf3 100644 --- a/VitalSigns/input/pages/index.md +++ b/VitalSigns/input/pages/index.md @@ -2,11 +2,11 @@ The *Norwegian national vital signs profiles* have been designed for exchange of the most important [vital signs](https://en.wikipedia.org/wiki/Vital_signs) between systems, devices, and healthcare organizations in the national Norwegian healthcare system. -{% include main-use-case.svg %} +
{% include main-use-case.svg %}
The initiative for the development of the profiles came from the regional health authority for Northern Norway (Helse Nord RHF) for the use case of exchanging the most commonly needed vital signs between an electronic charting and medication system, and the core electronic healthcare record (EHR) and patient management system. Additional initial use cases included exchanging vital signs between the EHR and the radiology system (RIS/PACS), neonatal and neonatal intensive care (NICU) system, the pharmacy and medication production system, and entry and lookup through multiple specialized mobile applications for bedside use. In the subsequent development of the profiles uses cases for home monitoring of patients, patient-provided data (e.g. from smartwatches or other personal health devices), and exchange between healthcare organizations (primary care, specialists, hospitals, and care homes, etc.) have been considered. National quality and research registries have been identified as a possible future use case. -{% include verdikjede-vitalsigns.svg %} +
{% include verdikjede-vitalsigns.svg %}
The profiles have been developed limited by the principle that all profiles should derive from the [international vital signs profiles](http://hl7.org/fhir/vitalsigns.html) provided by HL7 International and then constrain or extend these as needed. Additionally, as Norway has adopted [SNOMED CT](https://www.snomed.org) as the standard healthcare related terminology system, the development has adopted the constraint that all ValueSets, "Magic Value", and model bindings should be expressed as SNOMED CT pre-coordinated codes. From b13c9411e06ae08b964351e378f308dbeac715f7 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 19:54:42 +0100 Subject: [PATCH 19/26] verdikjede puml tweaks --- .../input/images-source/verdikjede-vitalsigns.plantuml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml index 9dfbd8a8f..11819b5af 100644 --- a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml @@ -32,12 +32,13 @@ obs <-[dotted] device device <- gw gw <- repo repo <- app1 -'repo <-- app2 +'app1 -down[hidden]- app2 repo -down-> pmd -pmd -left- receiver2 +pmd -left-> app3 +'pmd -right-> app2 app1 -> pract1 app2 -> pract2 -repo -down-> app2 -app3 <-right- pmd +repo --> app2 +'app3 <-right- pmd @enduml \ No newline at end of file From 259daa9f25e282937eee78eed92cd9b5872a0a78 Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 19:56:51 +0100 Subject: [PATCH 20/26] puml name --- VitalSigns/input/images-source/main-use-case.plantuml | 2 +- VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/images-source/main-use-case.plantuml b/VitalSigns/input/images-source/main-use-case.plantuml index 5d92210f5..12e638055 100644 --- a/VitalSigns/input/images-source/main-use-case.plantuml +++ b/VitalSigns/input/images-source/main-use-case.plantuml @@ -1,4 +1,4 @@ -@startuml +@startuml use-case-vitalsigns 'note "Vitale parametere" as app 'note "Presentert av applikasjon" as presentasjon diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml index 11819b5af..b1ad69f79 100644 --- a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml @@ -1,4 +1,4 @@ -@startuml +@startuml Valuechain-vitalsigns !include skinparam linetype ortho From bee560b98d8039449455eaa7c1056eb33f39bf3f Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 20:10:06 +0100 Subject: [PATCH 21/26] bugfix? --- VitalSigns/input/images-source/main-use-case.plantuml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/input/images-source/main-use-case.plantuml b/VitalSigns/input/images-source/main-use-case.plantuml index 12e638055..5d92210f5 100644 --- a/VitalSigns/input/images-source/main-use-case.plantuml +++ b/VitalSigns/input/images-source/main-use-case.plantuml @@ -1,4 +1,4 @@ -@startuml use-case-vitalsigns +@startuml 'note "Vitale parametere" as app 'note "Presentert av applikasjon" as presentasjon From 45768c240b69a84569ad64a2848ceef1fd951ace Mon Sep 17 00:00:00 2001 From: thomiz Date: Thu, 1 Feb 2024 20:32:17 +0100 Subject: [PATCH 22/26] bugfix plantuml --- VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml index b1ad69f79..11819b5af 100644 --- a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml @@ -1,4 +1,4 @@ -@startuml Valuechain-vitalsigns +@startuml !include skinparam linetype ortho From 3d41299863f58e4a2bbbac2350c184ece5416fd1 Mon Sep 17 00:00:00 2001 From: thomiz Date: Fri, 2 Feb 2024 10:34:24 +0100 Subject: [PATCH 23/26] Pracitioner in use-case --- VitalSigns/input/images-source/main-use-case.plantuml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/images-source/main-use-case.plantuml b/VitalSigns/input/images-source/main-use-case.plantuml index 5d92210f5..b193f0f67 100644 --- a/VitalSigns/input/images-source/main-use-case.plantuml +++ b/VitalSigns/input/images-source/main-use-case.plantuml @@ -3,9 +3,9 @@ 'note "Vitale parametere" as app 'note "Presentert av applikasjon" as presentasjon 'note "Assistanse for dokumentasjon\nog koding fra applikasjon" as dokumentasjon -note "Source of information outside\nthe clinicians organization" as source +note "Source of information outside\nthe practitioners organization" as source -"Clinician" as kliniker +"Practitioner" as kliniker 'rectangle "test" as rect { "search for information" as (soke) #lightblue From 00aea2462aba607d63bd011d133936927ca923c4 Mon Sep 17 00:00:00 2001 From: thomiz Date: Mon, 5 Feb 2024 09:22:56 +0100 Subject: [PATCH 24/26] =?UTF-8?q?Mindre=20bugfix=20p=C3=A5=20plantuml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml index 11819b5af..792e9ea56 100644 --- a/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml +++ b/VitalSigns/input/images-source/verdikjede-vitalsigns.plantuml @@ -31,9 +31,9 @@ patient - obs obs <-[dotted] device device <- gw gw <- repo -repo <- app1 +repo -> app1 'app1 -down[hidden]- app2 -repo -down-> pmd +repo <-down- pmd pmd -left-> app3 'pmd -right-> app2 app1 -> pract1 From eb989cad81397fc3f41572e38f3519b17967555f Mon Sep 17 00:00:00 2001 From: Lars-Andreas Nystad Date: Mon, 5 Feb 2024 10:08:46 +0000 Subject: [PATCH 25/26] Changed Cardinality on snomed codes, Fixed a example and renamed valueset on heartRate --- .../input/fsh/instances/no-body-temperature-create.fsh | 1 - .../NoDomainVitalSignsObservationBloodpressure.fsh | 10 ++++------ .../NoDomainVitalSignsObservationBodyHeight.fsh | 2 +- .../profiles/NoDomainVitalSignsObservationBodyTemp.fsh | 2 +- .../NoDomainVitalSignsObservationBodyWeight.fsh | 2 +- .../NoDomainVitalSignsObservationHeartRate.fsh | 10 +++++----- .../NoDomainVitalSignsObservationOxygenSaturation.fsh | 10 +++++----- .../fsh/profiles/NoDomainVitalSignsObservationPuls.fsh | 2 +- .../NoDomainVitalSignsObservationRespirationRate.fsh | 2 +- .../NoDomainVitalSignHeartRateMeasurementMethod.fsh | 10 ++++------ 10 files changed, 23 insertions(+), 28 deletions(-) diff --git a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh index 50e8fa228..8c5c8d38d 100644 --- a/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh +++ b/VitalSigns/input/fsh/instances/no-body-temperature-create.fsh @@ -13,7 +13,6 @@ Usage: #example * extension[daysSinceMenstruationStart].url = "http://hl7.no/fhir/StructureDefinition/NoDomainVitalSignsObservationDaysSinceMenstruationStart" * extension[daysSinceMenstruationStart].valuePositiveInt = 12 * status = #final - * code = $loinc#8310-5 * code.text = "Body temperature" * subject.identifier.system = "urn:oid:2.16.578.1.12.4.1.4.1" diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh index 0b285577d..4e5cd0707 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBloodpressure.fsh @@ -54,10 +54,8 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * note.author[x] ..0 * note.time ..0 * bodySite from NoDomainVitalSignsObservationBloodpressureBodySite (required) -//* bodySite from http://und-sandbox.norwayeast.cloudapp.azure.com:8080/fhir/ValueSet/44ebee90-2e04-42bd-a990-584fd954744f (required) * bodySite ^short = "Simple body site where blood pressure was measured." * bodySite ^comment = "Only used if not implicit in code found in Observation.code. In many systems, this may be represented as a related observation instead of an inline component." -//* bodySite.coding from http://und-sandbox.norwayeast.cloudapp.azure.com:8080/fhir/ValueSet/44ebee90-2e04-42bd-a990-584fd954744f (required) * bodySite.coding from NoDomainVitalSignsObservationBloodpressureBodySite (required) * method ^short = "Method of measurement of blood pressure." * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see Notes below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." @@ -68,14 +66,14 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur -* component[SystolicBP].code.coding contains SystolicSnomed 1..1 +* component[SystolicBP].code.coding contains SystolicSnomed 0..1 * component[SystolicBP].code.coding[SystolicSnomed].code 1..1 * component[SystolicBP].code.coding[SystolicSnomed].code = #4471000202106 (exactly) * component[SystolicBP].code.coding[SystolicSnomed].system 1..1 * component[SystolicBP].code.coding[SystolicSnomed].system = $sct (exactly) -* component[DiastolicBP].code.coding contains DiastolicBPSnomed 1..1 +* component[DiastolicBP].code.coding contains DiastolicBPSnomed 0..1 * component[DiastolicBP].code.coding[DiastolicBPSnomed].code 1..1 * component[DiastolicBP].code.coding[DiastolicBPSnomed].code = #4481000202108 (exactly) * component[DiastolicBP].code.coding[DiastolicBPSnomed].system 1..1 @@ -97,7 +95,7 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * component[MeanArterialPressure].code.coding ^slicing.rules = #open * component[MeanArterialPressure].code.coding ^short = "Mean Arterial Pressure" * component[MeanArterialPressure].code.coding ^definition = "Mean Arterial Pressure" -* component[MeanArterialPressure].code.coding contains MAPCode 1..1 and MAPSnomedCode 1..1 +* component[MeanArterialPressure].code.coding contains MAPCode 1..1 and MAPSnomedCode 0..1 * component[MeanArterialPressure].code.coding[MAPCode] ^short = "Mean Arterial Pressure loinc code" * component[MeanArterialPressure].code.coding[MAPCode] ^definition = "Mean Arterial Pressure loinc code." * component[MeanArterialPressure].code.coding[MAPCode].system 1..1 @@ -132,7 +130,7 @@ Description: """Base profile for Norwegian Vital Signs Observation Blood pressur * component[PulsePressure].code.coding ^slicing.discriminator.type = #value * component[PulsePressure].code.coding ^slicing.discriminator.path = "system" * component[PulsePressure].code.coding ^slicing.rules = #open -* component[PulsePressure].code.coding contains SAPSnomedCode 0..1 +* component[PulsePressure].code.coding contains SAPSnomedCode 1..1 * component[PulsePressure].code.coding[SAPSnomedCode].id ..0 * component[PulsePressure].code.coding[SAPSnomedCode].system 1.. * component[PulsePressure].code.coding[SAPSnomedCode].system = "http://snomed.info/sct" (exactly) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh index 1b359005d..eb5859952 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyHeight.fsh @@ -33,7 +33,7 @@ To be used for recording the measured height or body length of an individual at * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see Notes below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." * component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." -* code.coding contains BodyHeightSnomedCode 1..1 +* code.coding contains BodyHeightSnomedCode 0..1 * code.coding[BodyHeightSnomedCode] ^definition = "body Height Snomed Code" * code.coding[BodyHeightSnomedCode] ^short = "body Height Snomed Code" * code.coding[BodyHeightSnomedCode].system 1..1 diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh index 469f15e62..af1b5320f 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyTemp.fsh @@ -46,7 +46,7 @@ Description: "Base profile for Norwegian Vital Signs Observation Body Temperatur * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases. For a discussion on the ways Observations can assembled in groups together, see [Notes](observation.html#obsgrouping) below. Note that a system may calculate results from QuestionnaireResponse into a final score and represent the score as an Observation." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." * component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." -* code.coding contains BodyTempSnomedCode 1..1 +* code.coding contains BodyTempSnomedCode 0..1 * code.coding[BodyTempSnomedCode] ^definition = "body Height Snomed Code" * code.coding[BodyTempSnomedCode] ^short = "body Height Snomed Code" * code.coding[BodyTempSnomedCode].system 1..1 diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh index 93a557c2a..34c2f0b23 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationBodyWeight.fsh @@ -22,7 +22,7 @@ Description: "Base profile for Norwegian Vital Signs Observation Body Weight inf * code.coding[BodyWeightCode].version ..0 * code.coding[BodyWeightCode].userSelected ..0 * code.text ..0 -* code.coding contains BodyWeightSnomedCode 1..1 +* code.coding contains BodyWeightSnomedCode 0..1 * code.coding[BodyWeightSnomedCode].code = #27113001 (exactly) * code.coding[BodyWeightSnomedCode].system = $sct (exactly) * subject only Reference(Patient or $no-basis-Patient) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh index d2396da30..731795267 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationHeartRate.fsh @@ -50,10 +50,10 @@ Use to record the presence or absence of a heart beat.""" * bodySite.coding from NoDomainVitalSignsObservationHeartRateBodySite (extensible) * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." -* code.coding contains HearRateSNOMEDCode 1..1 -* code.coding[HearRateSNOMEDCode].system 1.. -* code.coding[HearRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) -* code.coding[HearRateSNOMEDCode].code 1.. -* code.coding[HearRateSNOMEDCode].code = #364075005 (exactly) +* code.coding contains HeartRateSNOMEDCode 0..1 +* code.coding[HeartRateSNOMEDCode].system 1.. +* code.coding[HeartRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[HeartRateSNOMEDCode].code 1.. +* code.coding[HeartRateSNOMEDCode].code = #364075005 (exactly) * method from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) * method.coding from NoDomainVitalSignsObservationHeartRateMeasurementMethod (extensible) \ No newline at end of file diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh index a39aed305..2277f7eb6 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationOxygenSaturation.fsh @@ -37,11 +37,11 @@ Use to record blood oxygen and related measurements, measured by pulse oximetry * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation. For a discussion on the ways Observations can assembled in groups together, see Notes below." * component ^comment = "For a discussion on the ways Observations can be assembled in groups together see Notes below." * code.coding 1.. -* code.coding contains ResRateSNOMEDCode 1..1 -* code.coding[ResRateSNOMEDCode].system 1.. -* code.coding[ResRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) -* code.coding[ResRateSNOMEDCode].code 1.. -* code.coding[ResRateSNOMEDCode].code = #431314004 (exactly) +* code.coding contains OxygenSatSNOMEDCode 0..1 +* code.coding[OxygenSatSNOMEDCode].system 1.. +* code.coding[OxygenSatSNOMEDCode].system = "http://snomed.info/sct" (exactly) +* code.coding[OxygenSatSNOMEDCode].code 1.. +* code.coding[OxygenSatSNOMEDCode].code = #431314004 (exactly) diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh index fbcce92a0..787cfa35f 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationPuls.fsh @@ -49,7 +49,7 @@ Description: """Base profile for Norwegian Vital Signs Observation Pulse informa * bodySite.coding from NoDomainVitalSignsObservationPulseBodySite (extensible) * hasMember ^comment = "When using this element, an observation will typically have either a value or a set of related resources, although both may be present in some cases." * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." -* code.coding contains PulseSNOMEDCode 1..1 +* code.coding contains PulseSNOMEDCode 0..1 * code.coding[PulseSNOMEDCode].system 1.. * code.coding[PulseSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[PulseSNOMEDCode].code 1.. diff --git a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh index 75c26d49c..f85901ab7 100644 --- a/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh +++ b/VitalSigns/input/fsh/profiles/NoDomainVitalSignsObservationRespirationRate.fsh @@ -46,7 +46,7 @@ Use to record the observed and measured characteristics of spontaneous breathing * derivedFrom ^comment = "All the reference choices that are listed in this element can represent clinical observations and other measurements that may be the source for a derived value. The most common reference will be another Observation." * component.value[x] ^comment = "Used when observation has a set of component observations. An observation may have both a value (e.g. an Apgar score) and component observations (the observations from which the Apgar score was derived). If a value is present, the datatype for this element should be determined by Observation.code. A CodeableConcept with just a text would be used instead of a string if the field was usually coded, or if the type associated with the Observation.code defines a coded value." * code.coding 1.. -* code.coding contains ResRateSNOMEDCode 1..1 +* code.coding contains ResRateSNOMEDCode 0..1 * code.coding[ResRateSNOMEDCode].system 1.. * code.coding[ResRateSNOMEDCode].system = "http://snomed.info/sct" (exactly) * code.coding[ResRateSNOMEDCode].code 1.. diff --git a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh index 87f9612ed..a104ccf7b 100644 --- a/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh +++ b/VitalSigns/input/fsh/valuesets/NoDomainVitalSignHeartRateMeasurementMethod.fsh @@ -2,21 +2,19 @@ ValueSet : NoDomainVitalSignsObservationHeartRateMeasurementMethod Id: NoDomainVitalSignsObservationHeartRateMeasurementMethod Title: "NoDomainVitalSignsObservationHeartRateMeasurementMethod" Description: "Codes representing measurement method for HeartRate" -* ^meta.lastUpdated = "2024-01-18T00:00:00+00:00" +* ^meta.lastUpdated = "2021-03-17T00:00:00+00:00" * ^meta.profile = "http://hl7.org/fhir/StructureDefinition/shareablevalueset" * ^extension[0].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg" -* ^extension[=].valueCode = #oo +* ^extension[=].valueCode = #fhir * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status" * ^extension[=].valueCode = #draft * ^extension[+].url = "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm" * ^extension[=].valueInteger = 1 * ^url = "http://hl7.no/fhir/ValueSet/NoDomainVitalSignsObservationHeartRateMeasurementMethod" -* ^version = "0.5.0" +* ^version = "0.1.0" * ^status = #draft * ^experimental = false -* ^date = "2024-01-18T00:00:00+00:00" +* ^date = "2021-03-17T00:00:00+00:00" * ^publisher = "FHIR Project team" -* ^contact.telecom.system = #url -* ^contact.telecom.value = "http://hl7.org/fhir" * SNOMED_CT#37931006 "Auskultasjon" * SNOMED_CT#113011001 "Palpasjon" \ No newline at end of file From bd2029981ccd7627aa0c9c519788e334c47fff31 Mon Sep 17 00:00:00 2001 From: thomiz Date: Mon, 5 Feb 2024 12:48:47 +0100 Subject: [PATCH 26/26] Ny versjon 063 QA build --- VitalSigns/sushi-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VitalSigns/sushi-config.yaml b/VitalSigns/sushi-config.yaml index d10f617c1..e345b3893 100644 --- a/VitalSigns/sushi-config.yaml +++ b/VitalSigns/sushi-config.yaml @@ -9,8 +9,8 @@ FSHOnly: false applyExtensionMetadataToRoot: false id: hl7.fhir.no.domain.vitalsigns status: draft -version: 0.6.2 -releaseLabel: ci-build +version: 0.6.3 +releaseLabel: qa-build copyrightYear: 2021+ jurisdiction: urn:iso:std:iso:3166#NO "Norway" dependencies: