From 21c78dd85d4da109327efb312500e3fc323ae0ba Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 20 Aug 2025 13:43:31 +0200 Subject: [PATCH 01/79] Added dependency to IHEM HD --- sushi-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/sushi-config.yaml b/sushi-config.yaml index 852e7db..079bf75 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -28,6 +28,7 @@ dependencies: medcom.fhir.dk.xdsmetadata: 1.0.1 medcom.fhir.dk.core: 2.4.0 hl7.fhir.dk.core: 3.2.0 + ihe.iti.mhd: 4.2.2 # # # The pages property corresponds to IG.definition.page. SUSHI can From 4037d9c628327ff25ee841a4a60be234232fa81c Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 20 Aug 2025 14:08:52 +0200 Subject: [PATCH 02/79] Added DK-core DocumentReference + MHD MinialDocumentReference --- input/fsh/MedComBasicDocumentReference.fsh | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 input/fsh/MedComBasicDocumentReference.fsh diff --git a/input/fsh/MedComBasicDocumentReference.fsh b/input/fsh/MedComBasicDocumentReference.fsh new file mode 100644 index 0000000..dceab02 --- /dev/null +++ b/input/fsh/MedComBasicDocumentReference.fsh @@ -0,0 +1,65 @@ +Profile: DkCoreDocumentReference +Parent: MinimalDocumentReference +Id: dk-core-documentreference +Title: "Danish Core DocumentReference Profile" +* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 +* context.facilityType from SorOrganizationType (extensible) +* context.practiceSetting from SorPracticeSettingCode (extensible) +* author only Reference(DkCorePatient or DkCorePractitioner or DkCorePractitionerRole or DkCoreRelatedPerson or DkCoreOrganization or Device) + +* authenticator only Reference(DkCorePractitioner) +* subject only Reference(DkCorePatient) + +// equivalent to MHD Minimal DocumentReference +Profile: MinimalDocumentReference +Parent: DocumentReference +Id: IHE.MHD.Minimal.DocumentReference +Title: "MHD DocumentReference Minimal" +Description: "A profile on the DocumentReference resource for MHD with minimal metadata constraints. +- MHD is based on the [IHE Document Sharing](https://profiles.ihe.net/ITI/HIE-Whitepaper/index.html) model, +- the [3:4.1 Abstract Metadata Model](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.1.html#4.1), and +- the use defined here is FHIR DocumentReference implementation of the +- ebRIM implementation at [3:4.2.3.2 Document Entry](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.2.html#4.2.3.2). +- with use-cases and constraints found in [3:4.3 Additional Document Sharing Requirements](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.3.html#4.3)" +* modifierExtension 0..0 +* masterIdentifier only UniqueIdIdentifier +* masterIdentifier 1..1 +* identifier 0..* MS +* identifier ^slicing.discriminator.type = #value +* identifier ^slicing.discriminator.path = "use" +* identifier ^slicing.rules = #open +* identifier contains entryUUID 0..* +* identifier[entryUUID] only EntryUUIDIdentifier +* status 1..1 +* status from DocumentReferenceStats (required) +* docStatus 0..0 +* type 0..1 MS +* category 0..1 MS +* subject 0..1 MS +* subject only Reference(Patient) +* date 0..1 MS +* author 0..* MS +* authenticator 0..1 +//* custodian 0..0 +* description 0..1 +* securityLabel 0..* MS +* content 1..1 +* content ^definition = "The document and format referenced." +* content.attachment.contentType 1..1 +* content.attachment.language 0..1 MS +* content.attachment.data 0..0 +* content.attachment.url 1..1 +* content.attachment.size 0..1 +* content.attachment.hash 0..1 +* content.attachment.title 0..1 +* content.attachment.creation 0..1 MS +* content.format 0..1 MS +* content.format from http://ihe.net/fhir/ihe.formatcode.fhir/ValueSet/formatcode (preferred) +//* context.encounter 0..0 +* context.event 0..* +* context.period 0..1 MS +* context.facilityType 0..1 MS +* context.practiceSetting 0..1 MS +* context.sourcePatientInfo 0..1 MS +* context.related 0..* +* relatesTo 0..* MS \ No newline at end of file From 18399419f2fb9e4dc46fe51fb66e22a40ca29106 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 21 Aug 2025 07:42:46 +0200 Subject: [PATCH 03/79] Added Basic DocumentReference --- input/fsh/MedComBasicDocumentReference.fsh | 62 +----------- input/fsh/MedComDocumentReference.fsh | 2 +- input/fsh/MedComDocumentReferenceOLD.fsh | 112 +++++++++++++++++++++ sushi-config.yaml | 1 + 4 files changed, 119 insertions(+), 58 deletions(-) create mode 100644 input/fsh/MedComDocumentReferenceOLD.fsh diff --git a/input/fsh/MedComBasicDocumentReference.fsh b/input/fsh/MedComBasicDocumentReference.fsh index dceab02..8997242 100644 --- a/input/fsh/MedComBasicDocumentReference.fsh +++ b/input/fsh/MedComBasicDocumentReference.fsh @@ -1,65 +1,13 @@ -Profile: DkCoreDocumentReference +Profile: MedComBasicDocumentReference Parent: MinimalDocumentReference -Id: dk-core-documentreference +Id: medcom-basic-documentreference Title: "Danish Core DocumentReference Profile" -* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 +//DKCore content +* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 //Bruges til at angive en version af det dokument, som DocumentReference peger på. Hvis der findes flere versioner af samme dokument, kan man vha. denne extension skelne dem fra hinanden. * context.facilityType from SorOrganizationType (extensible) * context.practiceSetting from SorPracticeSettingCode (extensible) * author only Reference(DkCorePatient or DkCorePractitioner or DkCorePractitionerRole or DkCoreRelatedPerson or DkCoreOrganization or Device) * authenticator only Reference(DkCorePractitioner) * subject only Reference(DkCorePatient) - -// equivalent to MHD Minimal DocumentReference -Profile: MinimalDocumentReference -Parent: DocumentReference -Id: IHE.MHD.Minimal.DocumentReference -Title: "MHD DocumentReference Minimal" -Description: "A profile on the DocumentReference resource for MHD with minimal metadata constraints. -- MHD is based on the [IHE Document Sharing](https://profiles.ihe.net/ITI/HIE-Whitepaper/index.html) model, -- the [3:4.1 Abstract Metadata Model](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.1.html#4.1), and -- the use defined here is FHIR DocumentReference implementation of the -- ebRIM implementation at [3:4.2.3.2 Document Entry](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.2.html#4.2.3.2). -- with use-cases and constraints found in [3:4.3 Additional Document Sharing Requirements](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.3.html#4.3)" -* modifierExtension 0..0 -* masterIdentifier only UniqueIdIdentifier -* masterIdentifier 1..1 -* identifier 0..* MS -* identifier ^slicing.discriminator.type = #value -* identifier ^slicing.discriminator.path = "use" -* identifier ^slicing.rules = #open -* identifier contains entryUUID 0..* -* identifier[entryUUID] only EntryUUIDIdentifier -* status 1..1 -* status from DocumentReferenceStats (required) -* docStatus 0..0 -* type 0..1 MS -* category 0..1 MS -* subject 0..1 MS -* subject only Reference(Patient) -* date 0..1 MS -* author 0..* MS -* authenticator 0..1 -//* custodian 0..0 -* description 0..1 -* securityLabel 0..* MS -* content 1..1 -* content ^definition = "The document and format referenced." -* content.attachment.contentType 1..1 -* content.attachment.language 0..1 MS -* content.attachment.data 0..0 -* content.attachment.url 1..1 -* content.attachment.size 0..1 -* content.attachment.hash 0..1 -* content.attachment.title 0..1 -* content.attachment.creation 0..1 MS -* content.format 0..1 MS -* content.format from http://ihe.net/fhir/ihe.formatcode.fhir/ValueSet/formatcode (preferred) -//* context.encounter 0..0 -* context.event 0..* -* context.period 0..1 MS -* context.facilityType 0..1 MS -* context.practiceSetting 0..1 MS -* context.sourcePatientInfo 0..1 MS -* context.related 0..* -* relatesTo 0..* MS \ No newline at end of file +//MedCom content diff --git a/input/fsh/MedComDocumentReference.fsh b/input/fsh/MedComDocumentReference.fsh index 766496f..a69ddcb 100644 --- a/input/fsh/MedComDocumentReference.fsh +++ b/input/fsh/MedComDocumentReference.fsh @@ -1,5 +1,5 @@ Profile: MedComDocumentReference -Parent: DocumentReference +Parent: MedComBasicDocumentReference Id: medcom-documentreference Description: "A profile stating the rules, when exchanging a FHIR document." * masterIdentifier 1..1 MS diff --git a/input/fsh/MedComDocumentReferenceOLD.fsh b/input/fsh/MedComDocumentReferenceOLD.fsh new file mode 100644 index 0000000..7810106 --- /dev/null +++ b/input/fsh/MedComDocumentReferenceOLD.fsh @@ -0,0 +1,112 @@ +Profile: MedComDocumentReferenceOLD +Parent: DocumentReference +Id: medcom-documentreference-OLD +Description: "A profile stating the rules, when exchanging a FHIR document." +* masterIdentifier 1..1 MS +* masterIdentifier.value 1..1 MS +* masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier ^short = "[DocumentEntry.entryUUID] Identifier for the document" +* identifier obeys uuidOLD +* status MS +* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" +// TypeCode +* type 1.. MS +* type ^short = "[DocumentEntry.typeCode] Kind of document" +* type.coding.system 1.. MS +* type.coding.code 1.. MS +* authenticator 0..1 MS +* authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" +* authenticator only Reference(MedComDocumentPractitioner) +* authenticator ^type.aggregation = #contained +// ClassCode +* category 1..1 MS +* category from $ClassCode (extensible) +* category.coding.code 1.. MS +* category.coding.system 1.. MS +* category ^short = "[DocumentEntry.class] Categorization of document" +* author 1..2 MS +* author ^type.aggregation = #contained +* author ^short = "[DocumentEntry.author] Who and/or what authored the document" +* author ^slicing.discriminator.type = #type + * ^slicing.discriminator.path = "$this.resolve()" + * ^slicing.rules = #closed +* author contains + institution 1..1 and + person 0..1 +* author[institution] MS +* author[institution] only Reference(MedComDocumentOrganization) +* author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" +* author[person] MS +* author[person] only Reference(MedComDocumentPractitioner) +* author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" +* securityLabel 1.. MS +* securityLabel ^short = "[DocumentEntry.confidentialityCode] Document security-tags" +* subject 1..1 MS +* subject only Reference(MedComDocumentPatient) +* subject ^type.aggregation = #contained +* subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" +* content MS +* content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." +* content.attachment.contentType 1.. MS +* content.attachment.contentType from $ContentType +* content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" +* content.attachment.language 1.. MS +* content.attachment.language from $Language (extensible) +* content.attachment.creation ^short = "[DocumentEntry.creationTime] Date attachment was first created" +* content.attachment.creation 1.. MS +* content.attachment.hash 0.. MS +* content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" +* content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" +* content.format 1.. MS +/* * content.format.coding.code 1.. MS +* content.format.coding.system 1.. MS */ +* content.attachment.size 0.. MS +* content.attachment.title 1.. MS +* content.attachment.url 0.. MS +* content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" +* content.attachment.title ^short = "[DocumentEntry.title] Label to display in place of the data" +* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" +* context 1.. MS +* context.event 0..1 MS +* context.event.coding.code 1.. MS +* context.event.coding.system 1.. MS +* context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented" +* context.period MS +* context.period.start MS +* context.period.end MS +* context.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented" +* context.facilityType 1.. MS +* context.facilityType.coding.code 1.. MS +* context.facilityType.coding.system 1.. MS +* context.facilityType.coding.system from $FacilityType (extensible) +* context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" +* context.practiceSetting 1.. MS +* context.practiceSetting.coding.code 1.. MS +* context.practiceSetting.coding.system 1.. MS +* context.practiceSetting.coding.system from $PracticeSetting (extensible) +* context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" +* context.related 0..* MS +* context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" +* context.sourcePatientInfo 1..1 MS +* context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." +* extension contains + medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS and + medcom-document-version-id-extension named versionid 1..1 MS +* extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" +* extension[versionid] ^short = "Specifies the version of the DocumentReference for a standard." + + + +/* Invariant: apd-dk-rule-1 +Description: "Where formatCode is 'urn:ad:dk:medcom:appointmentsummary:full', the eventCode must be 'ALAL01' (hjertesygdomme)" +Severity: #error +Expression: "where(type.coding.where(system = 'http://medcomfhir.dk/ig/xdsmetadata/CodeSystem/dk-ihe-typecode-de-regenstrief').code = '56446-8').context.event.coding.code = 'ALAL01'" +*/ + +Invariant: uuidOLD +Description: "General UUID expression" +Severity: #error +Expression: "value.matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" + diff --git a/sushi-config.yaml b/sushi-config.yaml index 079bf75..af163ad 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -29,6 +29,7 @@ dependencies: medcom.fhir.dk.core: 2.4.0 hl7.fhir.dk.core: 3.2.0 ihe.iti.mhd: 4.2.2 + hl7.fhir.extensions.r5: 4.0.1 # # # The pages property corresponds to IG.definition.page. SUSHI can From 1e884f92dc4dfd2ffe52999c89dde281b4042ad9 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 10 Oct 2025 11:04:31 +0200 Subject: [PATCH 04/79] Udated dependencies --- sushi-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sushi-config.yaml b/sushi-config.yaml index af163ad..3438e9a 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -26,8 +26,8 @@ publisher: # dependencies: medcom.fhir.dk.xdsmetadata: 1.0.1 - medcom.fhir.dk.core: 2.4.0 - hl7.fhir.dk.core: 3.2.0 + medcom.fhir.dk.core: 3.0.0 + hl7.fhir.dk.core: 3.4.0 ihe.iti.mhd: 4.2.2 hl7.fhir.extensions.r5: 4.0.1 # From 50f54e8ed599665fa979ba16f0cba73de141fcba Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 5 Nov 2025 15:27:02 +0100 Subject: [PATCH 05/79] Updated dependencies --- sushi-config.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sushi-config.yaml b/sushi-config.yaml index 3438e9a..ee8f01d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -26,7 +26,8 @@ publisher: # dependencies: medcom.fhir.dk.xdsmetadata: 1.0.1 - medcom.fhir.dk.core: 3.0.0 + medcom.ffhir.dk.terminology: 2.0.1 + medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 ihe.iti.mhd: 4.2.2 hl7.fhir.extensions.r5: 4.0.1 From 5fd797ef7918958313cf435a614eaaedacc35db6 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 5 Nov 2025 15:28:14 +0100 Subject: [PATCH 06/79] Added obligation helpers --- input/fsh/Helpers/Obligations.fsh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 input/fsh/Helpers/Obligations.fsh diff --git a/input/fsh/Helpers/Obligations.fsh b/input/fsh/Helpers/Obligations.fsh new file mode 100644 index 0000000..f58c24a --- /dev/null +++ b/input/fsh/Helpers/Obligations.fsh @@ -0,0 +1,11 @@ +RuleSet: ProducerShallPutInNarrative(elementName) +* {elementName} ^extension[$obligation][+].extension[code].valueCode = #SHALL:in-narrative +* {elementName} ^extension[$obligation][=].extension[actor].valueCanonical = Canonical(ProducerActor) + +Instance: ProducerActor +InstanceOf: ActorDefinition +* name = "Producer of FHIR resources" +* title = "Producer of FHIR resources" +* status = #active +* type = #system +* description = "The system that creates the FHIR resources" \ No newline at end of file From 2168b78b5b56ed2950f9e002f600946e7d6226ee Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 5 Nov 2025 15:29:54 +0100 Subject: [PATCH 07/79] Commented on DocumentReference --- input/fsh/MedComBasicDocumentReference.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComBasicDocumentReference.fsh b/input/fsh/MedComBasicDocumentReference.fsh index 8997242..eefc021 100644 --- a/input/fsh/MedComBasicDocumentReference.fsh +++ b/input/fsh/MedComBasicDocumentReference.fsh @@ -2,7 +2,7 @@ Profile: MedComBasicDocumentReference Parent: MinimalDocumentReference Id: medcom-basic-documentreference Title: "Danish Core DocumentReference Profile" -//DKCore content +//DKCore content OUTDATED * extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 //Bruges til at angive en version af det dokument, som DocumentReference peger på. Hvis der findes flere versioner af samme dokument, kan man vha. denne extension skelne dem fra hinanden. * context.facilityType from SorOrganizationType (extensible) * context.practiceSetting from SorPracticeSettingCode (extensible) From 365d30b5b9481317476459d243b62a06dcaa93a3 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 7 Nov 2025 08:13:53 +0100 Subject: [PATCH 08/79] Updated DocRefs --- ...Reference.fsh => MedComContainedDocumentReference.fsh} | 8 ++++---- ...ntReference.fsh => MedComMinimalDocumentReference.fsh} | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) rename input/fsh/{MedComDocumentReference.fsh => MedComContainedDocumentReference.fsh} (96%) rename input/fsh/{MedComBasicDocumentReference.fsh => MedComMinimalDocumentReference.fsh} (78%) diff --git a/input/fsh/MedComDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh similarity index 96% rename from input/fsh/MedComDocumentReference.fsh rename to input/fsh/MedComContainedDocumentReference.fsh index a69ddcb..2616200 100644 --- a/input/fsh/MedComDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -1,7 +1,7 @@ -Profile: MedComDocumentReference -Parent: MedComBasicDocumentReference -Id: medcom-documentreference -Description: "A profile stating the rules, when exchanging a FHIR document." +Profile: MedComContainedDocumentReference +Parent: MedComMinimalDocumentReference +Id: medcom-contained-documentreference +Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." * masterIdentifier 1..1 MS * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" diff --git a/input/fsh/MedComBasicDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh similarity index 78% rename from input/fsh/MedComBasicDocumentReference.fsh rename to input/fsh/MedComMinimalDocumentReference.fsh index eefc021..01b50db 100644 --- a/input/fsh/MedComBasicDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -1,7 +1,8 @@ -Profile: MedComBasicDocumentReference +Profile: MedComMinimalDocumentReference Parent: MinimalDocumentReference -Id: medcom-basic-documentreference -Title: "Danish Core DocumentReference Profile" +Id: medcom-minimal-documentreference +Title: "HL7 Denmark DK Core MinimalDocumentReference Profile" +Description: "A replication of DK Core MinimalDocumentReference" //DKCore content OUTDATED * extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 //Bruges til at angive en version af det dokument, som DocumentReference peger på. Hvis der findes flere versioner af samme dokument, kan man vha. denne extension skelne dem fra hinanden. * context.facilityType from SorOrganizationType (extensible) From ee1b4945c66c51973e998b8af5bdd37d7a954fa7 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 11 Nov 2025 12:23:24 +0100 Subject: [PATCH 09/79] Corrected docref --- input/fsh/Alias.fsh | 5 +- input/fsh/MedComMinimalDocumentReference.fsh | 19 ++++--- input/fsh/ValueSets.fsh | 60 ++++++++++++++++++++ sushi-config.yaml | 2 +- 4 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 input/fsh/ValueSets.fsh diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index 776fb3e..a68ecbe 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -67,4 +67,7 @@ Alias: $PROdkOID = urn:oid:1.2.208.176.7.3.1 Alias: $MedComFormatOID = urn:oid:1.2.208.184.100.10 Alias: $DanishxdsOID = urn:oid:1.2.208.176.8.1 Alias: $IANALanguageOID = urn:oid:2.16.840.1.113883.6.121 -Alias: $IANAMediaOID = urn:oid:2.16.840.1.113883.5.79 \ No newline at end of file +Alias: $IANAMediaOID = urn:oid:2.16.840.1.113883.5.79 + +Alias: $v3-ActCode3.0.0 = http://terminology.hl7.org/ValueSet/v3-ActCode|3.0.0 +Alias: $sct = http://snomed.info/sct|http://snomed.info/sct/554471000005108 // Danish version - append e.g. /version/20240331 to get a more specific version diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 01b50db..5d8eb3e 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -1,14 +1,19 @@ Profile: MedComMinimalDocumentReference Parent: MinimalDocumentReference Id: medcom-minimal-documentreference -Title: "HL7 Denmark DK Core MinimalDocumentReference Profile" +Title: "A replication of HL7 Denmark DK Core MinimalDocumentReference Profile" Description: "A replication of DK Core MinimalDocumentReference" -//DKCore content OUTDATED -* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named version 1..1 //Bruges til at angive en version af det dokument, som DocumentReference peger på. Hvis der findes flere versioner af samme dokument, kan man vha. denne extension skelne dem fra hinanden. +* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named versionid 1..1 +* extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." * context.facilityType from SorOrganizationType (extensible) -* context.practiceSetting from SorPracticeSettingCode (extensible) +* context.practiceSetting from MedComSorPracticeSettingCode (extensible) +* context.event from $v3-ActCode3.0.0 +* author 1..* * author only Reference(DkCorePatient or DkCorePractitioner or DkCorePractitionerRole or DkCoreRelatedPerson or DkCoreOrganization or Device) - -* authenticator only Reference(DkCorePractitioner) +* authenticator only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCoreOrganization) +* subject 1..1 * subject only Reference(DkCorePatient) -//MedCom content +* context.sourcePatientInfo only Reference(DkCorePatient) + + +//Autofortolkninger inkl disclaimer \ No newline at end of file diff --git a/input/fsh/ValueSets.fsh b/input/fsh/ValueSets.fsh new file mode 100644 index 0000000..e9429f4 --- /dev/null +++ b/input/fsh/ValueSets.fsh @@ -0,0 +1,60 @@ +ValueSet: MedComSorPracticeSettingCode +Id: medcom-core-practice-setting-code +Title: "Replication og DK SOR Practice Setting Code" +Description: "Replication of valuesest from DK Core. Values used for the document metadata attribute practiceSettingCode, which is an attribute specifying the clinical specialty where the act that resulted in the document was performed (e.g., Family Practice, Laboratory, Radiology). The value set is based on a subset of the code list from the SOR lookup table 'SOR-Kliniske specialer' (https://sor.sum.dsdn.dk/lookupdata/#clinical_speciality, accessable on Sundhedsdatanettet (SDN)), which is based on SNOMED CT codes." +* ^status = #active +* ^experimental = false +* $sct#773568002 +* $sct#408443003 +* $sct#394577000 +* $sct#394821009 +* $sct#394588006 +* $sct#394582007 +* $sct#394914008 +* $sct#394583002 +* $sct#394811001 +* $sct#394585009 +* $sct#408472002 +* $sct#394803006 +* $sct#394807007 +* $sct#419192003 +* $sct#394579002 +* $sct#408463005 +* $sct#394609007 +* $sct#551411000005104 +* $sct#394596001 +* $sct#394600006 +* $sct#394601005 +* $sct#394580004 +* $sct#421661004 +* $sct#408454008 +* $sct#394809005 +* $sct#394592004 +* $sct#418112009 +* $sct#394805004 +* $sct#394584008 +* $sct#394589003 +* $sct#394610002 +* $sct#394591006 +* $sct#394812008 +* $sct#394594003 +* $sct#394608004 +* $sct#394801008 +* $sct#394604002 +* $sct#394915009 +* $sct#394611003 +* $sct#394587001 +* $sct#394537008 +* $sct#394810000 +* $sct#394581000 +* $sct#394605001 +* $sct#394603008 +* $sct#408448007 +* $sct#394612005 +* $sct#658171000005102 +* $sct#658161000005107 +* $sct#658151000005105 +* $sct#658191000005101 +* $sct#658201000005103 +* $sct#658141000005108 +* $sct#658181000005104 \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index ee8f01d..c13e5c8 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -26,7 +26,7 @@ publisher: # dependencies: medcom.fhir.dk.xdsmetadata: 1.0.1 - medcom.ffhir.dk.terminology: 2.0.1 + medcom.fhir.dk.terminology: 2.0.1 medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 ihe.iti.mhd: 4.2.2 From efe7aa379126b5a86486e1195011ec101d05f1c9 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 11 Nov 2025 12:30:20 +0100 Subject: [PATCH 10/79] Update MedComContainedDocumentReference.fsh --- input/fsh/MedComContainedDocumentReference.fsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 2616200..70439a2 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -64,7 +64,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.format.coding.system 1.. MS */ * content.attachment.size 0.. MS * content.attachment.title 1.. MS -* content.attachment.url 0.. MS +//* content.attachment.url 0.. MS * content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" * content.attachment.title ^short = "[DocumentEntry.title] Label to display in place of the data" * content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" @@ -92,10 +92,10 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.sourcePatientInfo 1..1 MS * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." * extension contains - medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS and - medcom-document-version-id-extension named versionid 1..1 MS + medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS //and +// medcom-document-version-id-extension named versionid 1..1 MS * extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" -* extension[versionid] ^short = "Specifies the version of the DocumentReference for a standard." +//* extension[versionid] ^short = "Specifies the version of the DocumentReference for a standard." From 8b0643ed51d4ccc461b1d3ae0ecdb83cc0b1184d Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 12 Nov 2025 08:32:27 +0100 Subject: [PATCH 11/79] Updated --- input/fsh/MedComMinimalDocumentReference.fsh | 5 +---- sushi-config.yaml | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 5d8eb3e..86daad7 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -13,7 +13,4 @@ Description: "A replication of DK Core MinimalDocumentReference" * authenticator only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCoreOrganization) * subject 1..1 * subject only Reference(DkCorePatient) -* context.sourcePatientInfo only Reference(DkCorePatient) - - -//Autofortolkninger inkl disclaimer \ No newline at end of file +* context.sourcePatientInfo only Reference(DkCorePatient) \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index c13e5c8..8ce7a45 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -29,8 +29,9 @@ dependencies: medcom.fhir.dk.terminology: 2.0.1 medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 - ihe.iti.mhd: 4.2.2 + ihe.iti.mhd: 4.2.3 hl7.fhir.extensions.r5: 4.0.1 + hl7.fhir.uv.extensions.r4: 5.2.0 # # # The pages property corresponds to IG.definition.page. SUSHI can From 5f42fb50c9f99098bf30b9fccea89e850a73c072 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 13 Nov 2025 07:32:17 +0100 Subject: [PATCH 12/79] Updated --- .../fsh/MedComContainedDocumentReference.fsh | 30 +++++++++++-------- input/fsh/MedComDocumentComposition.fsh | 16 ++++++++-- input/fsh/MedComMinimalDocumentReference.fsh | 4 +-- input/fsh/invariants.fsh | 4 +++ 4 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 input/fsh/invariants.fsh diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 70439a2..8022054 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -2,7 +2,7 @@ Profile: MedComContainedDocumentReference Parent: MedComMinimalDocumentReference Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." -* masterIdentifier 1..1 MS +* masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" * identifier 1..1 MS @@ -14,11 +14,12 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th // TypeCode * type 1.. MS * type ^short = "[DocumentEntry.typeCode] Kind of document" +* type.coding 1.. MS * type.coding.system 1.. MS * type.coding.code 1.. MS * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner) +* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -26,7 +27,8 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.code 1.. MS * category.coding.system 1.. MS * category ^short = "[DocumentEntry.class] Categorization of document" -* author 1..2 MS +* author ..2 MS +* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type @@ -39,11 +41,14 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -* author[person] only Reference(MedComDocumentPractitioner) +* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? Og er vi enige i at navnet på en device kan være author:person? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" -* securityLabel 1.. MS +* securityLabel 1.. MS +* securityLabel.coding 1..* MS +* securityLabel.coding.system 1.. MS +* securityLabel.coding.code 1.. MS * securityLabel ^short = "[DocumentEntry.confidentialityCode] Document security-tags" -* subject 1..1 MS +* subject MS * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #contained * subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" @@ -64,10 +69,10 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.format.coding.system 1.. MS */ * content.attachment.size 0.. MS * content.attachment.title 1.. MS -//* content.attachment.url 0.. MS +// * content.attachment.url 0.. MS RCH: Stemmer ikke overens med MHD. Hvad gør vi med denne? * content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" * content.attachment.title ^short = "[DocumentEntry.title] Label to display in place of the data" -* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" +* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" //RCH: Hvad kan vi indsætte som eksempel her? Absolut eller relativ reference? * context 1.. MS * context.event 0..1 MS * context.event.coding.code 1.. MS @@ -80,22 +85,21 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.facilityType 1.. MS * context.facilityType.coding.code 1.. MS * context.facilityType.coding.system 1.. MS -* context.facilityType.coding.system from $FacilityType (extensible) +* context.facilityType.coding.system from $FacilityType (extensible) //RCH: Undersøg om den er ens med DKCores value set * context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" * context.practiceSetting 1.. MS * context.practiceSetting.coding.code 1.. MS * context.practiceSetting.coding.system 1.. MS -* context.practiceSetting.coding.system from $PracticeSetting (extensible) +* context.practiceSetting.coding.system from $PracticeSetting (extensible) //RCH: Undersøg om den er ens med DKCores value set * context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" * context.related 0..* MS * context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" * context.sourcePatientInfo 1..1 MS * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." +* context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension contains - medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS //and -// medcom-document-version-id-extension named versionid 1..1 MS + medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS * extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" -//* extension[versionid] ^short = "Specifies the version of the DocumentReference for a standard." diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index a034867..61d0e96 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -12,11 +12,22 @@ Id: medcom-document-composition Description: "The profile of the MedCom Document Composition containing the minimum allowed content." //* meta.language 0..1 MS * meta.profile 1..1 MS +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier obeys medcom-uuidv4 //RCH: Skal det være identifier eller identifier.value? +* identifier ^short = "The Composition identifier" * confidentiality 1..1 MS * text MS * status = #final * status MS * type 1..1 MS +* type.coding 1.. MS +* type.coding.system MS +* type.coding.code MS +* category 1..1 MS +* category from $ClassCode (extensible) +* category.coding.code 1.. MS +* category.coding.system 1.. MS * subject 1.. MS * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #bundled @@ -40,10 +51,11 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner) +* attester.party only Reference(MedComDocumentPractitioner) //RCH: Mangler der også her PractitionerRole? * attester.party ^type.aggregation = #bundled * title MS * language 1..1 MS +* language from $Language (extensible) * section 1.. MS * section.text MS * section.entry MS @@ -56,7 +68,7 @@ Usage: #example // * identifier.value = "1" // ? -The portion of the identifier typically relevant to the user and which is unique within the context of the system. * meta.profile = "1.0" * status = #final -* type = $loinc#11488-4 "Consult note" +* code = $loinc#11488-4 "Consult note" // * category = $loinc#LP173421-1 "Report" * subject = Reference(69e475df-20c8-4f54-8cea-9843568205fd) // * encounter = Reference(Encounter/xcda) diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 86daad7..7b02554 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -5,9 +5,9 @@ Title: "A replication of HL7 Denmark DK Core MinimalDocumentReference Profile" Description: "A replication of DK Core MinimalDocumentReference" * extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named versionid 1..1 * extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." -* context.facilityType from SorOrganizationType (extensible) +* context.facilityType from SorOrganizationType (extensible) //Mangler value set i vores IG. * context.practiceSetting from MedComSorPracticeSettingCode (extensible) -* context.event from $v3-ActCode3.0.0 +* context.event from $v3-ActCode3.0.0 // Undersøg om dette valueset dækker vores behov * author 1..* * author only Reference(DkCorePatient or DkCorePractitioner or DkCorePractitionerRole or DkCoreRelatedPerson or DkCoreOrganization or Device) * authenticator only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCoreOrganization) diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh new file mode 100644 index 0000000..46be1cd --- /dev/null +++ b/input/fsh/invariants.fsh @@ -0,0 +1,4 @@ +Invariant: medcom-uuidv4 +Description: "The value shall correspond to the structure of an UUID version 4" +Severity: #error +Expression: "matches('urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" \ No newline at end of file From ef15cb179eacef4d75528786fd8cf934842296c4 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 13 Nov 2025 13:56:24 +0100 Subject: [PATCH 13/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 5 ++++- input/fsh/MedComDocumentComposition.fsh | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 8022054..6e0ebee 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -65,13 +65,16 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" * content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" * content.format 1.. MS +* content.format.system 1.. MS +* content.format.code 1.. MS +* content.format.display 1.. MS /* * content.format.coding.code 1.. MS * content.format.coding.system 1.. MS */ * content.attachment.size 0.. MS * content.attachment.title 1.. MS // * content.attachment.url 0.. MS RCH: Stemmer ikke overens med MHD. Hvad gør vi med denne? * content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" -* content.attachment.title ^short = "[DocumentEntry.title] Label to display in place of the data" +* content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document" * content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" //RCH: Hvad kan vi indsætte som eksempel her? Absolut eller relativ reference? * context 1.. MS * context.event 0..1 MS diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 61d0e96..f32a19f 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -54,6 +54,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester.party only Reference(MedComDocumentPractitioner) //RCH: Mangler der også her PractitionerRole? * attester.party ^type.aggregation = #bundled * title MS +* title ^short = "The readable title of the document" * language 1..1 MS * language from $Language (extensible) * section 1.. MS From f7186222b746494ce172132928b4413450c42b63 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Sat, 15 Nov 2025 09:50:15 +0100 Subject: [PATCH 14/79] Update MedComContainedDocumentReference.fsh testing --- input/fsh/MedComContainedDocumentReference.fsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 6e0ebee..b9586c4 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -19,7 +19,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.code 1.. MS * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) +//* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -28,7 +28,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.system 1.. MS * category ^short = "[DocumentEntry.class] Categorization of document" * author ..2 MS -* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen +//* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type @@ -41,7 +41,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? Og er vi enige i at navnet på en device kan være author:person? +//* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? Og er vi enige i at navnet på en device kan være author:person? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" * securityLabel 1.. MS * securityLabel.coding 1..* MS From 7a4e57301ba1d75904094d0e33019358a9c74c34 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 17 Nov 2025 08:36:41 +0100 Subject: [PATCH 15/79] Correccted dependencies --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- sushi-config.yaml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index b9586c4..87770b9 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -41,7 +41,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -//* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? Og er vi enige i at navnet på en device kan være author:person? +//* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Practitionerrole igen. Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" * securityLabel 1.. MS * securityLabel.coding 1..* MS diff --git a/sushi-config.yaml b/sushi-config.yaml index 8ce7a45..a24dcfc 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -29,9 +29,8 @@ dependencies: medcom.fhir.dk.terminology: 2.0.1 medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 - ihe.iti.mhd: 4.2.3 - hl7.fhir.extensions.r5: 4.0.1 - hl7.fhir.uv.extensions.r4: 5.2.0 + hl7.fhir.extensions.r5: 5.2.1 + ihe.iti.mhd: 4.2.2 # # # The pages property corresponds to IG.definition.page. SUSHI can From ba4c780464a4846daa036e71ee758e6ca2023eec Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 17 Nov 2025 11:08:43 +0100 Subject: [PATCH 16/79] Added comments --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 87770b9..4f5dc38 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -1,5 +1,5 @@ Profile: MedComContainedDocumentReference -Parent: MedComMinimalDocumentReference +Parent: MedComMinimalDocumentReference //Skal vi nedarve direkte fra HL7 eller indføre i denne IG midlertidigt? Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." * masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index f32a19f..0f722cb 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -25,7 +25,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding.system MS * type.coding.code MS * category 1..1 MS -* category from $ClassCode (extensible) +* category from $ClassCode (extensible) //RCH: Er bindingen sat det rigtige sted? * category.coding.code 1.. MS * category.coding.system 1.. MS * subject 1.. MS From 49143a115661ceb66773ff36444ed148e11e3180 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 17 Nov 2025 12:06:59 +0100 Subject: [PATCH 17/79] Updated event --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 4f5dc38..ecec7be 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -77,7 +77,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document" * content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" //RCH: Hvad kan vi indsætte som eksempel her? Absolut eller relativ reference? * context 1.. MS -* context.event 0..1 MS +* context.event 0.. MS * context.event.coding.code 1.. MS * context.event.coding.system 1.. MS * context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented" diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 0f722cb..5bae742 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -33,7 +33,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * subject ^type.aggregation = #bundled * date 1..1 MS * event 0..1 MS -* event.code 0..1 MS +* event.code 0.. MS * event.period.start 0..1 MS * event.period.end 0..1 MS * event.detail 0..* MS From a724bad0d337bdadb8c779444ec319c3613879e5 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 17 Nov 2025 12:10:23 +0100 Subject: [PATCH 18/79] Updated comment --- input/fsh/MedComDocumentComposition.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 5bae742..e7ab68a 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -25,7 +25,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding.system MS * type.coding.code MS * category 1..1 MS -* category from $ClassCode (extensible) //RCH: Er bindingen sat det rigtige sted? +* category from $ClassCode (extensible) * category.coding.code 1.. MS * category.coding.system 1.. MS * subject 1.. MS From 9463019e99e1e764c8ac2d0b6e34011370143087 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 17 Nov 2025 12:17:28 +0100 Subject: [PATCH 19/79] Update MedComContainedDocumentReference.fsh --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index ecec7be..cc056a4 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -5,7 +5,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" -* identifier 1..1 MS +* identifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? * identifier.value 1..1 MS * identifier ^short = "[DocumentEntry.entryUUID] Identifier for the document" * identifier obeys uuid From a147f1c0f85d34956240c10f41b7795e03379642 Mon Sep 17 00:00:00 2001 From: SGA-MedCom <61416377+SGA-MedCom@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:54:10 +0100 Subject: [PATCH 20/79] Create MedComDocumentAuthorInstitutionOrganization.fsh --- ...mDocumentAuthorInstitutionOrganization.fsh | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh diff --git a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh new file mode 100644 index 0000000..ad9a02b --- /dev/null +++ b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh @@ -0,0 +1,26 @@ +Profile: MedComDocumentAuthorInstitutionOrganization +Parent: MedComDocumentOrganization +Id: medcom-document-author-institution-organization +Description: "An Author Institution Organization including requirements for a MedCom Document Organization resource" + +// 1) Slicing på system +* type.coding ^slicing.discriminator[0].type = #value +* type.coding ^slicing.discriminator[0].path = "system" +* type.coding ^slicing.rules = #open + +// (valgfrit) sig at vi vil have præcis 2 codings i alt +* type.coding 2..* + +// 2) Definér slices +* type.coding contains + healthcareFacilityTypeCode 1..1 and + practiceSettingCode 1..1 + +// 3) Lås system pr. slice (det er her “slicing på system” bliver konkret) +* type.coding[healthcareFacilityTypeCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-HealthcareFacilityTypeCode-VS" +* type.coding[healthcareFacilityTypeCode].system 1..1 +* type.coding[healthcareFacilityTypeCode].code 1..1 + +* type.coding[practiceSettingCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-PracticeSettingCode-VS" +* type.coding[practiceSettingCode].system 1..1 +* type.coding[practiceSettingCode].code 1..1 \ No newline at end of file From 294817d63aae8d2c3f2dc65b906a6bbc8568aa99 Mon Sep 17 00:00:00 2001 From: SGA-MedCom <61416377+SGA-MedCom@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:02:52 +0100 Subject: [PATCH 21/79] =?UTF-8?q?=C3=86ndret=20til=20DEV=20og=20teste=20me?= =?UTF-8?q?d=20author[person]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- sushi-config.yaml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index cc056a4..ae6c87e 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -41,7 +41,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -//* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device) //RCH: Practitionerrole igen. Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? +* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Practitionerrole igen. Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" * securityLabel 1.. MS * securityLabel.coding 1..* MS diff --git a/sushi-config.yaml b/sushi-config.yaml index a24dcfc..9ee4e08 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -27,7 +27,8 @@ publisher: dependencies: medcom.fhir.dk.xdsmetadata: 1.0.1 medcom.fhir.dk.terminology: 2.0.1 - medcom.fhir.dk.core: 3.0.1 + medcom.fhir.dk.core: dev + #medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 hl7.fhir.extensions.r5: 5.2.1 ihe.iti.mhd: 4.2.2 From 9c445f05275135f9ec02b5c8d90ca21d251f665e Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 18 Nov 2025 14:40:37 +0100 Subject: [PATCH 22/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 4 ++-- ...MedComDocumentAuthorInstitutionOrganization.fsh | 14 +++++--------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index ae6c87e..85edad0 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -38,10 +38,10 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th institution 1..1 and person 0..1 * author[institution] MS -* author[institution] only Reference(MedComDocumentOrganization) +* author[institution] only Reference(MedComDocumentAuthorInstitutionOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Practitionerrole igen. Bør en PractitionerRole være med, så en titel kan angives? Og bør vi så lave en documentpractitionerrole profil? +* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Bør vi lave en coonstrain med at en Practitionerrole skal have en practitioner? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" * securityLabel 1.. MS * securityLabel.coding 1..* MS diff --git a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh index ad9a02b..fb644e9 100644 --- a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh +++ b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh @@ -3,24 +3,20 @@ Parent: MedComDocumentOrganization Id: medcom-document-author-institution-organization Description: "An Author Institution Organization including requirements for a MedCom Document Organization resource" -// 1) Slicing på system * type.coding ^slicing.discriminator[0].type = #value * type.coding ^slicing.discriminator[0].path = "system" * type.coding ^slicing.rules = #open -// (valgfrit) sig at vi vil have præcis 2 codings i alt -* type.coding 2..* +* type.coding 2..* MS -// 2) Definér slices * type.coding contains healthcareFacilityTypeCode 1..1 and practiceSettingCode 1..1 -// 3) Lås system pr. slice (det er her “slicing på system” bliver konkret) * type.coding[healthcareFacilityTypeCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-HealthcareFacilityTypeCode-VS" -* type.coding[healthcareFacilityTypeCode].system 1..1 -* type.coding[healthcareFacilityTypeCode].code 1..1 +* type.coding[healthcareFacilityTypeCode].system 1..1 MS +* type.coding[healthcareFacilityTypeCode].code 1..1 MS * type.coding[practiceSettingCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-PracticeSettingCode-VS" -* type.coding[practiceSettingCode].system 1..1 -* type.coding[practiceSettingCode].code 1..1 \ No newline at end of file +* type.coding[practiceSettingCode].system 1..1 MS +* type.coding[practiceSettingCode].code 1..1 MS \ No newline at end of file From ad250aeb674ae52b1c71ebedb94e2c5088109c38 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 18 Nov 2025 14:49:26 +0100 Subject: [PATCH 23/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 4 ++-- input/fsh/MedComDocumentComposition.fsh | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 85edad0..a14ee19 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -19,7 +19,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.code 1.. MS * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -//* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) +* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -28,7 +28,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.system 1.. MS * category ^short = "[DocumentEntry.class] Categorization of document" * author ..2 MS -//* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen +* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index e7ab68a..3481617 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -37,15 +37,16 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.period.start 0..1 MS * event.period.end 0..1 MS * event.detail 0..* MS +* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? * author ^slicing.discriminator.type = #type * ^slicing.discriminator.path = "$this.resolve()" * ^slicing.rules = #closed * author contains institution 1..1 MS and person 0..1 MS -* author[institution] only Reference(MedComDocumentOrganization) +* author[institution] only Reference(MedComDocumentAuthorInstitutionOrganization) * author[institution] ^short = "The organization who authored the document" -* author[person] only Reference(MedComDocumentPractitioner) +* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) * author[person] ^short = "The person who authored the document" * author ^type.aggregation = #bundled * attester 0..1 MS From 3321e0067a61f8083612e00c4cf4bc0ef0be3b32 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 18 Nov 2025 14:56:21 +0100 Subject: [PATCH 24/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index a14ee19..12835eb 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -2,6 +2,11 @@ Profile: MedComContainedDocumentReference Parent: MedComMinimalDocumentReference //Skal vi nedarve direkte fra HL7 eller indføre i denne IG midlertidigt? Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." +* id 1.. MS +* text MS +* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." +* text.status MS +* text.div MS * masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" @@ -100,6 +105,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.sourcePatientInfo 1..1 MS * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." * context.sourcePatientInfo only Reference(MedComDocumentPatient) +* extension MS * extension contains medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS * extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" From 60cb2fa6bb3064e86531a04d2b6fcae106747235 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 18 Nov 2025 15:15:39 +0100 Subject: [PATCH 25/79] Updated --- ...mDocumentAuthorInstitutionOrganization.fsh | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh index fb644e9..ae564d0 100644 --- a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh +++ b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh @@ -3,20 +3,27 @@ Parent: MedComDocumentOrganization Id: medcom-document-author-institution-organization Description: "An Author Institution Organization including requirements for a MedCom Document Organization resource" -* type.coding ^slicing.discriminator[0].type = #value -* type.coding ^slicing.discriminator[0].path = "system" -* type.coding ^slicing.rules = #open +* type ^slicing.discriminator[0].type = #value +* type ^slicing.discriminator[0].path = "coding.system" +* type ^slicing.rules = #open -* type.coding 2..* MS +* type 2..* MS -* type.coding contains +* type contains healthcareFacilityTypeCode 1..1 and practiceSettingCode 1..1 - -* type.coding[healthcareFacilityTypeCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-HealthcareFacilityTypeCode-VS" -* type.coding[healthcareFacilityTypeCode].system 1..1 MS -* type.coding[healthcareFacilityTypeCode].code 1..1 MS - -* type.coding[practiceSettingCode].system = "http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-PracticeSettingCode-VS" -* type.coding[practiceSettingCode].system 1..1 MS -* type.coding[practiceSettingCode].code 1..1 MS \ No newline at end of file + +* type[healthcareFacilityTypeCode] from $FacilityType +* type[healthcareFacilityTypeCode] 1..1 MS +* type[healthcareFacilityTypeCode].coding 1..1 MS +//* type[healthcareFacilityTypeCode].coding.system = $FacilityType //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. +* type[healthcareFacilityTypeCode].coding.system 1..1 MS +* type[healthcareFacilityTypeCode].coding.code 1..1 MS + +* type[practiceSettingCode] from $PracticeSetting +* type[practiceSettingCode] 1..1 MS +* type[practiceSettingCode].coding 1..1 MS +//* type[practiceSettingCode].coding.system = $PracticeSetting //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. +* type[practiceSettingCode].coding.system 1..1 MS +* type[practiceSettingCode].coding.code 1..1 MS + From b4d42005f97525294fec20dda33b3b36e1ce0067 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 19 Nov 2025 08:58:25 +0100 Subject: [PATCH 26/79] added --- .../fsh/MedComContainedDocumentReference.fsh | 26 +++++++++---------- ...mDocumentAuthorInstitutionOrganization.fsh | 4 +-- input/fsh/MedComDocumentBundle.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 4 ++- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 12835eb..2eabf5b 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -10,10 +10,11 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" -* identifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? -* identifier.value 1..1 MS -* identifier ^short = "[DocumentEntry.entryUUID] Identifier for the document" -* identifier obeys uuid +* identifier[entryUUID] 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? +* identifier[entryUUID].value 1..1 MS +* identifier[entryUUID].system 1..1 +* identifier[entryUUID] ^short = "[DocumentEntry.entryUUID] Identifier for the document" +* identifier[entryUUID].value obeys uuid * status MS * status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" // TypeCode @@ -31,7 +32,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category from $ClassCode (extensible) * category.coding.code 1.. MS * category.coding.system 1.. MS -* category ^short = "[DocumentEntry.class] Categorization of document" +* category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS * author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen * author ^type.aggregation = #contained @@ -57,15 +58,16 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #contained * subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" +* date 1.. +* date ^short = "[DocumentEntry.creationTime] Creation time of the document" * content MS * content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." * content.attachment.contentType 1.. MS * content.attachment.contentType from $ContentType -* content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" -* content.attachment.language 1.. MS -* content.attachment.language from $Language (extensible) -* content.attachment.creation ^short = "[DocumentEntry.creationTime] Date attachment was first created" -* content.attachment.creation 1.. MS +* language ^short = "[DocumentEntry.languageCode] Human language of the content" +* language 1.. MS +* language from $Language (extensible) +//* content.attachment.language //RCH: Hvad gør vi med denne? Den er krav i MHD, og er sproget på selve den kliniske vedhæftning (EKG PDF). Skal vi have samme valueset som language i sig selv? * content.attachment.hash 0.. MS * content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" * content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" @@ -73,8 +75,6 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.format.system 1.. MS * content.format.code 1.. MS * content.format.display 1.. MS -/* * content.format.coding.code 1.. MS -* content.format.coding.system 1.. MS */ * content.attachment.size 0.. MS * content.attachment.title 1.. MS // * content.attachment.url 0.. MS RCH: Stemmer ikke overens med MHD. Hvad gør vi med denne? @@ -121,5 +121,5 @@ Expression: "where(type.coding.where(system = 'http://medcomfhir.dk/ig/xdsmetada Invariant: uuid Description: "General UUID expression" Severity: #error -Expression: "value.matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" +Expression: "value.substring(9).matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" diff --git a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh index ae564d0..a5f9c43 100644 --- a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh +++ b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh @@ -18,12 +18,12 @@ Description: "An Author Institution Organization including requirements for a Me * type[healthcareFacilityTypeCode].coding 1..1 MS //* type[healthcareFacilityTypeCode].coding.system = $FacilityType //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. * type[healthcareFacilityTypeCode].coding.system 1..1 MS -* type[healthcareFacilityTypeCode].coding.code 1..1 MS +* type[healthcareFacilityTypeCode].coding.code 1..1 MS //RCH: Skal dette i narrativet? * type[practiceSettingCode] from $PracticeSetting * type[practiceSettingCode] 1..1 MS * type[practiceSettingCode].coding 1..1 MS //* type[practiceSettingCode].coding.system = $PracticeSetting //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. * type[practiceSettingCode].coding.system 1..1 MS -* type[practiceSettingCode].coding.code 1..1 MS +* type[practiceSettingCode].coding.code 1..1 MS //RCH: Skal dette i narrativet? diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index 5a4f8fb..255fd54 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -5,7 +5,7 @@ Profile: MedComDocumentBundle Parent: Bundle Id: medcom-document-bundle Description: "The Bundle profile for a document" -* id 1.. +* id 1.. //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? * id MS * identifier 1..1 MS * type MS diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 3481617..58e9aec 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -28,12 +28,13 @@ Description: "The profile of the MedCom Document Composition containing the mini * category from $ClassCode (extensible) * category.coding.code 1.. MS * category.coding.system 1.. MS +* category ^short = "[DocumentEntry.classCode] Categorization of document" * subject 1.. MS * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #bundled * date 1..1 MS * event 0..1 MS -* event.code 0.. MS +* event.code MS * event.period.start 0..1 MS * event.period.end 0..1 MS * event.detail 0..* MS @@ -58,6 +59,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * title ^short = "The readable title of the document" * language 1..1 MS * language from $Language (extensible) +* language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS * section.text MS * section.entry MS From 70a3932962d68bb5b7f5c26e8c7c5b5905b6bebe Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 19 Nov 2025 12:34:02 +0100 Subject: [PATCH 27/79] Updated authenticator and attester --- input/fsh/MedComContainedDocumentReference.fsh | 4 ++-- input/fsh/MedComDocumentComposition.fsh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 2eabf5b..2bf6994 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -25,7 +25,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.code 1.. MS * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Practitionerrole nedarver ikke fra DKCore (Krav i MinimalDocRef) +* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -34,7 +34,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.system 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS -* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Practitionerrole igen +* author only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 58e9aec..8a5f4e0 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -53,7 +53,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner) //RCH: Mangler der også her PractitionerRole? +* attester.party only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) * attester.party ^type.aggregation = #bundled * title MS * title ^short = "The readable title of the document" From 6696cf72e0a4ac436e4bc9cbbb52dbcef6d6e6a4 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 19 Nov 2025 15:20:07 +0100 Subject: [PATCH 28/79] Corrected creation and language --- input/fsh/MedComContainedDocumentReference.fsh | 10 +++++----- input/fsh/MedComDocumentComposition.fsh | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 2bf6994..806d664 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -58,15 +58,15 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #contained * subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" -* date 1.. -* date ^short = "[DocumentEntry.creationTime] Creation time of the document" +* content.attachment.creation ^short = "[DocumentEntry.creationTime] Date attachment was first created" +* content.attachment.creation 1.. MS * content MS * content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." * content.attachment.contentType 1.. MS * content.attachment.contentType from $ContentType -* language ^short = "[DocumentEntry.languageCode] Human language of the content" -* language 1.. MS -* language from $Language (extensible) +* content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" +* content.attachment.language 1.. MS +* content.attachment.language from $Language (extensible) //* content.attachment.language //RCH: Hvad gør vi med denne? Den er krav i MHD, og er sproget på selve den kliniske vedhæftning (EKG PDF). Skal vi have samme valueset som language i sig selv? * content.attachment.hash 0.. MS * content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 8a5f4e0..edd858c 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -33,6 +33,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #bundled * date 1..1 MS +* date ^short = "[DocumentEntry.creationTime] Date attachment was first created" * event 0..1 MS * event.code MS * event.period.start 0..1 MS From c5f7046f357be765347fa8516b9b1bb92168f761 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 19 Nov 2025 15:53:09 +0100 Subject: [PATCH 29/79] udated --- input/fsh/MedComDocumentComposition.fsh | 1 + 1 file changed, 1 insertion(+) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index edd858c..178a77c 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -39,6 +39,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.period.start 0..1 MS * event.period.end 0..1 MS * event.detail 0..* MS +* evemt.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" * author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? * author ^slicing.discriminator.type = #type * ^slicing.discriminator.path = "$this.resolve()" From ecd0760116c9d6d07929b9d042c6fd14056d223f Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 09:29:31 +0100 Subject: [PATCH 30/79] Spelling error --- input/fsh/MedComDocumentComposition.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 178a77c..5d5d8bc 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -39,7 +39,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.period.start 0..1 MS * event.period.end 0..1 MS * event.detail 0..* MS -* evemt.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" +* event.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" * author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? * author ^slicing.discriminator.type = #type * ^slicing.discriminator.path = "$this.resolve()" From 808bcdbcc2ff8c8acab5e357b4b416ef56bed987 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 11:02:36 +0100 Subject: [PATCH 31/79] Update MedComDocumentBundle.fsh --- input/fsh/MedComDocumentBundle.fsh | 3 --- 1 file changed, 3 deletions(-) diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index 255fd54..2945361 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -1,6 +1,3 @@ -// This is a simple example of a FSH file. -// This file can be renamed, and additional FSH files can be added. -// SUSHI will look for definitions in any file using the .fsh ending. Profile: MedComDocumentBundle Parent: Bundle Id: medcom-document-bundle From 0e3d1cbad6477be7b2588adbb55b6e8bb3a2d11a Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 11:30:11 +0100 Subject: [PATCH 32/79] Added DocumentPractitionerRole --- input/fsh/MedComDocumentComposition.fsh | 6 +++--- input/fsh/MedComDocumentPractitionerRole.fsh | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 input/fsh/MedComDocumentPractitionerRole.fsh diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 5d5d8bc..e64708d 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -40,7 +40,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.period.end 0..1 MS * event.detail 0..* MS * event.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" -* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComCorePractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? +* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComDocumentPractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? * author ^slicing.discriminator.type = #type * ^slicing.discriminator.path = "$this.resolve()" * ^slicing.rules = #closed @@ -49,13 +49,13 @@ Description: "The profile of the MedCom Document Composition containing the mini person 0..1 MS * author[institution] only Reference(MedComDocumentAuthorInstitutionOrganization) * author[institution] ^short = "The organization who authored the document" -* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) +* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) * author[person] ^short = "The person who authored the document" * author ^type.aggregation = #bundled * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) +* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) * attester.party ^type.aggregation = #bundled * title MS * title ^short = "The readable title of the document" diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh new file mode 100644 index 0000000..28def4e --- /dev/null +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -0,0 +1,6 @@ +Profile: MedComDocumentPractitionerRole +Parent: MedComCorePractitionerRole +Id: medcom-document-practitionerrole +Description: "Document PractitionerRole resource used to describe the role of a healthcare professional or another actor involved in citizen or patient care." +* practitioner only Reference(MedComDocumentPractitioner) +* organization only Reference(MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) \ No newline at end of file From c8231a16c1a8b0ec08ce4101bf9734dc78060bdd Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 14:47:10 +0100 Subject: [PATCH 33/79] added MedComContentDocumentReference and datetime invariant --- input/fsh/MedComContentDocumentReference.fsh | 12 ++++++++++++ input/fsh/MedComDocumentBundle.fsh | 3 ++- input/fsh/invariants.fsh | 7 ++++++- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 input/fsh/MedComContentDocumentReference.fsh diff --git a/input/fsh/MedComContentDocumentReference.fsh b/input/fsh/MedComContentDocumentReference.fsh new file mode 100644 index 0000000..b0b7a23 --- /dev/null +++ b/input/fsh/MedComContentDocumentReference.fsh @@ -0,0 +1,12 @@ +Profile: MedComContentDocumentReference +Parent: DocumentReference +Id: medcom-content-documentreference +Description: "A DocumentReference profile to contain actual content of a MedCom FHIR document." +* id 1.. MS +* identifier 1..1 MS //Skal der identifiers på alle ressourcer? Skal de være uuid v4? Eller er det ikke relevant for dokumentdeling? +* text MS +* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." +* text.status MS +* text.div MS +* status MS +* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" \ No newline at end of file diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index 2945361..f638123 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -8,7 +8,8 @@ Description: "The Bundle profile for a document" * type MS * type = #document * type ^short = "Always a document" -* timestamp 1..1 MS +* timestamp 1..1 MS +* timestamp obeys medcom-datetime-has-time-and-zone * entry 1.. MS * entry.fullUrl 1..1 MS * entry.resource 1.. MS diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index 46be1cd..ebc49b4 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,4 +1,9 @@ Invariant: medcom-uuidv4 Description: "The value shall correspond to the structure of an UUID version 4" Severity: #error -Expression: "matches('urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" \ No newline at end of file +Expression: "matches('urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" + +Invariant: medcom-datetime-has-time-and-zone +Description: "dateTime must include date, time, and time zone." +Severity: #error +Expression: "$this.toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$')" \ No newline at end of file From 1743d041ee4b5c8d5286b7ed42ff5c285af5beee Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 15:00:49 +0100 Subject: [PATCH 34/79] Updated medcom-uuidv4 --- input/fsh/invariants.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index ebc49b4..e32d5b0 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,7 +1,7 @@ Invariant: medcom-uuidv4 Description: "The value shall correspond to the structure of an UUID version 4" Severity: #error -Expression: "matches('urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" +Expression: "$this.value.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')" Invariant: medcom-datetime-has-time-and-zone Description: "dateTime must include date, time, and time zone." From eaa9b31de1766aee0879b8901fa256ec4d11113f Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 16:03:22 +0100 Subject: [PATCH 35/79] added --- input/fsh/MedComContentDocumentReference.fsh | 4 +++- input/fsh/MedComDocumentPractitionerRole.fsh | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComContentDocumentReference.fsh b/input/fsh/MedComContentDocumentReference.fsh index b0b7a23..5a67c6d 100644 --- a/input/fsh/MedComContentDocumentReference.fsh +++ b/input/fsh/MedComContentDocumentReference.fsh @@ -9,4 +9,6 @@ Description: "A DocumentReference profile to contain actual content of a MedCom * text.status MS * text.div MS * status MS -* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" \ No newline at end of file +* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" +* subject 1.. MS //Er det nødvendigt at referere patienten her også? +* subject only Reference(MedComDocumentPatient) \ No newline at end of file diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh index 28def4e..b6a677f 100644 --- a/input/fsh/MedComDocumentPractitionerRole.fsh +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -2,5 +2,7 @@ Profile: MedComDocumentPractitionerRole Parent: MedComCorePractitionerRole Id: medcom-document-practitionerrole Description: "Document PractitionerRole resource used to describe the role of a healthcare professional or another actor involved in citizen or patient care." +* practitioner 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Practitioner? Og skal det helt over i Core? * practitioner only Reference(MedComDocumentPractitioner) -* organization only Reference(MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) \ No newline at end of file +* organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? (Mindre vigtig end practitioner) +* organization only Reference(MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) From 9e1ab681cc8a42a0ee79a54cbdf3e93e8f02d3a5 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 16:10:06 +0100 Subject: [PATCH 36/79] Updated creationTime --- input/fsh/MedComDocumentBundle.fsh | 1 + input/fsh/MedComDocumentComposition.fsh | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index f638123..c15d9ca 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -10,6 +10,7 @@ Description: "The Bundle profile for a document" * type ^short = "Always a document" * timestamp 1..1 MS * timestamp obeys medcom-datetime-has-time-and-zone +* Timestamp ^short = "[DocumentEntry.creationTime] Date and time that the FHIR Document is created." * entry 1.. MS * entry.fullUrl 1..1 MS * entry.resource 1.. MS diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index e64708d..5379f3a 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -32,8 +32,6 @@ Description: "The profile of the MedCom Document Composition containing the mini * subject 1.. MS * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #bundled -* date 1..1 MS -* date ^short = "[DocumentEntry.creationTime] Date attachment was first created" * event 0..1 MS * event.code MS * event.period.start 0..1 MS From 5915cc4fdd5496f8a436dd9e6bd748fdc08bca20 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 16:11:18 +0100 Subject: [PATCH 37/79] spelling error --- input/fsh/MedComDocumentBundle.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index c15d9ca..01e2232 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -10,7 +10,7 @@ Description: "The Bundle profile for a document" * type ^short = "Always a document" * timestamp 1..1 MS * timestamp obeys medcom-datetime-has-time-and-zone -* Timestamp ^short = "[DocumentEntry.creationTime] Date and time that the FHIR Document is created." +* timestamp ^short = "[DocumentEntry.creationTime] Date and time that the FHIR Document is created." * entry 1.. MS * entry.fullUrl 1..1 MS * entry.resource 1.. MS From 4e412aab2e9bf261a0a3c7cf156ea7ad2d409368 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 16:17:36 +0100 Subject: [PATCH 38/79] Updated invariant for UUID4 --- input/fsh/MedComDocumentBundle.fsh | 1 + input/fsh/invariants.fsh | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index 01e2232..bd0b119 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -4,6 +4,7 @@ Id: medcom-document-bundle Description: "The Bundle profile for a document" * id 1.. //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? * id MS +* id obeys medcom-uuidv4 * identifier 1..1 MS * type MS * type = #document diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index e32d5b0..e4ef384 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,7 +1,10 @@ Invariant: medcom-uuidv4 Description: "The value shall correspond to the structure of an UUID version 4" Severity: #error -Expression: "$this.value.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')" +Expression: "( + ($this.value.exists() and $this.value.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')) or + ($this.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')) +)" Invariant: medcom-datetime-has-time-and-zone Description: "dateTime must include date, time, and time zone." From 905e238e69a33e3477d27df1ad49acd7e3539db7 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 24 Nov 2025 16:18:23 +0100 Subject: [PATCH 39/79] moved comment --- input/fsh/MedComDocumentBundle.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index bd0b119..25ee92b 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -2,9 +2,9 @@ Profile: MedComDocumentBundle Parent: Bundle Id: medcom-document-bundle Description: "The Bundle profile for a document" -* id 1.. //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? +* id 1.. * id MS -* id obeys medcom-uuidv4 +* id obeys medcom-uuidv4 //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? * identifier 1..1 MS * type MS * type = #document From ee5974dc635e30b3ebbad8125f7c11f28f8a272c Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 25 Nov 2025 09:33:10 +0100 Subject: [PATCH 40/79] Added type short --- input/fsh/MedComDocumentComposition.fsh | 1 + 1 file changed, 1 insertion(+) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 5379f3a..01a7b25 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -24,6 +24,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding 1.. MS * type.coding.system MS * type.coding.code MS +* type ^short = "[DocumentEntry.typeCode] Kind of document" * category 1..1 MS * category from $ClassCode (extensible) * category.coding.code 1.. MS From 439fd8aaeea3357cedca28ef00c905bc4e5a7a5d Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 25 Nov 2025 09:55:47 +0100 Subject: [PATCH 41/79] Updated composition --- input/fsh/MedComDocumentComposition.fsh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 01a7b25..62e021a 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -11,13 +11,17 @@ Parent: Composition Id: medcom-document-composition Description: "The profile of the MedCom Document Composition containing the minimum allowed content." //* meta.language 0..1 MS +* id 1.. MS +* text MS +* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." +* text.status MS +* text.div MS * meta.profile 1..1 MS * identifier 1..1 MS * identifier.value 1..1 MS * identifier obeys medcom-uuidv4 //RCH: Skal det være identifier eller identifier.value? * identifier ^short = "The Composition identifier" * confidentiality 1..1 MS -* text MS * status = #final * status MS * type 1..1 MS @@ -54,7 +58,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) +* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) //RCH: Er dette de korrekte valgmuligheder? * attester.party ^type.aggregation = #bundled * title MS * title ^short = "The readable title of the document" @@ -62,7 +66,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * language from $Language (extensible) * language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS -* section.text MS +* section.text MS //RCH: Hvad er dette felt til? * section.entry MS From 767ed9903bdd35deffda3d8fff3172c18742ed18 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 25 Nov 2025 14:47:22 +0100 Subject: [PATCH 42/79] Removed homecommunityid, added MS to extension and updated identifier --- input/fsh/MedComContainedDocumentReference.fsh | 5 +---- input/fsh/MedComDocumentComposition.fsh | 5 ++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 806d664..b20ec4d 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -106,10 +106,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." * context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension MS -* extension contains - medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS -* extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" - +* extension[versionid] MS /* Invariant: apd-dk-rule-1 diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 62e021a..d67cc38 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -18,9 +18,8 @@ Description: "The profile of the MedCom Document Composition containing the mini * text.div MS * meta.profile 1..1 MS * identifier 1..1 MS -* identifier.value 1..1 MS -* identifier obeys medcom-uuidv4 //RCH: Skal det være identifier eller identifier.value? -* identifier ^short = "The Composition identifier" +* identifier.value 1..1 MS +* identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted * confidentiality 1..1 MS * status = #final * status MS From 16a8c7c01bd49e2ba7e2d3e2c9f668f036d75eba Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 25 Nov 2025 15:00:02 +0100 Subject: [PATCH 43/79] Edited identifiers --- input/fsh/MedComDocumentComposition.fsh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index d67cc38..986c600 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -1,6 +1,3 @@ -// This is a simple example of a FSH file. -// This file can be renamed, and additional FSH files can be added. -// SUSHI will look for definitions in any file using the .fsh ending. Alias: $loinc = http://loinc.org Alias: $v3-ActCode = http://terminology.hl7.org/CodeSystem/v3-ActCode Alias: $list-order = http://terminology.hl7.org/CodeSystem/list-order @@ -8,17 +5,17 @@ Alias: $list-empty-reason = http://terminology.hl7.org/CodeSystem/list-empty-rea Profile: MedComDocumentComposition Parent: Composition -Id: medcom-document-composition +Id: medcom-document-composition //RCH: Er det nok at omdøbe denne til formatcode, men lade profilen beholde sit navn? Description: "The profile of the MedCom Document Composition containing the minimum allowed content." -//* meta.language 0..1 MS * id 1.. MS * text MS * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS * meta.profile 1..1 MS -* identifier 1..1 MS -* identifier.value 1..1 MS +* identifier 1.. MS +* identifier.system 1.. MS +* identifier.value 1.. MS * identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted * confidentiality 1..1 MS * status = #final From cc61f4e7e59ca9036934c8856a71f7bb3d2dd4f2 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 25 Nov 2025 15:12:57 +0100 Subject: [PATCH 44/79] Update MedComContainedDocumentReference.fsh --- input/fsh/MedComContainedDocumentReference.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index b20ec4d..f40d182 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -77,10 +77,10 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.format.display 1.. MS * content.attachment.size 0.. MS * content.attachment.title 1.. MS -// * content.attachment.url 0.. MS RCH: Stemmer ikke overens med MHD. Hvad gør vi med denne? +* content.attachment.url MS * content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" * content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document" -* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" //RCH: Hvad kan vi indsætte som eksempel her? Absolut eller relativ reference? +* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found." * context 1.. MS * context.event 0.. MS * context.event.coding.code 1.. MS From 37ac1668522edac40d51cf53c3e5bfb4cb35a3f8 Mon Sep 17 00:00:00 2001 From: SGA-MedCom <61416377+SGA-MedCom@users.noreply.github.com> Date: Wed, 26 Nov 2025 13:37:39 +0100 Subject: [PATCH 45/79] Fjerne slice for healthcareFacilityTypeCode og practiceSettingCode --- .../fsh/MedComContainedDocumentReference.fsh | 6 ++-- ...mDocumentAuthorInstitutionOrganization.fsh | 29 ------------------- input/fsh/MedComDocumentComposition.fsh | 4 +-- input/fsh/MedComDocumentPractitionerRole.fsh | 2 +- 4 files changed, 6 insertions(+), 35 deletions(-) delete mode 100644 input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index f40d182..a6215f8 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -25,7 +25,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.code 1.. MS * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? +* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -34,7 +34,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.system 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS -* author only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) +* author only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type @@ -44,7 +44,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th institution 1..1 and person 0..1 * author[institution] MS -* author[institution] only Reference(MedComDocumentAuthorInstitutionOrganization) +* author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS * author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Bør vi lave en coonstrain med at en Practitionerrole skal have en practitioner? diff --git a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh b/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh deleted file mode 100644 index a5f9c43..0000000 --- a/input/fsh/MedComDocumentAuthorInstitutionOrganization.fsh +++ /dev/null @@ -1,29 +0,0 @@ -Profile: MedComDocumentAuthorInstitutionOrganization -Parent: MedComDocumentOrganization -Id: medcom-document-author-institution-organization -Description: "An Author Institution Organization including requirements for a MedCom Document Organization resource" - -* type ^slicing.discriminator[0].type = #value -* type ^slicing.discriminator[0].path = "coding.system" -* type ^slicing.rules = #open - -* type 2..* MS - -* type contains - healthcareFacilityTypeCode 1..1 and - practiceSettingCode 1..1 - -* type[healthcareFacilityTypeCode] from $FacilityType -* type[healthcareFacilityTypeCode] 1..1 MS -* type[healthcareFacilityTypeCode].coding 1..1 MS -//* type[healthcareFacilityTypeCode].coding.system = $FacilityType //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. -* type[healthcareFacilityTypeCode].coding.system 1..1 MS -* type[healthcareFacilityTypeCode].coding.code 1..1 MS //RCH: Skal dette i narrativet? - -* type[practiceSettingCode] from $PracticeSetting -* type[practiceSettingCode] 1..1 MS -* type[practiceSettingCode].coding 1..1 MS -//* type[practiceSettingCode].coding.system = $PracticeSetting //RCH: Vi skal lave en binding på højrere niveau, i stedet for dette. -* type[practiceSettingCode].coding.system 1..1 MS -* type[practiceSettingCode].coding.code 1..1 MS //RCH: Skal dette i narrativet? - diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 986c600..1b31617 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -46,7 +46,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * author contains institution 1..1 MS and person 0..1 MS -* author[institution] only Reference(MedComDocumentAuthorInstitutionOrganization) +* author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "The organization who authored the document" * author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) * author[person] ^short = "The person who authored the document" @@ -54,7 +54,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) //RCH: Er dette de korrekte valgmuligheder? +* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization) //RCH: Er dette de korrekte valgmuligheder? * attester.party ^type.aggregation = #bundled * title MS * title ^short = "The readable title of the document" diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh index b6a677f..9969f65 100644 --- a/input/fsh/MedComDocumentPractitionerRole.fsh +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -5,4 +5,4 @@ Description: "Document PractitionerRole resource used to describe the role of a * practitioner 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Practitioner? Og skal det helt over i Core? * practitioner only Reference(MedComDocumentPractitioner) * organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? (Mindre vigtig end practitioner) -* organization only Reference(MedComDocumentOrganization or MedComDocumentAuthorInstitutionOrganization) +* organization only Reference(MedComDocumentOrganization) From 8cab2e3a5711124d62cbe0cd1398e37916f81816 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 26 Nov 2025 15:01:06 +0100 Subject: [PATCH 46/79] updated comment --- input/fsh/MedComContainedDocumentReference.fsh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index a6215f8..d1c7194 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -67,7 +67,6 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" * content.attachment.language 1.. MS * content.attachment.language from $Language (extensible) -//* content.attachment.language //RCH: Hvad gør vi med denne? Den er krav i MHD, og er sproget på selve den kliniske vedhæftning (EKG PDF). Skal vi have samme valueset som language i sig selv? * content.attachment.hash 0.. MS * content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" * content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" @@ -93,12 +92,12 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.facilityType 1.. MS * context.facilityType.coding.code 1.. MS * context.facilityType.coding.system 1.. MS -* context.facilityType.coding.system from $FacilityType (extensible) //RCH: Undersøg om den er ens med DKCores value set +* context.facilityType.coding.system from $FacilityType (extensible) //RCH: Vi skal bruges vores eget selvom DkCore har et også. * context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" * context.practiceSetting 1.. MS * context.practiceSetting.coding.code 1.. MS * context.practiceSetting.coding.system 1.. MS -* context.practiceSetting.coding.system from $PracticeSetting (extensible) //RCH: Undersøg om den er ens med DKCores value set +* context.practiceSetting.coding.system from $PracticeSetting (extensible) //RCH: Vi skal bruges vores eget selvom DkCore har et også. * context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" * context.related 0..* MS * context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" From 11cbb6e4b571018ddf168e2ea082ae94cffb4d03 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 27 Nov 2025 15:01:36 +0100 Subject: [PATCH 47/79] Updated --- input/fsh/Alias.fsh | 2 + .../fsh/MedComContainedDocumentReference.fsh | 38 ++++-- input/fsh/MedComDocumentBundle.fsh | 4 +- input/fsh/MedComDocumentReferenceOLD.fsh | 112 ------------------ input/fsh/invariants.fsh | 20 +++- 5 files changed, 46 insertions(+), 130 deletions(-) delete mode 100644 input/fsh/MedComDocumentReferenceOLD.fsh diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index a68ecbe..5a30bb1 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -50,6 +50,8 @@ Alias: $Language = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core- //Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-apd-formatcode-VS Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-formatcode-VS +Alias: $TypeCode = https://medcomfhir.dk/ig/xdsmetadata/1.0.1/ValueSet-MedCom-ihe-core-typecode-VS.html + //Alias: $HomeCommunityID = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-apd-homeCommunityId-VS Alias: $HomeCommunityID = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-homeCommunityId-VS diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index d1c7194..8aa2fb8 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -7,14 +7,18 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS -* masterIdentifier 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? + +// uniqueId +* masterIdentifier 1..1 MS * masterIdentifier.value 1..1 MS * masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" -* identifier[entryUUID] 1..1 MS //RCH: Skal den være 1.. hvis den også kan leveres af infrastrukturen? + +// entryUUID +* identifier[entryUUID] 1..1 MS * identifier[entryUUID].value 1..1 MS -* identifier[entryUUID].system 1..1 +* identifier[entryUUID].system 1..1 MS //urn:ietf:rfc:3986 * identifier[entryUUID] ^short = "[DocumentEntry.entryUUID] Identifier for the document" -* identifier[entryUUID].value obeys uuid +* identifier[entryUUID].value obeys medcom-uuid * status MS * status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" // TypeCode @@ -23,6 +27,8 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding 1.. MS * type.coding.system 1.. MS * type.coding.code 1.. MS +* type.coding.display 1.. MS +* type from $TypeCode (required) * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" * authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? @@ -32,6 +38,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category from $ClassCode (extensible) * category.coding.code 1.. MS * category.coding.system 1.. MS +* category.coding.display 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS * author only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) @@ -49,8 +56,8 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[person] MS * author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Bør vi lave en coonstrain med at en Practitionerrole skal have en practitioner? * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" -* securityLabel 1.. MS -* securityLabel.coding 1..* MS +* securityLabel 1..1 MS +* securityLabel.coding 1..1 MS * securityLabel.coding.system 1.. MS * securityLabel.coding.code 1.. MS * securityLabel ^short = "[DocumentEntry.confidentialityCode] Document security-tags" @@ -60,10 +67,12 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" * content.attachment.creation ^short = "[DocumentEntry.creationTime] Date attachment was first created" * content.attachment.creation 1.. MS +* content.attachment.creation obeys medcom-datetime-has-time-zulu * content MS * content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." * content.attachment.contentType 1.. MS * content.attachment.contentType from $ContentType +* content.attachment MS * content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" * content.attachment.language 1.. MS * content.attachment.language from $Language (extensible) @@ -74,6 +83,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.format.system 1.. MS * content.format.code 1.. MS * content.format.display 1.. MS +* content.format from $FormatCode (required) * content.attachment.size 0.. MS * content.attachment.title 1.. MS * content.attachment.url MS @@ -86,22 +96,28 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.event.coding.system 1.. MS * context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented" * context.period MS -* context.period.start MS +* context.period.start 1.. MS * context.period.end MS * context.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented" * context.facilityType 1.. MS +* context.facilityType.coding 1..1 MS * context.facilityType.coding.code 1.. MS * context.facilityType.coding.system 1.. MS -* context.facilityType.coding.system from $FacilityType (extensible) //RCH: Vi skal bruges vores eget selvom DkCore har et også. +* context.facilityType.coding.display 1.. MS +* context.facilityType from $FacilityType (required) //RCH: Vi skal bruges vores eget selvom DkCore har et også. * context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" * context.practiceSetting 1.. MS +* context.practiceSetting.coding 1..1 MS * context.practiceSetting.coding.code 1.. MS * context.practiceSetting.coding.system 1.. MS -* context.practiceSetting.coding.system from $PracticeSetting (extensible) //RCH: Vi skal bruges vores eget selvom DkCore har et også. +* context.practiceSetting.coding.display 1.. MS +* context.practiceSetting from $PracticeSetting (required) //RCH: Vi skal bruges vores eget selvom DkCore har et også. * context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" * context.related 0..* MS * context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" * context.sourcePatientInfo 1..1 MS +* context.sourcePatientInfo.reference 1.. MS +* context.sourcePatientInfo.identifier 1.. MS * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." * context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension MS @@ -113,9 +129,9 @@ Description: "Where formatCode is 'urn:ad:dk:medcom:appointmentsummary:full', th Severity: #error Expression: "where(type.coding.where(system = 'http://medcomfhir.dk/ig/xdsmetadata/CodeSystem/dk-ihe-typecode-de-regenstrief').code = '56446-8').context.event.coding.code = 'ALAL01'" */ - +/* Invariant: uuid Description: "General UUID expression" Severity: #error Expression: "value.substring(9).matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" - +*/ \ No newline at end of file diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index 25ee92b..d91b56c 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -4,13 +4,13 @@ Id: medcom-document-bundle Description: "The Bundle profile for a document" * id 1.. * id MS -* id obeys medcom-uuidv4 //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? +* id obeys medcom-uuid //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? * identifier 1..1 MS * type MS * type = #document * type ^short = "Always a document" * timestamp 1..1 MS -* timestamp obeys medcom-datetime-has-time-and-zone +* timestamp obeys medcom-datetime-has-time-offset-zulu * timestamp ^short = "[DocumentEntry.creationTime] Date and time that the FHIR Document is created." * entry 1.. MS * entry.fullUrl 1..1 MS diff --git a/input/fsh/MedComDocumentReferenceOLD.fsh b/input/fsh/MedComDocumentReferenceOLD.fsh deleted file mode 100644 index 7810106..0000000 --- a/input/fsh/MedComDocumentReferenceOLD.fsh +++ /dev/null @@ -1,112 +0,0 @@ -Profile: MedComDocumentReferenceOLD -Parent: DocumentReference -Id: medcom-documentreference-OLD -Description: "A profile stating the rules, when exchanging a FHIR document." -* masterIdentifier 1..1 MS -* masterIdentifier.value 1..1 MS -* masterIdentifier ^short = "[DocumentEntry.uniqueId] Master Version Specific Identifier" -* identifier 1..1 MS -* identifier.value 1..1 MS -* identifier ^short = "[DocumentEntry.entryUUID] Identifier for the document" -* identifier obeys uuidOLD -* status MS -* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" -// TypeCode -* type 1.. MS -* type ^short = "[DocumentEntry.typeCode] Kind of document" -* type.coding.system 1.. MS -* type.coding.code 1.. MS -* authenticator 0..1 MS -* authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner) -* authenticator ^type.aggregation = #contained -// ClassCode -* category 1..1 MS -* category from $ClassCode (extensible) -* category.coding.code 1.. MS -* category.coding.system 1.. MS -* category ^short = "[DocumentEntry.class] Categorization of document" -* author 1..2 MS -* author ^type.aggregation = #contained -* author ^short = "[DocumentEntry.author] Who and/or what authored the document" -* author ^slicing.discriminator.type = #type - * ^slicing.discriminator.path = "$this.resolve()" - * ^slicing.rules = #closed -* author contains - institution 1..1 and - person 0..1 -* author[institution] MS -* author[institution] only Reference(MedComDocumentOrganization) -* author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" -* author[person] MS -* author[person] only Reference(MedComDocumentPractitioner) -* author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" -* securityLabel 1.. MS -* securityLabel ^short = "[DocumentEntry.confidentialityCode] Document security-tags" -* subject 1..1 MS -* subject only Reference(MedComDocumentPatient) -* subject ^type.aggregation = #contained -* subject ^short = "[DocumentEntry.sourcePatientInfo, DocumentEntry.sourcePatientId] Who/what is the subject of the document" -* content MS -* content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." -* content.attachment.contentType 1.. MS -* content.attachment.contentType from $ContentType -* content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" -* content.attachment.language 1.. MS -* content.attachment.language from $Language (extensible) -* content.attachment.creation ^short = "[DocumentEntry.creationTime] Date attachment was first created" -* content.attachment.creation 1.. MS -* content.attachment.hash 0.. MS -* content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" -* content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" -* content.format 1.. MS -/* * content.format.coding.code 1.. MS -* content.format.coding.system 1.. MS */ -* content.attachment.size 0.. MS -* content.attachment.title 1.. MS -* content.attachment.url 0.. MS -* content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" -* content.attachment.title ^short = "[DocumentEntry.title] Label to display in place of the data" -* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found" -* context 1.. MS -* context.event 0..1 MS -* context.event.coding.code 1.. MS -* context.event.coding.system 1.. MS -* context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented" -* context.period MS -* context.period.start MS -* context.period.end MS -* context.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented" -* context.facilityType 1.. MS -* context.facilityType.coding.code 1.. MS -* context.facilityType.coding.system 1.. MS -* context.facilityType.coding.system from $FacilityType (extensible) -* context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" -* context.practiceSetting 1.. MS -* context.practiceSetting.coding.code 1.. MS -* context.practiceSetting.coding.system 1.. MS -* context.practiceSetting.coding.system from $PracticeSetting (extensible) -* context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" -* context.related 0..* MS -* context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" -* context.sourcePatientInfo 1..1 MS -* context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." -* extension contains - medcom-document-homecommunityid-extension named homeCommunityid 1..1 MS and - medcom-document-version-id-extension named versionid 1..1 MS -* extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed" -* extension[versionid] ^short = "Specifies the version of the DocumentReference for a standard." - - - -/* Invariant: apd-dk-rule-1 -Description: "Where formatCode is 'urn:ad:dk:medcom:appointmentsummary:full', the eventCode must be 'ALAL01' (hjertesygdomme)" -Severity: #error -Expression: "where(type.coding.where(system = 'http://medcomfhir.dk/ig/xdsmetadata/CodeSystem/dk-ihe-typecode-de-regenstrief').code = '56446-8').context.event.coding.code = 'ALAL01'" -*/ - -Invariant: uuidOLD -Description: "General UUID expression" -Severity: #error -Expression: "value.matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" - diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index e4ef384..6d5db2e 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,12 +1,22 @@ -Invariant: medcom-uuidv4 +Invariant: medcom-uuid Description: "The value shall correspond to the structure of an UUID version 4" Severity: #error Expression: "( - ($this.value.exists() and $this.value.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')) or - ($this.matches('^urn:uuid:[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$')) + ($this.value.is(FHIR.uuid)) or + ($this.is(FHIR.uuid)) )" -Invariant: medcom-datetime-has-time-and-zone +Invariant: medcom-datetime-has-time-offset-zulu +//"2025-11-27T13:34:56+01:00" +//"2025-11-27T12:34:56.789Z" +//"2025-06-27T14:34:56+02:00" +//"2025-06-27T12:34:56.789Z" Description: "dateTime must include date, time, and time zone." Severity: #error -Expression: "$this.toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$')" \ No newline at end of file +Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$')" + +Invariant: medcom-datetime-has-time-zulu +//"2025-11-27T12:34:56.789Z" +Description: "dateTime must include date, time, and time zone." +Severity: #error +Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?Z$')" \ No newline at end of file From c809c5643e09d82714bbdba31bd982cb085029fb Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 27 Nov 2025 22:29:32 +0100 Subject: [PATCH 48/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 4 ++-- input/fsh/MedComContentDocumentReference.fsh | 14 -------------- input/fsh/MedComDocumentBundle.fsh | 2 +- input/fsh/invariants.fsh | 10 +++++----- 4 files changed, 8 insertions(+), 22 deletions(-) delete mode 100644 input/fsh/MedComContentDocumentReference.fsh diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 8aa2fb8..e63ed08 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -16,9 +16,9 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th // entryUUID * identifier[entryUUID] 1..1 MS * identifier[entryUUID].value 1..1 MS -* identifier[entryUUID].system 1..1 MS //urn:ietf:rfc:3986 +* identifier[entryUUID].system 1..1 MS //urn:ietf:rfc:3986 https://build.fhir.org/datatypes-examples.html * identifier[entryUUID] ^short = "[DocumentEntry.entryUUID] Identifier for the document" -* identifier[entryUUID].value obeys medcom-uuid +* identifier[entryUUID].value obeys medcom-uuid-v4-xor-v5 * status MS * status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" // TypeCode diff --git a/input/fsh/MedComContentDocumentReference.fsh b/input/fsh/MedComContentDocumentReference.fsh deleted file mode 100644 index 5a67c6d..0000000 --- a/input/fsh/MedComContentDocumentReference.fsh +++ /dev/null @@ -1,14 +0,0 @@ -Profile: MedComContentDocumentReference -Parent: DocumentReference -Id: medcom-content-documentreference -Description: "A DocumentReference profile to contain actual content of a MedCom FHIR document." -* id 1.. MS -* identifier 1..1 MS //Skal der identifiers på alle ressourcer? Skal de være uuid v4? Eller er det ikke relevant for dokumentdeling? -* text MS -* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." -* text.status MS -* text.div MS -* status MS -* status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" -* subject 1.. MS //Er det nødvendigt at referere patienten her også? -* subject only Reference(MedComDocumentPatient) \ No newline at end of file diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index d91b56c..ed9a0c7 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -4,7 +4,7 @@ Id: medcom-document-bundle Description: "The Bundle profile for a document" * id 1.. * id MS -* id obeys medcom-uuid //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? +* id obeys medcom-uuid-v4-xor-v5 //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? * identifier 1..1 MS * type MS * type = #document diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index 6d5db2e..24d8c32 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,10 +1,10 @@ -Invariant: medcom-uuid -Description: "The value shall correspond to the structure of an UUID version 4" +Invariant: medcom-uuid-v4-xor-v5 +Description: "The value shall correspond to the structure of an UUID version 4 xor UUID version 5" Severity: #error Expression: "( - ($this.value.is(FHIR.uuid)) or - ($this.is(FHIR.uuid)) -)" + ($this.value.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) xor + ($this.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) +)" //Simpel: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} https://chatgpt.com/c/6928b70c-514c-8332-8d42-849cf6b4960d Invariant: medcom-datetime-has-time-offset-zulu //"2025-11-27T13:34:56+01:00" From aec7d7477adecdde5838255eb9426d4f17d2c36f Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 27 Nov 2025 22:48:08 +0100 Subject: [PATCH 49/79] updated --- input/fsh/MedComContainedDocumentReference.fsh | 5 +++-- input/fsh/invariants.fsh | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index e63ed08..0ae96f7 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -1,5 +1,5 @@ Profile: MedComContainedDocumentReference -Parent: MedComMinimalDocumentReference //Skal vi nedarve direkte fra HL7 eller indføre i denne IG midlertidigt? +Parent: MedComMinimalDocumentReference //OBS: Nedarv direkte fra DkCore når den udgives Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." * id 1.. MS @@ -16,7 +16,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th // entryUUID * identifier[entryUUID] 1..1 MS * identifier[entryUUID].value 1..1 MS -* identifier[entryUUID].system 1..1 MS //urn:ietf:rfc:3986 https://build.fhir.org/datatypes-examples.html +* identifier[entryUUID].system 1..1 MS //https://profiles.ihe.net/ITI/MHD/4.2.2/StructureDefinition-IHE.MHD.EntryUUID.Identifier.html * identifier[entryUUID] ^short = "[DocumentEntry.entryUUID] Identifier for the document" * identifier[entryUUID].value obeys medcom-uuid-v4-xor-v5 * status MS @@ -122,6 +122,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension MS * extension[versionid] MS +//* extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." /* Invariant: apd-dk-rule-1 diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index 24d8c32..fb80f06 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -2,8 +2,8 @@ Invariant: medcom-uuid-v4-xor-v5 Description: "The value shall correspond to the structure of an UUID version 4 xor UUID version 5" Severity: #error Expression: "( - ($this.value.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) xor - ($this.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) + ($this.value.matches('^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) xor + ($this.matches('^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) )" //Simpel: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} https://chatgpt.com/c/6928b70c-514c-8332-8d42-849cf6b4960d Invariant: medcom-datetime-has-time-offset-zulu From 660bf400fc2bba5d12279fb1d0ad146221880e31 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 27 Nov 2025 22:49:18 +0100 Subject: [PATCH 50/79] Update MedComContainedDocumentReference.fsh --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 0ae96f7..ab39534 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -122,7 +122,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension MS * extension[versionid] MS -//* extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." +* extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." /* Invariant: apd-dk-rule-1 From 4e9fbb200c8e7d5ed809abe6d5614303e504467c Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 28 Nov 2025 10:06:43 +0100 Subject: [PATCH 51/79] Updated DocRef and Composition --- .../fsh/MedComContainedDocumentReference.fsh | 24 +++++++++---------- input/fsh/MedComDocumentComposition.fsh | 20 ++++++++++------ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index ab39534..61873ea 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -31,7 +31,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type from $TypeCode (required) * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? +* authenticator only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -41,7 +41,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.display 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS -* author only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or MedComDocumentOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) +* author only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) * author ^type.aggregation = #contained * author ^short = "[DocumentEntry.author] Who and/or what authored the document" * author ^slicing.discriminator.type = #type @@ -54,7 +54,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" * author[person] MS -* author[person] only Reference(MedComDocumentPractitioner or MedComCorePractitionerRole or Device or MedComDocumentPatient) //RCH: Bør vi lave en coonstrain med at en Practitionerrole skal have en practitioner? +* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) //OBS: Link dit PractitionerRole virker ikke * author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" * securityLabel 1..1 MS * securityLabel.coding 1..1 MS @@ -87,34 +87,34 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.attachment.size 0.. MS * content.attachment.title 1.. MS * content.attachment.url MS -* content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content" -* content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document" +* content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content." +* content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document." * content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found." * context 1.. MS * context.event 0.. MS * context.event.coding.code 1.. MS * context.event.coding.system 1.. MS -* context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented" +* context.event ^short = "[DocumentEntry.eventCodeList] Main clinical acts documented." * context.period MS * context.period.start 1.. MS * context.period.end MS -* context.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented" +* context.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented." * context.facilityType 1.. MS * context.facilityType.coding 1..1 MS * context.facilityType.coding.code 1.. MS * context.facilityType.coding.system 1.. MS * context.facilityType.coding.display 1.. MS -* context.facilityType from $FacilityType (required) //RCH: Vi skal bruges vores eget selvom DkCore har et også. -* context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen" +* context.facilityType from $FacilityType (required) +* context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen." * context.practiceSetting 1.. MS * context.practiceSetting.coding 1..1 MS * context.practiceSetting.coding.code 1.. MS * context.practiceSetting.coding.system 1.. MS * context.practiceSetting.coding.display 1.. MS -* context.practiceSetting from $PracticeSetting (required) //RCH: Vi skal bruges vores eget selvom DkCore har et også. -* context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)" +* context.practiceSetting from $PracticeSetting (required) +* context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)." * context.related 0..* MS -* context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" +* context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources." * context.sourcePatientInfo 1..1 MS * context.sourcePatientInfo.reference 1.. MS * context.sourcePatientInfo.identifier 1.. MS diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 1b31617..7e2c80c 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -16,26 +16,31 @@ Description: "The profile of the MedCom Document Composition containing the mini * identifier 1.. MS * identifier.system 1.. MS * identifier.value 1.. MS -* identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted +* identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted - måske bare i en short. * confidentiality 1..1 MS * status = #final * status MS * type 1..1 MS -* type.coding 1.. MS -* type.coding.system MS -* type.coding.code MS * type ^short = "[DocumentEntry.typeCode] Kind of document" +* type.coding 1.. MS +* type.coding.system 1.. MS +* type.coding.code 1.. MS +* type.coding.display 1.. MS +* type from $TypeCode (required) //OBS: Link ser underligt ud i IGen? * category 1..1 MS * category from $ClassCode (extensible) +* category.coding 1..1 MS * category.coding.code 1.. MS * category.coding.system 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * subject 1.. MS * subject only Reference(MedComDocumentPatient) * subject ^type.aggregation = #bundled -* event 0..1 MS +* event 1..1 MS * event.code MS -* event.period.start 0..1 MS +* event.period 1..1 MS +* event.period ^short = "[DocumentEntry.serviceStartTime, DocumentEntry.serviceStopTime] Time of service that is being documented." +* event.period.start 1..1 MS * event.period.end 0..1 MS * event.detail 0..* MS * event.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" @@ -57,13 +62,14 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization) //RCH: Er dette de korrekte valgmuligheder? * attester.party ^type.aggregation = #bundled * title MS -* title ^short = "The readable title of the document" +* title ^short = "[DocumentEntry.title] The readable title of the document." * language 1..1 MS * language from $Language (extensible) * language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS * section.text MS //RCH: Hvad er dette felt til? * section.entry MS +* meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." /* Instance: CompositionExample From 31af072b5732aaea1a677eddba3458149fbef9b6 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 28 Nov 2025 11:15:20 +0100 Subject: [PATCH 52/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 8 ++++---- input/fsh/MedComDocumentBundle.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 7 +++++-- input/fsh/invariants.fsh | 14 ++++++-------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 61873ea..5c8d129 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -18,7 +18,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * identifier[entryUUID].value 1..1 MS * identifier[entryUUID].system 1..1 MS //https://profiles.ihe.net/ITI/MHD/4.2.2/StructureDefinition-IHE.MHD.EntryUUID.Identifier.html * identifier[entryUUID] ^short = "[DocumentEntry.entryUUID] Identifier for the document" -* identifier[entryUUID].value obeys medcom-uuid-v4-xor-v5 +* identifier[entryUUID].value obeys medcom-uuid * status MS * status ^short = "[DocumentEntry.availabilityStatus] current = active | superseded = deprecated" // TypeCode @@ -30,8 +30,8 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.display 1.. MS * type from $TypeCode (required) * authenticator 0..1 MS -* authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document" -* authenticator only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization) //RCH: Mangler patienten og DkCoreRelatedPerson her? +* authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document." +* authenticator only Reference(MedComDocumentPractitioner) * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS @@ -89,7 +89,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * content.attachment.url MS * content.attachment.size ^short = "[DocumentEntry.size] Number of bytes of content." * content.attachment.title ^short = "[DocumentEntry.title] The readable title of the document." -* content.attachment.url ^short = "[DocumentEntry.URI] Uri where the data can be found." +* content.attachment.url ^short = "[DocumentEntry.URI] URI where the data can be found." * context 1.. MS * context.event 0.. MS * context.event.coding.code 1.. MS diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index ed9a0c7..abfa960 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -4,7 +4,7 @@ Id: medcom-document-bundle Description: "The Bundle profile for a document" * id 1.. * id MS -* id obeys medcom-uuid-v4-xor-v5 //RCH: Hvilke krav stiller vi til formen på id, når det skal matche identifier i DocRef? Skal den også leve op til urn:uuid: + uuid? +* id obeys medcom-uuid * identifier 1..1 MS * type MS * type = #document diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 7e2c80c..9d2b428 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -15,7 +15,10 @@ Description: "The profile of the MedCom Document Composition containing the mini * meta.profile 1..1 MS * identifier 1.. MS * identifier.system 1.. MS +* identifier.system ^short = "[DocumentEntry.uniqueId] Sender organization OID (Object Identifier). Example: 1.2.208.184 (MedCom OID)." * identifier.value 1.. MS +* identifier.value obeys medcom-uuid +* identifier.value ^short = "[DocumentEntry.uniqueId] UUID." * identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted - måske bare i en short. * confidentiality 1..1 MS * status = #final @@ -59,7 +62,8 @@ Description: "The profile of the MedCom Document Composition containing the mini * attester 0..1 MS * attester.party 0..1 MS * attester.mode MS -* attester.party only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization) //RCH: Er dette de korrekte valgmuligheder? +* attester.party only Reference(MedComDocumentPractitioner) +* attester.party ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document." * attester.party ^type.aggregation = #bundled * title MS * title ^short = "[DocumentEntry.title] The readable title of the document." @@ -71,7 +75,6 @@ Description: "The profile of the MedCom Document Composition containing the mini * section.entry MS * meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." - /* Instance: CompositionExample InstanceOf: MedComDocumentComposition Usage: #example diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index fb80f06..f7dbb16 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,16 +1,14 @@ -Invariant: medcom-uuid-v4-xor-v5 +Invariant: medcom-uuid Description: "The value shall correspond to the structure of an UUID version 4 xor UUID version 5" Severity: #error Expression: "( - ($this.value.matches('^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) xor - ($this.matches('^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[45][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$')) -)" //Simpel: [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} https://chatgpt.com/c/6928b70c-514c-8332-8d42-849cf6b4960d + ($this.value.matches('^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')) xor + ($this.matches('^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')) +)" Invariant: medcom-datetime-has-time-offset-zulu -//"2025-11-27T13:34:56+01:00" -//"2025-11-27T12:34:56.789Z" -//"2025-06-27T14:34:56+02:00" -//"2025-06-27T12:34:56.789Z" +//"2025-11-27T13:34:56+01:00" = "2025-11-27T12:34:56.789Z" +//"2025-06-27T14:34:56+02:00" = "2025-06-27T12:34:56.789Z" Description: "dateTime must include date, time, and time zone." Severity: #error Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$')" From 1e7675a661143d350dee811bc3ae4f605fc27463 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 28 Nov 2025 15:21:56 +0100 Subject: [PATCH 53/79] Updated --- input/fsh/Alias.fsh | 3 ++ .../fsh/MedComContainedDocumentReference.fsh | 38 +++++++++++++++++++ input/fsh/MedComDocumentComposition.fsh | 27 ++++++++++++- input/fsh/MedComDocumentOrganization.fsh | 5 +++ input/fsh/MedComDocumentPractitioner.fsh | 10 ++++- input/fsh/MedComDocumentPractitionerRole.fsh | 6 +++ input/fsh/MedComDocumentSourcePatient.fsh | 14 ++++++- .../fsh/MedComDocumentVersionIDExtension.fsh | 2 + 8 files changed, 100 insertions(+), 5 deletions(-) diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index 5a30bb1..99f572c 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -2,6 +2,9 @@ Alias: $ActCodes = http://terminology.hl7.org/CodeSystem/v3-ActCode Alias: $RequestPriority = http://medcomfhir.dk/ig/terminology/ValueSet/medcom-careCommunication-requestPriority */ + +Alias: $obligation = http://hl7.org/fhir/StructureDefinition/obligation + Alias: $QrdTypeCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-dk-ihe-qrd-typecode-VS Alias: $QrdEventCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-dk-ihe-qrd-eventcodelist-VS Alias: $QrdHomeCommunityID = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-qrd-homeCommunityId-VS diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index 5c8d129..a33c588 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -124,6 +124,44 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * extension[versionid] MS * extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." +* insert ProducerShallPutInNarrative(id) +* insert ProducerShallPutInNarrative(author[institution]) +* insert ProducerShallPutInNarrative(author[person]) +* insert ProducerShallPutInNarrative(subject) +* insert ProducerShallPutInNarrative(status) +* insert ProducerShallPutInNarrative(type.coding.system) +* insert ProducerShallPutInNarrative(type.coding.code) +* insert ProducerShallPutInNarrative(type.coding.display) +* insert ProducerShallPutInNarrative(authenticator) +* insert ProducerShallPutInNarrative(category.coding.code) +* insert ProducerShallPutInNarrative(category.coding.system) +* insert ProducerShallPutInNarrative(category.coding.display) +* insert ProducerShallPutInNarrative(identifier[entryUUID].value) +* insert ProducerShallPutInNarrative(identifier[entryUUID].system) +* insert ProducerShallPutInNarrative(securityLabel.coding.code) +* insert ProducerShallPutInNarrative(securityLabel.coding.system) +* insert ProducerShallPutInNarrative(content.attachment.creation) +* insert ProducerShallPutInNarrative(content.attachment.contentType) +* insert ProducerShallPutInNarrative(content.attachment.language) +* insert ProducerShallPutInNarrative(content.format.system) +* insert ProducerShallPutInNarrative(content.format.code) +* insert ProducerShallPutInNarrative(content.format.display) +* insert ProducerShallPutInNarrative(content.attachment.size) +* insert ProducerShallPutInNarrative(content.attachment.title) +* insert ProducerShallPutInNarrative(content.attachment.url) +* insert ProducerShallPutInNarrative(context.event.coding.code) +* insert ProducerShallPutInNarrative(context.event.coding.system) +* insert ProducerShallPutInNarrative(context.period.start) +* insert ProducerShallPutInNarrative(context.period.end) +* insert ProducerShallPutInNarrative(context.facilityType.coding.code) +* insert ProducerShallPutInNarrative(context.facilityType.coding.system) +* insert ProducerShallPutInNarrative(context.facilityType.coding.display) +* insert ProducerShallPutInNarrative(context.practiceSetting.coding.code) +* insert ProducerShallPutInNarrative(context.practiceSetting.coding.system) +* insert ProducerShallPutInNarrative(context.practiceSetting.coding.display) +* insert ProducerShallPutInNarrative(context.related) +* insert ProducerShallPutInNarrative(context.sourcePatientInfo.reference) +* insert ProducerShallPutInNarrative(context.sourcePatientInfo.identifier) /* Invariant: apd-dk-rule-1 Description: "Where formatCode is 'urn:ad:dk:medcom:appointmentsummary:full', the eventCode must be 'ALAL01' (hjertesygdomme)" diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 9d2b428..ceb71ec 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -5,14 +5,14 @@ Alias: $list-empty-reason = http://terminology.hl7.org/CodeSystem/list-empty-rea Profile: MedComDocumentComposition Parent: Composition -Id: medcom-document-composition //RCH: Er det nok at omdøbe denne til formatcode, men lade profilen beholde sit navn? +Id: medcom-document-composition Description: "The profile of the MedCom Document Composition containing the minimum allowed content." * id 1.. MS * text MS * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS -* meta.profile 1..1 MS +* meta.profile 1..1 MS //RCH: Beslut om profilens navn må ændre sig med versionen - hvis den skal være = formatcode. * identifier 1.. MS * identifier.system 1.. MS * identifier.system ^short = "[DocumentEntry.uniqueId] Sender organization OID (Object Identifier). Example: 1.2.208.184 (MedCom OID)." @@ -35,6 +35,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * category.coding 1..1 MS * category.coding.code 1.. MS * category.coding.system 1.. MS +* category.coding.display 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * subject 1.. MS * subject only Reference(MedComDocumentPatient) @@ -75,6 +76,28 @@ Description: "The profile of the MedCom Document Composition containing the mini * section.entry MS * meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." +* insert ProducerShallPutInNarrative(id) +* insert ProducerShallPutInNarrative(confidentiality) +* insert ProducerShallPutInNarrative(status) +* insert ProducerShallPutInNarrative(type.coding.system) +* insert ProducerShallPutInNarrative(type.coding.code) +* insert ProducerShallPutInNarrative(type.coding.display) +* insert ProducerShallPutInNarrative(category.coding.code) +* insert ProducerShallPutInNarrative(category.coding.system) +* insert ProducerShallPutInNarrative(category.coding.display) +* insert ProducerShallPutInNarrative(subject) +* insert ProducerShallPutInNarrative(event.code) +* insert ProducerShallPutInNarrative(event.period.start) +* insert ProducerShallPutInNarrative(event.period.end) +* insert ProducerShallPutInNarrative(event.detail) +* insert ProducerShallPutInNarrative(author[institution]) +* insert ProducerShallPutInNarrative(author[person]) +* insert ProducerShallPutInNarrative(attester.party) +* insert ProducerShallPutInNarrative(title) +* insert ProducerShallPutInNarrative(language) +* insert ProducerShallPutInNarrative(section.entry) +* insert ProducerShallPutInNarrative(meta.profile) + /* Instance: CompositionExample InstanceOf: MedComDocumentComposition Usage: #example diff --git a/input/fsh/MedComDocumentOrganization.fsh b/input/fsh/MedComDocumentOrganization.fsh index aff7104..c8e4345 100644 --- a/input/fsh/MedComDocumentOrganization.fsh +++ b/input/fsh/MedComDocumentOrganization.fsh @@ -2,5 +2,10 @@ Profile: MedComDocumentOrganization Parent: MedComCoreOrganization Id: medcom-document-organization Description: "A profile including requirements for a MedCom Document Organization resource" +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." * name 1.. MS +* insert ProducerShallPutInNarrative(name) diff --git a/input/fsh/MedComDocumentPractitioner.fsh b/input/fsh/MedComDocumentPractitioner.fsh index d4c9df0..6c09381 100644 --- a/input/fsh/MedComDocumentPractitioner.fsh +++ b/input/fsh/MedComDocumentPractitioner.fsh @@ -2,6 +2,12 @@ Profile: MedComDocumentPractitioner Parent: MedComCorePractitioner Id: medcom-document-practitioner Description: "A profile including requirements for a MedCom Document Practitioner" -* name 1.. MS +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." +* name 1.. * name.given 1.. MS -* name.family 1.. MS \ No newline at end of file +* name.family 1.. MS +* insert ProducerShallPutInNarrative(name.given) +* insert ProducerShallPutInNarrative(name.family) \ No newline at end of file diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh index 9969f65..57b4f60 100644 --- a/input/fsh/MedComDocumentPractitionerRole.fsh +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -2,7 +2,13 @@ Profile: MedComDocumentPractitionerRole Parent: MedComCorePractitionerRole Id: medcom-document-practitionerrole Description: "Document PractitionerRole resource used to describe the role of a healthcare professional or another actor involved in citizen or patient care." +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." * practitioner 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Practitioner? Og skal det helt over i Core? * practitioner only Reference(MedComDocumentPractitioner) * organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? (Mindre vigtig end practitioner) * organization only Reference(MedComDocumentOrganization) +* insert ProducerShallPutInNarrative(practitioner) +* insert ProducerShallPutInNarrative(organization) diff --git a/input/fsh/MedComDocumentSourcePatient.fsh b/input/fsh/MedComDocumentSourcePatient.fsh index a0912f8..239193f 100644 --- a/input/fsh/MedComDocumentSourcePatient.fsh +++ b/input/fsh/MedComDocumentSourcePatient.fsh @@ -2,6 +2,11 @@ Profile: MedComDocumentPatient Parent: DkCorePatient Id: medcom-document-patient Description: "A profile including requirements for a MedCom Document Patient." +* id MS +* text MS +* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." +* text.status MS +* text.div MS * text MS * identifier 1..1 MS * identifier[cpr] ^short = "Unique identification number for all citizens in Denmark, called civil person register (CPR-number)." @@ -13,4 +18,11 @@ Description: "A profile including requirements for a MedCom Document Patient." * name[official].given 1.. MS SU * name[official].family 1.. MS SU * birthDate 1.. MS -* gender 1.. MS \ No newline at end of file +* gender 1.. MS +* insert ProducerShallPutInNarrative(id) +* insert ProducerShallPutInNarrative(identifier[cpr].value) +* insert ProducerShallPutInNarrative(identifier[cpr].system) +* insert ProducerShallPutInNarrative(name[official].family) +* insert ProducerShallPutInNarrative(name[official].given) +* insert ProducerShallPutInNarrative(birthDate) +* insert ProducerShallPutInNarrative(gender) \ No newline at end of file diff --git a/input/fsh/MedComDocumentVersionIDExtension.fsh b/input/fsh/MedComDocumentVersionIDExtension.fsh index dc2c893..a8b5c1d 100644 --- a/input/fsh/MedComDocumentVersionIDExtension.fsh +++ b/input/fsh/MedComDocumentVersionIDExtension.fsh @@ -3,3 +3,5 @@ Id: medcom-document-version-id-extension Title: "MedCom XDS Version ID extension" Description: "Extension containing information about the version of the DocumentReference for a specific standard. The version is included in the R5 version of the resource." * valueString 1..1 MS + +* insert ProducerShallPutInNarrative(valueString) From 05f240cdbab1d96ae568cf5bb0a140c5ea7f145d Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Fri, 28 Nov 2025 21:43:53 +0100 Subject: [PATCH 54/79] Updated --- input/fsh/Instances.fsh | 2 ++ input/fsh/MedComDocumentCareTeam.fsh | 9 +++++++++ input/fsh/MedComDocumentObservation.fsh | 11 +++++++++++ input/fsh/MedComDocumentOrganization.fsh | 4 ---- ...ition-medcom-contained-documentreference-intro.md} | 0 input/pagecontent/index.md | 4 ++-- sushi-config.yaml | 4 ++-- 7 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 input/fsh/MedComDocumentCareTeam.fsh create mode 100644 input/fsh/MedComDocumentObservation.fsh rename input/pagecontent/{StructureDefinition-medcom-documentreference-intro.md => StructureDefinition-medcom-contained-documentreference-intro.md} (100%) diff --git a/input/fsh/Instances.fsh b/input/fsh/Instances.fsh index 638464a..8b219ec 100644 --- a/input/fsh/Instances.fsh +++ b/input/fsh/Instances.fsh @@ -5,6 +5,8 @@ Description: "Instance of an author person" Usage: #example * name.given = "Sidsel" * name.family = "Andersen" +* identifier.system = "urn:uuid" +* identifier.value = "ce6f5308-d71b-4ee8-bc41-cc9ddcc15366" Instance: 8fa7df76-bec2-4fe2-9a44-750030a0eda0 InstanceOf: DkCoreOrganization diff --git a/input/fsh/MedComDocumentCareTeam.fsh b/input/fsh/MedComDocumentCareTeam.fsh new file mode 100644 index 0000000..301bbab --- /dev/null +++ b/input/fsh/MedComDocumentCareTeam.fsh @@ -0,0 +1,9 @@ +Profile: MedComDocumentCareTeam +Parent: MedComCoreCareTeam +Id: medcom-document-careteam +Description: "Careteam participating in the care of a patient." +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." +* managingOrganization only Reference(MedComDocumentOrganization) \ No newline at end of file diff --git a/input/fsh/MedComDocumentObservation.fsh b/input/fsh/MedComDocumentObservation.fsh new file mode 100644 index 0000000..f807ead --- /dev/null +++ b/input/fsh/MedComDocumentObservation.fsh @@ -0,0 +1,11 @@ +Profile: MedComDocumentObservation +Parent: MedComCoreObservation +Id: medcom-document-observation +Title: "MedComDocumentObservation" +Description: "Observation profile usto be used in MedCom FHIR Documents." +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." +* subject only Reference(MedComDocumentPatient) +* performer only Reference(MedComDocumentOrganization or MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentCareTeam or MedComDocumentPatient or DkCoreRelatedPerson) diff --git a/input/fsh/MedComDocumentOrganization.fsh b/input/fsh/MedComDocumentOrganization.fsh index c8e4345..3e6b85a 100644 --- a/input/fsh/MedComDocumentOrganization.fsh +++ b/input/fsh/MedComDocumentOrganization.fsh @@ -2,10 +2,6 @@ Profile: MedComDocumentOrganization Parent: MedComCoreOrganization Id: medcom-document-organization Description: "A profile including requirements for a MedCom Document Organization resource" -* identifier 1..1 MS -* identifier.value 1..1 MS -* identifier.system 1..1 MS -* identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." * name 1.. MS * insert ProducerShallPutInNarrative(name) diff --git a/input/pagecontent/StructureDefinition-medcom-documentreference-intro.md b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md similarity index 100% rename from input/pagecontent/StructureDefinition-medcom-documentreference-intro.md rename to input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index bcf0579..1ccba7d 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -34,9 +34,9 @@ The [MedComDocumentPatient](./StructureDefinition-medcom-document-patient.html) The [MedComDocumentPractitioner](./StructureDefinition-medcom-document-practitioner.html) profile inherits from MedComCorePractitioner and further requires a given and family name to be present. -##### MedComDocumentReference +##### MedComContainedDocumentReference -The [MedComDocumentReference](./StructureDefinition-medcom-documentreference.html) profile should not be exchanged, but can be used for internal validation of the metadata associated with a document, as the DocumentReference contains the same information as the IHE XDS metadata standard. +The [MedComContainedDocumentReference](./StructureDefinition-medcom-contained-documentreference.html) profile should not be exchanged, but can be used for internal validation of the metadata associated with a document, as the DocumentReference contains the same information as the IHE XDS metadata standard. #### General document assumptions diff --git a/sushi-config.yaml b/sushi-config.yaml index 9ee4e08..84f17d4 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -30,8 +30,8 @@ dependencies: medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 - hl7.fhir.extensions.r5: 5.2.1 - ihe.iti.mhd: 4.2.2 + hl7.fhir.extensions.r5: 4.0.1 + ihe.iti.mhd: 4.2.3 # # # The pages property corresponds to IG.definition.page. SUSHI can From 829f3f8740e603fc205d106d8abce80c871aea9a Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 1 Dec 2025 10:44:24 +0100 Subject: [PATCH 55/79] Updated --- input/fsh/MedComDocumentComposition.fsh | 2 ++ input/fsh/MedComDocumentPractitionerRole.fsh | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index ceb71ec..7b645cf 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -20,6 +20,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * identifier.value obeys medcom-uuid * identifier.value ^short = "[DocumentEntry.uniqueId] UUID." * identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted - måske bare i en short. +* date MS * confidentiality 1..1 MS * status = #final * status MS @@ -89,6 +90,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * insert ProducerShallPutInNarrative(event.code) * insert ProducerShallPutInNarrative(event.period.start) * insert ProducerShallPutInNarrative(event.period.end) +* insert ProducerShallPutInNarrative(date) * insert ProducerShallPutInNarrative(event.detail) * insert ProducerShallPutInNarrative(author[institution]) * insert ProducerShallPutInNarrative(author[person]) diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh index 57b4f60..206b17e 100644 --- a/input/fsh/MedComDocumentPractitionerRole.fsh +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -8,7 +8,9 @@ Description: "Document PractitionerRole resource used to describe the role of a * identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." * practitioner 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Practitioner? Og skal det helt over i Core? * practitioner only Reference(MedComDocumentPractitioner) -* organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? (Mindre vigtig end practitioner) +* organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? Og skal det helt over i Core? (Mindre vigtig end practitioner) * organization only Reference(MedComDocumentOrganization) +* code 1.. //RCH: Skal denne med i Core? Kan man have en role uden titel? +//Invariant: medcom-core-practitionerrole-code-xor-text indsat i core - skal den være der? * insert ProducerShallPutInNarrative(practitioner) -* insert ProducerShallPutInNarrative(organization) +* insert ProducerShallPutInNarrative(organization) \ No newline at end of file From 33a07dd0325b20f771b95b6f9c9662f783e82401 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 1 Dec 2025 19:18:53 +0100 Subject: [PATCH 56/79] Updated --- input/fsh/Alias.fsh | 4 ++-- input/fsh/MedComDocumentBundle.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 22 +++++++++++++--------- input/fsh/invariants.fsh | 12 +++++++----- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index 99f572c..dc7d375 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -53,8 +53,8 @@ Alias: $Language = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core- //Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-apd-formatcode-VS Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-formatcode-VS -Alias: $TypeCode = https://medcomfhir.dk/ig/xdsmetadata/1.0.1/ValueSet-MedCom-ihe-core-typecode-VS.html - +Alias: $TypeCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-typecode-VS + //Alias: $HomeCommunityID = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-apd-homeCommunityId-VS Alias: $HomeCommunityID = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-homeCommunityId-VS diff --git a/input/fsh/MedComDocumentBundle.fsh b/input/fsh/MedComDocumentBundle.fsh index abfa960..89212c2 100644 --- a/input/fsh/MedComDocumentBundle.fsh +++ b/input/fsh/MedComDocumentBundle.fsh @@ -4,7 +4,7 @@ Id: medcom-document-bundle Description: "The Bundle profile for a document" * id 1.. * id MS -* id obeys medcom-uuid +* id obeys medcom-document-bundle-id-uuid * identifier 1..1 MS * type MS * type = #document diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 7b645cf..cbfa1f6 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -49,17 +49,21 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.period.end 0..1 MS * event.detail 0..* MS * event.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" -* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComDocumentPractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) //RCH: Jeg har kopieret denne fra DocRef. Skal de være ens eller skal denne linje ikke med i Composition? -* author ^slicing.discriminator.type = #type - * ^slicing.discriminator.path = "$this.resolve()" - * ^slicing.rules = #closed +* author ..2 MS +* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComDocumentPractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) +* author ^slicing.discriminator[0].type = #profile + * ^slicing.discriminator[0].path = "$this.resolve()" + * ^slicing.rules = #open * author contains - institution 1..1 MS and - person 0..1 MS + institution 1..1 MS //and +// person 0..1 MS +* author ^short = "The slice author:institution ensures one mandatory organizational author. +Any author element that does not match this slice is interpreted +as an author:person." * author[institution] only Reference(MedComDocumentOrganization) * author[institution] ^short = "The organization who authored the document" -* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) -* author[person] ^short = "The person who authored the document" +//* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) +//* author[person] ^short = "The person who authored the document" * author ^type.aggregation = #bundled * attester 0..1 MS * attester.party 0..1 MS @@ -93,7 +97,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * insert ProducerShallPutInNarrative(date) * insert ProducerShallPutInNarrative(event.detail) * insert ProducerShallPutInNarrative(author[institution]) -* insert ProducerShallPutInNarrative(author[person]) +//* insert ProducerShallPutInNarrative(author[person]) * insert ProducerShallPutInNarrative(attester.party) * insert ProducerShallPutInNarrative(title) * insert ProducerShallPutInNarrative(language) diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index f7dbb16..5bde94a 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -1,10 +1,12 @@ Invariant: medcom-uuid -Description: "The value shall correspond to the structure of an UUID version 4 xor UUID version 5" +Description: "The value shall correspond to the structure of an UUID" Severity: #error -Expression: "( - ($this.value.matches('^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')) xor - ($this.matches('^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$')) -)" +Expression: "$this.matches('(?i)^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[45][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$')" + +Invariant: medcom-document-bundle-id-uuid +Description: "The value shall correspond to the structure of an UUID" +Severity: #error +Expression: "$this.matches('(?i)^[0-9a-f]{8}-[0-9a-f]{4}-[45][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$')" Invariant: medcom-datetime-has-time-offset-zulu //"2025-11-27T13:34:56+01:00" = "2025-11-27T12:34:56.789Z" From 846e117ab413678aa8fec73c4c8ae0b7e61e1fe8 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 1 Dec 2025 21:40:14 +0100 Subject: [PATCH 57/79] comment removed --- input/fsh/MedComDocumentComposition.fsh | 2 +- sushi-config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index cbfa1f6..6fb63bd 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -30,7 +30,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding.system 1.. MS * type.coding.code 1.. MS * type.coding.display 1.. MS -* type from $TypeCode (required) //OBS: Link ser underligt ud i IGen? +* type from $TypeCode (required) * category 1..1 MS * category from $ClassCode (extensible) * category.coding 1..1 MS diff --git a/sushi-config.yaml b/sushi-config.yaml index 84f17d4..ef02a01 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -25,7 +25,7 @@ publisher: # use cases, the value can be an object with keys for id, uri, and version. # dependencies: - medcom.fhir.dk.xdsmetadata: 1.0.1 + medcom.fhir.dk.xdsmetadata: dev medcom.fhir.dk.terminology: 2.0.1 medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1 From d1ef87d534c64183ce0bd7ff902fbcd8db02a3b0 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Tue, 2 Dec 2025 14:50:29 +0100 Subject: [PATCH 58/79] Updated texts --- input/fsh/MedComDocumentObservation.fsh | 2 +- ...edcom-contained-documentreference-intro.md | 2 +- ...ition-medcom-document-observation-intro.md | 3 ++ ...efinition-medcom-document-patient-intro.md | 4 +- input/pagecontent/index.md | 50 ++++++------------- 5 files changed, 21 insertions(+), 40 deletions(-) create mode 100644 input/pagecontent/StructureDefinition-medcom-document-observation-intro.md diff --git a/input/fsh/MedComDocumentObservation.fsh b/input/fsh/MedComDocumentObservation.fsh index f807ead..87093b2 100644 --- a/input/fsh/MedComDocumentObservation.fsh +++ b/input/fsh/MedComDocumentObservation.fsh @@ -2,7 +2,7 @@ Profile: MedComDocumentObservation Parent: MedComCoreObservation Id: medcom-document-observation Title: "MedComDocumentObservation" -Description: "Observation profile usto be used in MedCom FHIR Documents." +Description: "Observation profile to be used in MedCom FHIR Documents." * identifier 1..1 MS * identifier.value 1..1 MS * identifier.system 1..1 MS diff --git a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md index e2f3d6c..6474d6d 100644 --- a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md @@ -1,4 +1,4 @@ ### Scope and usage -The MedComDocumentReference profile is not intented to be exchanges, but can be used for internal validation of metadata associated with a document. This profile provides metadata about a document, this can be CDA, FHIR or PDF. It holds the required metadata from the IHE XDS metadata standard, and a [mapping between the two can be found on GitHub pages](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). +The MedComDocumentReference profile is not intented to be exchanged until the infrastructure is ready to receive it, but can be used for validation of metadata associated with a document. This profile provides metadata about a document, this can be CDA, FHIR or PDF. It holds the required metadata from the IHE XDS metadata standard, and a [mapping between the two can be found on GitHub pages](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). diff --git a/input/pagecontent/StructureDefinition-medcom-document-observation-intro.md b/input/pagecontent/StructureDefinition-medcom-document-observation-intro.md new file mode 100644 index 0000000..1433568 --- /dev/null +++ b/input/pagecontent/StructureDefinition-medcom-document-observation-intro.md @@ -0,0 +1,3 @@ +### Scope and usage + +The MedComDocumentObservation profile describes the resource that shall be used in MedCom FHIR Documents containing Observations. It is interited from the [MedComCoreObservation](https://medcomfhir.dk/ig/document/StructureDefinition-medcom-document-organization.html) profile, and has narrowed down which profiles can be referenced. diff --git a/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md b/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md index 72d3e50..ca4905e 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md @@ -1,7 +1,7 @@ ### Scope and usage -The MedComDocumentPatient profile describes information about a patient or citizen used in a MedComs Document standard. -The MedComDocumentPatient is inherited from the [DkCorePatient](https://hl7.dk/fhir/core/3.2.0/StructureDefinition-dk-core-patient.html) profile defined by HL7 Denmark. It does not inherit from MedComCorePatient, as more elements, than desired for this purpose, are marked with MustSupport. +The MedComDocumentPatient profile describes information about a patient or citizen used in a MedComs Document standard. +The MedComDocumentPatient is inherited from the [DkCorePatient](https://hl7.dk/fhir/core/3.2.0/StructureDefinition-dk-core-patient.html) profile defined by HL7 Denmark. It does not inherit from MedComCorePatient, as more elements, than desired for this purpose, are marked with MustSupport. #### Required information diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index 1ccba7d..6612957 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -2,41 +2,18 @@ This Implementation Guide (IG) is provided by MedCom to describe the use of FHIR ®© in document based exchange of data in Danish healthcare. -The IG contains profiles which are used to define a general model for FHIR documents. The use case specific profiles, such as [ConditionList](http://medcomfhir.dk/ig/conditionlist), are maintained in an individuel IG. +The IG contains profiles which are used to define a general model for MedCom FHIR documents. The use case specific profiles, such as [ConditionList](http://medcomfhir.dk/ig/conditionlist), are maintained in an individuel IG. The profiles builds upon the knowledge obtained through the use of CDA in Denmark and the work around [FHIR documents from HL7 International](https://hl7.org/fhir/R4/documents.html). #### General Document Model -The figure below illustrates a general document model, which all MedCom document will comply to. Document profiles are all prefixed "MedComDocument". Beside the profiles on the figure, a MedCom document will also include some MedComCore profiles and profiles made to support a specific use case. All together they constitute the actual content of a MedCom document. The following sections describe the overall purpose of each document profile. +The figure below illustrates a general document model, which all MedCom documents will comply to. Document profiles in this IG are all prefixed "MedComDocument". Beside the profiles on the figure, a MedCom document can also include some MedCom Core profiles and profiles made to support a specific use case. All together they constitute the actual content of a MedCom FHIR document. The following sections describe the overall purpose of each document profile. Shows the general MedCom document model. Each document must at least contain the following resources: Bundle, Composition, Organization, Patient and use case specific resources. -##### MedComDocumentBundle - -[MedComDocumentBundle](./StructureDefinition-medcom-document-bundle.html) is a Bundle resource defined to be of the type 'document'. All profiles included in a message shall be referenced from the entry element in the profile, with a Composition as the first resource. - -__Note:__ Be aware that entries in a document in general are unordered. - -##### MedComDocumentCompostition - -When the Bundle is of the type 'document', the [MedComDocumentCompostition](./StructureDefinition-medcom-document-composition.html) resource must be the first resource. The resource creates the structure for the document and references the relevant clinical information. - -##### MedComDocumentOrganization - -The [MedComDocumentOrganization](./StructureDefinition-medcom-document-organization.html) profile inherits from MedComCoreOrganization and is used to describe author organization. The resource constrains the MedComCoreOrganization profile to contain a SOR identifier and a name. - -##### MedComDocumentPatient - -The [MedComDocumentPatient](./StructureDefinition-medcom-document-patient.html) profile desribes the basic requirements for information about citizens and patients when exhancging a document. The profile inherits from DkCorePatient and furhter limit the requirements, e.g. may documents only be exchanged for patients with a CPR-number. To limit the MustSupport elements, this profiles does not inherit from MedComCorePatient. - -##### MedComDocumentPractitioner - -The [MedComDocumentPractitioner](./StructureDefinition-medcom-document-practitioner.html) profile inherits from MedComCorePractitioner and further requires a given and family name to be present. - -##### MedComContainedDocumentReference - -The [MedComContainedDocumentReference](./StructureDefinition-medcom-contained-documentreference.html) profile should not be exchanged, but can be used for internal validation of the metadata associated with a document, as the DocumentReference contains the same information as the IHE XDS metadata standard. +##### MedComDocument Profiles +You will find a list of all MedCom Document profiles in the "Profiles" tab in the menu. #### General document assumptions @@ -44,25 +21,26 @@ The [MedComContainedDocumentReference](./StructureDefinition-medcom-contained-do **XML and JSON:** Note that the document may be represented in either XML or JSON and interconverted between these or have its character encoding changed, all the while remaining the same document. -**Narrative:** It is a key element in documents that they contain a narrative text. The requirements concerning the narrative text, follows the [recommendations from HL7 for narrative text](https://hl7.org/fhir/R4/documents.html#presentation). This states that there must be narrative text included in the subject resource, which is the Patient resource in this IG, the Composition resource and for each Composition.section.text. +#### Terminology IG and metadata IG +In [MedCom Terminology IG](http://medcomfhir.dk/ig/terminology/) all referenced MedCom Terminology CodeSystems and ValueSets developed by MedCom can be found. -#### Terminology -On [MedCom Terminology IG](http://medcomfhir.dk/ig/terminology/) all referenced CodeSystem and ValueSets developed by MedCom can be found. +In MedCom [Dk Terminology for XDS Metadata](https://medcomfhir.dk/ig/xdsmetadata/) all MedCom CodeSystems and ValueSets related to metadata. #### Dependencies -This IG has a dependency to the [MedComCore IG](http://medcomfhir.dk/ig/core/) and [DK-core](https://hl7.dk/fhir/core/) v. 3.2.0, defined by [HL7 Denmark](https://hl7.dk/). +Besides Terminology and metadata IGs, this IG has a dependency to the [MedComCore IG](http://medcomfhir.dk/ig/core/), [DK-core](https://hl7.dk/fhir/core/), defined by [HL7 Denmark](https://hl7.dk/) and [IHE MHD](https://profiles.ihe.net/ITI/MHD/). ### Documentation -[More information about MedCom Document](https://medcomdk.github.io/dk-medcom-document/) can be found here. MedCom document profiles does not alone constitute a standard, why the documentation is limited. +[More information about MedCom Document](https://medcomdk.github.io/dk-medcom-document/) can be found here. MedCom document profiles does not alone constitute a standard. -### Governance +### Governance and guiance +FHIR profiles are managed under MedCom: [Source code](https://github.com/medcomdk/dk-medcom-document). -FHIR profiles are managed under MedCom: [Source code](https://github.com/medcomdk/dk-medcom-document). +A description of governance and guidance for MedCom's FHIR standards, can be found on the [MedCom Landing Page](https://medcomdk.github.io/MedComLandingPage). -#### Quality Assurance Report +The MedCom FHIR landing page provides a overview of governance requirements that apply to MedCom’s FHIR standards. This includes fx the mandatory rules for interpreting MustSupport, the formal validation requirements that implementers must follow, the expectations for producing narrative texts and governance for how MedCom Terminology is versioned. In addition, the governance section outlines the rules for MedCom FHIR Messaging and Document Sharing, including requirements for fx message flow and envelope usage. -In the Quality Assurance report (QA-report) for this IG, there is an error with the following description: *Reference is remote which isn’t supported by the specified aggregation mode(s) for the reference (bundled)*. The error occurs when creating instances of the profiles and is due to some elements having a Bundled flag {b}, however the referenced profile is not included in a Bundle in an instance, since the instance only represents a part of the entire message. This should not influence the implementation by IT-vendors. +The landing page also offers help to developers to understand how to work with MedCom’s FHIR standards. This includes a guide of how to read an Implementation Guide. Users will also find instructions on how to use some of the required tools, such as validation setup and how to use Touchstone. ### Contact From 6629dbbb262216559964a2564d1f09d89c84365c Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 3 Dec 2025 10:11:01 +0100 Subject: [PATCH 59/79] Updated texts --- ...uctureDefinition-medcom-document-careteam-intro.md | 4 ++++ ...ureDefinition-medcom-document-composition-intro.md | 5 ++++- ...finition-medcom-document-practitionerrole-intro.md | 4 ++++ input/pagecontent/index.md | 11 +++++++++-- 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 input/pagecontent/StructureDefinition-medcom-document-careteam-intro.md create mode 100644 input/pagecontent/StructureDefinition-medcom-document-practitionerrole-intro.md diff --git a/input/pagecontent/StructureDefinition-medcom-document-careteam-intro.md b/input/pagecontent/StructureDefinition-medcom-document-careteam-intro.md new file mode 100644 index 0000000..0333651 --- /dev/null +++ b/input/pagecontent/StructureDefinition-medcom-document-careteam-intro.md @@ -0,0 +1,4 @@ +### Scope and usage + +The MedComDocumentPractitionerRole profile describes the resource that shall be used in MedCom FHIR Documents containing PractitionerRoles. It is interited from the [MedComCoreCareTeam](https://medcomfhir.dk/ig/core/StructureDefinition-medcom-core-careteam.html) profile, and has narrowed down which profile that can be referenced. + diff --git a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md index 210a2d2..a06ec7c 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md @@ -1,3 +1,6 @@ ### Scope and usage +The MedComDocumentComposition profile defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document - the Composition must be the first `entry` in a Bundle where `Bundle.type = document`. Any other resources referenced from Composition must be included as subsequent entries in the Bundle. -The MedComDocumentComposition profile defines the structure and narrative content necessary for a document. However, a Composition alone does not constitute a document. Rather, the Composition must be the first entry in a Bundle where Bundle.type=document, and any other resources referenced from Composition must be included as subsequent entries in the Bundle. The Composition resource organizes clinical and administrative content into sections, each of which contains a narrative, and references other resources for supporting data. +The Composition resource organizes clinical and administrative content into sections, each of which contains a narrative, and references other resources for supporting data. + +Several elements in this profile map directly to IHE XDS DocumentEntry metadata to ensure compatibility with existing national and international document exchange infrastructures. \ No newline at end of file diff --git a/input/pagecontent/StructureDefinition-medcom-document-practitionerrole-intro.md b/input/pagecontent/StructureDefinition-medcom-document-practitionerrole-intro.md new file mode 100644 index 0000000..6b00eb3 --- /dev/null +++ b/input/pagecontent/StructureDefinition-medcom-document-practitionerrole-intro.md @@ -0,0 +1,4 @@ +### Scope and usage + +The MedComDocumentCareTeam profile describes the resource that shall be used in MedCom FHIR Documents containing CareTeams. It is interited from the [MedComCorePractitionerRole](https://medcomfhir.dk/ig/core/StructureDefinition-medcom-core-practitionerrole.html) profile, and has narrowed down which profile that can be referenced. + diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index 6612957..ba709f9 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -15,10 +15,18 @@ The figure below illustrates a general document model, which all MedCom document ##### MedComDocument Profiles You will find a list of all MedCom Document profiles in the "Profiles" tab in the menu. -#### General document assumptions +##### Resource Identifiers in MedCom FHIR Documents + +In FHIR, `Resource.identifier` is intended to capture business identifiers that remain constant across system boundaries, which differs from `Resource.id`, the internal technical identifier used within a single FHIR Bundle. +All resources included in a MedCom FHIR document **MUST** carry an `identifier` element consisting of both a `system` and a `value`. The identifier SHALL be globally unique, persistent, and stable over time. This means that the identifier **MUST NOT** change as long as the resource represents the same underlying real-world entity or dataset. For example, a Patient resource will always carry the same civil registration number (CPR) as its identifier. + +**Global uniqueness:** To ensure global uniqueness, implementations may for example use UUIDv4 or UUIDv5. Use authoritative identifiers when available, such as CPR number or SOR codes. + +**Persistence across snapshots:** Even if a document is re-created or updated, resources representing the same entity (e.g., Patient, Practitioner, Organization, Encounter) **MUST** retain their identifier. **Bundle.identifier:** Once a document is assembled into a Bundle, the document is immutable, meaning its content cannot be changed, and the document id (Bundle.identifier) can never be reused. +##### XML and JSON **XML and JSON:** Note that the document may be represented in either XML or JSON and interconverted between these or have its character encoding changed, all the while remaining the same document. #### Terminology IG and metadata IG @@ -30,7 +38,6 @@ In MedCom [Dk Terminology for XDS Metadata](https://medcomfhir.dk/ig/xdsmetadata Besides Terminology and metadata IGs, this IG has a dependency to the [MedComCore IG](http://medcomfhir.dk/ig/core/), [DK-core](https://hl7.dk/fhir/core/), defined by [HL7 Denmark](https://hl7.dk/) and [IHE MHD](https://profiles.ihe.net/ITI/MHD/). ### Documentation - [More information about MedCom Document](https://medcomdk.github.io/dk-medcom-document/) can be found here. MedCom document profiles does not alone constitute a standard. ### Governance and guiance From 6824383081e0baee7684ef58c00de6533e8774d3 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 3 Dec 2025 19:01:29 +0100 Subject: [PATCH 60/79] Corrected UML diagram --- puml/MedComDocument.puml | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/puml/MedComDocument.puml b/puml/MedComDocument.puml index ba382f2..3b39173 100644 --- a/puml/MedComDocument.puml +++ b/puml/MedComDocument.puml @@ -2,18 +2,38 @@ hide empty members -class "MedComDocumentBundle" as document -class "MedComDocumentComposition" as composition +class "MedComDocumentBundle" as document <> +class "MedComDocumentComposition" as composition <> + class "MedComDocumentOrganization" as organization <> class "MedComDocumentPractitioner" as practitioner <> +class "MedComDocumentPractitionerRole" as practitionerrole <> class "MedComDocumentPatient" as patient <> -class "*use case specific content*" as clinical +class "DkCoreRelatedPerson" as relatedperson <> +class "Device" as device +class "'Use case specific content'" as content + +' Fælles abstraktion for alle, der kan være author:person +interface "AuthorPerson" as authorPerson +' --- Struktur på dokumentet --- document -- composition : "entry" -composition -- organization : "authorInstitution" -composition -- practitioner : "authorPerson" + +' Composition peger på den fælles type +composition -- authorPerson : "author:person" +composition -- organization : "author:organization" composition -- patient : "subject" -composition -- clinical : "section.entry" +composition -- content : "section.entry" + +' PractitionerRole’s egne relationer bevares +practitionerrole -- practitioner : "practitioner" +practitionerrole -- organization : "organization" +' Hvilke typer kan være author:person? +authorPerson <|.. practitioner +authorPerson <|.. practitionerrole +authorPerson <|.. patient +authorPerson <|.. relatedperson +authorPerson <|.. device -@enduml \ No newline at end of file +@enduml From 3605be6cf8fe262980e74ad0e4fa1a208e693907 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 3 Dec 2025 19:45:17 +0100 Subject: [PATCH 61/79] updated texts and author --- .../fsh/MedComContainedDocumentReference.fsh | 25 ++++++++----------- input/fsh/MedComDocumentComposition.fsh | 21 +++++++--------- ...edcom-contained-documentreference-intro.md | 7 ++++++ ...ition-medcom-document-composition-intro.md | 9 ++++++- 4 files changed, 35 insertions(+), 27 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index a33c588..eda027e 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -41,21 +41,18 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * category.coding.display 1.. MS * category ^short = "[DocumentEntry.classCode] Categorization of document" * author ..2 MS -* author only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or MedComDocumentOrganization or MedComDocumentPatient or DkCoreRelatedPerson or Device) -* author ^type.aggregation = #contained -* author ^short = "[DocumentEntry.author] Who and/or what authored the document" -* author ^slicing.discriminator.type = #type - * ^slicing.discriminator.path = "$this.resolve()" - * ^slicing.rules = #closed +* author only Reference(MedComDocumentOrganization or MedComDocumentPractitionerRole or MedComDocumentPractitioner or MedComDocumentPatient or DkCoreRelatedPerson or Device) +* author ^slicing.discriminator[0].type = #profile + * ^slicing.discriminator[0].path = "$this.resolve()" + * ^slicing.rules = #open * author contains - institution 1..1 and - person 0..1 -* author[institution] MS + institution 1..1 MS +* author ^short = "[DocumentEntry.author] The slice author:institution ensures one mandatory organizational author. +Any author element that does not match this slice is interpreted +as an author person." * author[institution] only Reference(MedComDocumentOrganization) -* author[institution] ^short = "[DocumentEntry.author.authorInstitution] The organization who authored the document" -* author[person] MS -* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) //OBS: Link dit PractitionerRole virker ikke -* author[person] ^short = "[DocumentEntry.author.authorPerson] The person who authored the document" +* author[institution] ^short = "The organization who authored the document." +* author ^type.aggregation = #bundled * securityLabel 1..1 MS * securityLabel.coding 1..1 MS * securityLabel.coding.system 1.. MS @@ -126,7 +123,7 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * insert ProducerShallPutInNarrative(id) * insert ProducerShallPutInNarrative(author[institution]) -* insert ProducerShallPutInNarrative(author[person]) +* insert ProducerShallPutInNarrative(author) * insert ProducerShallPutInNarrative(subject) * insert ProducerShallPutInNarrative(status) * insert ProducerShallPutInNarrative(type.coding.system) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 6fb63bd..f6d000f 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -12,14 +12,14 @@ Description: "The profile of the MedCom Document Composition containing the mini * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS -* meta.profile 1..1 MS //RCH: Beslut om profilens navn må ændre sig med versionen - hvis den skal være = formatcode. +* meta.profile 1..1 MS * identifier 1.. MS * identifier.system 1.. MS * identifier.system ^short = "[DocumentEntry.uniqueId] Sender organization OID (Object Identifier). Example: 1.2.208.184 (MedCom OID)." * identifier.value 1.. MS * identifier.value obeys medcom-uuid * identifier.value ^short = "[DocumentEntry.uniqueId] UUID." -* identifier ^short = "The Composition identifier" //RCH: Brugen af identifiers skal beskrives et sted - måske bare i en short. +* identifier ^short = "The Composition identifier" * date MS * confidentiality 1..1 MS * status = #final @@ -50,20 +50,17 @@ Description: "The profile of the MedCom Document Composition containing the mini * event.detail 0..* MS * event.detail ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources" * author ..2 MS -* author only Reference(MedComDocumentPatient or MedComDocumentPractitioner or MedComDocumentPractitionerRole or DkCoreRelatedPerson or MedComDocumentOrganization or Device) +* author only Reference(MedComDocumentOrganization or MedComDocumentPractitionerRole or MedComDocumentPractitioner or MedComDocumentPatient or DkCoreRelatedPerson or Device) * author ^slicing.discriminator[0].type = #profile * ^slicing.discriminator[0].path = "$this.resolve()" * ^slicing.rules = #open * author contains - institution 1..1 MS //and -// person 0..1 MS -* author ^short = "The slice author:institution ensures one mandatory organizational author. + institution 1..1 MS +* author ^short = "[DocumentEntry.author] The slice author:institution ensures one mandatory organizational author. Any author element that does not match this slice is interpreted -as an author:person." +as an author person." * author[institution] only Reference(MedComDocumentOrganization) -* author[institution] ^short = "The organization who authored the document" -//* author[person] only Reference(MedComDocumentPractitioner or MedComDocumentPractitionerRole or Device or MedComDocumentPatient) -//* author[person] ^short = "The person who authored the document" +* author[institution] ^short = "The organization who authored the document." * author ^type.aggregation = #bundled * attester 0..1 MS * attester.party 0..1 MS @@ -77,7 +74,7 @@ as an author:person." * language from $Language (extensible) * language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS -* section.text MS //RCH: Hvad er dette felt til? +* section.text MS //RCH: Hvad er dette felt til? Det er med fra tidligere, men jeg ved ikke hvad vi bruger det til. Skal det fjernes? * section.entry MS * meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." @@ -97,7 +94,7 @@ as an author:person." * insert ProducerShallPutInNarrative(date) * insert ProducerShallPutInNarrative(event.detail) * insert ProducerShallPutInNarrative(author[institution]) -//* insert ProducerShallPutInNarrative(author[person]) +* insert ProducerShallPutInNarrative(author) * insert ProducerShallPutInNarrative(attester.party) * insert ProducerShallPutInNarrative(title) * insert ProducerShallPutInNarrative(language) diff --git a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md index 6474d6d..d4d339e 100644 --- a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md @@ -2,3 +2,10 @@ The MedComDocumentReference profile is not intented to be exchanged until the infrastructure is ready to receive it, but can be used for validation of metadata associated with a document. This profile provides metadata about a document, this can be CDA, FHIR or PDF. It holds the required metadata from the IHE XDS metadata standard, and a [mapping between the two can be found on GitHub pages](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). +#### Author institution and author person +The author element allows up to two references and must always include exactly one author organization and optionally one author person. + +**Author institution:** The slice author:institution is mandatory and restricts the reference to a MedComDocumentOrganization. This ensures that every document has one clear author organization responsible for its creation. + +**Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. + diff --git a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md index a06ec7c..e456ace 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md @@ -3,4 +3,11 @@ The MedComDocumentComposition profile defines the structure and narrative conten The Composition resource organizes clinical and administrative content into sections, each of which contains a narrative, and references other resources for supporting data. -Several elements in this profile map directly to IHE XDS DocumentEntry metadata to ensure compatibility with existing national and international document exchange infrastructures. \ No newline at end of file +Several elements in this profile map directly to IHE XDS DocumentEntry metadata to ensure compatibility with existing national and international document exchange infrastructures. + +#### Author institution and author person +The author element allows up to two references and must always include exactly one author organization and optionally one author person. + +**Author institution:** The slice author:institution is mandatory and restricts the reference to a MedComDocumentOrganization. This ensures that every document has one clear author organization responsible for its creation. + +**Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. \ No newline at end of file From 95ab1f5c579d75522c0ce7cc527d9f4e139a8e4b Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 3 Dec 2025 20:51:44 +0100 Subject: [PATCH 62/79] Updated --- input/fsh/MedComContainedDocumentReference.fsh | 12 ------------ input/fsh/MedComDocumentPractitionerRole.fsh | 8 +------- input/fsh/MedComMinimalDocumentReference.fsh | 6 +++--- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index eda027e..fd97011 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -159,15 +159,3 @@ as an author person." * insert ProducerShallPutInNarrative(context.related) * insert ProducerShallPutInNarrative(context.sourcePatientInfo.reference) * insert ProducerShallPutInNarrative(context.sourcePatientInfo.identifier) - -/* Invariant: apd-dk-rule-1 -Description: "Where formatCode is 'urn:ad:dk:medcom:appointmentsummary:full', the eventCode must be 'ALAL01' (hjertesygdomme)" -Severity: #error -Expression: "where(type.coding.where(system = 'http://medcomfhir.dk/ig/xdsmetadata/CodeSystem/dk-ihe-typecode-de-regenstrief').code = '56446-8').context.event.coding.code = 'ALAL01'" -*/ -/* -Invariant: uuid -Description: "General UUID expression" -Severity: #error -Expression: "value.substring(9).matches('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')" -*/ \ No newline at end of file diff --git a/input/fsh/MedComDocumentPractitionerRole.fsh b/input/fsh/MedComDocumentPractitionerRole.fsh index 206b17e..9ba50cd 100644 --- a/input/fsh/MedComDocumentPractitionerRole.fsh +++ b/input/fsh/MedComDocumentPractitionerRole.fsh @@ -6,11 +6,5 @@ Description: "Document PractitionerRole resource used to describe the role of a * identifier.value 1..1 MS * identifier.system 1..1 MS * identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." -* practitioner 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Practitioner? Og skal det helt over i Core? * practitioner only Reference(MedComDocumentPractitioner) -* organization 1.. //RCH: Skal denne med? Kan man have en PractitionerRole uden en Organization? Og skal det helt over i Core? (Mindre vigtig end practitioner) -* organization only Reference(MedComDocumentOrganization) -* code 1.. //RCH: Skal denne med i Core? Kan man have en role uden titel? -//Invariant: medcom-core-practitionerrole-code-xor-text indsat i core - skal den være der? -* insert ProducerShallPutInNarrative(practitioner) -* insert ProducerShallPutInNarrative(organization) \ No newline at end of file +* organization only Reference(MedComDocumentOrganization) \ No newline at end of file diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 7b02554..4eae2ba 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -1,13 +1,13 @@ -Profile: MedComMinimalDocumentReference +Profile: MedComMinimalDocumentReference //OBS: Skal erstattes af afhængighed til DkCore v 3.5.0 Parent: MinimalDocumentReference Id: medcom-minimal-documentreference Title: "A replication of HL7 Denmark DK Core MinimalDocumentReference Profile" Description: "A replication of DK Core MinimalDocumentReference" * extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-DocumentReference.version named versionid 1..1 * extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." -* context.facilityType from SorOrganizationType (extensible) //Mangler value set i vores IG. +* context.facilityType from SorOrganizationType (extensible) * context.practiceSetting from MedComSorPracticeSettingCode (extensible) -* context.event from $v3-ActCode3.0.0 // Undersøg om dette valueset dækker vores behov +* context.event from $v3-ActCode3.0.0 (example) * author 1..* * author only Reference(DkCorePatient or DkCorePractitioner or DkCorePractitionerRole or DkCoreRelatedPerson or DkCoreOrganization or Device) * authenticator only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCoreOrganization) From ab9d3d2e2b64b10b5d72f93647c167aab64d091b Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 4 Dec 2025 10:42:18 +0100 Subject: [PATCH 63/79] Updated dependency to terminology --- sushi-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sushi-config.yaml b/sushi-config.yaml index ef02a01..925766d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -26,7 +26,7 @@ publisher: # dependencies: medcom.fhir.dk.xdsmetadata: dev - medcom.fhir.dk.terminology: 2.0.1 + medcom.fhir.dk.terminology: 2.0.2 medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 From bee225b31501ecb2bed43ab231813350eb82be81 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 10 Dec 2025 08:32:52 +0100 Subject: [PATCH 64/79] Corrected category to 0..1 for composition --- input/fsh/MedComDocumentComposition.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index f6d000f..81c4c02 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -31,7 +31,7 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding.code 1.. MS * type.coding.display 1.. MS * type from $TypeCode (required) -* category 1..1 MS +* category ..1 MS * category from $ClassCode (extensible) * category.coding 1..1 MS * category.coding.code 1.. MS From 4db0363fd6abe73f9d91442ecf830aba6e12a848 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 10 Dec 2025 12:49:57 +0100 Subject: [PATCH 65/79] Updated obligations --- input/fsh/MedComDocumentComposition.fsh | 2 ++ input/fsh/MedComDocumentOrganization.fsh | 1 - input/fsh/MedComDocumentPractitioner.fsh | 4 +--- input/pagecontent/index.md | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 81c4c02..02825c7 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -76,6 +76,7 @@ as an author person." * section 1.. MS * section.text MS //RCH: Hvad er dette felt til? Det er med fra tidligere, men jeg ved ikke hvad vi bruger det til. Skal det fjernes? * section.entry MS +* meta 1.. MS * meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." * insert ProducerShallPutInNarrative(id) @@ -95,6 +96,7 @@ as an author person." * insert ProducerShallPutInNarrative(event.detail) * insert ProducerShallPutInNarrative(author[institution]) * insert ProducerShallPutInNarrative(author) +* insert ProducerShallPutInNarrative(attester.mode) * insert ProducerShallPutInNarrative(attester.party) * insert ProducerShallPutInNarrative(title) * insert ProducerShallPutInNarrative(language) diff --git a/input/fsh/MedComDocumentOrganization.fsh b/input/fsh/MedComDocumentOrganization.fsh index 3e6b85a..aff7104 100644 --- a/input/fsh/MedComDocumentOrganization.fsh +++ b/input/fsh/MedComDocumentOrganization.fsh @@ -3,5 +3,4 @@ Parent: MedComCoreOrganization Id: medcom-document-organization Description: "A profile including requirements for a MedCom Document Organization resource" * name 1.. MS -* insert ProducerShallPutInNarrative(name) diff --git a/input/fsh/MedComDocumentPractitioner.fsh b/input/fsh/MedComDocumentPractitioner.fsh index 6c09381..bbeebdd 100644 --- a/input/fsh/MedComDocumentPractitioner.fsh +++ b/input/fsh/MedComDocumentPractitioner.fsh @@ -8,6 +8,4 @@ Description: "A profile including requirements for a MedCom Document Practitione * identifier ^short = "Globally unique, stable identifier for this resource. The same identifier SHALL be used when this resource is recreated from the same source data." * name 1.. * name.given 1.. MS -* name.family 1.. MS -* insert ProducerShallPutInNarrative(name.given) -* insert ProducerShallPutInNarrative(name.family) \ No newline at end of file +* name.family 1.. MS \ No newline at end of file diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index ba709f9..5141167 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -2,7 +2,7 @@ This Implementation Guide (IG) is provided by MedCom to describe the use of FHIR ®© in document based exchange of data in Danish healthcare. -The IG contains profiles which are used to define a general model for MedCom FHIR documents. The use case specific profiles, such as [ConditionList](http://medcomfhir.dk/ig/conditionlist), are maintained in an individuel IG. +The IG contains profiles which are used to define a general model for MedCom FHIR documents. The use case specific profiles are maintained in individual IGs. The profiles builds upon the knowledge obtained through the use of CDA in Denmark and the work around [FHIR documents from HL7 International](https://hl7.org/fhir/R4/documents.html). From 23692d988823d306be4492fed28c9a4bb4d2f636 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 10 Dec 2025 13:13:16 +0100 Subject: [PATCH 66/79] Added description for patient and documentreference --- ...tion-medcom-contained-documentreference-intro.md | 13 +++++++++++-- ...ctureDefinition-medcom-document-patient-intro.md | 4 +++- input/pagecontent/index.md | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md index d4d339e..452c4b7 100644 --- a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md @@ -1,6 +1,16 @@ ### Scope and usage -The MedComDocumentReference profile is not intented to be exchanged until the infrastructure is ready to receive it, but can be used for validation of metadata associated with a document. This profile provides metadata about a document, this can be CDA, FHIR or PDF. It holds the required metadata from the IHE XDS metadata standard, and a [mapping between the two can be found on GitHub pages](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). +The MedComContainedDocumentReference profile is not intented to be exchanged until the infrastructure is ready to receive it, but can be used for validation of metadata associated with a document. This profile provides metadata about a document, this can be CDA, FHIR or PDF. It holds the required metadata from the IHE XDS metadata standard, and a [mapping between the two can be found on GitHub pages](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). + +#### Rationale of the MedComContainedDocumentReference + +This mapping has been developed to enable the future use of FHIR within the Danish document-sharing infrastructure, which currently relies on IHE XDS metadata. By aligning the Danish XDS metadata requirements with a profiled FHIR DocumentReference, the use of DocumentReference can be adopted seamlessly once the national infrastructure transitions towards FHIR-based exchange. + +In the interim, mapping from IHE XDS to DocumentReference can already be used to support validation and quality assurance. Implementers can map the metadata they populate in the IHE XDS format to the corresponding elements in the relevant MedCom FHIR DocumentReference profile. Using FHIR’s native validation tooling, it is possible to verify that the supplied metadata conforms to the expected structure and constraints defined by the profile. This provides an immediate benefit, allowing organisations to prepare for a gradual migration to FHIR while maintaining compatibility with the existing XDS-based infrastructure. + +#### Contained resources + +This profile includes `contained` as part of its name because referenced resources **MUST** be contained inside the DocumentReference instance. The current Danish infrastructure is not designed to store or manage multiple separate FHIR resources, and containment ensures that all necessary metadata is delivered as a single, self-contained unit consistent with the existing XDS-based workflow. #### Author institution and author person The author element allows up to two references and must always include exactly one author organization and optionally one author person. @@ -8,4 +18,3 @@ The author element allows up to two references and must always include exactly o **Author institution:** The slice author:institution is mandatory and restricts the reference to a MedComDocumentOrganization. This ensures that every document has one clear author organization responsible for its creation. **Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. - diff --git a/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md b/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md index ca4905e..ecc6827 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-patient-intro.md @@ -5,6 +5,8 @@ The MedComDocumentPatient is inherited from the [DkCorePatient](https://hl7.dk/f #### Required information -There are certain requirements to which data must be present in a FHIR document. These requirements come from the IHE XDS metadata standard (sourcePatientInfo attribute) that requires for a Danish CPR-number (unique identifier), given and family name, birthdate and gender to be present. Therefore, this information has a minimum cardinality of 1. +There are certain requirements to which data **MUST** be present in a FHIR document. These requirements come from the IHE XDS metadata standard (sourcePatientInfo attribute) that requires for a Danish CPR-number (unique identifier), given and family name, birthdate and gender to be present. Therefore, this information has a minimum cardinality of 1. + +If the document source lacks data for either the patient's given name or family name, the missing field(s) **MUST** be populated with `ADRESSEBESKYTTET`. This approach ensures that unavailable name components are replaced, as the absence of a given or family name often results from name and address protection (Da: Navne- og adressebeskyttelse). It is not allowed to add a replacement-CPR (Danish: erstatningsCPR), as this is not supported in the infrastructure. \ No newline at end of file diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index 5141167..ce8303c 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -40,7 +40,7 @@ Besides Terminology and metadata IGs, this IG has a dependency to the [MedComCor ### Documentation [More information about MedCom Document](https://medcomdk.github.io/dk-medcom-document/) can be found here. MedCom document profiles does not alone constitute a standard. -### Governance and guiance +### Governance and guidance FHIR profiles are managed under MedCom: [Source code](https://github.com/medcomdk/dk-medcom-document). A description of governance and guidance for MedCom's FHIR standards, can be found on the [MedCom Landing Page](https://medcomdk.github.io/MedComLandingPage). From c41834400b23bb6b18e76dafe8ceb0969fa7bb36 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 10 Dec 2025 13:17:37 +0100 Subject: [PATCH 67/79] Added link to mapping in profiles --- ...ureDefinition-medcom-contained-documentreference-intro.md | 2 ++ .../StructureDefinition-medcom-document-bundle-intro.md | 3 +++ .../StructureDefinition-medcom-document-composition-intro.md | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md index 452c4b7..d02855c 100644 --- a/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-contained-documentreference-intro.md @@ -8,6 +8,8 @@ This mapping has been developed to enable the future use of FHIR within the Dani In the interim, mapping from IHE XDS to DocumentReference can already be used to support validation and quality assurance. Implementers can map the metadata they populate in the IHE XDS format to the corresponding elements in the relevant MedCom FHIR DocumentReference profile. Using FHIR’s native validation tooling, it is possible to verify that the supplied metadata conforms to the expected structure and constraints defined by the profile. This provides an immediate benefit, allowing organisations to prepare for a gradual migration to FHIR while maintaining compatibility with the existing XDS-based infrastructure. +Find the [mapping from IHE XDS metadata to FHIR DocumentReference here](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). + #### Contained resources This profile includes `contained` as part of its name because referenced resources **MUST** be contained inside the DocumentReference instance. The current Danish infrastructure is not designed to store or manage multiple separate FHIR resources, and containment ensures that all necessary metadata is delivered as a single, self-contained unit consistent with the existing XDS-based workflow. diff --git a/input/pagecontent/StructureDefinition-medcom-document-bundle-intro.md b/input/pagecontent/StructureDefinition-medcom-document-bundle-intro.md index b996424..3ad2176 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-bundle-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-bundle-intro.md @@ -1,3 +1,6 @@ ### Scope and usage The MedComDocumentBundle profile describes the Bundle resource that shall be used in all MedCom FHIR Documents. MedComDocumentBundle is the container for the content in a document. As this profile is the used in a document, the element type shall always be 'document'. This entails that the first resource in the entry element shall be a MedComDocumentComposition. + +#### Mapping from IHE-XDS metadata to FHIR Bundle +MedCom has developed a mapping. Find the [mapping from IHE XDS metadata to FHIR Bundle here](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). \ No newline at end of file diff --git a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md index e456ace..e6f5e35 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md @@ -10,4 +10,7 @@ The author element allows up to two references and must always include exactly o **Author institution:** The slice author:institution is mandatory and restricts the reference to a MedComDocumentOrganization. This ensures that every document has one clear author organization responsible for its creation. -**Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. \ No newline at end of file +**Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. + +#### Mapping from IHE-XDS metadata to FHIR Composition. +MedCom has developed a mapping. Find the [mapping from IHE XDS metadata to FHIR Composition here](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). \ No newline at end of file From 9d9978fde0952cf6770af8e86301c36af86f75d3 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 10 Dec 2025 13:46:35 +0100 Subject: [PATCH 68/79] Update StructureDefinition-medcom-document-composition-intro.md --- .../StructureDefinition-medcom-document-composition-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md index e6f5e35..3025593 100644 --- a/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md +++ b/input/pagecontent/StructureDefinition-medcom-document-composition-intro.md @@ -12,5 +12,5 @@ The author element allows up to two references and must always include exactly o **Author person:** An additional author element that does not match the institutional slice is interpreted as an author person. If used, it MUST reference exactly one resource of the allowed types: MedComDocumentPractitioner, MedComDocumentPractitionerRole, MedComDocumentPatient, DkCoreRelatedPerson, or Device. -#### Mapping from IHE-XDS metadata to FHIR Composition. +#### Mapping from IHE-XDS metadata to FHIR Composition MedCom has developed a mapping. Find the [mapping from IHE XDS metadata to FHIR Composition here](https://medcomdk.github.io/dk-medcom-document/assets/documents/Mapping_from_IHE-XDS_metadata_to_FHIR.html). \ No newline at end of file From 745a0bb1241fbf8d75ae13af9cd573d45830bdc8 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 11 Dec 2025 13:47:40 +0100 Subject: [PATCH 69/79] added ignorewarning expression --- input/ignoreWarnings.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/input/ignoreWarnings.txt b/input/ignoreWarnings.txt index d03142b..5e1e4f5 100644 --- a/input/ignoreWarnings.txt +++ b/input/ignoreWarnings.txt @@ -2,4 +2,7 @@ # Add warning and/or information messages here after you've confirmed that they aren't really a problem # (And include comments like this justifying why) -# See https://github.com/FHIR/sample-ig/blob/master/input/ignoreWarnings.txt for examples \ No newline at end of file +# See https://github.com/FHIR/sample-ig/blob/master/input/ignoreWarnings.txt for examples + +# We are aware of this information and it is not a problem. +%This element does not match any known slice defined in the profile http://hl7.org/fhir/StructureDefinition/obligation|5.2.0 (this may not be a problem, but you should check that it's not intended to match a slice)% \ No newline at end of file From 1092d01798f2950f9f4386d29d8f4051b4785822 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 11 Dec 2025 14:42:51 +0100 Subject: [PATCH 70/79] testing build-site --- sushi-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sushi-config.yaml b/sushi-config.yaml index 925766d..fe17312 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -27,7 +27,7 @@ publisher: dependencies: medcom.fhir.dk.xdsmetadata: dev medcom.fhir.dk.terminology: 2.0.2 - medcom.fhir.dk.core: dev + medcom.fhir.dk.core: 4.0.0-test #medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 hl7.fhir.extensions.r5: 4.0.1 From 21d4948c532a4d002e5fa208b3dfc856b6fde494 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 11 Dec 2025 14:56:31 +0100 Subject: [PATCH 71/79] Undo test --- sushi-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sushi-config.yaml b/sushi-config.yaml index fe17312..925766d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -27,7 +27,7 @@ publisher: dependencies: medcom.fhir.dk.xdsmetadata: dev medcom.fhir.dk.terminology: 2.0.2 - medcom.fhir.dk.core: 4.0.0-test + medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1 hl7.fhir.dk.core: 3.4.0 hl7.fhir.extensions.r5: 4.0.1 From 4dfdac1a62af839879ef0c21b243eebc90b62f7d Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 15 Dec 2025 11:56:17 +0100 Subject: [PATCH 72/79] Updated according to review --- input/fsh/Instances.fsh | 2 +- input/fsh/MedComDocumentSourcePatient.fsh | 25 ++++++++--------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/input/fsh/Instances.fsh b/input/fsh/Instances.fsh index 8b219ec..91b6a77 100644 --- a/input/fsh/Instances.fsh +++ b/input/fsh/Instances.fsh @@ -9,7 +9,7 @@ Usage: #example * identifier.value = "ce6f5308-d71b-4ee8-bc41-cc9ddcc15366" Instance: 8fa7df76-bec2-4fe2-9a44-750030a0eda0 -InstanceOf: DkCoreOrganization +InstanceOf: MedComCoreOrganization Title: "Author Organization" Description: "Instance of an author organization" Usage: #example diff --git a/input/fsh/MedComDocumentSourcePatient.fsh b/input/fsh/MedComDocumentSourcePatient.fsh index 239193f..9144651 100644 --- a/input/fsh/MedComDocumentSourcePatient.fsh +++ b/input/fsh/MedComDocumentSourcePatient.fsh @@ -1,28 +1,19 @@ Profile: MedComDocumentPatient -Parent: DkCorePatient +Parent: MedComCorePatient Id: medcom-document-patient Description: "A profile including requirements for a MedCom Document Patient." -* id MS -* text MS -* text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." -* text.status MS -* text.div MS -* text MS * identifier 1..1 MS * identifier[cpr] ^short = "Unique identification number for all citizens in Denmark, called civil person register (CPR-number)." * identifier[cpr] 1..1 MS -* identifier[cpr].value 1..1 MS SU +* identifier[cpr].value 1..1 MS * identifier[cpr].system 1..1 MS -* name 1..1 MS -* name[official] 1..1 MS -* name[official].given 1.. MS SU -* name[official].family 1.. MS SU +* identifier[x-ecpr] 0..0 +* identifier[d-ecpr] 0..0 +* name ..1 +* name[official] ..1 +* name[official].given 1.. +* name[official].family 1.. * birthDate 1.. MS * gender 1.. MS -* insert ProducerShallPutInNarrative(id) -* insert ProducerShallPutInNarrative(identifier[cpr].value) -* insert ProducerShallPutInNarrative(identifier[cpr].system) -* insert ProducerShallPutInNarrative(name[official].family) -* insert ProducerShallPutInNarrative(name[official].given) * insert ProducerShallPutInNarrative(birthDate) * insert ProducerShallPutInNarrative(gender) \ No newline at end of file From d34e0d952d5af5907112bd0192f03c910362310d Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 17 Dec 2025 08:55:07 +0100 Subject: [PATCH 73/79] Added invariant for formatcode semantinc versioning --- input/fsh/MedComDocumentComposition.fsh | 3 ++- input/fsh/invariants.fsh | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 02825c7..0cf245a 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -77,7 +77,8 @@ as an author person." * section.text MS //RCH: Hvad er dette felt til? Det er med fra tidligere, men jeg ved ikke hvad vi bruger det til. Skal det fjernes? * section.entry MS * meta 1.. MS -* meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile name used as the formatCode in the DocumentEntry for the individual MedCom FHIR Document standards." +* meta.profile obeys medcom-canonical-semver +* meta.profile ^short = "[DocumentEntry.formatCode] Indicates the FHIR Composition profile canonical, including an explicit version `|x.y.z`. The value does not map 1:1 to XDS DocumentEntry.formatCode and SHALL be mapped." * insert ProducerShallPutInNarrative(id) * insert ProducerShallPutInNarrative(confidentiality) diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index 5bde94a..5453faa 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -19,4 +19,9 @@ Invariant: medcom-datetime-has-time-zulu //"2025-11-27T12:34:56.789Z" Description: "dateTime must include date, time, and time zone." Severity: #error -Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?Z$')" \ No newline at end of file +Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?Z$')" + +Invariant: medcom-canonical-semver +Description: "The canonical SHALL include an explicit semantic version (semver) using the format '|x.y.z' with optional prerelease (-...) and build metadata (+...)." +Severity: #error +Expression: "matches('^.*\\|\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$')" \ No newline at end of file From ef433e242e0552cebb16d956350494435e08b4f7 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 17 Dec 2025 10:29:45 +0100 Subject: [PATCH 74/79] Update invariants.fsh --- input/fsh/invariants.fsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/fsh/invariants.fsh b/input/fsh/invariants.fsh index 5453faa..e9e0227 100644 --- a/input/fsh/invariants.fsh +++ b/input/fsh/invariants.fsh @@ -22,6 +22,6 @@ Severity: #error Expression: "$this.toString().matches('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]+)?Z$')" Invariant: medcom-canonical-semver -Description: "The canonical SHALL include an explicit semantic version (semver) using the format '|x.y.z' with optional prerelease (-...) and build metadata (+...)." +Description: "The canonical SHALL include an explicit semantic version (semver) with optional prerelease (-...) and build metadata (+...)." Severity: #error -Expression: "matches('^.*\\|\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$')" \ No newline at end of file +Expression: "matches('^.*[|][0-9]+[.][0-9]+([.][0-9]+)?(-[0-9A-Za-z-]+([.][0-9A-Za-z-]+)*)?([+][0-9A-Za-z-]+([.][0-9A-Za-z-]+)*)?$')" From ecef6bb1cfd7434be90e077eb452214fae838549 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Mon, 5 Jan 2026 15:56:48 +0100 Subject: [PATCH 75/79] Added dependency to DkCore v. 3.5.0 --- input/fsh/Alias.fsh | 23 ++++++++++++++++++- .../fsh/MedComContainedDocumentReference.fsh | 2 +- input/fsh/MedComMinimalDocumentReference.fsh | 5 ++-- input/fsh/ValueSets.fsh | 5 ++-- sushi-config.yaml | 2 +- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index dc7d375..f1ef336 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -62,6 +62,7 @@ Alias: $PracticeSetting = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ih Alias: $FacilityType = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-HealthcareFacilityTypeCode-VS +/* Alias: $DanishiheOID = urn:oid:1.2.208.184.100.9 Alias: $SnomedctOID = urn:oid:2.16.840.1.113883.6.96 Alias: $LoincOID = urn:oid:2.16.840.1.113883.6.1 @@ -73,6 +74,26 @@ Alias: $MedComFormatOID = urn:oid:1.2.208.184.100.10 Alias: $DanishxdsOID = urn:oid:1.2.208.176.8.1 Alias: $IANALanguageOID = urn:oid:2.16.840.1.113883.6.121 Alias: $IANAMediaOID = urn:oid:2.16.840.1.113883.5.79 - +*/ Alias: $v3-ActCode3.0.0 = http://terminology.hl7.org/ValueSet/v3-ActCode|3.0.0 Alias: $sct = http://snomed.info/sct|http://snomed.info/sct/554471000005108 // Danish version - append e.g. /version/20240331 to get a more specific version + +Alias: $DanishXdsOID = urn:oid:1.2.208.184.100.9 +//Alias: $DanishiheOID = urn:oid:1.2.208.184.100.9 +Alias: $SnomedctOID = http://snomed.info/sct|http://snomed.info/sct/554471000005108 //urn:oid:2.16.840.1.113883.6.96 +Alias: $LoincOID = http://loinc.org //urn:oid:2.16.840.1.113883.6.1 +Alias: $MedComOID = urn:oid:1.2.208.184.100.1 +Alias: $SKSOID = urn:oid:1.2.208.176.2.4 +//Alias: $SKSOID = https://www.esundhed.dk/Registre/Landspatientregisteret +//Alias: $SKSOID = http://dk.ehealth.sundhed.fhir.ig.core1 +Alias: $NPUOID = urn:oid:1.2.208.176.2.1 +Alias: $PROdkOID = urn:oid:1.2.208.176.7.3.1 +Alias: $MedComFormatOID = urn:oid:1.2.208.184.100.10 +Alias: $DanishHomeCommunityOID = urn:oid:1.2.208.176.8.1 +//Alias: $IANALanguageOID = urn:oid:2.16.840.1.113883.6.121 +//Alias: $IANALanguageOID = https://www.iana.org/assignments/language-subtag-registry +Alias: $IANALanguageOID = urn:ietf:bcp:47 //urn:oid:2.16.840.1.113883.6.121 +Alias: $IANAMediaOID = urn:ietf:bcp:13 //http://terminology.hl7.org/CodeSystem/v3-mediaType //urn:oid:2.16.840.1.113883.5.79 +Alias: $HL7 = http://terminology.hl7.org/CodeSystem/v3-Confidentiality //urn:oid:2.16.840.1.113883.5.25 +Alias: $hoer = urn:ad:dk:medcom:noah:action-categories +Alias: $DanishPrimaryHealthcareDomainOID = urn:oid:1.2.208.193.100 \ No newline at end of file diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index fd97011..af6821b 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -1,5 +1,5 @@ Profile: MedComContainedDocumentReference -Parent: MedComMinimalDocumentReference //OBS: Nedarv direkte fra DkCore når den udgives +Parent: DkCoreMinimalDocumentReference Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." * id 1.. MS diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 4eae2ba..947d954 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -1,4 +1,4 @@ -Profile: MedComMinimalDocumentReference //OBS: Skal erstattes af afhængighed til DkCore v 3.5.0 +/*Profile: MedComMinimalDocumentReference //OBS: Skal erstattes af afhængighed til DkCore v 3.5.0 Parent: MinimalDocumentReference Id: medcom-minimal-documentreference Title: "A replication of HL7 Denmark DK Core MinimalDocumentReference Profile" @@ -13,4 +13,5 @@ Description: "A replication of DK Core MinimalDocumentReference" * authenticator only Reference(DkCorePractitioner or DkCorePractitionerRole or DkCoreOrganization) * subject 1..1 * subject only Reference(DkCorePatient) -* context.sourcePatientInfo only Reference(DkCorePatient) \ No newline at end of file +* context.sourcePatientInfo only Reference(DkCorePatient) +*/ \ No newline at end of file diff --git a/input/fsh/ValueSets.fsh b/input/fsh/ValueSets.fsh index e9429f4..5d1c807 100644 --- a/input/fsh/ValueSets.fsh +++ b/input/fsh/ValueSets.fsh @@ -1,4 +1,4 @@ -ValueSet: MedComSorPracticeSettingCode +/*ValueSet: MedComSorPracticeSettingCode Id: medcom-core-practice-setting-code Title: "Replication og DK SOR Practice Setting Code" Description: "Replication of valuesest from DK Core. Values used for the document metadata attribute practiceSettingCode, which is an attribute specifying the clinical specialty where the act that resulted in the document was performed (e.g., Family Practice, Laboratory, Radiology). The value set is based on a subset of the code list from the SOR lookup table 'SOR-Kliniske specialer' (https://sor.sum.dsdn.dk/lookupdata/#clinical_speciality, accessable on Sundhedsdatanettet (SDN)), which is based on SNOMED CT codes." @@ -57,4 +57,5 @@ Description: "Replication of valuesest from DK Core. Values used for the documen * $sct#658191000005101 * $sct#658201000005103 * $sct#658141000005108 -* $sct#658181000005104 \ No newline at end of file +* $sct#658181000005104 +*/ \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index 925766d..7ffcee6 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -29,7 +29,7 @@ dependencies: medcom.fhir.dk.terminology: 2.0.2 medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1 - hl7.fhir.dk.core: 3.4.0 + hl7.fhir.dk.core: 3.5.0 hl7.fhir.extensions.r5: 4.0.1 ihe.iti.mhd: 4.2.3 # From 45b97b166c038dd5530a3e84a8a34214b5ce04dc Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 7 Jan 2026 13:50:54 +0100 Subject: [PATCH 76/79] Update MedComDocumentComposition.fsh --- input/fsh/MedComDocumentComposition.fsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 0cf245a..88eaaef 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -74,7 +74,7 @@ as an author person." * language from $Language (extensible) * language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS -* section.text MS //RCH: Hvad er dette felt til? Det er med fra tidligere, men jeg ved ikke hvad vi bruger det til. Skal det fjernes? +* section.text MS //RCH MANGLER AFKLARING * section.entry MS * meta 1.. MS * meta.profile obeys medcom-canonical-semver From 667828af1b8ddfc13a6b3d5ae5564900e05fe1a5 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Wed, 7 Jan 2026 21:38:27 +0100 Subject: [PATCH 77/79] Added HomeCommunityId and updated UML diagram --- input/fsh/MedComContainedDocumentReference.fsh | 7 +++++++ input/images/DocumentModel.svg | 2 +- input/pagecontent/dependencies.xml | 9 +++++++++ input/pagecontent/index.md | 6 ++++-- out/puml/MedComDocument/DocumentModel.svg | 1 + sushi-config.yaml | 7 +++++-- 6 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 input/pagecontent/dependencies.xml create mode 100644 out/puml/MedComDocument/DocumentModel.svg diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index af6821b..a4404eb 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -118,6 +118,10 @@ as an author person." * context.sourcePatientInfo ^short = "[DocumentEntry.sourcePatientId and DocumentEntry.sourcePatientInfo] Patient demographics from source. Must be the same reference as in DocumentReference.subject." * context.sourcePatientInfo only Reference(MedComDocumentPatient) * extension MS +* extension contains + medcom-document-homecommunityid-extension named homeCommunityid 0..1 MS +* extension[homeCommunityid] ^short = "[DocumentEntry.homeCommunityId] A unique identifier for a community where the DocumentEntry and document can be accessed." +* extension[homeCommunityid].url MS * extension[versionid] MS * extension[versionid] ^short = "Specifies the version of the DocumentReference profile for a standard." @@ -159,3 +163,6 @@ as an author person." * insert ProducerShallPutInNarrative(context.related) * insert ProducerShallPutInNarrative(context.sourcePatientInfo.reference) * insert ProducerShallPutInNarrative(context.sourcePatientInfo.identifier) +* insert ProducerShallPutInNarrative(extension[homeCommunityid].valueCoding.system) +* insert ProducerShallPutInNarrative(extension[homeCommunityid].valueCoding.code) +* insert ProducerShallPutInNarrative(extension[versionid]) diff --git a/input/images/DocumentModel.svg b/input/images/DocumentModel.svg index f7b7612..846fe80 100644 --- a/input/images/DocumentModel.svg +++ b/input/images/DocumentModel.svg @@ -1 +1 @@ -MedComDocumentBundleMedComDocumentComposition«MedComCoreOrganization»MedComDocumentOrganization«MedComCorePractitioner»MedComDocumentPractitioner«DkCorePatient»MedComDocumentPatient*use case specific content*entryauthorInstitutionauthorPersonsubjectsection.entry \ No newline at end of file +«Bundle»MedComDocumentBundle«Composition»MedComDocumentComposition«MedComCoreOrganization»MedComDocumentOrganization«MedComCorePractitioner»MedComDocumentPractitioner«MedComCorePractitionerRole»MedComDocumentPractitionerRole«DkCorePatient»MedComDocumentPatient«RelatedPerson»DkCoreRelatedPersonDevice'Use case specific content'AuthorPersonentryauthor:personauthor:organizationsubjectsection.entrypractitionerorganization \ No newline at end of file diff --git a/input/pagecontent/dependencies.xml b/input/pagecontent/dependencies.xml new file mode 100644 index 0000000..4f07022 --- /dev/null +++ b/input/pagecontent/dependencies.xml @@ -0,0 +1,9 @@ +
+
+ {% include dependency-table.xhtml %} +
+
+ {% include globals-table.xhtml %} +
+
\ No newline at end of file diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index ce8303c..d26d87b 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -10,7 +10,9 @@ The profiles builds upon the knowledge obtained through the use of CDA in Denmar The figure below illustrates a general document model, which all MedCom documents will comply to. Document profiles in this IG are all prefixed "MedComDocument". Beside the profiles on the figure, a MedCom document can also include some MedCom Core profiles and profiles made to support a specific use case. All together they constitute the actual content of a MedCom FHIR document. The following sections describe the overall purpose of each document profile. -Shows the general MedCom document model. Each document must at least contain the following resources: Bundle, Composition, Organization, Patient and use case specific resources. +Shows the general MedCom document model. Structural overview of a MedCom Document Bundle, illustrating the relationships between Bundle, Composition, author (person and organization), subject (patient), and referenced resources such as Practitioner, PractitionerRole, Organization, RelatedPerson, Device, and use-case–specific content. + +The figure shows the general MedCom document model. It is a structural overview of a MedCom Document Bundle, illustrating the relationships between Bundle, Composition, authorPerson, subject (patient), and referenced resources such as Practitioner, PractitionerRole, Organization, RelatedPerson, Device, and use-case–specific content. ##### MedComDocument Profiles You will find a list of all MedCom Document profiles in the "Profiles" tab in the menu. @@ -35,7 +37,7 @@ In [MedCom Terminology IG](http://medcomfhir.dk/ig/terminology/) all referenced In MedCom [Dk Terminology for XDS Metadata](https://medcomfhir.dk/ig/xdsmetadata/) all MedCom CodeSystems and ValueSets related to metadata. #### Dependencies -Besides Terminology and metadata IGs, this IG has a dependency to the [MedComCore IG](http://medcomfhir.dk/ig/core/), [DK-core](https://hl7.dk/fhir/core/), defined by [HL7 Denmark](https://hl7.dk/) and [IHE MHD](https://profiles.ihe.net/ITI/MHD/). +Besides Terminology and metadata IGs, this IG has a dependency to the [MedComCore IG](http://medcomfhir.dk/ig/core/), [DK-core](https://hl7.dk/fhir/core/), defined by [HL7 Denmark](https://hl7.dk/) and [IHE MHD](https://profiles.ihe.net/ITI/MHD/). **Note** that the IG versions linked may be newer than the versions used as dependencies in this implementation guide. For the exact dependency versions applied, see the **Dependencies** tab in the top menu under **More**. ### Documentation [More information about MedCom Document](https://medcomdk.github.io/dk-medcom-document/) can be found here. MedCom document profiles does not alone constitute a standard. diff --git a/out/puml/MedComDocument/DocumentModel.svg b/out/puml/MedComDocument/DocumentModel.svg new file mode 100644 index 0000000..846fe80 --- /dev/null +++ b/out/puml/MedComDocument/DocumentModel.svg @@ -0,0 +1 @@ +«Bundle»MedComDocumentBundle«Composition»MedComDocumentComposition«MedComCoreOrganization»MedComDocumentOrganization«MedComCorePractitioner»MedComDocumentPractitioner«MedComCorePractitionerRole»MedComDocumentPractitionerRole«DkCorePatient»MedComDocumentPatient«RelatedPerson»DkCoreRelatedPersonDevice'Use case specific content'AuthorPersonentryauthor:personauthor:organizationsubjectsection.entrypractitionerorganization \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index 7ffcee6..82ba450 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -77,12 +77,15 @@ dependencies: # │ property below. │ # ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ menu: - Table of Contents: toc.html Home: index.html Profiles: profiles.html Extensions: extensions.html Artifacts: artifacts.html - Downloads: downloads.html + More: + Table of Contents: toc.html + Downloads: downloads.html + Dependencies: dependencies.html + # ╭───────────────────────────Less Common Implementation Guide Properties──────────────────────────╮ # │ Uncomment the properties below to configure additional properties on the ImplementationGuide │ From 061ecb7ef514284e8121ec0f2c05ec4e7aa326a8 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 8 Jan 2026 12:49:01 +0100 Subject: [PATCH 78/79] Added sushi ignore errors and added 1.. on text element on profiles --- input/fsh/MedComContainedDocumentReference.fsh | 2 +- input/fsh/MedComDocumentComposition.fsh | 2 +- input/fsh/MedComMinimalDocumentReference.fsh | 2 +- input/sushi-ignoreErrors.txt | 14 ++++++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 input/sushi-ignoreErrors.txt diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index a4404eb..cf180b3 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -3,7 +3,7 @@ Parent: DkCoreMinimalDocumentReference Id: medcom-contained-documentreference Description: "A profile stating the rules, when exchanging a FHIR document in the Danish Healthcare sector using IHE MHD and IHE XDS based document sharing." * id 1.. MS -* text MS +* text 1.. MS * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 88eaaef..88426cd 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -8,7 +8,7 @@ Parent: Composition Id: medcom-document-composition Description: "The profile of the MedCom Document Composition containing the minimum allowed content." * id 1.. MS -* text MS +* text 1.. MS * text ^short = "The narrative text SHALL always be included when exchanging a MedCom FHIR Bundle." * text.status MS * text.div MS diff --git a/input/fsh/MedComMinimalDocumentReference.fsh b/input/fsh/MedComMinimalDocumentReference.fsh index 947d954..da38698 100644 --- a/input/fsh/MedComMinimalDocumentReference.fsh +++ b/input/fsh/MedComMinimalDocumentReference.fsh @@ -1,4 +1,4 @@ -/*Profile: MedComMinimalDocumentReference //OBS: Skal erstattes af afhængighed til DkCore v 3.5.0 +/*Profile: MedComMinimalDocumentReference //OBS: Er erstattet af afhængighed til DkCore v 3.5.0 Parent: MinimalDocumentReference Id: medcom-minimal-documentreference Title: "A replication of HL7 Denmark DK Core MinimalDocumentReference Profile" diff --git a/input/sushi-ignoreErrors.txt b/input/sushi-ignoreErrors.txt new file mode 100644 index 0000000..5f41dc5 --- /dev/null +++ b/input/sushi-ignoreErrors.txt @@ -0,0 +1,14 @@ +== Suppressed errors == +# Link to sushi desciption: https://fshschool.org/docs/sushi/project/#using-the-hl7-ig-publisher-and-auto-builder +# Suppresses this error as IG Publisher autogenerates narratives after SUSHI has run. +Element Patient.text has minimum cardinality 1 but occurs 0 time(s). +Element CareTeam.text has minimum cardinality 1 but occurs 0 time(s). +Element DiagnosticReport.text has minimum cardinality 1 but occurs 0 time(s). +Element Encounter.text has minimum cardinality 1 but occurs 0 time(s). +Element Media.text has minimum cardinality 1 but occurs 0 time(s). +Element Observation.text has minimum cardinality 1 but occurs 0 time(s). +Element Organization.text has minimum cardinality 1 but occurs 0 time(s). +Element Practitioner.text has minimum cardinality 1 but occurs 0 time(s). +Element PractitionerRole.text has minimum cardinality 1 but occurs 0 time(s). +Element DocumentReference.text has minimum cardinality 1 but occurs 0 time(s). +Element Composition.text has minimum cardinality 1 but occurs 0 time(s). From dd1f97f4f5e79a501ee8fc0c360e7a7be74f9ae3 Mon Sep 17 00:00:00 2001 From: RikkeVestesen Date: Thu, 8 Jan 2026 15:24:12 +0100 Subject: [PATCH 79/79] Added temp valuesets and code systems and corrected bindings --- input/fsh/Alias.fsh | 10 +- .../fsh/MedComContainedDocumentReference.fsh | 14 +- input/fsh/MedComDocumentComposition.fsh | 6 +- input/fsh/ValueSets.fsh | 518 +++++++++++++++--- sushi-config.yaml | 2 +- 5 files changed, 475 insertions(+), 75 deletions(-) diff --git a/input/fsh/Alias.fsh b/input/fsh/Alias.fsh index f1ef336..b974f8b 100644 --- a/input/fsh/Alias.fsh +++ b/input/fsh/Alias.fsh @@ -51,7 +51,7 @@ Alias: $ContentType = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-co Alias: $Language = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-languagecode-VS //Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-apd-formatcode-VS -Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-formatcode-VS +//Alias: $FormatCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-formatcode-VS Alias: $TypeCode = http://medcomfhir.dk/ig/xdsmetadata/ValueSet/MedCom-ihe-core-typecode-VS @@ -82,7 +82,7 @@ Alias: $DanishXdsOID = urn:oid:1.2.208.184.100.9 //Alias: $DanishiheOID = urn:oid:1.2.208.184.100.9 Alias: $SnomedctOID = http://snomed.info/sct|http://snomed.info/sct/554471000005108 //urn:oid:2.16.840.1.113883.6.96 Alias: $LoincOID = http://loinc.org //urn:oid:2.16.840.1.113883.6.1 -Alias: $MedComOID = urn:oid:1.2.208.184.100.1 +//Alias: $MedComOID = urn:oid:1.2.208.184.100.1 Alias: $SKSOID = urn:oid:1.2.208.176.2.4 //Alias: $SKSOID = https://www.esundhed.dk/Registre/Landspatientregisteret //Alias: $SKSOID = http://dk.ehealth.sundhed.fhir.ig.core1 @@ -96,4 +96,8 @@ Alias: $IANALanguageOID = urn:ietf:bcp:47 //urn:oid:2.16.840.1.113883.6.121 Alias: $IANAMediaOID = urn:ietf:bcp:13 //http://terminology.hl7.org/CodeSystem/v3-mediaType //urn:oid:2.16.840.1.113883.5.79 Alias: $HL7 = http://terminology.hl7.org/CodeSystem/v3-Confidentiality //urn:oid:2.16.840.1.113883.5.25 Alias: $hoer = urn:ad:dk:medcom:noah:action-categories -Alias: $DanishPrimaryHealthcareDomainOID = urn:oid:1.2.208.193.100 \ No newline at end of file +Alias: $DanishPrimaryHealthcareDomainOID = urn:oid:1.2.208.193.100 + +Alias: $IHEClassCodeTEMP = http://medcomfhir.dk/ig/document/CodeSystem/MedCom-ihe-classcode-CS-TEMP +Alias: $IHEMessageCodesTEMP = http://medcomfhir.dk/ig/document/CodeSystem/MedCom-message-codes-CS-TEMP +Alias: $IHEFormatCodeTEMP = http://medcomfhir.dk/ig/document/CodeSystem/MedCom-ihe-formatcode-CS-TEMP \ No newline at end of file diff --git a/input/fsh/MedComContainedDocumentReference.fsh b/input/fsh/MedComContainedDocumentReference.fsh index cf180b3..3d0a05f 100644 --- a/input/fsh/MedComContainedDocumentReference.fsh +++ b/input/fsh/MedComContainedDocumentReference.fsh @@ -28,14 +28,14 @@ Description: "A profile stating the rules, when exchanging a FHIR document in th * type.coding.system 1.. MS * type.coding.code 1.. MS * type.coding.display 1.. MS -* type from $TypeCode (required) +* type from MedCom-ihe-core-typecode-VS-TEMP (required) //Must be changed back to XDS metadata IG when ValueSet is fixed * authenticator 0..1 MS * authenticator ^short = "[DocumentEntry.legalAuthenticator] Who authenticated the document." * authenticator only Reference(MedComDocumentPractitioner) * authenticator ^type.aggregation = #contained // ClassCode * category 1..1 MS -* category from $ClassCode (extensible) +* category from MedCom-ihe-core-classcode-VS-TEMP (extensible) //Must be changed back to XDS metadata IG when ValueSet is fixed * category.coding.code 1.. MS * category.coding.system 1.. MS * category.coding.display 1.. MS @@ -68,11 +68,11 @@ as an author person." * content MS * content.attachment.contentType ^short = "[DocumentEntry.mimeType] Mime type of the content, with charset etc." * content.attachment.contentType 1.. MS -* content.attachment.contentType from $ContentType +* content.attachment.contentType from MedCom-ihe-core-mimetype-VS-TEMP //Must be changed back to XDS metadata IG when ValueSet is fixed * content.attachment MS * content.attachment.language ^short = "[DocumentEntry.languageCode] Human language of the content" * content.attachment.language 1.. MS -* content.attachment.language from $Language (extensible) +* content.attachment.language from MedCom-ihe-core-languagecode-VS-TEMP (extensible) //Must be changed back to XDS metadata IG when ValueSet is fixed * content.attachment.hash 0.. MS * content.attachment.hash ^short = "[DocumentEntry.hash] Hash of the data (sha-1)" * content.format ^short = "[DocumentEntry.formatCode] Format/content rules for the document" @@ -80,7 +80,7 @@ as an author person." * content.format.system 1.. MS * content.format.code 1.. MS * content.format.display 1.. MS -* content.format from $FormatCode (required) +* content.format from MedCom-ihe-core-formatcode-VS-TEMP (required) //Must be changed back to XDS metadata IG when ValueSet is fixed * content.attachment.size 0.. MS * content.attachment.title 1.. MS * content.attachment.url MS @@ -101,14 +101,14 @@ as an author person." * context.facilityType.coding.code 1.. MS * context.facilityType.coding.system 1.. MS * context.facilityType.coding.display 1.. MS -* context.facilityType from $FacilityType (required) +* context.facilityType from MedCom-ihe-core-HealthcareFacilityTypeCode-VS-TEMP (required) //Must be changed back to XDS metadata IG when ValueSet is fixed * context.facilityType ^short = "[DocumentEntry.healthcareFacilityTypeCode] Kind of facility where patient was seen." * context.practiceSetting 1.. MS * context.practiceSetting.coding 1..1 MS * context.practiceSetting.coding.code 1.. MS * context.practiceSetting.coding.system 1.. MS * context.practiceSetting.coding.display 1.. MS -* context.practiceSetting from $PracticeSetting (required) +* context.practiceSetting from MedCom-ihe-core-PracticeSettingCode-VS-TEMP (required) * context.practiceSetting ^short = "[DocumentEntry.practiceSettingCode] Additional details about where the content was created (e.g. clinical specialty)." * context.related 0..* MS * context.related ^short = "[DocumentEntry.referenceIdList] Related identifiers or resources." diff --git a/input/fsh/MedComDocumentComposition.fsh b/input/fsh/MedComDocumentComposition.fsh index 88426cd..ec69b36 100644 --- a/input/fsh/MedComDocumentComposition.fsh +++ b/input/fsh/MedComDocumentComposition.fsh @@ -30,9 +30,9 @@ Description: "The profile of the MedCom Document Composition containing the mini * type.coding.system 1.. MS * type.coding.code 1.. MS * type.coding.display 1.. MS -* type from $TypeCode (required) +* type from MedCom-ihe-core-typecode-VS-TEMP (required) //Must be changed back to XDS metadata IG when ValueSet is fixed * category ..1 MS -* category from $ClassCode (extensible) +* category from MedCom-ihe-core-classcode-VS-TEMP (extensible) //Must be changed back to XDS metadata IG when ValueSet is fixed * category.coding 1..1 MS * category.coding.code 1.. MS * category.coding.system 1.. MS @@ -71,7 +71,7 @@ as an author person." * title MS * title ^short = "[DocumentEntry.title] The readable title of the document." * language 1..1 MS -* language from $Language (extensible) +* language from MedCom-ihe-core-languagecode-VS-TEMP (extensible) //Must be changed back to XDS metadata IG when ValueSet is fixed * language ^short = "[DocumentEntry.languageCode] Human language of the content" * section 1.. MS * section.text MS //RCH MANGLER AFKLARING diff --git a/input/fsh/ValueSets.fsh b/input/fsh/ValueSets.fsh index 5d1c807..b758101 100644 --- a/input/fsh/ValueSets.fsh +++ b/input/fsh/ValueSets.fsh @@ -1,61 +1,457 @@ -/*ValueSet: MedComSorPracticeSettingCode -Id: medcom-core-practice-setting-code -Title: "Replication og DK SOR Practice Setting Code" -Description: "Replication of valuesest from DK Core. Values used for the document metadata attribute practiceSettingCode, which is an attribute specifying the clinical specialty where the act that resulted in the document was performed (e.g., Family Practice, Laboratory, Radiology). The value set is based on a subset of the code list from the SOR lookup table 'SOR-Kliniske specialer' (https://sor.sum.dsdn.dk/lookupdata/#clinical_speciality, accessable on Sundhedsdatanettet (SDN)), which is based on SNOMED CT codes." -* ^status = #active -* ^experimental = false -* $sct#773568002 -* $sct#408443003 -* $sct#394577000 -* $sct#394821009 -* $sct#394588006 -* $sct#394582007 -* $sct#394914008 -* $sct#394583002 -* $sct#394811001 -* $sct#394585009 -* $sct#408472002 -* $sct#394803006 -* $sct#394807007 -* $sct#419192003 -* $sct#394579002 -* $sct#408463005 -* $sct#394609007 -* $sct#551411000005104 -* $sct#394596001 -* $sct#394600006 -* $sct#394601005 -* $sct#394580004 -* $sct#421661004 -* $sct#408454008 -* $sct#394809005 -* $sct#394592004 -* $sct#418112009 -* $sct#394805004 -* $sct#394584008 -* $sct#394589003 -* $sct#394610002 -* $sct#394591006 -* $sct#394812008 -* $sct#394594003 -* $sct#394608004 -* $sct#394801008 -* $sct#394604002 -* $sct#394915009 -* $sct#394611003 -* $sct#394587001 -* $sct#394537008 -* $sct#394810000 -* $sct#394581000 -* $sct#394605001 -* $sct#394603008 -* $sct#408448007 -* $sct#394612005 -* $sct#658171000005102 -* $sct#658161000005107 -* $sct#658151000005105 -* $sct#658191000005101 -* $sct#658201000005103 -* $sct#658141000005108 -* $sct#658181000005104 -*/ \ No newline at end of file +//Valuesets: +ValueSet: MedComIHE_CoreHealthcareFacilityTypeCode_TEMP +Id: MedCom-ihe-core-HealthcareFacilityTypeCode-VS-TEMP +Title: "IHE HealthcareFacilityTypeCode_TEMP" +Description: "_TEMP Value set for healthcare facility type code represents the type of organizational setting of the clinical encounter during which the documented act occurred." +* ^experimental = false +* ^version = "1.0.2" +* ^status = #active +* ^date = "2024-01-19" +* $SnomedctOID#557511000005107 "akupunkturklinik" +* $SnomedctOID#550871000005101 "akutmodtageenhed" +* $SnomedctOID#394761003 "almen lægepraksis" +* $SnomedctOID#264372000 "apotek" +* $SnomedctOID#557501000005109 "apoteksfilial" +* $SnomedctOID#554851000005102 "asylcenter" +* $SnomedctOID#557531000005103 "bandagistklinik" +* $SnomedctOID#20078004 "behandlingscenter for stofmisbrugere" +* $SnomedctOID#722173008 "behandlingsenhed i fængsel eller arresthus" +* $SnomedctOID#309964003 "billeddiagnostisk enhed" +* $SnomedctOID#554221000005108 "bosted" +* $SnomedctOID#56781000005109 "center for misbrugsbehandling" +* $SnomedctOID#557881000005104 "COVID-19-testenhed" +* $SnomedctOID#554031000005103 "diætistklinik" +* $SnomedctOID#557891000005101 "enhed for aktivitetstilbud" +* $SnomedctOID#546821000005103 "ergoterapiklinik" +* $SnomedctOID#702871004 "fertilitetsklinik" +* $SnomedctOID#554061000005105 "fodterapeutklinik" +* $SnomedctOID#557901000005102 "forebyggende hjemmebesøgsenhed" +* $SnomedctOID#550861000005106 "fysioterapi- og ergoterapiklinik" +* $SnomedctOID#547011000005103 "fysioterapiklinik" +* $SnomedctOID#546811000005109 "genoptræningsenhed" +* $SnomedctOID#554881000005108 "handicap- og psykiatrienhed" +* $SnomedctOID#554861000005100 "handicapenhed" +* $SnomedctOID#554821000005109 "hjemmeplejeenhed" +* $SnomedctOID#550621000005101 "hjemmesygeplejeenhed" +* $SnomedctOID#284546000 "hospice" +* $SnomedctOID#22232009 "hospital" +* $SnomedctOID#702824005 "hørecenter" +* $SnomedctOID#309904001 "intensivenhed" +* $SnomedctOID#557591000005104 "internetbaseret sundhedsydelse" +* $SnomedctOID#554411000005101 "jobcenter" +* $SnomedctOID#550631000005103 "jordemoderklinik" +* $SnomedctOID#550641000005106 "kiropraktorklinik" +* $SnomedctOID#557521000005101 "klinik for alternativ behandling" +* $SnomedctOID#550851000005109 "klinisk enhed" +* $SnomedctOID#547211000005108 "kommune" +* $SnomedctOID#557561000005105 "konsulentvirksomhed" +* $SnomedctOID#557541000005106 "kosmetisk klinik" +* $SnomedctOID#550651000005108 "lægelaboratorium" +* $SnomedctOID#550661000005105 "lægevagt" +* $SnomedctOID#551611000005102 "operationsgang" +* $SnomedctOID#557581000005102 "optikervirksomhed" +* $SnomedctOID#557671000005101 "osteopatiklinik" +* $SnomedctOID#309939001 "palliativ enhed" +* $SnomedctOID#42665001 "plejehjem" +* $SnomedctOID#550891000005100 "privat" +* $SnomedctOID#554211000005102 "præhospitalsenhed" +* $SnomedctOID#554871000005105 "psykiatrienhed" +* $SnomedctOID#550711000005101 "psykologisk rådgivningsklinik" +* $SnomedctOID#556841000005105 "pædagogisk psykologisk rådgivning (PPR)" +* $SnomedctOID#702916001 "rehabiliteringsenhed" +* $SnomedctOID#225728007 "skadestue" +* $SnomedctOID#550671000005100 "speciallægepraksis" +* $SnomedctOID#264361005 "sundhedscenter" +* $SnomedctOID#554041000005106 "sundhedsforvaltning" +* $SnomedctOID#554021000005101 "sundhedsplejen" +* $SnomedctOID#554071000005100 "sygehusapotek" +* $SnomedctOID#703069008 "sygeplejeklinik" +* $SnomedctOID#550681000005102 "tandlægepraksis" +* $SnomedctOID#550691000005104 "tandplejeklinik" +* $SnomedctOID#550701000005104 "tandteknisk klinik" +* $SnomedctOID#554231000005106 "vaccinationsklinik" +* $SnomedctOID#554051000005108 "zoneterapiklinik" +* $SnomedctOID#550811000005108 "administrativ enhed" + +ValueSet: MedComIHE_CorePracticeSettingCode_TEMP +Id: MedCom-ihe-core-PracticeSettingCode-VS-TEMP +Title: "IHE PracticeSettingCode_TEMP" +Description: "_TEMP Values used for the document metadata attribute practiceSettingCode, which is an attribute specifying the clinical specialty where the act that resulted in the document was performed (e.g., Family Practice, Laboratory, Radiology). The value set is based on a subset of the code list from the SOR lookup table 'SOR-Kliniske specialer' (https://sor.sum.dsdn.dk/lookupdata/#clinical_speciality, accessable on Sundhedsdatanettet (SDN)), which is based on SNOMED codes. " +* ^experimental = false +* ^version = "1.0.1" +* ^status = #active +* ^date = "2024-06-20" +* $SnomedctOID#773568002 "akutmedicin" +* $SnomedctOID#408443003 "almen medicin" +* $SnomedctOID#394577000 "anæstesiologi" +* $SnomedctOID#394821009 "arbejdsmedicin" +* $SnomedctOID#394588006 "børne_ og ungdomspsykiatri" +* $SnomedctOID#394582007 "dermato_venerologi" +* $SnomedctOID#394914008 "diagnostisk radiologi" +* $SnomedctOID#394583002 "endokrinologi" +* $SnomedctOID#394811001 "geriatri" +* $SnomedctOID#394585009 "gynækologi og obstetrik" +* $SnomedctOID#408472002 "hepatologi" +* $SnomedctOID#394803006 "hæmatologi" +* $SnomedctOID#394807007 "infektionsmedicin" +* $SnomedctOID#419192003 "intern medicin" +* $SnomedctOID#394579002 "kardiologi" +* $SnomedctOID#408463005 "karkirurgi" +* $SnomedctOID#394609007 "kirurgi" +* $SnomedctOID#551411000005104 "kirurgisk gastroenterologi" +* $SnomedctOID#394596001 "klinisk biokemi" +* $SnomedctOID#394600006 "klinisk farmakologi" +* $SnomedctOID#394601005 "klinisk fysiologi og nuklearmedicin (snomed: klinisk fysiologi)" +* $SnomedctOID#394580004 "klinisk genetik" +* $SnomedctOID#421661004 "klinisk immunologi" +* $SnomedctOID#408454008 "klinisk mikrobiologi" +* $SnomedctOID#394809005 "klinisk neurofysiologi" +* $SnomedctOID#394592004 "klinisk onkologi" +* $SnomedctOID#418112009 "lungesygdomme" +* $SnomedctOID#394805004 "medicinsk allergologi" +* $SnomedctOID#394584008 "medicinsk gastroenterologi" +* $SnomedctOID#394589003 "nefrologi" +* $SnomedctOID#394610002 "neurokirurgi" +* $SnomedctOID#394591006 "neurologi" +* $SnomedctOID#394812008 "odontologi (snomed: odontologiske specialer)" +* $SnomedctOID#394594003 "oftalmologi" +* $SnomedctOID#394608004 "ortodonti" +* $SnomedctOID#394801008 "ortopædisk kirurgi" +* $SnomedctOID#394604002 "oto_rhino_laryngologi" +* $SnomedctOID#394915009 "patologisk anatomi og cytologi" +* $SnomedctOID#394611003 "plastikkirurgi" +* $SnomedctOID#394587001 "psykiatri" +* $SnomedctOID#394537008 "pædiatri" +* $SnomedctOID#394810000 "reumatologi" +* $SnomedctOID#394581000 "samfundsmedicin" +* $SnomedctOID#394605001 "tand_, mund_ og kæbekirurgi" +* $SnomedctOID#394603008 "thoraxkirurgi" +* $SnomedctOID#408448007 "tropemedicin" +* $SnomedctOID#394612005 "urologi" +* $SnomedctOID#658171000005102 "hjemmepleje" +* $SnomedctOID#658161000005107 "hjemmesygepleje" +* $SnomedctOID#658151000005105 "sundhedsfremme og forebyggelse" +* $SnomedctOID#658191000005101 "sundhedspleje" +* $SnomedctOID#658201000005103 "kommunal tandpleje" +* $SnomedctOID#658141000005108 "genoptræning efter hospitalsophold" +* $SnomedctOID#658181000005104 "hjælpemiddelområdet" + +ValueSet: MedComIHE_CoreTypeCode_TEMP +Id: MedCom-ihe-core-typecode-VS-TEMP +Title: "IHE TypeCode_TEMP" +Description: "_TEMP ValueSet containing TypeCode." +* ^experimental = false +* ^version = "1.1.0" +* ^status = #active +* ^date = "2026-01-01" +* $LoincOID#53576-5 "Personal health monitoring report Document" +* $LoincOID#74468-0 "Questionnaire Form Definition Document" +* $LoincOID#56446-8 "Appointment Summary Document" +* $LoincOID#39289-4 "Follow-up (referred to) provider /specialist, appointment date CPHS" +* $LoincOID#39290-2 "Follow-up (referred to) program, appointment date CPHS" +* $LoincOID#103140-0 "Personal health attachment Document" +* $LoincOID#74465-6 "Questionnaire Response Document" +* $LoincOID#11450-4 "Problem list - Reported" +//* $LoincOID#81215-6 "Care plan - recommended C-CDA R2.0 & R2.1 sections" +* $LoincOID#81215-6 "Care plan - recommended C-CDA R2.0 and R2.1 sections" +* $LoincOID#11502-2 "Laboratory report" +* $LoincOID#57059-8 "Pregnancy visit summary note Narrative" +* $LoincOID#28615-3 "Audiology Study" +* $LoincOID#11524-6 "EKG Study" +* $IHEMessageCodesTEMP#CMR "Clinical Mesurement Report" +* $IHEMessageCodesTEMP#PDC "Stamkort" +* $IHEMessageCodesTEMP#MADC "MADC" +* $IHEMessageCodesTEMP#PRF "Pregnancy Referral Form" +* $IHEMessageCodesTEMP#PSCR "Pregnancy Shared Care Report" +* $IHEMessageCodesTEMP#PMR "Pregnancy Measurement Report" +/* * #CMR from system $IHEMessageCodesTEMP +* #PDC from system $IHEMessageCodesTEMP +* #MADC from system $IHEMessageCodesTEMP +* #PRF from system $IHEMessageCodesTEMP +* #PSCR from system $IHEMessageCodesTEMP +* #PMR from system $IHEMessageCodesTEMP */ + +ValueSet: MedComIHE_CoreMimeType_TEMP +Id: MedCom-ihe-core-mimetype-VS-TEMP +Title: "IHE MimeType_TEMP" +Description: "_TEMP Values for the document metadata attribute mimeType" +* ^experimental = false +* ^version = "1.0.2" +* ^status = #active +* ^date = "2015-01-04" +* $IANAMediaOID#text/xml "text/xml" +* $IANAMediaOID#application/fhir+json "application/fhir+json" +* $IANAMediaOID#application/fhir+xml "application/fhir+xml" + +ValueSet: MedComIHE_CoreLanguageCode_TEMP +Id: MedCom-ihe-core-languagecode-VS-TEMP +Title: "IHE LanguageCode_TEMP" +Description: "_TEMP Tags for the Identification of Languages (RFC 3066)" +* ^experimental = false +* ^version = "1.0.2" +* ^status = #active +* ^date = "2015-01-01" +* $IANALanguageOID#da-DK "Danish (Denmark)" +* $IANALanguageOID#da "Danish" + +ValueSet: MedComIHE_CoreConfidentialityCode_TEMP +Id: MedCom-ihe-core-confidentialitycode-VS-TEMP +Title: "IHE ConfidentialityCode_TEMP" +Description: "_TEMP Confidentiality code used in Danish Document sharing." +* ^experimental = false +* ^version = "1.0.2" +* ^status = #active +* ^date = "2015-01-01" +* $HL7#N "normal" + +ValueSet: MedComIHE_CoreFormatCode_VS_TEMP +Id: MedCom-ihe-core-formatcode-VS-TEMP +Title: "IHE FormatCode_TEMP" +Description: "_TEMP ValueSet containing FormatCodes defines by MedCom." +* ^experimental = false +* ^version = "1.1.0" +* ^status = #active +* ^date = "2026-01-01" +* include codes from system $IHEFormatCodeTEMP + +ValueSet: MedComIHE_CoreClassCode_TEMP +Id: MedCom-ihe-core-classcode-VS-TEMP +Title: "IHE ClassCode_TEMP" +Description: "_TEMP Value set for the classCode attribute. classCode used in DK IHE Document sharing" +* ^experimental = false +* ^version = "1.1.0" +* ^status = #active +* ^date = "2022-01-26" //1.2.208.184.100.9 +//* $DanishXdsOID#001 "Klinisk rapport" +//* $DanishXdsOID#006 "Workflow" +* #001 from system $IHEClassCodeTEMP +//* #006 from system MedCom-ihe-classcode-CS + + +//Code systems: + +CodeSystem: MedComIHE_FormatCode_TEMP +Id: MedCom-ihe-formatcode-CS-TEMP +Title: "DK IHE FormatCode_TEMP" +Description: "_TEMP Danish Integrating the Healthcare Enterprise (IHE) metadata format codes" +* ^experimental = false +* ^version = "1.1.0" +* ^status = #active +* ^date = "2026-01-01" +* ^caseSensitive = false +* ^identifier.value = "1.2.208.184.100.10" +//* ^url = "urn:oid:1.2.208.184.100.10" +/* * ^property[+].code = #effectiveDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#effectiveDate" +* ^property[=].description = "The date from which the concept is considered valid/active." +* ^property[=].type = #dateTime*/ +* ^property[+].code = #deprecationDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#deprecationDate" +* ^property[=].description = "The date from which the concept is considered deprecated." +* ^property[=].type = #dateTime + +* #urn:ad:dk:medcom:apd-v2.0.1:full "DK APD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2020-05-12" */ + +* #urn:ad:dk:medcom:appointmentsummary:full "DK Appointment Summary Document schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2016-06-08" */ + +* #urn:ad:dk:medcom:cmr-v1.0:full "DK CMR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2021-09-01" */ + +* #urn:ad:dk:medcom:cpd-v1.0.1:full "DK CPD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2018-11-29" */ + +* #urn:ad:dk:medcom:sds:cpd-v1.0.1:maternity "DK CPD schema for maternity" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2022-02-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2023-12-31" + +* #urn:ad:dk:medcom:labreports:svareksponeringsservice "Laboratoriesvar (samling af svar)" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2016-09-01" */ + +* #urn:ad:dk:medcom:pdc-v2.0:full "DK PDC schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2019-11-30" */ + +* #urn:ad:dk:medcom:phmr-v1.3:full "DK PHMR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2014-03-31" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2025-05-13" + +* #urn:ad:dk:medcom:prvs-v1.0:full "DK PRVS schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2021-09-01" */ + +* #urn:ad:dk:medcom:qfdd-v1.1:full "DK QFDD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2015-05-19" */ + +* #urn:ad:dk:medcom:qfdd-v1.2:full "DK QFDD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2022-02-11" */ + +* #urn:ad:dk:medcom:qrd-v1.1:full "DK QRD schema" + +* #urn:ad:dk:medcom:qrd-v1.2:full "DK QRD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2015-05-19" */ + +* #urn:ad:dk:medcom:qrd-v1.3:full "DK QRD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2022-02-11" */ + +* #urn:ad:dk:medcom:pdc-v3.0:full "DK PDC schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2023-07-01" */ + +* #urn:ad:dk:medcom:cpd-v2.0:full "DK CPD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2024-01-01" */ + +* #urn:ad:dk:medcom:phad-v1.0:full "DK PHAD schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2024-01-01" */ + +* #urn:ad:dk:medcom:plr-v1.0:full "DK PLR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-03-01" */ + +* #urn:ad:dk:medcom:nauf-v500:full "Noah Audiogram format 500" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ + +* #urn:ad:dk:medcom:nauf-v502:full "Noah Audiogram format 502" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ + +* #urn:ad:dk:medcom:nimf-v500:full "Noah Impedance format 500" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ + +* #urn:ad:dk:medcom:nadf-v501:full "Noah Admittance format 501" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ + +* #urn:ad:dk:medcom:nhisf-v500:full "Noah Hearing Instrument Selection format 500" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ + +* #urn:ad:dk:medcom:prf-v1.0:full "DK PRF schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2025-12-01" + +* #urn:ad:dk:medcom:pscr-v1.0:full "DK PSCR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2025-12-01" + +* #urn:ad:dk:medcom:pmr-v1.0:full "DK PMR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2025-12-01" + +* #urn:ad:dk:medcom:prf-v2.0:full "DK PRF schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2025-12-01" + +* #urn:ad:dk:medcom:pscr-v2.0:full "DK PSCR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + +* #urn:ad:dk:medcom:pmr-v2.0:full "DK PMR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + +* #urn:ad:dk:medcom:phmr-v2.1:full "DK PHMR schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-05-13" */ + +* #urn:ad:dk:medcom:prf-v3.0:full "DK PRF schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ + +* #urn:ad:dk:medcom:ekg-v1.0:full "DK EKG schema" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2026-01-01" */ + + +CodeSystem: MedComIHE_ClassCode_TEMP +Id: MedCom-ihe-classcode-CS-TEMP +Title: "DK IHE ClassCode_TEMP" +Description: "_TEMP Danish Integrating the Healthcare Enterprise (IHE) metadata class codes" +//* ^url = "urn:oid:1.2.208.184.100.9" +* ^experimental = false +* ^version = "1.1.0" +* ^status = #active +* ^date = "2022-01-26" +* ^caseSensitive = false +* ^identifier.value = "1.2.208.184.100.9" +/* * ^property[+].code = #effectiveDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#effectiveDate" +* ^property[=].description = "The date from which the concept is considered valid/active." +* ^property[=].type = #dateTime +* ^property[+].code = #deprecationDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#deprecationDate" +* ^property[=].description = "The date from which the concept is considered deprecated." +* ^property[=].type = #dateTime */ +* #001 "Klinisk rapport" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-01" */ +/* * #006 "Workflow" + * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-01-26" */ + +CodeSystem: MedCom_Message_Codes_TEMP +Id: MedCom-message-codes-CS-TEMP +Title: "MedCom Message Codes_TEMP" +Description: "_TEMP MedCom Message Codes, which includes document type codes (Danish)." +* ^experimental = false +* ^version = "1.0.2" +* ^status = #active +* ^date = "2026-01-01" +* ^caseSensitive = false +//* ^url = "urn:oid:1.2.208.184.100.1" +//* ^identifier.system = "urn:ietf:rfc:3986" +* ^identifier.value = "urn:oid:1.2.208.184.100.1" +/* * ^property[+].code = #effectiveDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#effectiveDate" +* ^property[=].description = "The date from which the concept is considered valid/active." +* ^property[=].type = #dateTime */ +* ^property[+].code = #deprecationDate +* ^property[=].uri = "http://hl7.org/fhir/concept-properties#deprecationDate" +* ^property[=].description = "The date from which the concept is considered deprecated." +* ^property[=].type = #dateTime +* #CMR "Clinical Mesurement Report" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2021-09-01" */ +* #PDC "Stamkort" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2021-09-01" */ +* #MADC "MADC" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2021-09-01" */ + * ^property[+].code = #deprecationDate + * ^property[=].valueDateTime = "2022-12-31" +* #PRF "Pregnancy Referral Form" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ +* #PSCR "Pregnancy Shared Care Report" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ +* #PMR "Pregnancy Measurement Report" +/* * ^property[+].code = #effectiveDate + * ^property[=].valueDateTime = "2025-12-01" */ \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index 82ba450..eb7635d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -25,7 +25,7 @@ publisher: # use cases, the value can be an object with keys for id, uri, and version. # dependencies: - medcom.fhir.dk.xdsmetadata: dev + medcom.fhir.dk.xdsmetadata: 1.0.1 medcom.fhir.dk.terminology: 2.0.2 medcom.fhir.dk.core: dev #medcom.fhir.dk.core: 3.0.1