-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add initial stab at Basic Composition for COVID case report #83
base: master
Are you sure you want to change the base?
Changes from 5 commits
10594b4
9a18942
ebd6c04
9976c93
e0ebf83
4f9e8cf
012cb78
271be6a
bc64df5
bd40826
e1c7e66
1f4b9fb
2aa7c9a
84e5178
7bf8986
d2d35b8
230fd1f
3ebb28d
452077d
ae45bb4
1954650
7c18580
37e6d49
7992a1a
0f0a18b
aaf4642
2ad1c82
7b28bcb
4bd06e9
717ea8c
1b2e17a
443af47
98e1c54
bcb0eab
e832154
d59d55a
8fae2a5
23fcca2
96a4064
b558691
0b3b39d
336ee3f
3f6cceb
4b66696
c642373
7729c2e
4c64d92
73dab56
e9e31bd
8f5f1f1
6eec5c3
809bc98
2ba824f
a0cbd7a
598154a
4a0a66a
425fe73
81561e6
6e161ee
5588fae
aeaac12
3c9cf9f
cf1a6c0
1c86b58
030fe1b
362a0a1
6c1b80d
17e4f55
945cadc
03b932b
6040705
092d348
45fc45e
9f71002
6b837c3
7c71f6b
1ef89e4
7c79671
adcd22f
d7f8384
062841f
e904ce9
f37af3d
ffc04a2
cf00845
57ad5d7
2ca57ec
30cdf61
d720fc9
1f008fb
ce55827
37d391a
972f779
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,261 @@ | ||
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 | ||
ElliotSilver marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* 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 | ||
|
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need to profile all these observations to have our patient as the subject? For observations from the QuestionnaireResponse, we should have derivedFrom pointing to the QuestionnaireResponse. However, I think a system might generate these observations directly without using the QR, so we either need two profiles or need to make having the derivedFrom as optional. |
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see this isn't your work but do you know why does this linked valueset deliberately excludes There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that is because that is what the WHO form that this work is based off specifies. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, it's a stupid value set. @litlfred is following up with WHO on improving it. |
||
|
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The url associated with this value set code does not appear to resolve anywhere? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I also noticed that. It might be just used as an identifier rather than pointing to somewhere real but don't really know. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just odd because the url alias below it does point to a real site :| |
||
|
||
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 | ||
|
||
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 | ||
|
||
/** | ||
* Examples | ||
*/ | ||
|
||
Instance: WhoCrBundleExample | ||
InstanceOf: Bundle | ||
Usage: #example | ||
Title: "Who Cr Bundle Example" | ||
Description: "Example of a clinical bundle representing a case report" | ||
* type = #document | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @de-laz the should be a #transaction - the document Bundle won't create the individual resources as we need them. If we need to get all the related documents together again in a clinical context this would be done with the composition resource which has a reference to all related resources |
||
* entry[+].fullUrl = "http://test.org/fhir/Composition/WhoCrCompositionBasicExample" | ||
* entry[=].resource = WhoCrCompositionBasicExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Encounter/WhoCrEncounterExample" | ||
* entry[=].resource = WhoCrEncounterExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Location/WhoCrLocationExample" | ||
* entry[=].resource = WhoCrLocationExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Practitioner/WhoCrPractitionerExample" | ||
* entry[=].resource = WhoCrPractitionerExample | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @de-laz remove these lines - the resources shouldn't be here as they would already exist in the registry - we are only referencing them - not creating new ones |
||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationAgeExample" | ||
* entry[=].resource = WhoCrObservationAgeExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationBirthSexExample" | ||
* entry[=].resource = WhoCrObservationBirthSexExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationLabTestDateExample" | ||
* entry[=].resource = WhoCrObservationLabTestDateExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationSymptomsExample" | ||
* entry[=].resource = WhoCrObservationSymptomsExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCRObservationOnsetDateExample" | ||
* entry[=].resource = WhoCRObservationOnsetDateExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationComorbiditiesExample" | ||
* entry[=].resource = WhoCrObservationComorbiditiesExample | ||
* entry[+].fullUrl = "http://test.org/fhir/Observation/WhoCrObservationHasTravelledExample" | ||
* entry[=].resource = WhoCrObservationHasTravelledExample | ||
|
||
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 = "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[+].title = "exposure risk" | ||
* section[=].code = http://test.org/sectionCode#exposureRisk | ||
* section[=].entry[+] = Reference(WhoCrObservationHasTravelledExample) | ||
|
||
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 | ||
|
||
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 | ||
|
||
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 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
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 = "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[+].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[+].linkId = "section_exposure_risk" | ||
* item[=].text = "Exposure risk in the 14 days prior to symptom onset (prior to testing if asymptomatic)" | ||
|
||
* 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This appears like it would cause deploy even when PRs are made to master. This doesn't seem correct so I removed it.