diff --git a/input/examples/Bundle-FindDocumentReferences.json b/input/examples/Bundle-FindDocumentReferences.json index 5e8862d..877c3ed 100644 --- a/input/examples/Bundle-FindDocumentReferences.json +++ b/input/examples/Bundle-FindDocumentReferences.json @@ -48,6 +48,7 @@ } ], "masterIdentifier": { + "system": "urn:ietf:rfc:3986", "value": "urn:oid:1.3.6.1.4.1.12559.11.13.2.1.2951" }, "identifier": [ diff --git a/input/fsh/documentReference.fsh b/input/fsh/documentReference.fsh index b299d86..0fab8b9 100644 --- a/input/fsh/documentReference.fsh +++ b/input/fsh/documentReference.fsh @@ -17,14 +17,14 @@ Description: "A profile on the DocumentReference resource for MHD with minima - 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] ^short = "entryUUID" -* identifier[entryUUID].use = #official +* identifier[entryUUID] only EntryUUIDIdentifier * status 1..1 * status from DocumentReferenceStats (required) * docStatus 0..0 diff --git a/input/fsh/ex-Folder.fsh b/input/fsh/ex-Folder.fsh index 1d7ebda..d2bd82e 100644 --- a/input/fsh/ex-Folder.fsh +++ b/input/fsh/ex-Folder.fsh @@ -5,10 +5,10 @@ Description: "Folder in List resource conforming only to Minimal metadata" Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.6" +* identifier[entryUUID].value = "urn:uuid:5e2d58a3-2286-4a0e-8637-86f51be2d184" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23476" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46391" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -24,10 +24,10 @@ Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.6" +* identifier[entryUUID].value = "urn:uuid:0a468477-5dd1-4a81-bddf-8d5ee9b0cac3" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23476" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46341" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -65,10 +65,10 @@ Description: "Folder in List resource conforming only to Minimal metadata" Usage: #inline * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.6" +* identifier[entryUUID].value = "urn:uuid:29bef0e7-bb06-46b8-8241-ca2a5f8f7f2c" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23476" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46342" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles1.fsh b/input/fsh/ex-ProvideBundles1.fsh index dde9c71..88122e5 100644 --- a/input/fsh/ex-ProvideBundles1.fsh +++ b/input/fsh/ex-ProvideBundles1.fsh @@ -88,8 +88,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46343" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles2.fsh b/input/fsh/ex-ProvideBundles2.fsh index 83a1430..1da4140 100644 --- a/input/fsh/ex-ProvideBundles2.fsh +++ b/input/fsh/ex-ProvideBundles2.fsh @@ -83,8 +83,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46344" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles3.fsh b/input/fsh/ex-ProvideBundles3.fsh index 23a330b..98f9b19 100644 --- a/input/fsh/ex-ProvideBundles3.fsh +++ b/input/fsh/ex-ProvideBundles3.fsh @@ -77,8 +77,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46346" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -171,8 +171,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46347" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles4.fsh b/input/fsh/ex-ProvideBundles4.fsh index 20d5c19..ac8ac5a 100644 --- a/input/fsh/ex-ProvideBundles4.fsh +++ b/input/fsh/ex-ProvideBundles4.fsh @@ -93,8 +93,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46348" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles5.fsh b/input/fsh/ex-ProvideBundles5.fsh index 30a668a..4f37a3e 100644 --- a/input/fsh/ex-ProvideBundles5.fsh +++ b/input/fsh/ex-ProvideBundles5.fsh @@ -108,8 +108,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46349" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -198,8 +198,8 @@ Usage: #inline * text.div = "
Folder with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23475" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46350" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles6.fsh b/input/fsh/ex-ProvideBundles6.fsh index 03bc5c9..84226ac 100644 --- a/input/fsh/ex-ProvideBundles6.fsh +++ b/input/fsh/ex-ProvideBundles6.fsh @@ -67,8 +67,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46351" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-ProvideBundles7.fsh b/input/fsh/ex-ProvideBundles7.fsh index 097bfcc..c4c9447 100644 --- a/input/fsh/ex-ProvideBundles7.fsh +++ b/input/fsh/ex-ProvideBundles7.fsh @@ -54,8 +54,8 @@ Usage: #inline * text.status = #extensions * text.div = "
SubmissionSet with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470-1" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46352" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -121,8 +121,8 @@ Usage: #inline * text.div = "
Folder with Patient
" * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23475" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46353" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/ex-SubmissionSet.fsh b/input/fsh/ex-SubmissionSet.fsh index 7b2f1d3..2380fd1 100644 --- a/input/fsh/ex-SubmissionSet.fsh +++ b/input/fsh/ex-SubmissionSet.fsh @@ -5,10 +5,10 @@ Description: "Example of a minimal submissionSet in List resource." Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.4" +* identifier[entryUUID].value = "urn:uuid:40b3366f-7e4b-4d02-bbac-901aaa8d7183" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46354" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -26,10 +26,10 @@ Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.4" +* identifier[entryUUID].value = "urn:uuid:340d303b-b889-4d44-b766-27f14c212236" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46355" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -49,10 +49,10 @@ Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.4" +* identifier[entryUUID].value = "urn:uuid:1d136ed2-d27b-4353-8ccf-49581ab4ae66" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46356" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -73,10 +73,10 @@ Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.4" +* identifier[entryUUID].value = "urn:uuid:479f69ae-4bb1-4cdb-97bd-80e2c9b85d01" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46357" * identifier[uniqueId].use = #usual * status = #current * mode = #working @@ -98,10 +98,10 @@ Usage: #example * meta.security = http://terminology.hl7.org/CodeSystem/v3-ActReason#HTEST * subject = Reference(Patient/ex-patient) * identifier[entryUUID].system = "urn:ietf:rfc:3986" -* identifier[entryUUID].value = "urn:oid:1.2.129.6.58.92.88337.4" +* identifier[entryUUID].value = "urn:uuid:2158bc9d-3d34-4503-9253-1e0383f828ff" * identifier[entryUUID].use = #official -* identifier[uniqueId].system = "http://example.org/documents" -* identifier[uniqueId].value = "23425234-23470" +* identifier[uniqueId].system = "urn:ietf:rfc:3986" +* identifier[uniqueId].value = "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46358" * identifier[uniqueId].use = #usual * status = #current * mode = #working diff --git a/input/fsh/folder.fsh b/input/fsh/folder.fsh index bc0c855..90ca135 100644 --- a/input/fsh/folder.fsh +++ b/input/fsh/folder.fsh @@ -10,8 +10,13 @@ Description: "A profile on the List resource for MHD use as a Folder with min - ebRIM implementation at [3:4.2.3.4 Folder Attributes](https://profiles.ihe.net/ITI/TF/Volume3/ch-4.2.html#4.2.3.4). - 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)" * extension[designationType] 0..* MS -* identifier 0..* -* identifier ^short = "would hold Folder.entryUUID and Folder.uniqueId" +* identifier ^slicing.discriminator.type = #value +* identifier ^slicing.discriminator.path = "use" +* identifier ^slicing.rules = #open +* identifier contains uniqueId 0..1 +* identifier[uniqueId] only UniqueIdIdentifier +* identifier contains entryUUID 0..* +* identifier[entryUUID] only EntryUUIDIdentifier //* status * mode = #working * title 0..1 diff --git a/input/fsh/identifier.fsh b/input/fsh/identifier.fsh new file mode 100644 index 0000000..73585db --- /dev/null +++ b/input/fsh/identifier.fsh @@ -0,0 +1,39 @@ +Profile: UniqueIdIdentifier +Parent: Identifier +Id: IHE.MHD.UniqueIdIdentifier +Title: "uniqueId Identifier" +Description: "uniqueId Identifier + +- see [Appendix Z](https://profiles.ihe.net/ITI/TF/Volume2/ch-Z.html#z.9.1-identifier-type)" +* system 1.. +* use = #usual +* value 1.. + +Profile: SubmissionSetUniqueIdIdentifier +Parent: UniqueIdIdentifier +Id: IHE.MHD.SubmissionSetUniqueIdIdentifier +Title: "uniqueId Identifier for SubmissionSet" +Description: "uniqueId Identifier holding a OID" +* system = "urn:ietf:rfc:3986" (exactly) +* value obeys mhd-startswithoid + +Invariant: mhd-startswithoid +Description: "value must start with urn:oid:" +Severity: #error +Expression: "value.startsWith('urn:oid:')" + +Profile: EntryUUIDIdentifier +Parent: Identifier +Id: IHE.MHD.EntryUUID.Identifier +Title: "entryUUID Identifier" +Description: "entryUUID Identifier holding a UUID" +* system 1.. +* system = "urn:ietf:rfc:3986" (exactly) +* value 1.. +* value obeys mhd-startswithuuid +* use = #official + +Invariant: mhd-startswithuuid +Description: "value must start with urn:uuid:" +Severity: #error +Expression: "value.startsWith('urn:uuid:')" \ No newline at end of file diff --git a/input/fsh/mhdList.fsh b/input/fsh/mhdList.fsh index 60e0f15..7270d12 100644 --- a/input/fsh/mhdList.fsh +++ b/input/fsh/mhdList.fsh @@ -8,15 +8,6 @@ Description: "A profile on the List resource for MHD. Used with both Folder a * modifierExtension 0..0 // code is used ONLY to switch between folder and submissionSet * identifier 0..* -* identifier ^slicing.discriminator.type = #value -* identifier ^slicing.discriminator.path = "use" -* identifier ^slicing.rules = #open -* identifier contains uniqueId 0..1 -* identifier[uniqueId] ^short = "uniqueId" -* identifier[uniqueId].use = #usual -* identifier contains entryUUID 0..* -* identifier[entryUUID] ^short = "entryUUID" -* identifier[entryUUID].use = #official * code 1..1 * code from MHDlistTypesVS (required) diff --git a/input/fsh/submissionSet.fsh b/input/fsh/submissionSet.fsh index 48ea69a..025b8ce 100644 --- a/input/fsh/submissionSet.fsh +++ b/input/fsh/submissionSet.fsh @@ -16,8 +16,13 @@ Description: "A profile on the List resource for MHD SubmissionSet. * extension[designationType] 0..1 MS * extension contains SourceId named sourceId 1..1 * extension contains IntendedRecipient named intendedRecipient 0..* -* identifier 0..* -* identifier ^short = "would hold SubmissionSet.entryUUID and SubmissionSet.uniqueId" +* identifier ^slicing.discriminator.type = #value +* identifier ^slicing.discriminator.path = "use" +* identifier ^slicing.rules = #open +* identifier contains uniqueId 0..1 +* identifier[uniqueId] only SubmissionSetUniqueIdIdentifier +* identifier contains entryUUID 0..* +* identifier[entryUUID] only EntryUUIDIdentifier * status = #current * mode = #working * title 0..1