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

catch up #30

Open
wants to merge 28 commits into
base: release-candidate
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
43d2724
Update release.yml
costateixeira Nov 20, 2023
a3d7599
Content updates
DebbieArita Nov 21, 2023
f2d2432
Merge pull request #29 from DebbieArita/content-updates
costateixeira Nov 21, 2023
8a693ee
Update README.md
costateixeira Nov 24, 2023
20c05c0
Apply template fixes
costateixeira Nov 25, 2023
c3693e8
Use new template
costateixeira Dec 26, 2023
351f51d
Update README.md
costateixeira Jan 15, 2024
e46f7bf
Update sushi-config.yaml
costateixeira Jan 20, 2024
ef80fd9
bump build
costateixeira Jan 23, 2024
eb12de6
Bump
costateixeira Feb 28, 2024
e9757b3
Update fhirbuild.yml
costateixeira Mar 21, 2024
b501d47
update library for incorrect codes
costateixeira Mar 25, 2024
7a735c5
update template
costateixeira Mar 30, 2024
d480e57
Updated dependencies
brynrhodes Apr 15, 2024
a5c5628
Updated to latest SOP guidance
brynrhodes May 19, 2024
571876d
Fixing missing concepts and incorrect measure resource definitions
brynrhodes May 22, 2024
3c1c69d
Fix measure and library naming conventions
brynrhodes May 22, 2024
70b77f2
Updated PlanDefinitions and refactored decision support logic
brynrhodes May 25, 2024
b41c749
Added references and rationale throughout plan definitions. Added fhi…
brynrhodes May 25, 2024
9a7ed36
Updated indicator information
brynrhodes May 29, 2024
6001c15
Updated dependencies
brynrhodes Jun 3, 2024
cd0ec0f
Applied profiles throughout
brynrhodes Jun 4, 2024
f48d943
First round of QA
brynrhodes Jun 6, 2024
68abf14
QA Round 2
brynrhodes Jun 6, 2024
0f0bceb
Merge pull request #32 from WorldHealthOrganization/br-changes-2024-0…
brynrhodes Jun 6, 2024
1336cd7
Update README.md
ritikarawlani Jun 13, 2024
8ad7817
Update ICD11.fsh
costateixeira Aug 12, 2024
3a0de73
fix brackets
costateixeira Sep 21, 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
2 changes: 1 addition & 1 deletion .github/workflows/fhirbuild.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# This workflow reuses the openHIE GitHub action for building IGs
# This workflow reuses the WHO GitHub action for building IGs
# Change log:
# v0.1.0
# 2021-06-18: publish default branches to / , other branches branches/<branch>
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ on:
pull_request:
branches:
- release-candidate

workflow_dispatch:

jobs:
check:
runs-on: ubuntu-latest
Expand Down
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
[![License: CC BY-IGO 3.0](https://licensebuttons.net/l/by-nc/3.0/igo/80x15.png)](https://creativecommons.org/licenses/by/3.0/igo)
![CI Build](https://img.shields.io/github/actions/workflow/status/worldhealthorganization/smart-immunizations-measles/ghbuild.yml)
![CI Build](https://img.shields.io/github/actions/workflow/status/worldhealthorganization/smart-example-immz/ghbuild.yml)


[![QA errors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-immunizations-measles%2Fqa.json&query=%24.errs&logoColor=red&label=QA%20errors&color=yellow)](https://worldhealthorganization.github.io/smart-immunizations-measles/qa.html)
![QA warnings](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-immunizations-measles%2Fqa.json&query=%24.warnings&logoColor=orange&label=QA%20warnings&color=yellow)
![QA hints](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-immunizations-measles%2Fqa.json&query=%24.hints&logoColor=yellow&label=QA%20hints&color=yellow)
[![QA errors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-example-immz%2Fqa.json&query=%24.errs&logoColor=red&label=QA%20errors&color=yellow)](https://worldhealthorganization.github.io/smart-example-immz/qa.html)
![QA warnings](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-example-immz%2Fqa.json&query=%24.warnings&logoColor=orange&label=QA%20warnings&color=yellow)
![QA hints](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fworldhealthorganization.github.io%2Fsmart-example-immz%2Fqa.json&query=%24.hints&logoColor=yellow&label=QA%20hints&color=yellow)


# WHO SMART GUIDELINES - IMMUNIZATIONS (Measles)
# WHO SMART GUIDELINES - Example IG

CI-Build: https://worldhealthorganization.github.io/smart-immunizations-measles/

This Implementation Guide contains the specifications for MEASLES vaccination SMART Guidelines.
CI-Build: https://worldhealthorganization.github.io/smart-example-immz/

This Implementation Guide is an example IG that follows the L3 SOP. The example is using the Immunizations DAK for the Measles antigen as an example.
This framework is published under a Creative Commons - IGO [license](LICENSE.md).

## Changes and feedback

Feedback and issues about this empty framework can be submitted via the [issues](issues) page, and will be incorporated into subsequent releases.

2 changes: 2 additions & 0 deletions _gencontinuous.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@ECHO OFF
CALL ./_genonce.bat -watch
2 changes: 2 additions & 0 deletions _gencontinuous.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
./_genonce.sh -watch
562 changes: 281 additions & 281 deletions input/cql/FHIRCommon.cql → _unused/FHIRCommon.cql

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions input/fsh/libraries/FHIRCommon.fsh → _unused/FHIRCommon.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ InstanceOf: Library
Title: "FHIRCommon"
Description: "This library defines terminologies and functions commonly used in FHIR-based CQL artifacts"
Usage: #definition
* url = "http://smart.who.int/immunizations-measles/Library/FHIRCommon"
* url = "http://fhir.org/guides/cqf/common/Library/FHIRCommon"
* extension[+]
* url = "http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability"
* url = "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"
* valueCode = #computable
* version = "0.1.0"
* version = "4.0.1"
* name = "FHIRCommon"
* status = #draft
* experimental = false
* experimental = true
* publisher = "World Health Organization (WHO)"
* type = $library-type#logic-library
* content.id = "ig-loader-FHIRCommon.cql"
814 changes: 407 additions & 407 deletions input/cql/FHIRHelpers.cql → _unused/FHIRHelpers.cql

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ InstanceOf: Library
Title: "FHIRHelpers"
Description: "This library defines functions to convert between FHIR data types and CQL system-defined types, as well as functions to support FHIRPath implementation. For more information, the FHIRHelpers wiki page: https://github.com/cqframework/clinical_quality_language/wiki/FHIRHelpers"
Usage: #definition
* url = "http://smart.who.int/immunizations-measles/Library/FHIRHelpers"
* url = "http://fhir.org/guides/cqf/common/Library/FHIRHelpers"
* extension[+]
* url = "http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-knowledgeCapability"
* url = "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"
* valueCode = #computable
* version = "0.1.0"
* version = "4.0.1"
* name = "FHIRHelpers"
* status = #draft
* experimental = false
* experimental = true
* publisher = "World Health Organization (WHO)"
* type = $library-type#logic-library
* content.id = "ig-loader-FHIRHelpers.cql"
4 changes: 2 additions & 2 deletions ig.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[IG]
ig = fsh-generated/resources/ImplementationGuide-smart.who.int.immunizations-measles.json

#template = #local-template
template = who.fhir.template#current
template = #local-template
;template = who.template.root#current
8 changes: 8 additions & 0 deletions input/_resources/exp-params.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"resourceType" : "Parameters",
"id" : "exp-params",
"parameter" : [{
"name" : "system-version",
"valueUri" : "http://snomed.info/sct|http://snomed.info/sct/900000000000207008"
}]
}
228 changes: 5 additions & 223 deletions input/cql/IMMZCommon.cql
Original file line number Diff line number Diff line change
Expand Up @@ -2,238 +2,20 @@ library IMMZCommon

using FHIR version '4.0.1'

include WHOCommon called WCom
include WHOConcepts called Wcon
include FHIRHelpers version '4.0.1'
include FHIRCommon called FC
include IMMZConcepts called IMMZc


code "[#] Births total": '11640-0' from IMMZc."LOINC" display 'Pregnancy outcome'
code "[#] Births.preterm": '11637-6' from IMMZc."LOINC" display 'Preterm'
context Patient

//TODO: Check patient is alive

//Get patient immunizations
define "Get Immunization":
[Immunization]

// check vaccine status
define "Immunization Status":
[Immunization] I
return I.status

//check Immunization.status for not-done
define "Immunization Completed":
[Immunization] I
where I.status in {'completed'}

//check Immunization.status for not-done
define "Immunization Not Done":
[Immunization] I
where I.status in {'not-done'}

//how do we handle entered-in-error? It seems like it should be different from not-done in how it should be handled? These should be ignored so we likely don't need to check for them. We should maybe set these to check for statuses like complete, or amended

//check vaccine status reason - e.g. if vaccine was not given
define "Immunization StatusReason":
[Immunization] I
return I.statusReason

//define statusReason Immunizations for when it was not given

//Procedure for vaccine administration

//Get patient observations. Do we need this statement to get all Observations?
define "Get Observations":
[Observation]

//Check if patient is pregnant
//not sure if pregnancy is an Observation
define "Pregnant Observation":
[Observation] O
//IPS Uses Observation - https://hl7.org/fhir/uv/ips/StructureDefinition-observation-pregnancy-status-uv-ips.html
where (O.value as CodeableConcept) in Wcon."Pregnancy Status Pregnant"
/*
Need to figure out how to add the OR Condition in case pregnancy is stored in a condition instead of an Observation
or [Condition] C
where (C.code as CodeableConcept) in Wcon."Pregnancy Status Pregnant"
*/

/*
define "Patient Has Active Sickle-cell disease":
exists([Condition: code = IMMZc."Sickle-cell Disease Condition"] C
where C.clinicalStatus in FC."Active Condition"
and C.abatement is null)
*/

define "Pregnant Condition":
[Condition] C
where (C.code as CodeableConcept) in Wcon."Pregnancy Status Pregnant" or (C.code as CodeableConcept) ~ IMMZc."Currently Pregnant"

define "Pregnant":
exists
( "Pregnant Observation")
or exists ("Pregnant Condition")

//Seronegative. Relevant for Dengue
/*
define "Individual is Seronegative for Dengue":
[Observation] O
where (O.value as CodeableConcept) in IMMZc.Seronegative
*/

//Total number of births including abortions, stillbirths and live births.
define "Patient mother's pregnancy outcome observation":
[Observation: code = "[#] Births total"] O
return O.value

// Total number of children whose birth occurred through the end of the last day of the 37th week (259th day)
// following onset of the last menstrual period
define "Preterm":
[Observation: code = "[#] Births.preterm"] O
return O.value

//Observed Preterm birth
define "Preterm Birth":
[Observation] O
where (O.value as CodeableConcept) in IMMZc.PretermBirth

//@dataElement Adverse Event:
define "Adverse Event":
from [Immunization] I, [Observation] O
where O.id in (I.reaction R return Last(Split(R.detail.reference, '/')))
return O

/*
* @dataElement Allergy = True
*/
define "Allergy = True":
[AllergyIntolerance] A
where
A.clinicalStatus ~ FC."allergy-active"
and
A.verificationStatus ~ FC."allergy-confirmed"

/*
* @dataElement Immunocompromised = True
*/
define "Immunocompromised = True":
exists([Condition] C
where C.code in IMMZc."Immunocompromised"
and
C.clinicalStatus in FC."Active Condition"
and
C.verificationStatus ~ FC."confirmed")

/**
* @dataElement All Doses Administered to Patient to patient ordered newest to oldest
*/
define "Doses Administered to Patient":
[Immunization] I
where I.status = 'completed'
sort by date from (occurrence as FHIR.dateTime) desc
/**
* Contraindications
*/
define "Severely Immunosuppressed Condition":
[Condition: IMMZc."Severely immunosuppressed"]

define "History of Anaphylactic Reactions Condition":
[Condition: IMMZc."History of anaphylactic reactions"]

define "Severe Allergic Reactions Condition":
[Condition: IMMZc."Severe allergic reactions"]

define "Symptomatic HIV Infection Condition":
[Condition: IMMZc."Symptomatic HIV infection"]


/******************************
* Test Results
*/


define "Patient birth weight observation value":
[Observation: code in IMMZc."Patient birth weight observation value"] O
return O.value as FHIR.Quantity

/**
* @dataElement Patient age in years
*/
define "Current Patient Age In Years":
AgeInYearsAt(Today())
//Today() - (Patient.birthDate as System.Date)

/**
* @dataElement Patient age in weeks
*/
define "Current Patient Age In Weeks":
AgeInWeeksAt(Today())

/**
* @dataElement Patient age in months
*/
define "Current Patient Age In Months":
AgeInMonthsAt(Today())

/**
* @dataElement Patient biological sex used for deciding vaccine eligibility
* TODO: "Gender" of patient in FHIR is the administrative gender - or can we expect that this will be biological sex and administrative
* gender identity will be captured using the gender identity extension?
*/
define "Patient Biological Sex":
Patient.gender

define "Patient HAART Treatment Start Date":
Last([MedicationAdministration] A
where
ExtractMedicationCode(A.medication) in IMMZc."ARV Drugs"
and A.status in { 'active', 'complete' }
and ExtractMedicationInitiationDate(A.effective) less than 12 'month' before Today()
return ExtractMedicationInitiationDate(A.effective))

define "Patient HAART Treatment Started 6 to 12 Months Ago":
"Patient HAART Treatment Start Date" between Now() - 12 months and Now() - 6 months

/**
* @dataElement The patient has a medication record which indicates that they are receiving ARV
*/
define "Patient is receiving HAART":
//exists([MedicationStatement] S where ExtractMedicationCode(S.medication) in IMMZc."ARV Drugs" and S.status = 'active')
//or
exists([MedicationAdministration] A where ExtractMedicationCode(A.medication) in IMMZc."ARV Drugs" and A.status = 'in-progress')
//union
//

/*
@dataElement HIV Status observations of the patient most recent first
*/
define "HIV Status":
[Observation: IMMZc."HIV status"] O
where O.status in { 'final', 'amended', 'corrected' }
and Coalesce(WCom.ModifierExtension(O, 'who-notDone').value, false) is false
return O.value as FHIR.CodeableConcept

/*
@dataElement Date and time of last live attenuated vaccine
*/
define "Live Attenuated Vaccines":
"Doses Administered to Patient" I where I.vaccineCode in IMMZc."Live Attenuated"

define "Date of Latest Live Attenuated Vaccine":
First("Live Attenuated Vaccines").occurrence as dateTime

/******************************
* CQL Helper Functions
* @description Fetches a singleton protocol applied from an immunization
* @comment The protocol list from the immunization
*/
define function Only(protocols List<FHIR.Immunization.ProtocolApplied>):
singleton from protocols

/**
* @description Fetches a singleton protocol applied from an immunization
* @comment The protocol list from the immunization
*/
define function Only(protocols List<FHIR.Immunization.ProtocolApplied>):
define fluent function only(protocols List<FHIR.Immunization.ProtocolApplied>):
singleton from protocols

/**
Expand Down
31 changes: 0 additions & 31 deletions input/cql/IMMZCommonIzDataElements.cql

This file was deleted.

Loading
Loading