LACPassIG/input/fsh/patient.fsh
2023-09-01 19:00:21 +00:00

84 lines
3.3 KiB
GLSL

Alias: $v2-0203 = http://terminology.hl7.org/CodeSystem/v2-0203
Profile: LAC_Patient
Parent: http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips
Id: lac-patient
Description: "LACPass Patient Summary Patient resource. This profile derives from the [International Patient summary](https://build.fhir.org/ig/HL7/fhir-ips/) with more contraints for the identification of the patients."
* ^url = "https://lacpass.racsel.org/fhir/StructureDefinition/lac-patient"
// identifier slice for nhi
* identifier ^slicing.discriminator.type = #value
* identifier ^slicing.discriminator.path = "system"
* identifier ^slicing.rules = #open
* identifier ^slicing.description = "Patient identifier"
// declare slices
* identifier contains
international 1..* MS and
national 1..* MS
// details of international slice
* identifier[international] ^definition = "The international identifier for the patient. The passport number is used."
* identifier[international].system 1..1
* identifier[international].system ^short = "URN OID for the country (ISO-3306 numeric)"
* identifier[international].use 1..1
* identifier[international].use = #official (exactly)
* identifier[international].use ^short = "fixed to official"
* identifier[international].type 1..1
* identifier[international].type.coding.system 1..1
* identifier[international].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" (exactly)
* identifier[international].type.coding.code = #PPN (exactly)
* identifier[international].type.coding.code ^short = "fixed to PPN (Passport number)"
* identifier[international].type ^short = "Passport number"
// details of national slice
* identifier[national] ^definition = "The national identifier for the patient. Any type different from PPN can be used."
* identifier[national].system 1..1
* identifier[national].system ^short = "URN OID for the country (ISO-3306 numeric)"
* identifier[national].type 1..1
* identifier[national].type.coding.code 1..1
* identifier[national].type.coding.system 1..1
* identifier[national].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203" (exactly)
// * identifier[national].type.coding.code = "PPN" (exactly)
* identifier[national].type ^short = "Any type except PPN (Passport number)"
// declare rule to say can't have more than one 'official' identifier
* obeys lac-pat-1
* obeys lac-pat-2
// invariant for lac-pat-1 rule
Invariant: lac-pat-1
Expression: "Patient.identifier.where(use='official').count() == 1"
Severity: #error
Description: "A patient can only have a single official identifier"
// invariant for lac-pat-2 rule
Invariant: lac-pat-2
Expression: "Patient.identifier.where(use='official')[0].system.startsWith('urn:oid.2.16.')"
Severity: #error
Description: "The identifier system must be a URN OID"
// Example
Instance: LACPatientExample
InstanceOf: LAC_Patient
Usage: #example
* identifier[international].use = #official
* identifier[international].type = $v2-0203#PPN
* identifier[international].system = "urn:oid.2.16.152"
* identifier[international].value = "CL/F12-1234123-2"
* identifier[national].system = "urn:oid.2.16.152"
* identifier[national].type = $v2-0203#TAX
* identifier[national].value = "CL/18922652-7"
* active = true
* name.use = #official
* name.text = "Sergio Penafiel"
* name.family = "Penafiel"
* name.given = "Sergio"
* gender = #male
* birthDate = "1994-10-13"