Skip to content
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 EHDS2 CQL to develop branch #188

Merged
merged 29 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0d467c4
Added some diagnostics for testing purposes
Feb 21, 2024
dcebc22
Initial commit for the EHDS2 project
Feb 22, 2024
eb1e181
Added info for diagnostics
Feb 22, 2024
434e50b
Added more diagnostics
Feb 23, 2024
01909a8
Added first stratifier for the EHDS2 project
Feb 23, 2024
ed49a5c
Adding second EHDS2 stratifier
Feb 23, 2024
e006fff
Added stratifiers for Observation
Feb 23, 2024
28fb37a
New diagnostic
Feb 26, 2024
880096c
Correction
Feb 26, 2024
cab43f2
Diagnistic
Feb 26, 2024
7da8db2
Multiple issues
Mar 13, 2024
39fed29
Added new attributes to EHDS2 search
Mar 15, 2024
458fa31
First template for ECDC Observation resources
Mar 22, 2024
6e671dc
Completed the remaining 4 searches and stratifiers for Objects
Mar 26, 2024
ba37c99
Combined patient-related queries into one file, simplified file naming
Mar 27, 2024
a962041
Standardized the CQL for EHDS2
Mar 27, 2024
db56a54
Added EHDS2/ECDC-specific documentation
Mar 28, 2024
1c9108b
Added CQL for dealing with specimens
Jun 6, 2024
a4c676e
Merge branch 'develop' into ehds2
Jun 12, 2024
ec7f080
Adding searches for laboratories and hospitals
Jun 12, 2024
8a5c00f
Added CQL for Reference Guide SIR
Jun 14, 2024
fbd4301
Use stratifiers to populate Labs, Hospitals and Refguides
Jul 11, 2024
b4b2352
Added CQL functions for "date used for statistics" and "date valid from"
Jul 18, 2024
c24f69c
Overwrite slightly changed files with the latest develop versions
DavidCroftDKFZ Jul 29, 2024
82c8372
Merge branch 'develop' into ehds2_develop
DavidCroftDKFZ Jul 29, 2024
88ed147
Updated Rust build image
DavidCroftDKFZ Jul 29, 2024
28a88b1
Branch with EHDS2 CQL only
DavidCroftDKFZ Nov 22, 2024
f77cece
Merge branch 'develop' into develop_ehds2_cql
DavidCroftDKFZ Nov 22, 2024
a9279d1
Reinstated .dockerignore from develop branch
DavidCroftDKFZ Nov 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions resources/cql/EHDS2_IN_INITIAL_POPULATION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
define InInitialPopulation:
125 changes: 125 additions & 0 deletions resources/cql/EHDS2_OBSERVATION
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
define ObservationList:
if InInitialPopulation then [Observation] else {} as List<Observation>

// Return the value in the given system for the given Observation
define function ObservationValueCode(observation FHIR.Observation, system_var String):
(observation.value as CodeableConcept).coding.where(system = system_var).code.first()

// Check to see if there are any Observation resources with the
// given system/value pair.
define function ExistsObservationValueCode(system_var String, code_var String):
exists from [Observation] O
where ObservationValueCode(O, system_var) = code_var

// Return the value associated with the extension with the given URL for the given Observation
define function BaseObservationExtensionValue(observation FHIR.Observation, url_var String):
observation.extension.where(url = url_var).value

// Return the value of the Observation extension with the given URL
define function ObservationExtensionValue(observation FHIR.Observation, url_var String):
SensibleString(BaseObservationExtensionValue(observation, url_var))

define function ExistsObservationExtensionValue(url_var String, value_var String):
exists from [Observation] O
where ObservationExtensionValue(O, url_var) = value_var

// Return the pathogen type for the given Observation
define function PathogenCode(observation FHIR.Observation):
ObservationValueCode(observation, 'https://ecdc.amr/pathogen-codes')

// Check to see if there are any Observation resources with the
// given pathogen type.
define function ExistsPathogenCode(code_var String):
ExistsObservationValueCode('https://ecdc.amr/pathogen-codes', code_var)

// Return the antibiotic type for the given Observation
define function AntibioticCode(observation FHIR.Observation):
ObservationValueCode(observation, 'https://ecdc.amr/antibiotic-codes')

// Check to see if there are any Observation resources with the
// given antibiotic type.
define function ExistsAntibioticCode(code_var String):
ExistsObservationValueCode('https://ecdc.amr/antibiotic-codes', code_var)

// Return the resistance type for the given Observation
define function SirCode(observation FHIR.Observation):
ObservationValueCode(observation, 'https://ecdc.amr/sir-codes')

// Check to see if there are any Observation resources with the
// given resistance type.
define function ExistsSirCode(code_var String):
ExistsObservationValueCode('https://ecdc.amr/sir-codes', code_var)

// Return the data source for the given Observation
define function DataSource(observation FHIR.Observation):
ObservationExtensionValue(observation, 'https://ecdc.amr/fhir/StructureDefinition/ObservationDataSource')

// Check to see if there are any Observation resources with the
// given data source.
define function ExistsDataSource(value_var String):
ExistsObservationExtensionValue('https://ecdc.amr/fhir/StructureDefinition/ObservationDataSource', value_var)

// Return the isolate ID for the given Observation
define function IsolateId(observation FHIR.Observation):
ObservationExtensionValue(observation, 'https://ecdc.amr/fhir/StructureDefinition/ObservationIsolateId')

// Check to see if there are any Observation resources with the
// given isolate ID.
define function ExistsIsolateId(value_var String):
ExistsObservationExtensionValue('https://ecdc.amr/fhir/StructureDefinition/ObservationIsolateId', value_var)

// Return the patient type for the given Observation
define function PatientType(observation FHIR.Observation):
ObservationExtensionValue(observation, 'https://ecdc.amr/fhir/StructureDefinition/ObservationPatientType')

// Check to see if there are any Observation resources with the
// given patient type.
define function ExistsPatientType(value_var String):
ExistsObservationExtensionValue('https://ecdc.amr/fhir/StructureDefinition/ObservationPatientType', value_var)

// Return the reference guidelines SIR for the given Observation
define function ReferenceGuidelinesSir(observation FHIR.Observation):
ObservationExtensionValue(observation, 'https://ecdc.amr/fhir/StructureDefinition/ObservationReferenceGuidelinesSIR')

// Check to see if there are any Observation resources with the
// given reference guidelines SIR.
define function ExistsReferenceGuidelinesSir(value_var String):
ExistsObservationExtensionValue('https://ecdc.amr/fhir/StructureDefinition/ObservationReferenceGuidelinesSIR', value_var)

// Return the reporting country for the given Observation
define function ReportingCountry(observation FHIR.Observation):
ObservationExtensionValue(observation, 'https://ecdc.amr/fhir/StructureDefinition/ObservationReportingCountry')

// Check to see if there are any Observation resources with the
// given reporting country.
define function ExistsReportingCountry(value_var String):
ExistsObservationExtensionValue('https://ecdc.amr/fhir/StructureDefinition/ObservationReportingCountry', value_var)

// Return the year from the date used for statistics
define function YearDateUsedForStatistics(observation FHIR.Observation):
year from observation.issued

// Return the month from the date used for statistics
define function MonthDateUsedForStatistics(observation FHIR.Observation):
month from observation.issued

// Return the year-month from the date used for statistics
define function YearMonthDateUsedForStatistics(observation FHIR.Observation):
ToString(YearDateUsedForStatistics(observation)) + '-' + ToString(MonthDateUsedForStatistics(observation))

// Return the the date valid from
define function DateValidFrom(observation FHIR.Observation):
ToDate(observation.effective as dateTime)

// Return the year from the date valid from
define function YearDateValidFrom(observation FHIR.Observation):
year from DateValidFrom(observation)

// Return the month from the date valid from
define function MonthDateValidFrom(observation FHIR.Observation):
month from DateValidFrom(observation)

// Return the year-month from the date valid from
define function YearMonthDateValidFrom(observation FHIR.Observation):
ToString(YearDateValidFrom(observation)) + '-' + ToString(MonthDateValidFrom(observation))

30 changes: 30 additions & 0 deletions resources/cql/EHDS2_PATIENT
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Return the value of the Patient extension with the given URL.
// Return "Unknown" if not available or empty.
define function PatientExtensionValue(url_var String):
SensibleString(Patient.extension.where(url = url_var).value)

// Return gender of patient
define Gender:
SensibleString(Patient.gender)

// Return age of patient, as an integer
define AgeInYears:
ToInteger(PatientExtensionValue('https://ecdc.amr/fhir/StructureDefinition/PatientAge'))

// Round patient age to the nearest multiple of 10 (i/p for a histogram).
// Return result as a string
define AgeClass:
ToString((AgeInYears div 10) * 10)

// Return ID of hospital associated with patient
define HospitalId:
PatientExtensionValue('https://ecdc.amr/fhir/StructureDefinition/PatientHospitalId')

// Return hospital unit type associated with patient
define HospitalUnitType:
PatientExtensionValue('https://ecdc.amr/fhir/StructureDefinition/PatientHospitalUnitType')

// Return laboratory code associated with patient
define LaboratoryCode:
PatientExtensionValue('https://ecdc.amr/fhir/StructureDefinition/PatientLaboratoryCode')

13 changes: 13 additions & 0 deletions resources/cql/EHDS2_SPECIMEN
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
define SpecimenList:
if InInitialPopulation then [Specimen] else {} as List<Specimen>

// Return the isolate ID for the given Specimen
define function SpecimenIsolateId(specimen FHIR.Specimen):
SensibleString(specimen.id)

// Check to see if there are any Specimen resources with the
// given isolate ID.
define function ExistsSpecimenIsolateId(id_var String):
exists from [Specimen] S
where SpecimenIsolateId(S) = id_var

7 changes: 7 additions & 0 deletions resources/cql/EHDS2_UTIL
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Return "val" if the supplied string value is sensible.
// Return "Unknown" if null or empty.
define function SensibleString(val String):
if (val is null or val = '' or val = '-')
then 'Unkown'
else val

Loading