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 68cd40d..d80d98e 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 8cebc00..f42c897 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