From 3d6eb877ec41055e7ecc6c40f392fa556e5ad6ab Mon Sep 17 00:00:00 2001 From: Fahim Hossain Date: Sun, 28 Sep 2025 14:34:45 +0600 Subject: [PATCH] Refine patient profile rules and constraints for name elements --- input/fsh/patient-profile.fsh | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/input/fsh/patient-profile.fsh b/input/fsh/patient-profile.fsh index 033f258..bb655ed 100644 --- a/input/fsh/patient-profile.fsh +++ b/input/fsh/patient-profile.fsh @@ -9,29 +9,30 @@ Description: "Profile of Patient Bangladesh Standard" // ----- Begin rules: -// Require at least one value inside the name element +// Require two names total * name 2..* -// === 1. Declare slicing on name by 'use' === + +// Declare slicing on name by use * name ^slicing.discriminator.type = #value -* name ^slicing.discriminator.path = "system" +* name ^slicing.discriminator.path = "use" * name ^slicing.rules = #open +* name ^slicing.ordered = false * name ^slicing.description = "Slice name by use (official for English, usual for Bangla)" -// === 2. Define slices === +// Define slices * name contains - nameEnglish 1..1 MS and // slice alias for English name - nameBangla 1..1 MS // slice alias for Bangla name + nameEnglish 1..1 MS and + nameBangla 1..1 MS -// === 3. Constrain English (official) name === -* name[nameEnglish].use = #en (exactly) +// English (official) +* name[nameEnglish].use = #official * name[nameEnglish].given 0..* * name[nameEnglish].family 0..1 * name[nameEnglish] ^short = "Legal name (English/Romanized)" * name[nameEnglish] ^definition = "Official name as registered in government documents." - -// === 4. Constrain Bangla name === -* name[nameBangla].use = #bn (exactly) +// Bangla (usual) +* name[nameBangla].use = #usual * name[nameBangla].given 0..* * name[nameBangla].family 0..1 * name[nameBangla] ^short = "নাম (বাংলা)" @@ -56,7 +57,7 @@ Description: "Profile of Patient Bangladesh Standard" * identifier[NID].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" * identifier[NID].type from BangladeshIdentifierTypeVS (extensible) * identifier[NID].type.text = "Organization identifier" -* identifier[NID].value = "Personal identifier National ID" +// * identifier[NID].value = "Personal identifier National ID" // Then in your profile: // * identifier.type from BangladeshIdentifierTypeVS (extensible) @@ -66,7 +67,7 @@ Description: "Profile of Patient Bangladesh Standard" * identifier[BRN].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" * identifier[BRN].type from BangladeshIdentifierTypeVS (extensible) * identifier[BRN].type.text = "Organization identifier" -* identifier[BRN].value = "Personal identifier Birth Registration" +// * identifier[BRN].value = "Personal identifier Birth Registration" * identifier[UID].system = "http://dghs.gov.bd/identifier/uid" @@ -74,7 +75,7 @@ Description: "Profile of Patient Bangladesh Standard" * identifier[UID].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" * identifier[UID].type from BangladeshIdentifierTypeVS (extensible) * identifier[UID].type.text = "Organization identifier" -* identifier[UID].value = "Personal identifier" +// * identifier[UID].value = "Personal identifier" // Mark elements as MustSupport