Skip to content

Synthea COVID 19

Guoqian Jiang edited this page May 20, 2020 · 7 revisions

How many COVID-19 of patients used the ventilation therapy?

CQL Definitiion

library "VentilationTherapyPerformedforCOVID19Patients" version '1.0.0'

using QUICK

codesystem "SNOMED CT": 'http://snomed.info/sct'

code "COVID 19": '840539006' from "SNOMED CT" display 'COVID 19'
code "Ventilation Therapy": '26763009' from "SNOMED CT" display 'Ventilation Therapy'

parameter "Measurement Period" Interval<DateTime>

context Patient


define "Has COVID 19":
	exists (["Condition": "COVID 19"] covid
	where covid.onsetDateTime after start of "Measurement Period")
	
define "Ventilation Therapy Performed":
	exists(["Procedure": "Ventilation Therapy"] vt
	where vt.performedPeriod overlaps after "Measurement Period")
		
define "Ventilation Therapy Performed for COVID 19 Patients":
           "Has COVID 19"
	and  "Ventilation Therapy Performed"

SPARQL Query

PREFIX fhir: <http://hl7.org/fhir/>
select distinct ?patient ?pcodingSystem ?pcodingCode ?pcodingDisplay ?pstart ?pend where {
    ?procedure a fhir:Procedure .
    ?procedure fhir:Procedure.subject [fhir:link ?patient ;].
    ##?procedure fhir:Procedure.encounter [fhir:link ?encounter ;].
    ?procedure fhir:Procedure.code [
        fhir:CodeableConcept.coding [
        fhir:index ?pindex;
        fhir:Coding.code [fhir:value ?pcodingCode] ;
        fhir:Coding.system [fhir:value ?pcodingSystem] ;
        fhir:Coding.display [fhir:value ?pcodingDisplay];
        ]
    ].   
    FILTER (?pcodingCode = "26763009")

    ?procedure fhir:Procedure.performedPeriod [
        fhir:Period.start [fhir:value ?pstart; ];
        fhir:Period.end   [fhir:value ?pend; ] ;
    ]
    
    FILTER (YEAR(?pstart) >= YEAR(?onsetDateTime) && 
        MONTH(?pstart) >= MONTH(?onsetDateTime) &&
        DAY(?pstart) >= DAY(?onsetDateTime) &&
     YEAR(?pend) <= YEAR(?abatementDateTime) && 
        MONTH(?pend) <= MONTH(?abatementDateTime) &&
        DAY(?pend) >= DAY(?abatementDateTime))
    
    {
    select distinct ?patient ?encounter ?onsetDateTime ?abatementDateTime where {
    ?condition a fhir:Condition .
    ?condition fhir:Condition.subject [fhir:link ?patient ;].
    ?condition fhir:Condition.encounter [fhir:link ?encounter ;].
    ?condition fhir:Condition.code [
        fhir:CodeableConcept.coding [
        fhir:index ?index;
        fhir:Coding.code [fhir:value ?codingCode] ;
        fhir:Coding.system [fhir:value ?codingSystem] ;
        fhir:Coding.display [fhir:value ?codingDisplay];
        ]
    ].
    FILTER (?codingCode = "840539006")
    
    ?condition fhir:Condition.onsetDateTime [fhir:value ?onsetDateTime; ] .
    ?condiiton fhir:Condition.abatementDateTime [fhir:value ?abatementDateTime; ] .
    }
    
    }
 
    
} 

Condition

PREFIX fhir: <http://hl7.org/fhir/>
select distinct ?codingSystem ?codingCode ?codingDisplay(COUNT(?codingDisplay) AS ?count) where { 
	?condition a fhir:Condition .
    ?condition fhir:Condition.subject [fhir:link ?patient ;].
    ?condition fhir:Condition.code [
        fhir:CodeableConcept.coding [
        fhir:index ?index;
        fhir:Coding.code [fhir:value ?codingCode] ;
        fhir:Coding.system [fhir:value ?codingSystem] ;
        fhir:Coding.display [fhir:value ?codingDisplay];
        ]
    ].
    
}GROUP By ?codingDisplay ?codingCode ?codingSystem ORDER BY DESC(?count)