diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dc7cea4..e6851929 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,8 +7,6 @@ name: CI on: push: branches: [ master ] - pull_request: - branches: [ master ] workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel @@ -17,7 +15,7 @@ jobs: build: # The type of runner that the job will run on runs-on: ubuntu-latest - + # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it @@ -34,7 +32,7 @@ jobs: run: | mkdir ./public mv ./output ./public/docs - + - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: diff --git a/README.md b/README.md index c55ec539..c65d3509 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# covid-ig +# covid-ig -WHO COVID-19 Surveillance +WHO COVID-19 Surveillance diff --git a/_updatePublisher.sh b/_updatePublisher.sh index b83f767c..0384d4ac 100755 --- a/_updatePublisher.sh +++ b/_updatePublisher.sh @@ -32,7 +32,7 @@ done echo "Checking internet connection" case "$OSTYPE" in - linux-gnu* ) wget -q --spider http://tx.fhir.org/snomed/doco ;; + linux-gnu* ) wget -q --spider http://tx.fhir.org/snomed/doco ;; darwin* ) ping tx.fhir.org -c 1 >/dev/null ;; *) echo "unknown: $OSTYPE"; exit 1 ;; esac diff --git a/fsh.ini b/fsh.ini index 5882a341..50e10a4d 100644 --- a/fsh.ini +++ b/fsh.ini @@ -1,2 +1,2 @@ [FSH] -sushi-version=1.1 \ No newline at end of file +sushi-version=1.3.1 diff --git a/input/fsh/who-co-Encounters.fsh b/input/fsh/who-co-Encounters.fsh new file mode 100644 index 00000000..b92de4a9 --- /dev/null +++ b/input/fsh/who-co-Encounters.fsh @@ -0,0 +1,41 @@ +Profile: WhoCoHospitalEncounter +Parent: WhoCrEncounterHospitalAdmission +Id: who-co-hospitalization-encounter +Title: "WHO CO Hospital Encounter" +Description: "WHO CO Hospital Encounter" +* status = #finished +* period 1..1 +* period.end 1..1 +* class.code = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE + +Profile: WhoCoEncounter +Parent: WhoCrEncounter +Id: who-co-encounter +Title: "WHO CO Encounter" +Description: "WHO CO Encounter" +* status = #finished +* period 1..1 +* period.end 1..1 +* class.code = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE + +/** + * Examples + */ + +Instance: WhoCoHospitalEncounterExample +InstanceOf: WhoCoHospitalEncounter +Usage: #example +* status = #finished +* class = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE +* period.start = "2021-05-12" +* period.end = "2021-05-13" + +Instance: WhoCoEncounterExample +InstanceOf: WhoCoEncounter +Usage: #example +* location.location = Reference(WhoCrLocationExample) +* status = #finished +* class = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE +* reasonCode = WhoCrCodeSystemReasonForTesting#CASE_CONTACT +* period.start = "2021-05-12" +* period.end = "2021-05-13" diff --git a/input/fsh/who-co-Observations.fsh b/input/fsh/who-co-Observations.fsh new file mode 100644 index 00000000..712eae8c --- /dev/null +++ b/input/fsh/who-co-Observations.fsh @@ -0,0 +1,180 @@ +Profile: WhoCoObservationOutcomeAsymp +Parent: Observation +Id: who-co-observation-outcome-asymp +Title: "WHO Case Outcome Outcome Asymp" +Description: "WHO Case Outcome Outcome Asymp Observation" +* code = $LNC#66421-9 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk +* effective[x] only dateTime +* effectiveDateTime 0..1 + +Profile: WhoCoObservationPatcourseAdmit +Parent: Observation +Id: who-co-observation-patcourse-admit +Title: "WHO Case Outcome Patcourse Admit" +Description: "WHO Case Outcome Patcourse Admit Observation" +* code = $LNC#77974-4 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk +* effective[x] only dateTime +* effectiveDateTime 0..1 + +Profile: WhoCoObservationOutcomePatcourseIcu +Parent: Observation +Id: who-co-observation-outcome-patcourse-icu +Title: "WHO CO Outcome Patcourse ICU" +Description: "WHO CO Outcome Patcourse ICU Observation" +* code = $LNC#95420-6 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCoObservationOutcomePatcourseVent +Parent: Observation +Id: who-co-observation-outcome-patcourse-vent +Title: "WHO CO Outcome Patcourse Vent" +Description: "WHO CO Outcome Patcourse Vent Observation" +* code = $LNC#96539-2 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCoObservationOutcomePatcourseEcmo +Parent: Observation +Id: who-co-observation-outcome-patcourse-ecmo +Title: "WHO CO Outcome Patcourse Ecmo" +Description: "WHO CO Outcome Patcourse Ecmo Observation" +* code = $LNC#96540-0 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCoObservationOutcomePatcourseStatus +Parent: Observation +Id: who-co-observation-outcome-patcourse-status +Title: "WHO CO Outcome Patcourse Status" +Description: "WHO CO Outcome Patcourse Status Observation" +* code = $LNC#91541-3 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCoValueSetHealthOutcome + +Profile: WhoCoObservationOutcomePatcourseStatusOther +Parent: Observation +Id: who-co-observation-outcome-patcourse-status-other +Title: "WHO CO Outcome Patcourse Status Other" +Description: "WHO CO Outcome Patcourse Status Other Observation" +* value[x] only string +* valueString 0..1 + +Profile: WhoCoObservationOutcomeLabResult +Parent: Observation +Id: who-co-observation-outcome-lab-result +Title: "WHO CO Outcome Lab Result" +Description: "WHO CO Outcome Lab Result Observation" +* code = $LNC#96552-5 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from WhoCoValueSetPositiveNegativeUnknown +* effective[x] only dateTime +* effectiveDateTime 0..1 + +Profile: WhoCoObservationOutcomeContactsFollowed +Parent: Observation +Id: who-co-observation-outcome-contacts-followed +Title: "WHO CO Outcome Contacts Followed" +Description: "WHO CO Outcome Contacts Followed Observation" +* code = $LNC#96551-7 +* value[x] only integer +* valueInteger 1..1 + +/* + * Examples + */ + +Instance: WhoCoObservationOutcomeAsympExample +InstanceOf: WhoCoObservationOutcomeAsymp +Usage: #example +Title: "WHO CO Outcome Asymp Example" +Description: "Developed symptoms after time of specimen collection" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y +* effectiveDateTime = "2021-05-13" + +Instance: WhoCoObservationOutcomeAsympNoEffectiveDateExample +InstanceOf: WhoCoObservationOutcomeAsymp +Usage: #example +Title: "WHO CO Outcome Asymp Example" +Description: "Did not develop symptoms after time of specimen collection example (no effective date)" +* status = #final +* valueCodeableConcept = $cs-v2-0136#N + +Instance: WhoCoObservationPatcourseAdmitExample +InstanceOf: WhoCoObservationPatcourseAdmit +Usage: #example +Title: "WHO Case Outcome Patcourse Admit Example" +Description: "Admission to hospital (may have been previously reported)" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y +* effectiveDateTime = "2021-05-13" + +Instance: WhoCoObservationOutcomePatcourseIcuExample +InstanceOf: WhoCoObservationOutcomePatcourseIcu +Usage: #example +Title: "WHO CO Outcome Patcourse ICU Example" +Description: "Did the case receive care in an intensive care unit (ICU)" +* status = #final +* valueCodeableConcept = $cs-v2-0136#N + +Instance: WhoCoObservationOutcomePatcourseVentExample +InstanceOf: WhoCoObservationOutcomePatcourseVent +Usage: #example +Title: "WHO CO Outcome Patcourse Vent Example" +Description: "Did the case receive ventilation" +* status = #final +* valueCodeableConcept = $cs-v2-0136#UNK + +Instance: WhoCoObservationOutcomePatcourseEcmoExample +InstanceOf: WhoCoObservationOutcomePatcourseEcmo +Usage: #example +Title: "WHO CO Outcome Patcourse Ecmo Example" +Description: "Did the case receive extracorporeal membrane oxygenation" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCoObservationOutcomePatcourseStatusExample +InstanceOf: WhoCoObservationOutcomePatcourseStatus +Usage: #example +Title: "WHO CO Outcome Patcourse Status Example" +Description: "Health Outcome" +* status = #final +* valueCodeableConcept = WhoCoHealthOutcome#death + +Instance: WhoCoObservationOutcomeLabResultExample +InstanceOf: WhoCoObservationOutcomeLabResult +Usage: #example +Title: "WHO CO Outcome Lab Result Example" +Description: "Results of last test example" +* status = #final +* valueCodeableConcept = WhoCoPositiveNegativeUnknown#positive +* effectiveDateTime = "2021-05-13" + +Instance: WhoCoObservationOutcomeContactsFollowedExample +InstanceOf: WhoCoObservationOutcomeContactsFollowed +Usage: #example +Title: "WHO CO Outcome Contacts Followed Example" +Description: "Total number of contacts followed for this case" +* status = #final +* valueInteger = 5 + +Instance: WhoCoObservationOutcomeContactsFollowedWithNoteExample +InstanceOf: WhoCoObservationOutcomeContactsFollowed +Usage: #example +Title: "WHO CO Outcome Contacts Followed Example" +Description: "Total number of contacts followed for this case example when value is unknown" +* status = #final +* valueInteger = -1 +* note.text = "unknown number of contacts follwed" diff --git a/input/fsh/who-co-Questionnaire.fsh b/input/fsh/who-co-Questionnaire.fsh new file mode 100644 index 00000000..062969f3 --- /dev/null +++ b/input/fsh/who-co-Questionnaire.fsh @@ -0,0 +1,98 @@ +Instance: WhoCoQuestionnaire +InstanceOf: Questionnaire +Description: "WHO Questionnaire for COVID-19 Case Outcome" +Title: "COVID-19 Case Outcome" +Usage: #definition + +* name = "WhoCoQuestionnaire" +* subjectType = #Patient +* url = "http://openhie.github.io/covid-19/Questionnaire/WhoCoQuestionnaire" +* status = #active + +* item[0].linkId = "patinfo_ID" +* item[0].text = "Unique Case Identifier" +* item[0].code = $LNC#94659-0 +* item[0].type = #string +* item[0].required = true + +* item[1].linkId = "outcome_report_date" +* item[1].text = "Date of re-submission for this report" +* item[1].code = $LNC#91877-1 +* item[1].type = #date +* item[1].required = true + +* item[2].linkId = "outcome_date_of_outcome" +* item[2].text = "Date of Release from isolation/hospital or Date of Death" +* item[2].code = $LNC#46582-3 +* item[2].type = #date +* item[2].required = true + +* item[3].linkId = "outcome_asymp" +* item[3].text = "Developed symptoms after time of specimen collection" +* item[3].code = $LNC#66421-9 +* item[3].type = #choice +* item[3].required = true + +* item[4].linkId = "outcome_asymp_date" +* item[4].text = "Date of onset of symptoms/signs of illness" +* item[4].code = $LNC#65222-2 +* item[4].type = #date + +* item[5].linkId = "patcourse_admit" +* item[5].text = "Admission to hospital (may have been previously reported)" +* item[5].code = $LNC#77974-4 +* item[5].type = #choice +* item[5].required = true + +* item[6].linkId = "admission_date" +* item[6].text = "First date of admission to hospital" +* item[6].code = $LNC#8656-1 +* item[6].type = #date + +* item[7].linkId = "outcome_patcourse_icu" +* item[7].text = "Did the case receive care in an intensive care unit (ICU)" +* item[7].code = $LNC#95420-6 +* item[7].type = #choice +* item[7].required = true + +* item[8].linkId = "outcome_patcourse_vent" +* item[8].text = "Did the case receive ventilation" +* item[8].code = $LNC#96539-2 +* item[8].type = #choice +* item[8].required = true + +* item[9].linkId = "outcome_patcourse_ecmo" +* item[9].text = "Did the case receive extracorporeal membrane oxygenation" +* item[9].code = $LNC#96540-0 +* item[9].type = #choice +* item[9].required = true + +* item[10].linkId = "outcome_patcourse_status" +* item[10].text = "Health Outcome" +* item[10].code = $LNC#91541-3 +* item[10].type = #choice +* item[10].required = true + +* item[11].linkId = "outcome_patcourse_status_other" +* item[11].text = "If other, please explain" +* item[11].type = #string + +* item[12].linkId = "outcome_lab_date" +* item[12].text = "If released from hospital /isolation, date of last laboratory test" +* item[12].code = $LNC#96550-9 +* item[12].type = #date + +* item[13].linkId = "outcome_lab_result" +* item[13].text = "Results of last test" +* item[13].code = $LNC#96552-5 +* item[13].type = #choice + +* item[14].linkId = "outcome_contacts_followed" +* item[14].text = "Total number of contacts followed for this case" +* item[14].code = $LNC#96551-7 +* item[14].type = #integer +* item[14].required = true + +* item[15].linkId = "outcome_contacts_followed_unknown" +* item[15].text = "Number of contacts followed unknown" +* item[15].type = #string diff --git a/input/fsh/who-co-QuestionnaireResponse.fsh b/input/fsh/who-co-QuestionnaireResponse.fsh new file mode 100644 index 00000000..b1334e41 --- /dev/null +++ b/input/fsh/who-co-QuestionnaireResponse.fsh @@ -0,0 +1,74 @@ +Instance: WhoCoQuestionnaireResponse +InstanceOf: QuestionnaireResponse +Usage: #example +Title: "WHO CO QuestionnaireResponse" +Description: "WHO Case Outcome QuestionnaireResponse example" +* identifier.system = "http://test.org/response-id" +* identifier.value = "1111" +* questionnaire = Canonical(WhoCoQuestionnaire) +* status = #completed +* authored = "2021-01-20T11:29:52+02:00" + +* item[+].linkId = "patinfo_ID" +* item[=].text = "Unique Case Identifier" +* item[=].answer[+].valueString = "123456789" + +* item[+].linkId = "outcome_report_date" +* item[=].text = "Date of re-submission for this report" +* item[=].answer[+].valueDateTime = "2021-05-13" + +* item[+].linkId = "outcome_date_of_outcome" +* item[=].text = "Date of Release from isolation/hospital or Date of Death" +* item[=].answer[+].valueDateTime = "2021-05-13" + +* item[+].linkId = "outcome_asymp" +* item[=].text = "Developed symptoms after time of specimen collection" +* item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[+].linkId = "outcome_asymp_date" +* item[=].text = "Date of onset of symptoms/signs of illness" +* item[=].answer[+].valueDateTime = "2021-05-13" + +* item[+].linkId = "patcourse_admit" +* item[=].text = "Admission to hospital (may have been previously reported)" +* item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[+].linkId = "admission_date" +* item[=].text = "First date of admission to hospital" +* item[=].answer[+].valueDateTime = "2021-05-13" + +* item[+].linkId = "outcome_patcourse_icu" +* item[=].text = "Did the case receive care in an intensive care unit (ICU)" +* item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[+].linkId = "outcome_patcourse_vent" +* item[=].text = "Did the case receive ventilation" +* item[=].answer[+].valueCoding = $cs-v2-0136#UNK + +* item[+].linkId = "outcome_patcourse_ecmo" +* item[=].text = "Did the case receive extracorporeal membrane oxygenation" +* item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[+].linkId = "outcome_patcourse_status" +* item[=].text = "Health Outcome" +* item[=].answer[+].valueCoding = WhoCoHealthOutcome#other + +* item[+].linkId = "outcome_patcourse_status_other" +* item[=].text = "If other, please explain" +* item[=].answer[+].valueString = "N/A" + +* item[+].linkId = "outcome_lab_date" +* item[=].text = "If released from hospital /isolation, date of last laboratory test" +* item[=].answer[+].valueDateTime = "2021-05-13" + +* item[+].linkId = "outcome_lab_result" +* item[=].text = "Results of last test" +* item[=].answer[+].valueCoding = WhoCoPositiveNegativeUnknown#positive + +* item[+].linkId = "outcome_contacts_followed" +* item[=].text = "Total number of contacts followed for this case" +* item[=].answer[+].valueInteger = 5 + +* item[+].linkId = "outcome_contacts_followed_unknown" +* item[=].text = "Number of contacts followed unknown" +* item[=].answer[+].valueCoding = $cs-v2-0136#UNK diff --git a/input/fsh/who-co-bundle.fsh b/input/fsh/who-co-bundle.fsh new file mode 100644 index 00000000..a4f071cd --- /dev/null +++ b/input/fsh/who-co-bundle.fsh @@ -0,0 +1,61 @@ +Instance: WhoCoBundleExample +InstanceOf: Bundle +Usage: #example +Title: "Who Co Bundle Example" +Description: "Example of a clinical bundle representing a case outcome" +* type = #transaction + +* entry[+].fullUrl = "http://test.org/fhir/Composition/WhoCoCompositionExample" +* entry[=].resource = WhoCoCompositionExample +* entry[=].request.method = #POST +* entry[=].request.url = "Composition" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomeAsympExample" +* entry[=].resource = WhoCoObservationOutcomeAsympExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationPatcourseAdmitExample" +* entry[=].resource = WhoCoObservationPatcourseAdmitExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomePatcourseIcuExample" +* entry[=].resource = WhoCoObservationOutcomePatcourseIcuExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomePatcourseVentExample" +* entry[=].resource = WhoCoObservationOutcomePatcourseVentExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomePatcourseEcmoExample" +* entry[=].resource = WhoCoObservationOutcomePatcourseEcmoExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomePatcourseStatusExample" +* entry[=].resource = WhoCoObservationOutcomePatcourseStatusExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomeLabResultExample" +* entry[=].resource = WhoCoObservationOutcomeLabResultExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCoObservationOutcomeContactsFollowedExample" +* entry[=].resource = WhoCoObservationOutcomeContactsFollowedExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" + +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoCoHospitalEncounterExample" +* entry[=].resource = WhoCoHospitalEncounterExample +* entry[=].request.method = #PUT +* entry[=].request.url = "Encounter" + +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoCoEncounterExample" +* entry[=].resource = WhoCoEncounterExample +* entry[=].request.method = #PUT +* entry[=].request.url = "Encounter" diff --git a/input/fsh/who-co-composition.fsh b/input/fsh/who-co-composition.fsh new file mode 100644 index 00000000..93169040 --- /dev/null +++ b/input/fsh/who-co-composition.fsh @@ -0,0 +1,54 @@ +Profile: WhoCoComposition +Parent: Composition +Id: who-c0-composition +Description: "WHO Case Outcome Composition" +Title: "WHO Case Outcome Composition" +* type = $LNC#95412-3 +* category = $LNC#55751-2 +* encounter 1..1 +* identifier 1..1 + +* section ^slicing.discriminator.type = #value +* section ^slicing.discriminator.path = "code.coding.code" +* section ^slicing.rules = #openAtEnd +* section ^slicing.ordered = true +* section ^slicing.description = "Slice of composition.section based on code" + +* section contains + clinicalStatus 1..1 and + exposureRisk 1..1 + +* section[clinicalStatus].title = "clinical status" +* section[clinicalStatus].code = http://test.org/sectionCode#clinicalStatus + +* section[exposureRisk].title = "exposure risk" +* section[exposureRisk].code = http://test.org/sectionCode#exposureRisk +* section[exposureRisk].entry only Reference(WhoCoObservationOutcomeContactsFollowed) + +Instance: WhoCoCompositionExample +InstanceOf: WhoCoComposition +Usage: #example +Title: "Who Co Composition Example" +Description: "Composition example" +* status = #final +* identifier.system = "http://test.org/identifier/who-covid-19-case-outcome" +* identifier.value = "1111" +* encounter = Reference(WhoCoEncounterExample) +* date = "2021-05-13" +* author = Reference(WhoCrPractitionerExample) +* title = "WHO COVID-19 Case Outcome" + +* section[+].title = "clinical status" +* section[=].code = http://test.org/sectionCode#clinicalStatus +* section[=].entry[+] = Reference(WhoCoObservationOutcomeAsympExample) +* section[=].entry[+] = Reference(WhoCoObservationPatcourseAdmitExample) +* section[=].entry[+] = Reference(WhoCoObservationOutcomePatcourseIcuExample) +* section[=].entry[+] = Reference(WhoCoObservationOutcomePatcourseVentExample) +* section[=].entry[+] = Reference(WhoCoObservationOutcomePatcourseEcmoExample) +* section[=].entry[+] = Reference(WhoCoObservationOutcomePatcourseStatusExample) +* section[=].entry[+] = Reference(WhoCoObservationOutcomeLabResultExample) +* section[=].entry[+] = Reference(WhoCoHospitalEncounterExample) + +* section[+].title = "exposure risk" +* section[=].code = http://test.org/sectionCode#exposureRisk +* section[=].entry[+] = Reference(WhoCoObservationOutcomeContactsFollowedExample) diff --git a/input/fsh/who-cr-Common.fsh b/input/fsh/who-cr-Common.fsh index 80c695fa..05106274 100644 --- a/input/fsh/who-cr-Common.fsh +++ b/input/fsh/who-cr-Common.fsh @@ -39,6 +39,8 @@ Alias: $prof-sdc-questionnaire-adv-behave = http://hl7.org/fhir/uv/sdc/Structure Alias: $prof-sdc-questionnaireResponse = http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaireresponse Alias: $prof-sdc-valueset = http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-valueset +Alias: $valueset-diagnostic-service = https://www.hl7.org/fhir/valueset-diagnostic-service-sections.html + RuleSet: PublisherContextInstance * status = #draft * experimental = true diff --git a/input/fsh/who-cr-CompositionCaseReportBasic.fsh b/input/fsh/who-cr-CompositionCaseReportBasic.fsh new file mode 100644 index 00000000..ad245f4f --- /dev/null +++ b/input/fsh/who-cr-CompositionCaseReportBasic.fsh @@ -0,0 +1,598 @@ +Profile: WhoCrCompositionBasic +Parent: Composition +Id: who-cr-composition-basic +Description: "WHO Case Reporting Composition - basic support for initial PoC" +Title: "WHO Case Reporting Composition - Basic" +* type = $LNC#95412-3 +* category = $LNC#55751-2 +* encounter 1..1 +* identifier 1..1 + +* section ^slicing.discriminator.type = #value +* section ^slicing.discriminator.path = "code.coding.code" +* section ^slicing.rules = #openAtEnd +* section ^slicing.ordered = true +* section ^slicing.description = "Slice of composition.section based on code" + +* section contains + patientInformation 1..1 and + clinicalStatus 1..1 and + exposureRisk 1..1 + +* section[patientInformation].title = "patient information" +* section[patientInformation].code = http://test.org/sectionCode#patientinformation +* section[patientInformation].entry only Reference(WhoCrObservationAge or WhoCrObservationBirthSex) + +* section[clinicalStatus].title = "clinical status" +* section[clinicalStatus].code = http://test.org/sectionCode#clinicalStatus +* section[clinicalStatus].entry only Reference(WhoCrObservationLabTestDate or WhoCrObservationSymptoms or WhoCrObservationOnsetDate or WhoCrObservationComorbidities) + +* section[exposureRisk].title = "exposure risk" +* section[exposureRisk].code = http://test.org/sectionCode#exposureRisk +* section[exposureRisk].entry only Reference(WhoCrObservationHasTravelled) + +Profile: WhoCrEncounter +Parent: Encounter +Id: who-cr-encounter +Title: "WHO CR Encounter" +Description: "WHO Encounter for a case report" +* location 1..1 +* reasonCode 1..* +* reasonCode from WhoCrValueSetReasonForCovid19Testing +* period 1..1 +* period.start 1..1 + +Profile: WhoCrEncounterHospitalAdmission +Parent: Encounter +Id: who-cr-encounter-hospital-admission +Title: "WHO CR Encounter Hospital Admission" +Description: "WHO Encounter for hospital admission" +* period 0..1 +* period.start 1..1 + +Profile: WhoCrLocation +Parent: Location +Id: who-cr-location +Title: "WHO CR Location" +Description: "WHO Location for case report" +* address 1..1 +* address.country 1..1 +* address.state 1..1 + +Profile: WhoCrObservationAge +Parent: Observation +Id: who-cr-observation-age +Title: "WHO CR Observation Age" +Description: "WHO Observation of age for case report" +* code = $LNC#30525-0 +* value[x] only Quantity +* valueQuantity.value 1..1 +* valueQuantity from WhoCrValueSetAgeUnits + +Profile: WhoCrObservationBirthSex +Parent: Observation +Id: who-cr-observation-birth-sex +Title: "WHO CR Observation Birth Sex" +Description: "WHO Observation of birth sex for case report" +* code = $LNC#76689-9 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetSexAtBirth + +Profile: WhoCrObservationLabTestDate +Parent: Observation +Id: who-cr-observation-lab-test-date +Title: "WHO CR Observation Lab Test Date" +Description: "WHO Observation for lab test date" +* code = http://test.org/obsCode#lab-test-date // TODO: code not defined in questionnaire either +* value[x] only dateTime +* valueDateTime 1..1 + +Profile: WhoCrObservationSymptoms +Parent: Observation +Id: who-cr-observation-symptoms +Title: "WHO CR Observation Symptoms" +Description: "WHO Observation if the patient has any symptoms for case report" +* code = http://test.org/obsCode#symptoms // TODO: code not defined in questionnaire either +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNo + +Profile: WhoCrObservationOnsetDate +Parent: Observation +Id: who-cr-observation-onset-date +Title: "WHO CR Observation Symptoms Onset Date" +Description: "WHO Observation for date of symptoms onset" +* code = $LNC#65222-2 +* value[x] only dateTime +* valueDateTime 1..1 + +Profile: WhoCrObservationComorbidities +Parent: Observation +Id: who-cr-observation-comorbidities +Title: "WHO CR Observation Co-morbidities" +Description: "WHO Observation if the patient has any co-morbidities for case report" +* code = $LNC#75618-9 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNo +* component 0..1 +* component.code = $LNC#75618-9 +* component.valueCodeableConcept 0..1 + +Profile: WhoCrObservationHasTravelled +Parent: Observation +Id: who-cr-observation-has-travelled +Title: "WHO CR Observation Has Travelled" +Description: "WHO Observation if the patient has travelled in the past 14 days prior to symptom onset for case report" +* code = $LNC#96542-6 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNo + +Profile: WhoCrObservationTestReason +Parent: Observation +Id: who-cr-observation-test-reason +Title: "WHO CR Observation Test Reason" +Description: "WHO Observation the reason for testing" +* code = $LNC#67098-4 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetReasonForCovid19Testing + +Profile: WhoCrObservationReportCountry +Parent: Observation +Id: who-cr-observation-reporting-country +Title: "WHO CR Observation Reporting Country" +Description: "WHO Observation the reporting country" +* code = $LNC#77967-8 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from $vs-iso3166-1-2 + +Profile: WhoCrObservationHospitalAdmission +Parent: Observation +Id: who-cr-observation-hospital-admission +Title: "WHO CR Observation Hospital Admission" +Description: "WHO Observation if the patient was admitted to the hospital" +* code = $LNC#77974-4 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCrObservationIntensiveCareReceived +Parent: Observation +Id: who-cr-observation-intensive-care-received +Title: "WHO CR Observation Intensive Care Received" +Description: "WHO Observation if the patient received intensive care in the hospital" +* code = $LNC#95420-6 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCrObservationVentilationReceived +Parent: Observation +Id: who-cr-observation-ventilation-received +Title: "WHO CR Observation Ventilation Received" +Description: "WHO Observation if the patient received ventilation in the hospital" +* code = $LNC#96539-2 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCrObservationECMO +Parent: Observation +Id: who-cr-observation-extracorporeal-membrane-oxygenation +Title: "WHO CR Observation Extracorporeal Membrane Oxygenation Received" +Description: "WHO Observation if the patient received extracorporeal membrane oxygenation in the hospital" +* code = $LNC#96540-0 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCrObservationCaseIsolation +Parent: Observation +Id: who-cr-observation-case-isolated +Title: "WHO CR Observation Case Isolated" +Description: "WHO Observation if the patient is in isolation" +* code = $LNC#96548-3 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk +* effectiveDateTime 0..1 + +Profile: WhoCrObservationHealthCareWorker +Parent: Observation +Id: who-cr-observation-health-care-worker +Title: "WHO CR Observation Health Care Worker" +Description: "WHO Observation if the patient is a health care worker" +* code = $LNC#95418-0 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNoUnk + +Profile: WhoCrObservationTravelCountry +Parent: Observation +Id: who-cr-observation-travel-country +Title: "WHO CR Observation Travel Country" +Description: "WHO Observation country traveled to by patient" +* code = $LNC#94651-7 +* value[x] only CodeableConcept +* valueCodeableConcept 0..1 +* valueCodeableConcept from $vs-iso3166-1-2 +* effectiveDateTime 0..1 +* component 0..1 +* component.code = $LNC#91560-3 +* component.valueString 0..1 + +Profile: WhoCrObservationVisitedHealthCare +Parent: Observation +Id: who-cr-observation-visited-health-care +Title: "WHO CR Observation Visited Health Care" +Description: "WHO Observation if the patient has visited health care in the past 14 days prior to symptom onset for case report" +* code = $LNC#96543-4 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNo + +Profile: WhoCrObservationContactCase +Parent: Observation +Id: who-cr-observation-contact-case +Title: "WHO CR Observation Contact Case" +Description: "WHO Observation if the patient has had contact with confirmed case in the past 14 days prior to symptom onset for case report" +* code = $LNC#96544-2 +* value[x] only CodeableConcept +* valueCodeableConcept 1..1 +* valueCodeableConcept from WhoCrValueSetYesNo +* component 0..1 + +* component ^slicing.discriminator.type = #pattern +* component ^slicing.discriminator.path = "code" +* component ^slicing.rules = #open +* component ^slicing.description = "Slice of component based on code" + +* component contains + contactCaseSetting 0..1 and + caseID 0..1 and + contactFirstDate 0..1 and + contactLastDate 0..1 and + contactLocation 0..1 + +* component[contactCaseSetting].code = $LNC#81267-7 +* component[contactCaseSetting].valueCodeableConcept 0..1 +* component[caseID].code = $LNC#94650-9 +* component[caseID].valueString 0..1 +* component[contactFirstDate].code = $LNC#96545-9 +* component[contactFirstDate].valueDateTime 0..1 +* component[contactLastDate].code = $LNC#95386-9 +* component[contactLastDate].valueDateTime 0..1 +* component[contactLocation].code = $LNC#77984-3 +* component[contactLocation].valueString 0..1 +* component[contactLocation].valueString from $vs-iso3166-1-2 + +/** + * Examples + */ + +Instance: WhoCrBundleExample +InstanceOf: Bundle +Usage: #example +Title: "Who Cr Bundle Example" +Description: "Example of a clinical bundle representing a case report" +* type = #transaction +* entry[+].fullUrl = "http://test.org/fhir/Composition/WhoCrCompositionBasicExample" +* entry[=].resource = WhoCrCompositionBasicExample +* entry[=].request.method = #POST +* entry[=].request.url = "Composition" +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoCrEncounterExample" +* entry[=].resource = WhoCrEncounterExample +* entry[=].request.method = #POST +* entry[=].request.url = "Encounter" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationAgeExample" +* entry[=].resource = WhoCrObservationAgeExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationBirthSexExample" +* entry[=].resource = WhoCrObservationBirthSexExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationLabTestDateExample" +* entry[=].resource = WhoCrObservationLabTestDateExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationSymptomsExample" +* entry[=].resource = WhoCrObservationSymptomsExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCRObservationOnsetDateExample" +* entry[=].resource = WhoCRObservationOnsetDateExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationComorbiditiesExample" +* entry[=].resource = WhoCrObservationComorbiditiesExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationHasTravelledExample" +* entry[=].resource = WhoCrObservationHasTravelledExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationTestReasonExample" +* entry[=].resource = WhoCrObservationTestReasonExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationReportCountryExample" +* entry[=].resource = WhoCrObservationReportCountryExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationHospitalAdmissionExample" +* entry[=].resource = WhoCrObservationHospitalAdmissionExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationIntensiveCareReceivedExample" +* entry[=].resource = WhoCrObservationIntensiveCareReceivedExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationVentilationReceivedExample" +* entry[=].resource = WhoCrObservationVentilationReceivedExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationECMOExample" +* entry[=].resource = WhoCrObservationECMOExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationCaseIsolationExample" +* entry[=].resource = WhoCrObservationCaseIsolationExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationHealthCareWorkerExample" +* entry[=].resource = WhoCrObservationHealthCareWorkerExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationTravelCountryExample" +* entry[=].resource = WhoCrObservationTravelCountryExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationVisitedHealthCareExample" +* entry[=].resource = WhoCrObservationVisitedHealthCareExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationContactCaseExample" +* entry[=].resource = WhoCrObservationContactCaseExample +* entry[=].request.method = #POST +* entry[=].request.url = "Observation" +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoCrEncounterHospitalAdmissionExample" +* entry[=].resource = WhoCrEncounterHospitalAdmissionExample +* entry[=].request.method = #POST +* entry[=].request.url = "Encounter" + +Instance: WhoCrCompositionBasicExample +InstanceOf: WhoCrCompositionBasic +Usage: #example +Title: "Who Cr Composition Basic Example" +Description: "Basic Composition example" +* status = #final +* identifier.system = "http://test.org/identifier/who-covid-19-case-report" +* identifier.value = "1111" +* encounter = Reference(WhoCrEncounterExample) +* date = "2021-01-18" +* author = Reference(WhoCrPractitionerExample) +* title = "WHO COVID-19 Case Report" + +* section[+].title = "reporting country" +* section[=].code = http://test.org/sectionCode#reportingcountry +* section[=].entry[+] = Reference(WhoCrObservationReportCountryExample) + +* section[+].title = "patient information" +* section[=].code = http://test.org/sectionCode#patientinformation +* section[=].entry[+] = Reference(WhoCrObservationAgeExample) +* section[=].entry[+] = Reference(WhoCrObservationBirthSexExample) + +* section[+].title = "clinical status" +* section[=].code = http://test.org/sectionCode#clinicalStatus +* section[=].entry[+] = Reference(WhoCrObservationLabTestDateExample) +* section[=].entry[+] = Reference(WhoCrObservationSymptomsExample) +* section[=].entry[+] = Reference(WhoCRObservationOnsetDateExample) +* section[=].entry[+] = Reference(WhoCrObservationComorbiditiesExample) +* section[=].entry[+] = Reference(WhoCrObservationTestReasonExample) +* section[=].entry[+] = Reference(WhoCrObservationHospitalAdmissionExample) +* section[=].entry[+] = Reference(WhoCrObservationIntensiveCareReceivedExample) +* section[=].entry[+] = Reference(WhoCrObservationVentilationReceivedExample) +* section[=].entry[+] = Reference(WhoCrObservationECMOExample) +* section[=].entry[+] = Reference(WhoCrObservationCaseIsolationExample) +* section[=].entry[+] = Reference(WhoCrObservationHealthCareWorkerExample) +* section[=].entry[+] = Reference(WhoCrEncounterHospitalAdmissionExample) + +* section[+].title = "exposure risk" +* section[=].code = http://test.org/sectionCode#exposureRisk +* section[=].entry[+] = Reference(WhoCrObservationHasTravelledExample) +* section[=].entry[+] = Reference(WhoCrObservationTravelCountryExample) +* section[=].entry[+] = Reference(WhoCrObservationVisitedHealthCareExample) +* section[=].entry[+] = Reference(WhoCrObservationContactCaseExample) + +Instance: WhoCrEncounterExample +InstanceOf: Encounter +Usage: #example +Title: "WHO CR Encounter Example" +Description: "Encounter example" +* location.location = Reference(WhoCrLocationExample) +* status = #finished +* class = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE +* period.start = "2021-01-15" + +Instance: WhoCrLocationExample +InstanceOf: Location +Usage: #example +Title: "Who Cr Location Example" +Description: "Location example" +* address.country = "ZA" +* address.state = "KZN" + +Instance: WhoCrPractitionerExample +InstanceOf: Practitioner +Usage: #example +Title: "Who Cr Practitioner Example" +Description: "Practitioner example" +* name[0].given[0] = "Homer" +* name[1].family = "Simpson" + +Instance: WhoCrObservationAgeExample +InstanceOf: WhoCrObservationAge +Usage: #example +Title: "Who Cr Observation Age Example" +Description: "Observation Age Example" +* status = #final +* valueQuantity.value = 35 + +Instance: WhoCrObservationBirthSexExample +InstanceOf: WhoCrObservationBirthSex +Usage: #example +Title: "Who Cr Observation Birth Sex Example" +Description: "Observation Birth Sex Example" +* status = #final +* valueCodeableConcept = $cs-gender#male + +Instance: WhoCrObservationLabTestDateExample +InstanceOf: WhoCrObservationLabTestDate +Usage: #example +Title: "Who Cr Observation Lab Test Date Example" +Description: "Lab Test Date Example" +* status = #final +* valueDateTime = "2021-01-18" + +Instance: WhoCrObservationSymptomsExample +InstanceOf: WhoCrObservationSymptoms +Usage: #example +Title: "Who Cr Observation Symptoms Example" +Description: "Observation Symptoms Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCRObservationOnsetDateExample +InstanceOf: WhoCrObservationOnsetDate +Usage: #example +Title: "Who CR Observation Onset DateExample" +Description: "Observation Onset DateExample" +* status = #final +* valueDateTime = "2021-01-15" + +Instance: WhoCrObservationComorbiditiesExample +InstanceOf: WhoCrObservationComorbidities +Usage: #example +Title: "Who Cr Observation ComorbiditiesExample" +Description: "Observation ComorbiditiesExample" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y +* component[0].valueCodeableConcept = WhoCrCodeSystemComorbidity#PREGNANCY + +Instance: WhoCrObservationHasTravelledExample +InstanceOf: WhoCrObservationHasTravelled +Usage: #example +Title: "Who Cr Observation Has Travelled Example" +Description: "Observation Has Travelled Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#N + +Instance: WhoCrObservationTestReasonExample +InstanceOf: WhoCrObservationTestReason +Usage: #example +Title: "Who Cr Observation Test Reason Example" +Description: "Observation Test Reason Example" +* status = #final +* valueCodeableConcept = WhoCrCodeSystemReasonForTesting#CASE_CONTACT + +Instance: WhoCrObservationReportCountryExample +InstanceOf: WhoCrObservationReportCountry +Usage: #example +Title: "Who Cr Observation Report Country Example" +Description: "Observation Report Country Example" +* status = #final +* valueCodeableConcept = $vs-iso3166-1-2#ZA + +Instance: WhoCrObservationHospitalAdmissionExample +InstanceOf: WhoCrObservationHospitalAdmission +Usage: #example +Title: "Who Cr Observation Hospital Admission Example" +Description: "Observation Hospital Admission Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationIntensiveCareReceivedExample +InstanceOf: WhoCrObservationIntensiveCareReceived +Usage: #example +Title: "Who Cr Observation Intensive Care Received Example" +Description: "Observation Intensive Received Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationVentilationReceivedExample +InstanceOf: WhoCrObservationVentilationReceived +Usage: #example +Title: "Who Cr Observation Ventilation Received Example" +Description: "Observation Ventilation Received Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationECMOExample +InstanceOf: WhoCrObservationECMO +Usage: #example +Title: "Who Cr Observation ECMO Example" +Description: "Observation ECMO Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationCaseIsolationExample +InstanceOf: WhoCrObservationCaseIsolation +Usage: #example +Title: "Who Cr Observation CaseIsolated Example" +Description: "Observation CaseIsolated Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y +* effectiveDateTime = "2021-01-29" + +Instance: WhoCrObservationHealthCareWorkerExample +InstanceOf: WhoCrObservationHealthCareWorker +Usage: #example +Title: "Who Cr Observation HealthCareWorker Example" +Description: "Observation HealthCareWorker Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationTravelCountryExample +InstanceOf: WhoCrObservationTravelCountry +Usage: #example +Title: "Who Cr Observation Travel Country Example" +Description: "Observation Travel Country Example" +* status = #final +* valueCodeableConcept = $vs-iso3166-1-2#ZA +* effectiveDateTime = "2021-01-19" +* component.valueString = "Harare" + +Instance: WhoCrObservationVisitedHealthCareExample +InstanceOf: WhoCrObservationVisitedHealthCare +Usage: #example +Title: "Who Cr Observation VisitedHealthCare Example" +Description: "Observation VisitedHealthCare Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y + +Instance: WhoCrObservationContactCaseExample +InstanceOf: WhoCrObservationContactCase +Usage: #example +Title: "Who Cr Observation ContactCase Example" +Description: "Observation ContactCase Example" +* status = #final +* valueCodeableConcept = $cs-v2-0136#Y +* component[contactCaseSetting].valueString = "Home" +* component[caseID].valueString = "12345678" +* component[contactFirstDate].valueDateTime = "2021-01-19" +* component[contactLastDate].valueDateTime = "2021-01-20" +* component[contactLocation].valueString = "ZW" + +Instance: WhoCrEncounterHospitalAdmissionExample +InstanceOf: WhoCrEncounterHospitalAdmission +Usage: #example +Title: "Who Cr Encounter Hospital Admission Example" +Description: "Hospital Admission Encounter Example" +* status = #finished +* class = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE +* period.start = "2021-01-19" diff --git a/input/fsh/who-cr-Patient.fsh b/input/fsh/who-cr-Patient.fsh index a3dd86d3..7817ce67 100644 --- a/input/fsh/who-cr-Patient.fsh +++ b/input/fsh/who-cr-Patient.fsh @@ -24,4 +24,4 @@ Usage: #example // * extension[birthSex].valueCode = #F * address[0].use = #home -* address[0].country = $cs-iso3166-1#URY \ No newline at end of file +* address[0].country = $cs-iso3166-1#URY diff --git a/input/fsh/who-cr-QuestionnaireCRF2020-2.fsh b/input/fsh/who-cr-QuestionnaireCRF2020-2.fsh index 5e711d04..3cf15d7a 100644 --- a/input/fsh/who-cr-QuestionnaireCRF2020-2.fsh +++ b/input/fsh/who-cr-QuestionnaireCRF2020-2.fsh @@ -103,16 +103,17 @@ Usage: #definition * item[2].linkId = "report_country" * item[2].text = "Reporting country:" -* item[2].code = $LNC#77983-5 +* item[2].code = $LNC#96546-7 // * item[2].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.report.country" * item[2].type = #choice * item[2].answerValueSet = Canonical(WhoCrValueSetQuestionnaireCountry) * item[2].item[0].linkId = "report_country_other" * item[2].item[0].text = "If Other, please specify:" -* item[2].item[0].code = $LNC#77983-5 // * item[2].item[0].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.report.country" * item[2].item[0].type = #string +* item[2].item[0].code = $LNC#96546-7 + * item[2].item[0].enableWhen[0].question = "report_country" * item[2].item[0].enableWhen[0].operator = #= * item[2].item[0].enableWhen[0].answerCoding = WhoCrCodeSystemQuestionnaireChoice#other @@ -169,16 +170,16 @@ Usage: #definition * item[4].item[3].item[0].linkId = "patinfo_idadmin0" * item[4].item[3].item[0].text = "Country:" -* item[4].item[3].item[0].code = $LNC#96546-7 -// * item[4].item[3].item[0].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.identified.country" * item[4].item[3].item[0].type = #choice +* item[4].item[3].item[0].code = $LNC#77983-5 * item[4].item[3].item[0].answerValueSet = Canonical(WhoCrValueSetQuestionnaireCountry) +// * item[4].item[3].item[0].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.identified.country" * item[4].item[3].item[0].item[0].linkId = "patinfo_idadmin0_other" * item[4].item[3].item[0].item[0].text = "If Other, please specify:" -* item[4].item[3].item[0].item[0].code = $LNC#96546-7 // * item[4].item[3].item[0].item[0].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.identified.country" * item[4].item[3].item[0].item[0].type = #string +* item[4].item[3].item[0].item[0].code = $LNC#77983-5 * item[4].item[3].item[0].item[0].enableWhen[0].question = "patinfo_idadmin0" * item[4].item[3].item[0].item[0].enableWhen[0].operator = #= * item[4].item[3].item[0].item[0].enableWhen[0].answerCoding = WhoCrCodeSystemQuestionnaireChoice#other diff --git a/input/fsh/who-cr-QuestionnaireResponseBasic.fsh b/input/fsh/who-cr-QuestionnaireResponseBasic.fsh new file mode 100644 index 00000000..cb962317 --- /dev/null +++ b/input/fsh/who-cr-QuestionnaireResponseBasic.fsh @@ -0,0 +1,187 @@ +Instance: WhoCrQuestionnaireResponseBasic +InstanceOf: QuestionnaireResponse +Usage: #example +Title: "Who Cr Questionnaire Response Basic" +Description: "Questionnaire response example" +* identifier.system = "http://test.org/response-id" +* identifier.value = "1111" +* questionnaire = Canonical(WhoCrQuestionnaireCovid19Surveillance) +* status = #completed +* authored = "2021-01-20T11:29:52+02:00" +* author = Reference(WhoCrPractitionerExample) + +* item[+].linkId = "report_country" +* item[=].text = "Reporting country:" +* item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.report.country" +* item[=].answer[+].valueCoding = $vs-iso3166-1-2#ZA + +* item[+].linkId = "report_test_reason" +* item[=].text = "Why tested for COVID-19:" +* item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.report.testReason" +* item[=].answer[+].valueCoding = WhoCrCodeSystemReasonForTesting#CASE_CONTACT + +* item[+].linkId = "report_date" +* item[=].text = "Date of Reporting:" +* item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.report.reportDate" +* item[=].answer[+].valueDate = "2021-01-20" + +* item[+].linkId = "section_patient_info" +* item[=].text = "Patient information" + +* item[=].item[+].linkId = "patinfo_ID" +* item[=].item[=].text = "Unique Case Identifier (used in country):" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.caseId" +* item[=].item[=].answer[+].valueString = "123456789" + +* item[=].item[+].linkId = "patinfo_ageonset" +* item[=].item[=].text = "Age (use days if <1 month, months if <1 year):" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.onsetAge" +* item[=].item[=].answer[+].valueQuantity = 34 'a' + +* item[=].item[+].linkId = "patinfo_sex" +* item[=].item[=].text = "Sex at birth:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.birthSex" +* item[=].item[=].answer[+].valueCoding = $cs-gender#male + +* item[=].item[+].linkId = "patinfo_placediagnosed" +* item[=].item[=].text = "Place where the case was diagnosed:" + +* item[=].item[=].item[+].linkId = "patinfo_idadmin0" +* item[=].item[=].item[=].text = "Country:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.identified.country" +* item[=].item[=].item[=].answer[+].valueCoding = $vs-iso3166-1-2#ZA + +* item[=].item[=].item[=].item[+].linkId = "patinfo_idadmin1" +* item[=].item[=].item[=].item[=].text = "Admin Level 1 (province):" +* item[=].item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.patientInfo.identified.subnational" +* item[=].item[=].item[=].item[=].answer[+].valueCoding = $cs-iso3166-2#ZA-KZN + +* item[+].linkId = "section_clinical_status" +* item[=].text = "Clinical Status" + +* item[=].item[+].linkId = "Lab_date1" +* item[=].item[=].text = "Date of first laboratory confirmation test:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.lab.confirmedDate" +* item[=].item[=].answer[+].valueDate = "2021-01-20" + +* item[=].item[+].linkId = "patcourse_asymp" //TODO: variable name/short label is opposite to meaning of question +* item[=].item[=].text = "Any symptoms or signs at time of specimen collection that resulted in first laboratory confirmation?" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.asymptomatic" +* item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_dateonset" +* item[=].item[=].item[=].text = "Date of onset of symptoms:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.onsetDate" +* item[=].item[=].item[=].answer[+].valueDate = "2021-01-15" + +* item[=].item[=].item[+].linkId = "patcourse_admit" +* item[=].item[=].item[=].text = "Hospital Admission Indicator:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.wasAdmitted" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_presHCF" +* item[=].item[=].item[=].text = "First Hospital Admission Date:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.admitDate" +* item[=].item[=].item[=].answer[+].valueDate = "2021-01-15" + +* item[=].item[=].item[+].linkId = "patcourse_icu" +* item[=].item[=].item[=].text = "Intensive Care Received:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.receivedIcuCare" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_vent" +* item[=].item[=].item[=].text = "Ventilation Received:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.ventilated" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_ecmo" +* item[=].item[=].item[=].text = "Did the case receive extracorporeal membrane oxygenation?:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.receivedEcmo" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_iso" +* item[=].item[=].item[=].text = "Is case in isolation with Infection Control Practice in place?" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.wasIsolated" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#Y + +* item[=].item[=].item[+].linkId = "patcourse_dateiso" +* item[=].item[=].item[=].text = "Date of isolation:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.patientCourse.isolatedDate" +* item[=].item[=].item[=].answer[+].valueDate = "2021-01-15" + +* item[=].item[+].linkId = "section_comorbidity" +* item[=].item[=].text = "Underlying conditions and comorbidity:" + +* item[=].item[=].item[+].linkId = "Comcond_any" +* item[=].item[=].item[=].text = "Any underlying conditions?" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.comorbidities.any" +* item[=].item[=].item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[=].item[=].item[+].linkId = "comcond" +* item[=].item[=].item[=].text = "Patient Underlying Conditions:" +* item[=].item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.clinicalStatus.comorbidities.conditions" +* item[=].item[=].item[=].answer[+].valueCoding = WhoCrCodeSystemComorbidity#DIABETES +* item[=].item[=].item[=].answer[+].valueCoding = WhoCrCodeSystemComorbidity#PREGNANCY + +* item[+].linkId = "section_exposure_risk" +* item[=].text = "Exposure risk in the 14 days prior to symptom onset (prior to testing if asymptomatic)" + +* item[=].item[+].linkId = "patinfo_occuhcw" +* item[=].item[=].text = "Is case a Health Care Worker (any job in a health care setting):" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.travel.isHealthcareWorker" +* item[=].item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[=].item[+].linkId = "expo_travel" +* item[=].item[=].text = "Has the case travelled in the 14 days prior to symptom onset?" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.travel.hasTravelled" +* item[=].item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[=].item[+].linkId = "expo_travel_country" +* item[=].item[=].text = "Country:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.travel.location.country" +* item[=].item[=].answer[+].valueCoding = $vs-iso3166-1-2#ZW + +* item[=].item[+].linkId = "expo_travel_city" +* item[=].item[=].text = "City:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.travel.location.city" +* item[=].item[=].answer[+].valueString = "Harare" + +* item[=].item[+].linkId = "expo_travel_date" +* item[=].item[=].text = "Date of Departure from the place:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.travel.location.locationPeriod.end" +* item[=].item[=].answer[+].valueDate = "2021-01-15" + +* item[=].item[+].linkId = "expo_visit_healthcare" +* item[=].item[=].text = "Has case visited any health care facility in the 14 days prior to symptom onset?" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.visitedHealthcare" +* item[=].item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[=].item[+].linkId = "expo_contact_case" +* item[=].item[=].text = "Has case had contact with a confirmed case in the 14 days prior to symptom onset?" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.contact.hadContact" +* item[=].item[=].answer[+].valueCoding = $cs-v2-0136#N + +* item[=].item[+].linkId = "expo_case_setting_detail" +* item[=].item[=].text = "Contact Setting:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.contact.contact.exposure.setting" +* item[=].item[=].answer[+].valueString = "Home" + +* item[=].item[+].linkId = "expo_ID1" +* item[=].item[=].text = "Contact ID:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.contact.contact.identifier" +* item[=].item[=].answer[+].valueString = "+2777888888" + +* item[=].item[+].linkId = "expo_case_date_first" +* item[=].item[=].text = "First Date of Contact:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.contact.contact.exposure.period.begin" +* item[=].item[=].answer[+].valueDate = "2021-01-15" + +* item[=].item[+].linkId = "expo_case_date_last" +* item[=].item[=].text = "Last Date of Contact:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary.exposure.contact.contact.exposure.period.end" +* item[=].item[=].answer[+].valueDate = "2021-01-17" + +* item[=].item[+].linkId = "expo_case_location" +* item[=].item[=].text = "Most likely country of exposure:" +* item[=].item[=].definition = "http://openhie.github.io/covid-19/StructureDefinition/WhoCrSurveillanceDataDictionary#WhoCrSurveillanceDataDictionary..exposure.contact.country" +* item[=].item[=].answer[+].valueCoding = $vs-iso3166-1-2#ZW diff --git a/input/fsh/who-cr-StructureDefinitionDataDictionary.fsh b/input/fsh/who-cr-StructureDefinitionDataDictionary.fsh index b797cdc3..9e59705d 100644 --- a/input/fsh/who-cr-StructureDefinitionDataDictionary.fsh +++ b/input/fsh/who-cr-StructureDefinitionDataDictionary.fsh @@ -113,7 +113,7 @@ Usage: #definition * differential.element[3].mapping[0].identity = "WhoCrDataDictionarySpreadsheet" * differential.element[3].mapping[0].map = "report_country" * differential.element[3].mapping[1].identity = "LOINC" -* differential.element[3].mapping[1].map = $LNC#77983-5 +* differential.element[3].mapping[1].map = $LNC#96546-7 * differential.element[3].mapping[1].comment = "TODO: The definition appears almost the same as patientInfo.residence.admin0. Confirm with WHO." * differential.element[3].mapping[2].identity = "CIEL" * differential.element[3].mapping[2].map = $CIEL#165847 @@ -285,7 +285,7 @@ Usage: #definition * differential.element[10].mapping[0].identity = "WhoCrDataDictionarySpreadsheet" * differential.element[10].mapping[0].map = "patinfo_idadmin0" * differential.element[10].mapping[1].identity = "LOINC" -* differential.element[10].mapping[1].map = $LNC#96546-7 +* differential.element[10].mapping[1].map = $LNC#77983-5 * differential.element[10].mapping[2].identity = "CIEL" * differential.element[10].mapping[2].map = "TODO" * differential.element[10].mapping[3].identity = "ICD10" diff --git a/input/fsh/who-cr-Terminology.fsh b/input/fsh/who-cr-Terminology.fsh index 0b40794b..c189c9e9 100644 --- a/input/fsh/who-cr-Terminology.fsh +++ b/input/fsh/who-cr-Terminology.fsh @@ -109,6 +109,29 @@ Description: "TODO" "Other" "Not a listed value" +CodeSystem: WhoCoPositiveNegativeUnknown +Title: "Positive/Negative/Unknown" +Description: "Positive/Negative/Unknown" +* #positive + "Positive" +* #negative + "Negative" +* #unknown + "Unknown" + +CodeSystem: WhoCoHealthOutcome +Title: "Health Outcome" +Description: "Health Outcome" +* #recovered_healthy + "Recovered/Healthy" +* #not_recovered + "Not Recovered" +* #death + "Death" +* #unknown + "Unknown" +* #other + "Other" ValueSet: WhoCrValueSetReasonForCovid19Testing Title: "Reason for Covid-19 Testing" @@ -226,3 +249,15 @@ Description: "List of Administrative Level 1 Names (Province/State/Canton)" * ^immutable = false * codes from system $cs-iso3166-2 + +ValueSet: WhoCoValueSetPositiveNegativeUnknown +Id: who-co-positive-negative-unknown +Title: "Positive/Negative/Unknown" +Description: "Positive/Negative/Unknown" +* codes from system WhoCoPositiveNegativeUnknown + +ValueSet: WhoCoValueSetHealthOutcome +Id: who-co-health-outcome +Title: "Health Outcome" +Description: "WH Co Valueset Health Outcome" +* codes from system WhoCoHealthOutcome diff --git a/input/fsh/who-lr-Bundle.fsh b/input/fsh/who-lr-Bundle.fsh new file mode 100644 index 00000000..0d7e2470 --- /dev/null +++ b/input/fsh/who-lr-Bundle.fsh @@ -0,0 +1,22 @@ +Instance: WhoLrSampleBundle +InstanceOf: Bundle +Usage: #example +Title: "WHO Lab Result Sample Bundle" +Description: "Sample of a clinical bundle representing a lab result" +* type = #transaction +* entry[+].fullUrl = "http://test.org/fhir/Patient/WhoLrSamplePatient" +* entry[=].resource = WhoLrSamplePatient +* entry[=].request.method = #POST +* entry[=].request.url = "Patient" +* entry[+].fullUrl = "http://test.org/fhir/DiagnosticReport/WhoLrSampleDiagnosticReport" +* entry[=].resource = WhoLrSampleDiagnosticReport +* entry[=].request.method = #POST +* entry[=].request.url = "DiagnosticReport" +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoLrSampleEncounter" +* entry[=].resource = WhoLrSampleEncounter +* entry[=].request.method = #POST +* entry[=].request.url = "Encounter" +* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoLrSampleSpecimen" +* entry[=].resource = WhoLrSampleSpecimen +* entry[=].request.method = #POST +* entry[=].request.url = "Specimen" diff --git a/input/fsh/who-lr-DiagnosticReport.fsh b/input/fsh/who-lr-DiagnosticReport.fsh new file mode 100644 index 00000000..67b4598e --- /dev/null +++ b/input/fsh/who-lr-DiagnosticReport.fsh @@ -0,0 +1,35 @@ +Profile: WhoLrDiagnosticReport +Parent: DiagnosticReport +Title: "WHO Lab Result Diagnostic Report" +Description: "Defines a diagnostic report profile for the COVID-19 Lab Result" +* identifier 1..1 MS +* identifier.system 1..1 MS +* identifier.value 1..1 MS +* effectiveDateTime 1..1 MS +* conclusionCode 1..1 MS +* category 1..1 MS +* specimen 1..1 MS +* performer 2..2 MS +* subject 1..1 MS +* subject.reference 1..1 MS +* encounter 1..1 MS + +Instance: WhoLrSampleDiagnosticReport +InstanceOf: WhoLrDiagnosticReport +Usage: #example +Title: "WHO Lab result Sample Diagnostic Report" +Description: "WHO Lab result Sample Diagnostic Report" +* identifier.system = "http://example.org/" +* identifier.value = "12345" +* effectiveDateTime = "2021-03-03" +* conclusionCode.coding[0] = $cs-v3-ObsInterpretation#NEG "Negative" +* status = #final +* code = $LNC#11502-2 "Laboratory report" +* conclusionCode.text = "Negative result for Covid19" +* category.coding[0] = $valueset-diagnostic-service#VR "Virology" +* category.text = "COVID-19 PCR TEST" +* specimen = Reference(WhoLrSampleSpecimen) +* performer[0] = Reference(WhoCrPractitionerExample) +* performer[1] = Reference(WhoLrOrganizationLab) +* subject = Reference(WhoLrSamplePatient) +* encounter = Reference(WhoLrSampleEncounter) diff --git a/input/fsh/who-lr-Encounter.fsh b/input/fsh/who-lr-Encounter.fsh new file mode 100644 index 00000000..e09a7ade --- /dev/null +++ b/input/fsh/who-lr-Encounter.fsh @@ -0,0 +1,16 @@ +Profile: WhoLrEncounter +Parent: Encounter +Title: "WHO Lab Report Encounter" +Description: "Defines an Encounter profile for the Lab Report" +* serviceProvider 1..1 MS +* subject 1..1 MS + +Instance: WhoLrSampleEncounter +InstanceOf: WhoLrEncounter +Usage: #example +Title: "WHO Lab Report Encounter Example" +Description: "Health facility ordering a Covid 19 lab test" +* serviceProvider = Reference(WhoLrSampleOrganizationOrderingClinic) +* status = #finished +* subject = Reference(WhoLrSamplePatient) +* class = http://terminology.hl7.org/CodeSystem/v3-ActCode#ACUTE diff --git a/input/fsh/who-lr-Organization.fsh b/input/fsh/who-lr-Organization.fsh new file mode 100644 index 00000000..645a508b --- /dev/null +++ b/input/fsh/who-lr-Organization.fsh @@ -0,0 +1,28 @@ +Profile: WhoLrOrganizationLab +Parent: Organization +Title: "WHO LR Lab Test Organization" +Description: "Defines an organization profile for the COVID-19 Test" +* identifier 1..1 MS +* identifier.system 1..1 MS +* identifier.value 1..1 MS + +Profile: WhoLrOrganizationOrderingClinic +Parent: Organization +Title: "WHO LR Ordering clinic Organization" +Description: "Defines an organization profile for the COVID-19 Lab Result ordering clinic" +* name 1..1 MS + +Instance: WhoLrSampleOrganizationLab +InstanceOf: WhoLrOrganizationLab +Usage: #example +Title: "WHO Lab Result Organization Lab Sample" +Description: "WHO Lab Result Organization Lab Sample" +* identifier.system = "http://example.org" +* identifier.value = "12345" + +Instance: WhoLrSampleOrganizationOrderingClinic +InstanceOf: WhoLrOrganizationOrderingClinic +Usage: #example +Title: "WHO Lab Result Organization Ordering Clinic Sample" +Description: "WHO Lab Result Organization Ordering Clinic Sample" +* name = "KEMRI Clinic" diff --git a/input/fsh/who-lr-Questionnaire.fsh b/input/fsh/who-lr-Questionnaire.fsh new file mode 100644 index 00000000..d46a3331 --- /dev/null +++ b/input/fsh/who-lr-Questionnaire.fsh @@ -0,0 +1,91 @@ +Instance: WhoLrQuestionnaire +InstanceOf: Questionnaire +Description: "WHO Questionnaire for COVID-19 Laboratory Result" +Title: "COVID-19 Laboratory Result" +Usage: #definition + +* name = "WhoLrQuestionnaire" +* subjectType = #Patient +* url = "http://openhie.github.io/covid-19/Questionnaire/WhoLrQuestionnaire" +* status = #active + +* item[0].linkId = "labreport_ID" +* item[0].text = "Unique lab result identifier:" +* item[0].code = $LNC#30896-5 +* item[0].type = #string +* item[0].required = true + +* item[1].linkId = "testLab_id" +* item[1].text = "Lab that conducted the test:" +* item[1].code = $LNC#91562-9 +* item[1].type = #string +* item[1].required = true + +* item[2].linkId = "section_patient_info" +* item[2].prefix = "Section 1" +* item[2].text = "Patient information" +* item[2].type = #group + +* item[2].item[0].linkId = "patinfo_ID" +* item[2].item[0].text = "Patient unique ID:" +* item[2].item[0].type = #string +* item[2].item[0].code = $LNC#94659-0 +* item[2].item[0].required = true + +* item[2].item[1].linkId = "patinfo_name" +* item[2].item[1].text = "Patient name:" +* item[2].item[1].type = #string +* item[2].item[1].required = true + +* item[2].item[2].linkId = "patinfo_idadmin1" +* item[2].item[2].text = "Patient County:" +* item[2].item[2].type = #string +* item[2].item[2].code = $LNC#96547-5 +* item[2].item[2].required = true + +* item[2].item[3].linkId = "patinfo_dob" +* item[2].item[3].text = "Date of Birth:" +* item[2].item[3].type = #date +* item[2].item[3].code = $LNC#21112-8 +* item[2].item[3].required = true + +* item[2].item[4].linkId = "patinfo_sex" +* item[2].item[4].text = "Sex at birth:" +* item[2].item[4].type = #choice +* item[2].item[4].code = $LNC#76689-9 +* item[2].item[4].answerValueSet = Canonical(WhoCrValueSetSexAtBirth) +* item[2].item[4].required = true + +* item[3].linkId = "section_lab_test_info" +* item[3].prefix = "Section 2" +* item[3].text = "Lab test information" +* item[3].type = #group + +* item[3].item[0].linkId = "Lab_date1" +* item[3].item[0].text = "Lab Confirmation Test Date:" +* item[3].item[0].type = #date +* item[3].item[0].required = true + +* item[3].item[1].linkId = "test_result" +* item[3].item[1].text = "Overall Result:" +* item[3].item[1].type = #string +* item[3].item[1].code = $LNC#19146-0 +* item[3].item[1].required = true + +* item[3].item[2].linkId = "ordering_clinic" +* item[3].item[2].text = "Clinic that requested the test:" +* item[3].item[2].type = #string +* item[3].item[2].code = $LNC#76696-4 +* item[3].item[2].required = true + +* item[3].item[3].linkId = "test_type" +* item[3].item[3].text = "Type of Test:" +* item[3].item[3].type = #string +* item[3].item[3].code = $LNC#85069-3 +* item[3].item[3].required = true + +* item[3].item[4].linkId = "specimen_type" +* item[3].item[4].text = "Sample type:" +* item[3].item[4].type = #string +* item[3].item[4].code = $LNC#66746-9 +* item[3].item[4].required = true diff --git a/input/fsh/who-lr-QuestionnaireResponse.fsh b/input/fsh/who-lr-QuestionnaireResponse.fsh new file mode 100644 index 00000000..7d0a0011 --- /dev/null +++ b/input/fsh/who-lr-QuestionnaireResponse.fsh @@ -0,0 +1,62 @@ +Instance: WhoLrQuestionnaireResponse +InstanceOf: QuestionnaireResponse +Usage: #example +Title: "Who LR Questionnaire Response" +Description: "Questionnaire Response example" +* identifier.system = "http://test.org/response-id" +* identifier.value = "1111" +* questionnaire = Canonical(WhoLrQuestionnaire) +* status = #completed +* authored = "2021-01-20T11:29:52+02:00" +* author = Reference(WhoCrPractitionerExample) + +* item[+].linkId = "labreport_ID" +* item[=].text = "Unique lab result identifier:" +* item[=].answer[+].valueString = "123456789" + +* item[+].linkId = "testLab_id" +* item[=].text = "Lab that conducted the test:" +* item[=].answer[+].valueString = "123456789" + +* item[+].linkId = "section_patient_info" +* item[=].text = "Patient information" + +* item[=].item[+].linkId = "patinfo_ID" +* item[=].item[=].text = "Patient unique ID:" +* item[=].item[=].answer[+].valueString = "123456789" + +* item[=].item[+].linkId = "patinfo_name" +* item[=].item[=].text = "Patient Name:" +* item[=].item[=].answer[+].valueString = "Rob Stark" + +* item[=].item[+].linkId = "patinfo_idadmin1" +* item[=].item[=].text = "Patient County:" +* item[=].item[=].answer[+].valueString = "City of Cape Town" + +* item[=].item[+].linkId = "patinfo_dob" +* item[=].item[=].text = "Date of Birth:" +* item[=].item[=].answer[+].valueDate = "2021-01-20" + +* item[=].item[+].linkId = "patinfo_sex" +* item[=].item[=].text = "Sex at birth:" +* item[=].item[=].answer[+].valueCoding = $cs-gender#male + +* item[+].linkId = "Lab_date1" +* item[=].text = "Lab Confirmation Test Date:" +* item[=].answer[+].valueDate = "2021-01-20" + +* item[+].linkId = "test_result" +* item[=].text = "Overall Result:" +* item[=].answer[+].valueString = "Positive" + +* item[+].linkId = "ordering_clinic" +* item[=].text = "Clinic that requested the test:" +* item[=].answer[+].valueString = "KEMRI Clinic" + +* item[+].linkId = "test_type" +* item[=].text = "Type of Test:" +* item[=].answer[+].valueString = "COVID-19 PCR TEST" + +* item[+].linkId = "specimen_type" +* item[=].text = "Sample Type:" +* item[=].answer[+].valueString = "Respiratory Swab" diff --git a/input/fsh/who-lr-Specimen.fsh b/input/fsh/who-lr-Specimen.fsh new file mode 100644 index 00000000..cf76ee67 --- /dev/null +++ b/input/fsh/who-lr-Specimen.fsh @@ -0,0 +1,12 @@ +Profile: WhoLrSpecimen +Parent: Specimen +Title: "WHO Lab Report Specimen" +Description: "The specimen of blood or saliva that the covid test is conduted on" +* type 1..1 MS + +Instance: WhoLrSampleSpecimen +InstanceOf: WhoLrSpecimen +Usage: #example +Title: "Lab Report Specimen Example" +Description: "Defines the type of specimen used to conduct covid test" +* type = $LNC#LP208441-8 "Upper Respiratory Specimen" diff --git a/input/fsh/who-lr-patient.fsh b/input/fsh/who-lr-patient.fsh new file mode 100644 index 00000000..c3610808 --- /dev/null +++ b/input/fsh/who-lr-patient.fsh @@ -0,0 +1,24 @@ +Profile: WhoLrPatient +Parent: Patient +Title: "WHO Lab Result Patient" +Description: "Defines a patient profile for the Lab Result" +* identifier 1..1 MS +* identifier.value 1..1 MS +* identifier.system 1..1 MS +* name 0..1 MS +* gender 1..1 MS +* birthDate 1..1 MS +* address 1..1 MS +* address.district 1..1 MS + +Instance: WhoLrSamplePatient +InstanceOf: WhoLrPatient +Usage: #example +Title: "WHO Lab Result Sample Patient" +Description: "WHO Lab Result Sample Patient" +* identifier.value = "12345" +* identifier.system = "http://example.org/" +* name.text = "John Doe" +* gender = #male +* birthDate = "1981-05-21" +* address.district = "Western Cape"