From 532f5dd501b26e3a67749b5723c3d6bd6bbf5f1e Mon Sep 17 00:00:00 2001 From: Rukshan Date: Tue, 30 Sep 2025 16:01:05 +0600 Subject: [PATCH] refactor: :recycle: standerdize filenames --- input/fsh/codeSystems/BDIdentifierType.fsh | 21 ++++ input/fsh/profile/BDObservation.fsh | 84 ++++++++++++++ input/fsh/profile/BDPatient.fsh | 122 +++++++++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 input/fsh/codeSystems/BDIdentifierType.fsh create mode 100644 input/fsh/profile/BDObservation.fsh create mode 100644 input/fsh/profile/BDPatient.fsh diff --git a/input/fsh/codeSystems/BDIdentifierType.fsh b/input/fsh/codeSystems/BDIdentifierType.fsh new file mode 100644 index 0000000..3db976b --- /dev/null +++ b/input/fsh/codeSystems/BDIdentifierType.fsh @@ -0,0 +1,21 @@ +//// this code systems for Identifier types + +CodeSystem: BangladeshIdentifierType +Id: bangladesh-identifier-type-cs +Title: "Bangladesh Identifier Types" +* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-identifier-type" + +* #NID "National ID" +* #BRN "Birth Registration Number" +* #UID "Unique ID" + + +ValueSet: BangladeshIdentifierTypeVS +Id: bangladesh-identifier-type-vs +Title: "Bangladesh Identifier Type" +Description: "Bangladesh Standard Identifier type" +* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type" +// * include codes from valueset http://hl7.org/fhir/ValueSet/identifier-type /// use name or uri +* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-identifier-type + +////////////// end identifier types \ No newline at end of file diff --git a/input/fsh/profile/BDObservation.fsh b/input/fsh/profile/BDObservation.fsh new file mode 100644 index 0000000..53d5f7e --- /dev/null +++ b/input/fsh/profile/BDObservation.fsh @@ -0,0 +1,84 @@ +Profile: BDObservationProfile +Id: bd-observation +Parent: Observation +Title: "Bangladesh Observation Profile" +Description: "Bangladesh Observation Profile" +* ^url = "https://fhir.dghs.gov.bd/core/StructureDefinition/bd-observation" +* ^version = "1.0.0" +* ^status = #active + +* identifier 1..* MS +* identifier.value 1..1 + +* status 1..1 + +* partOf 0..* + +* category 1..* MS +* category from http://hl7.org/fhir/ValueSet/observation-category (required) +* category ^definition = "Type of category" +* category ^comment = "E.g. vital, physical examination" + +* code 1..1 MS +* code from http://hl7.org/fhir/ValueSet/observation-codes (required) +* code ^definition = "Type of test/measurement" +* code ^comment = "E.g., Hb, RBS, CBC" + +// Subject: Reference to Patient Profile (Required) +* subject 1..1 MS +* subject.reference 1..1 MS +* subject.display 1..1 MS +* subject.identifier 0..1 +* subject ^definition = "Reference to Patient Profile" +* subject ^comment = "EX: http://mci.mcishr.dghs.gov.bd/api/v1/patients/98002412586" + + +* encounter 1..1 MS +* encounter.reference 1..1 MS +* encounter ^definition = "Reference to Patient Profile" +* encounter ^comment = "EX: uuid:34c38499-58ab-41e0-8e94-c3931491ad0e - bundle encounter uuid from local" + +* performer 1..* +* performer.reference 1..1 + +// Value[x]: Result value (Optional, but constrained) +* value[x] 0..1 +* value[x] ^definition = "Result value (Quantity, string, code, boolean, etc.)" +* valueQuantity 0..1 +* valueQuantity ^comment = "If numeric, must include UCUM unit" +* valueQuantity.system 0..1 +* valueQuantity.code 0..1 +* valueString 0..1 +* valueCodeableConcept 0..1 +* valueBoolean 0..1 +* valueInteger 0..1 +* valueRange 0..1 +* valueRatio 0..1 +* valueSampledData 0..1 +* valueTime 0..1 +* valueDateTime 0..1 +* valuePeriod 0..1 + +* interpretation 0..* +* interpretation from http://hl7.org/fhir/ValueSet/observation-interpretation (required) +* interpretation ^definition = "Type of test/measurement" +* interpretation ^comment = "E.g.: High, low, normal, etc" + +* method 0..1 +* method from http://hl7.org/fhir/ValueSet/observation-methods (required) +* method ^definition = "Type of observation method" +* method ^comment = "E.g.: Technique, Total measurement" + +// Issued: Date/time result was issued (Optional) +* issued 0..1 +* issued ^definition = "Date/time result was issued" + +// Reference Range: Normal reference range (Optional) +* referenceRange 0..* +* referenceRange ^definition = "Normal reference range" +* referenceRange ^comment = "Optional" + +// Specimen: Specimen used for the observation (Optional) +* specimen 0..1 +* specimen ^definition = "Specimen used for the observation" +* specimen ^comment = "Optional" \ No newline at end of file diff --git a/input/fsh/profile/BDPatient.fsh b/input/fsh/profile/BDPatient.fsh new file mode 100644 index 0000000..b6027d6 --- /dev/null +++ b/input/fsh/profile/BDPatient.fsh @@ -0,0 +1,122 @@ +// @Name: Profile +// @Description: Example of a profile of the Patient resource. This example includes a few of the most commonly used constraints and documentation features of FHIR profiles. +Profile: BDPatientProfile +Id: bd-patient +Parent: Patient +Title: "Patient Profile for Bangladesh" +Description: "Profile of Patient Bangladesh Standard" + +// ----- Begin rules: + +// Require two names total +* name 2..* + + +// Declare slicing on name by use +* name ^slicing.discriminator.type = #value +* 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)" + +// Define slices +* name contains + nameEnglish 1..1 MS and + nameBangla 1..1 MS + +// 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." + +// Bangla (usual) +* name[nameBangla].use = #usual +* name[nameBangla].given 0..* +* name[nameBangla].family 0..1 +* name[nameBangla] ^short = "নাম (বাংলা)" +* name[nameBangla] ^definition = "Patient's name written in Bengali script." + + +////////////////////// + +* identifier 1..* +* identifier ^slicing.discriminator.type = #value +* identifier ^slicing.discriminator.path = "system" +* identifier ^slicing.rules = #open +* identifier ^slicing.ordered = false +* identifier ^slicing.description = "Slice based on the type of identifier." +* identifier contains + NID 0..1 and + BRN 0..1 and + UID 0..1 + +* identifier[NID].system = "http://dghs.gov.bd/identifier/nid" +* identifier[NID].type.coding.code = #NID +// * identifier[NID].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" +* identifier[NID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type" +* identifier[NID].type from BangladeshIdentifierTypeVS (extensible) +* identifier[NID].type.text = "Organization identifier" +// * identifier[NID].value = "Personal identifier National ID" + +// Then in your profile: +// * identifier.type from BangladeshIdentifierTypeVS (extensible) + +* identifier[BRN].system = "http://dghs.gov.bd/identifier/brn" +* identifier[BRN].type.coding.code = #BRN +* identifier[BRN].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type" +* identifier[BRN].type from BangladeshIdentifierTypeVS (extensible) +* identifier[BRN].type.text = "Organization identifier" +// * identifier[BRN].value = "Personal identifier Birth Registration" + + +* identifier[UID].system = "http://dghs.gov.bd/identifier/uid" +* identifier[UID].type.coding.code = #UID +* identifier[UID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type" +* identifier[UID].type from BangladeshIdentifierTypeVS (extensible) +* identifier[UID].type.text = "Organization identifier" +// * identifier[UID].value = "Personal identifier" + + +// Mark elements as MustSupport +// * name and name.given and name.family MS +// * name ^short = "dak nam" +// * name ^definition = "Official name (i.e., legal name) of the patient, corresponding to official in [this value set](https://www.hl7.org/fhir/valueset-name-use.html)." + +// The contents of ^comment are also displayed on the "Detailed Descriptions" tab +// in the built Implementation Guide. +* birthDate ^comment = "If exact date of birth is partially or completely unknown, Implementers SHALL populate this element with the date of birth information listed on the patient's government-issued identification." + +// Do not allow gender to be included. +* gender 1..1 +// * include codes from system http://hl7.org/fhir/ValueSet/administrative-gender + + +// Require a value from a specific value set be used for an element +* maritalStatus from http://hl7.org/fhir/ValueSet/marital-status + +// Restrict something[x] to a specific type -- in this case only allowing dateTime to be used +* deceased[x] only dateTime + +// Religion using standard HL7 extension +* extension contains http://hl7.org/fhir/StructureDefinition/patient-religion named religion 0..1 +* extension[religion].valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-religions + +* address 1..* MS +* address only BDAddress + +* name only BDHumanName +* extension contains Occupation named occupation 0..1 +* extension contains nationality named nationality 1..1 + +Profile: BDHumanName +Id: bd-human-name +Parent: HumanName +Title: "BD Human Name" +Description: "Profile to represent human names in Bangladesh" + +* extension contains http://hl7.org/fhir/StructureDefinition/language named language + 0..1 +* extension[language].valueCode from http://hl7.org/fhir/ValueSet/languages (preferred) +