Skip to content

Commit

Permalink
Merge pull request #326 from hl7ch/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
pjolo authored Jun 18, 2024
2 parents da80e3d + c2a426c commit eac6784
Show file tree
Hide file tree
Showing 163 changed files with 1,249 additions and 3,885 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

* [CI Build master](https://build.fhir.org/ig/hl7ch/ch-lab-order/branches/master/index.html)
* [CI Build develop](https://build.fhir.org/ig/hl7ch/ch-lab-order/branches/develop/index.html)
* [CI Build IG-ohne-Q](https://build.fhir.org/ig/hl7ch/ch-lab-order/branches/IG-ohne-Q/index.html)
* [CI Build 2.0.0-STU-ballot](https://build.fhir.org/ig/hl7ch/ch-lab-order/branches/2.0.0-STU-ballot/index.html)

This is a HL7 Swiss FHIR implementation guide. It describes mainly two use cases of laboratory orders.
The first one composes the order by the choices given from the Laboratory Information System (LIS) and stores them in the FHIR resource ServiceRequest.
Expand Down
2 changes: 1 addition & 1 deletion ballots/2.0.0_STU2-ballot.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ The proposed solution consists of independent modules and can therefore be quick
Proposal of a Rewording of each topic on https://build.fhir.org/ig/hl7ch/ch-lab-order/index.html#management-summary

The lab-order should define the structure of the lab-order so it can be used by different laboratories and different providers of PIS, KIS or independent tool.
1. the partly or fully filled electronic order should be safeble in the order filler system, so it can be changed until the samples are scanned by the receiver laboratory
1. the partly or fully filled electronic order should be saveble in the order filler system, so it can be changed until the samples are scanned by the receiver laboratory
2. practitionar, patient and treatment information should be transferable to the electronic order
3. in the electronic order all available analyses should be presentable. a search option should be available. The content of profiles should be visible.
3a. in the electronic order analyses and profiles should be part of the order. Profiles eg for "blood count" are usually requested as profiles, the profiles are split to single analyses in the LIS (Laboratory Information System)
Expand Down
9 changes: 5 additions & 4 deletions input/fsh/ALIASES.fsh
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// Terminologies, CodeSystems
Alias: $sct = http://snomed.info/sct
Alias: $loinc = http://loinc.org
Alias: $ucum = http://unitsofmeasure.org
Alias: $atc = http://www.whocc.no/atc
Alias: $v2-0203 = http://terminology.hl7.org/CodeSystem/v2-0203
Alias: $v2-0038 = http://terminology.hl7.org/CodeSystem/v2-0038 // orderStatus
Alias: $v2-0074 = http://terminology.hl7.org/CodeSystem/v2-0074 // diagnosticServiceSectionId
Alias: $v2-0119 = http://terminology.hl7.org/CodeSystem/v2-0119 // order control codes
Alias: $v2-0371 = http://terminology.hl7.org/CodeSystem/v2-0371
Alias: $v2-0373 = http://terminology.hl7.org/CodeSystem/v2-0373
Alias: $v2-0487 = http://terminology.hl7.org/CodeSystem/v2-0487
Expand All @@ -23,11 +25,12 @@ Alias: $condition-category = http://terminology.hl7.org/CodeSystem/c
Alias: $substance-category = http://terminology.hl7.org/CodeSystem/substance-category
Alias: $report-codes = http://hl7.org/fhir/ValueSet/report-codes
Alias: $coverage-type = http://fhir.ch/ig/ch-orf/CodeSystem/ch-orf-cs-coveragetype // must by a CS!
Alias: $coverage-identifiertype = http://fhir.ch/ig/ch-orf/CodeSystem/ch-orf-cs-coverageidentifiertype
Alias: $launchContext = http://hl7.org/fhir/uv/sdc/CodeSystem/launchContext
Alias: $microbiol-procedures = http://fhir.ch/ig/ch-lab-order/ValueSet/MicrobiolProcedures
Alias: $shareablevalueset = http://hl7.org/fhir/StructureDefinition/shareablevalueset
Alias: $launchContext = http://hl7.org/fhir/uv/sdc/CodeSystem/launchContext
Alias: $condition-clinical = http://terminology.hl7.org/CodeSystem/condition-clinical
// Alias: $condition-clinical = http://terminology.hl7.org/CodeSystem/condition-clinical
// Alias: $L-Forms = http://terminology.hl7.org/3.1.0/CodeSystem/forms-codes

// ---- Patient
Expand All @@ -43,9 +46,7 @@ Alias: $hcSpecialisation = http://fhir.ch/ig/ch-epr-term/ValueSet/
// Order
Alias: $request-priority = http://hl7.org/fhir/request-priority
Alias: $servicerequest-categories = http://fhir.ch/ig/ch-lab-order/CodeSystem/ch-lab-order-servicerequest-categories
Alias: $shareableValueSet = http://hl7.org/fhir/StructureDefinition/shareablevalueset
Alias: $documentEntryClassCode = http://fhir.ch/ig/ch-epr-term/ValueSet/DocumentEntry.classCode
Alias: $documentEntryTypeCode = http://fhir.ch/ig/ch-epr-term/ValueSet/DocumentEntry.typeCode


// Encounter, appointment
Alias: $CHCoreCSEncounterType = http://fhir.ch/ig/ch-core/CodeSystem/bfs-medstats-21-encountertype
Expand Down
5 changes: 3 additions & 2 deletions input/fsh/instances/CoverageFranzMuster.fsh
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Instance: CoverageFranzMuster
InstanceOf: CHCoreCoverage
Title: "Coverage: FranzMuster"
InstanceOf: ChOrfCoverage
Title: "Coverage FranzMuster"
Description: "Example for Insurance Coverage"
Usage: #example
* meta.source = "https://www.ti.bfh.ch/de/bachelor/medizininformatik.html"
* contained = Sanitas
* identifier.type = $coverage-identifiertype#VeKa
* identifier.system = "urn:oid:2.16.756.5.30.1.123.100.1.1.1"
* identifier.value = "80756015090002640000"
* status = #active
Expand Down
4 changes: 3 additions & 1 deletion input/fsh/instances/DocumentEntry.classCode.fsh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
Instance: DocumentEntry.classCode
InstanceOf: $shareableValueSet
Usage: #example
Expand Down Expand Up @@ -32,4 +33,5 @@ Usage: #example
* compose.include.concept.designation[+].language = #it-CH
* compose.include.concept.designation[=].value = "Prescrizione di analisi"
* compose.include.concept.designation[+].language = #en-US
* compose.include.concept.designation[=].value = "Order"
* compose.include.concept.designation[=].value = "Order"
*/
5 changes: 4 additions & 1 deletion input/fsh/instances/DocumentEntry.typeCode.fsh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
Instance: DocumentEntry.typeCode
InstanceOf: $shareableValueSet
Usage: #example
Expand Down Expand Up @@ -62,4 +63,6 @@ Usage: #example
// * compose.include.concept[=].designation[+].language = #it-CH
// * compose.include.concept[=].designation[=].value = "Referto istologico"
// * compose.include.concept[=].designation[+].language = #en-US
// * compose.include.concept[=].designation[=].value = "Pathology report"
// * compose.include.concept[=].designation[=].value = "Pathology report"
*/
2 changes: 1 addition & 1 deletion input/fsh/instances/DocumentReference.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Usage: #example
* relatesTo.target = Reference(example)
* description = "Physical"
* securityLabel = $v3-Confidentiality#N "normal"
* content.attachment.contentType = #application/hl7-v3+xml
* content.attachment.contentType = #application/fhir+xml
* content.attachment.language = #en-US
* content.attachment.url = "http://example.org/xds/mhd/Binary/07a6483f-732b-461e-86b6-edb665c45510"
* content.attachment.size = 3654
Expand Down
5 changes: 3 additions & 2 deletions input/fsh/instances/HealthInsuranceCard.fsh
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
Instance: HealthInsuranceCard
InstanceOf: Coverage
Title: "Coverage: HealthInsuranceCard Franz Muster"
InstanceOf: ChOrfCoverage
Title: "Covarage HealthInsuranceCard Franz Muster"
Description: "Example for Insurance"
Usage: #example
* identifier.type = $coverage-identifiertype#VeKa
* identifier.system = "http://ehic.com/insurer/123456789/member"
* identifier.value = "A123456780"
* status = #active
Expand Down
4 changes: 2 additions & 2 deletions input/fsh/instances/LabOrder-CompositionWithSR.fsh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Instance: LabOrder-CompositionWithSR
InstanceOf: ChLabOrderCompositionWithSR
Title: "CH LAB-Order Composition with Service Request"
Description: "Composition multiple SR whithout Questionnaire/QuestionnaireResponse"
Title: "CH LAB-Order Composition with ServiceRequest"
Description: "Composition with ServiceRequest for Potassium"
Usage: #example
* id = "ch-lab-order-composition-with-sr"
* meta.versionId = "1"
Expand Down
2 changes: 1 addition & 1 deletion input/fsh/instances/LabOrder-CompositionWithSR_AndForm.fsh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Instance: LabOrder-CompositionWithSR_AndForm
InstanceOf: ChLabOrderCompositionWithSR_AndForm
Title: "CH LAB-Order Composition with ServiceRequest and Form"
Description: "Composition Questionnaire/QuestionnaireResponse and multiple SR"
Description: "Composition with ServiceRequest and Questionnaire/QuestionnaireResponse"
Usage: #example
* id = "ch-lab-order-composition-with-sr-and-form"
* meta.versionId = "1"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Instance: LabOrder-DocumentWithSR
InstanceOf: ChLabOrderDocumentWithSR
Title: "CH LAB-Order Document with Service Request"
Description: "Document for referral/order due to suspected deep vein thrombosis"
Title: "CH LAB-Order Document with ServiceRequest"
Description: "Document for referral/order of Potassium in Serum"
Usage: #example
* id = "ch-lab-order-document-with-sr"
* meta.versionId = "1"
Expand Down Expand Up @@ -38,8 +38,6 @@ Usage: #example

* entry[+].fullUrl = "http://example.com/fhir/Practitioner/PeterPresto"
* entry[=].resource = PeterPresto
// * entry[+].fullUrl = "http://example.com/fhir/Organization/Gruppenpraxis"
// * entry[=].resource = Gruppenpraxis
* entry[+].fullUrl = "http://example.com/fhir/PractitionerRole/PeterPrestoGruppenpraxis"
* entry[=].resource = PeterPrestoGruppenpraxis

Expand All @@ -49,17 +47,5 @@ Usage: #example
* entry[+].fullUrl = "http://example.com/fhir/Specimen/Serum"
* entry[=].resource = Serum

// * entry[+].fullUrl = "http://example.com/fhir/Questionnaire/LabOrder-form" // entry[8]
// * entry[=].resource = LabOrder-form
// * entry[+].fullUrl = "http://example.com/fhir/QuestionnaireResponse/LabOrder-qr" //entry[9]
// * entry[=].resource = LabOrder-QuestionnaireResponse

* entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-potassium" // entry[10]
* entry[=].resource = LabOrder-ServiceRequest-potassium
// // ---- SR for Coagulation Tests ----
// * entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-coag"
// * entry[=].resource = LabOrder-ServiceRequest-coag
//
// // ---- SR for Coagulation Tests ----
// * entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-cc"
// * entry[=].resource = LabOrder-ServiceRequest-cc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Instance: LabOrder-Document-with-SR-and-Form
Instance: LabOrder-DocumentwithSR_andForm
InstanceOf: ChLabOrderDocumentWithSR_AndForm
Title: "CH LAB-Order Document with ServiceRequest and Form"
Description: "Document for referral/order due to suspected deep vein thrombosis"
Expand Down Expand Up @@ -38,8 +38,6 @@ Usage: #example

* entry[+].fullUrl = "http://example.com/fhir/Practitioner/PeterPresto"
* entry[=].resource = PeterPresto
// * entry[+].fullUrl = "http://example.com/fhir/Organization/Gruppenpraxis"
// * entry[=].resource = Gruppenpraxis
* entry[+].fullUrl = "http://example.com/fhir/PractitionerRole/PeterPrestoGruppenpraxis"
* entry[=].resource = PeterPrestoGruppenpraxis

Expand All @@ -53,14 +51,5 @@ Usage: #example
* entry[=].resource = LabOrder-form
* entry[+].fullUrl = "http://example.com/fhir/QuestionnaireResponse/LabOrder-qr" //entry[9]
* entry[=].resource = LabOrder-QuestionnaireResponse

* entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-potassium" // entry[10]
* entry[=].resource = LabOrder-ServiceRequest-potassium

// // ---- SR for Coagulation Tests ----
// * entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-coag"
// * entry[=].resource = LabOrder-ServiceRequest-coag
//
// // ---- SR for Coagulation Tests ----
// * entry[+].fullUrl = "http://example.com/fhir/ServiceRequest/LabOrder-cc"
// * entry[=].resource = LabOrder-ServiceRequest-cc
18 changes: 13 additions & 5 deletions input/fsh/instances/LabOrder-ServiceRequest-chloride.fsh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Instance: LabOrder-ServiceRequest-chloride
InstanceOf: ChLabOrderSRSingletest
Title: "CH LAB Service Request for Chloride"
Title: "CH LAB-ServiceRequest for Chloride"
Description: "Service Request for Chloride [Moles/volume] in Serum or Plasma"
Usage: #example
* id = "LabOrder-chloride"
Expand All @@ -9,27 +9,35 @@ Usage: #example
* identifier[placerOrderIdentifier].value = "123"
* instantiatesCanonical = "http://fhir.ch/ig/ch-lab-order/lab-compendium/ActivityDefinition/procedure-chloride-serum"

* replaces = Reference(LabOrder-ServiceRequest-sodium)

// ---- grouperID, must be repeated in all dependent SR ----
* requisition.type = $v2-0203#PLAC "Placer Identifier"
* requisition.system = "urn:oid:2.16.756.5.30"
* requisition.value = "ReqID-1234567"

* status = #active
* intent = #original-order
* category = $sct#721963009 "Order (record artifact)"
// * category = $sct#721963009 "Order (record artifact)"

// What is being ordered
// * basedOn = Reference(SR-example)
// ---- Clinical Chemistry Tests ----
* code.coding[0] = $loinc#2075-0 "Chloride [Moles/volume] in Serum or Plasma"
* code.coding.code = #2075-0
* code.coding.system = $loinc
* code.coding.display = "Chloride [Moles/volume] in Serum or Plasma"

// orderDetails: Additional order information, codeableConcept
// ---- orderDetails ----
* orderDetail.coding.code = #NW
* orderDetail.coding.system = $v2-0119
* orderDetail.coding.display = "New order/service"
* orderDetail.text = "Order Control code"

* priority = #urgent
* subject = Reference(Patient/HansGuggindieluft)
* requester = Reference(MarcMustermannGruppenpraxis)
* reasonCode = $sct#90688005
* reasonCode.text = "Chronic renal failure syndrome (disorder)"
* insurance = Reference(HealthInsuranceCard)
* specimen[0] = Reference(Specimen/Serum) "Serum specimen"
* specimen[+] = Reference(Specimen/Serum) "Serum specimen"
// * specimen[+] = Reference(Specimen/Blood)
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Instance: LabOrder-ServiceRequest-container-example
InstanceOf: ChLabOrderSRContainer
Title: "CH LAB Service Request for Creatinine Clearance and Electrolytes in Serum"
Description: "Service Request as container for multiple Service Requests"
Title: "Service Request as container for multiple Service Requests"
Description: "CH LAB-ServiceRequest for Creatinine Clearance and Electrolytes in Serum"
Usage: #example
* id = "LabOrder-container-example"
* identifier[placerOrderIdentifier].type = $v2-0203#PLAC "Placer Identifier"
Expand All @@ -19,13 +19,13 @@ Usage: #example

* status = #active
* intent = #original-order
* category = $sct#721963009 "Order (record artifact)"
// * category = $sct#721963009 "Order (record artifact)"

* priority = #urgent
* subject = Reference(Patient/HansGuggindieluft)
* requester = Reference(MarcMustermannGruppenpraxis)
* reasonCode = $sct#404223003
* reasonCode.text = "Deep venous thrombosis of lower extremity"
* insurance = Reference(HealthInsuranceCard)
* specimen[0] = Reference(Specimen/Serum) "Serum specimen"
* specimen[+] = Reference(Specimen/Serum) "Serum specimen"
// * specimen[+] = Reference(Specimen/Blood)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Instance: LabOrder-ServiceRequest-creatinine-clearance
InstanceOf: ChLabOrderSRContainer
Title: "CH LAB Service Request for Creatinine clearance"
Title: "CH LAB-ServiceRequest for Creatinine clearance"
Description: "Service Request for Creatinine [Moles/volume] and 24h Urin Creatinen"
Usage: #example
* id = "LabOrder-creatinine-clearance"
Expand All @@ -22,12 +22,14 @@ Usage: #example

* status = #active
* intent = #original-order
* category = $sct#721963009 "Order (record artifact)"
// * category = $sct#721963009 "Order (record artifact)"

// What is being ordered
// * basedOn = Reference(SR-example)
// ---- Clinical Chemistry Tests ----
* code.coding[0] = $loinc#2164-2 "Creatinine renal clearance in 24 hour Urine and Serum or Plasma"
* code.coding.code = #2164-2
* code.coding.system = $loinc
* code.coding.display = "Creatinine renal clearance in 24 hour Urine and Serum or Plasma"

// orderDetails: Additional order information, codeableConcept

Expand All @@ -39,12 +41,12 @@ Usage: #example
* insurance = Reference(HealthInsuranceCard)
* supportingInfo[+] = Reference(MedicationStatement/Diclofenac)
* supportingInfo[+] = Reference(Condition/Renal-insufficiency)
* specimen[0] = Reference(Specimen/Serum) "Serum specimen"
* specimen[+] = Reference(Specimen/Serum) "Serum specimen"
// * specimen[+] = Reference(Specimen/Blood)

Instance: Diclofenac
InstanceOf: MedicationStatement
Title: "MedicationStatement: Diclofenac Verordnung"
Title: "CH CoreMedicationStatement: Diclofenac Verordnung"
Description: "Medication Record: Diclofenac"
Usage: #example
* status = #active
Expand All @@ -60,15 +62,17 @@ Usage: #example

Instance: Voltaren
InstanceOf: Medication
Title: "Medication: Voltaren(product)"
Title: "Medication Voltaren(product)"
Description: "Example of a medication product"
Usage: #example
* contained = sub01
* code = $sct#775563008 "Product containing only diclofenac (medicinal product)"
* code.text = "VOLTAREN Drag 50 mg"
* form = $sct#385055001 "Tablet (basic dose form)"
* ingredient.itemReference = Reference(sub01)
* ingredient.strength.numerator = 50 'mg'
* ingredient.strength.denominator = 1 http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm#TAB
// * ingredient.strength.numerator = 50 'mg'
* ingredient.strength.numerator = 50 'mg' "milligram"
* ingredient.strength.denominator = 1 http://snomed.info/sct#732936001 "Tablet (unit of presentation)"

Instance: sub01
InstanceOf: Substance
Expand All @@ -78,7 +82,7 @@ Usage: #inline

Instance: Renal-insufficiency
InstanceOf: Condition
Title: "Condition: Renal Insuffiency"
Title: "Condition Renal Insuffiency"
Description: "Problem or Diagnosis from problem list: Renal Insuffiency"
Usage: #example
* identifier.value = "12345"
Expand Down
13 changes: 8 additions & 5 deletions input/fsh/instances/LabOrder-ServiceRequest-creatinine.fsh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Instance: LabOrder-ServiceRequest-creatinine
InstanceOf: ChLabOrderSRSingletest
Title: "CH LAB Service Request for Serum Creatinine"
Title: "CH LAB-ServiceRequest for Serum Creatinine"
Description: "Service Request for Creatinine [Moles/volume] in Serum or Plasma"
Usage: #example
* id = "LabOrder-creatinine"
Expand All @@ -16,20 +16,23 @@ Usage: #example

* status = #active
* intent = #original-order
* category = $sct#721963009 "Order (record artifact)"
// * category = $sct#721963009 "Order (record artifact)"

// What is being ordered
// * basedOn = Reference(SR-example)
// ---- Clinical Chemistry Tests ----
* code.coding[0] = $loinc#14682-9 "Creatinine [Moles/volume] in Serum or Plasma"
* code.coding.code = #14682-9
* code.coding.system = $loinc
* code.coding.display = "Creatinine [Moles/volume] in Serum or Plasma"

// orderDetails: Additional order information, codeableConcept
// orderDetails: Additional order information
// * orderDetail.coding = $v2-0119#NW "New order/service"

* priority = #urgent
* subject = Reference(Patient/HansGuggindieluft)
* requester = Reference(MarcMustermannGruppenpraxis)
* reasonCode = $sct#90688005
* reasonCode.text = "Chronic renal failure syndrome (disorder)"
* insurance = Reference(HealthInsuranceCard)
* specimen[0] = Reference(Specimen/Serum) "Serum specimen"
* specimen[+] = Reference(Specimen/Serum) "Serum specimen"
// * specimen[+] = Reference(Specimen/Blood)
Loading

0 comments on commit eac6784

Please sign in to comment.