@prefix fhir: <http://hl7.org/fhir/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# - resource -------------------------------------------------------------------

<http://fhir.org/guides/who/smart-immunization/Library/IMMZDT01> a fhir:Library ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "IMMZDT01"] ; # 
  fhir:text [
     fhir:status [ fhir:v "generated" ] ;
     fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/*\n * Library: IMMZDT01 (IMMZ.DT.01.BCG)\n * Rule: If child or person has not been vaccinated, give BCG vaccine as soon as possible after birth \n * Trigger: Patient has never had BCG vaccination\n */\nlibrary IMMZDT01\n// Start Skeleton CQL\nusing FHIR version '4.0.1'\ninclude FHIRHelpers version '4.0.1'\ninclude IMMZCommon called IMMZCom\ninclude IMMZConcepts called IMMZc\ninclude IMMZVaccineLibrary called IMMZvl\ninclude IMMZConfig called IMMZConf\n// End Skeleton CQL\ncontext Patient\n\n/*\n * Determine if the patient has risk of occupational exposure in low and high TB incidence areas (e.g. health\n * workers, laboratory workers, medical students, prison workers, other individuals with occupational exposure).\n * \n * The logic for determine this still needs to be determined.  Defaulting to true until this can be done.\n */\ndefine &quot;Risk of occupational exposure in low and high TB areas&quot;: true\n\n\n/*\n * Rule: Should vaccinate patient for BCG\n * Annotations:\n * 	 - Provide BCG immunizations – using the &quot;BCG vaccine immunization – NO PREVIOUS&quot; schedule (1 dose scheme)\n * 	 - \n * 	 - Provide BCG immunizations – using the &quot;BCG vaccine immunization – NO PREVIOUS&quot; schedule (1 dose scheme) if CD4% &gt;25% for children aged &lt;5 years or CD4 count ≥200 if aged &gt;5  years\n * Outputs:\n * 	 - Immunize Patient for BCG - TST-negative\n * 	 - Immunize Patient for BCG - IGRA-negative\n * 	 - Immunize Patient for BCG - No Doses\n * 	 - Immunize Patient for BCG - History Unknown\n * 	 - Immunize Patient for BCG - No Doses and HIV Status Positive and immunicologically stable\n * 	 - \n * References:\n * 	- WHO recommendations for routine immunization - summary tables: https://www.who.int/teams/immunization-vaccines-and-biologicals/policies/who-recommendations-for-routine-immunization---summary-tables\n * 	- \n * Logic:\n *	 (((((((&quot;TST Test Result&quot; = &quot;TST-negative&quot;) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true)) or ((&quot;IGRA Test Result&quot; = &quot;IGRA-negative&quot;) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true))) or ((&quot;BCG vaccine immunization history&quot; = &quot;No-doses&quot;) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true))) or ((&quot;BCG vaccine immunization history&quot; = &quot;Unknown&quot;) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true))) or (((((&quot;BCG vaccine immunization history&quot; = &quot;No-doses&quot; = true) and (&quot;HIV Status&quot; = &quot;Positive&quot; = true)) and (&quot;CD4%&quot; &gt;&quot;25%&quot; = true)) and (&quot;Current Patient Age in Years&quot; &lt; 5)) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true))) or (((((&quot;BCG vaccine immunization history&quot; = &quot;No-doses&quot; = true) and (&quot;HIV Status&quot; = &quot;Positive&quot; = true)) and (&quot;CD4 count&quot; ≥ &quot;200&quot; = true)) and (&quot;Current Patient Age in Years&quot; &gt; 5)) and (&quot;High incidence of TB and/or high leprosy burden&quot; = true)))\n * SHARING SCHEDULE LOGIC, KEEPING THIS FOR NOW IN CASE THAT DECISION CHANGES.\ndefine &quot;Should vaccinate patient for BCG&quot;:\n	IMMZConf.&quot;High incidence of TB and/or high leprosy burden&quot; = true and (\n		Coalesce((IMMZCom.&quot;Most Recent TST Test Result&quot; in IMMZc.&quot;Negative Result&quot;), false) or \n		Coalesce((IMMZCom.&quot;Most Recent IGRA Test Result&quot; in IMMZc.&quot;Negative Result&quot;), false) or \n		(IMMZCom.&quot;No BCG Doses Administered to Patient&quot;) or \n		(\n				(IMMZCom.&quot;No BCG Doses Administered to Patient&quot; and IMMZCom.&quot;HIV Status&quot; in IMMZc.&quot;HIV status - HIV positive Choices&quot;) and \n				(\n					Coalesce((IMMZCom.&quot;Most Recent CD4%&quot; &gt; 25'%' and IMMZCom.&quot;Current Patient Age In Years&quot; &lt; 5), false) or \n					Coalesce((IMMZCom.&quot;Most Recent CD4 Count&quot; &gt;= 200 and IMMZCom.&quot;Current Patient Age In Years&quot; &gt;= 5), false)\n				)\n		)\n	) \n*/\n\n/*\n * Rule: Provision of the BCG dose\n * Create Condition:\n *   - BCG dose should be provided if the patient has not received any BCG doses, and is in a High incidence of TB and/or high leprosy burden, and TST-negative and IGRA-negative\n * \n * Completion:\n *   - &quot;BCG Dose 1 provided&quot; = TRUE\n *\n * References:\n * 	- WHO recommendations for routine immunization - summary tables: https://www.who.int/teams/immunization-vaccines-and-biologicals/policies/who-recommendations-for-routine-immunization---summary-tables\n * 	 \n */\ndefine &quot;Provision of the BCG dose&quot;:\n  IMMZCom.&quot;No BCG Doses Administered to Patient&quot; and\n  if IMMZCom.&quot;HIV Status&quot; in IMMZc.&quot;HIV status - HIV positive Choices&quot; \n	then \n		(\n			Coalesce((IMMZCom.&quot;Most Recent CD4%&quot; &gt; 25'%' and IMMZCom.&quot;Current Patient Age In Years&quot; &lt; 5), false) or \n			Coalesce((IMMZCom.&quot;Most Recent CD4 Count&quot; &gt;= 200 and IMMZCom.&quot;Current Patient Age In Years&quot; &gt;= 5), false)\n		)\n	else \n		(\n			IMMZConf.&quot;High incidence of TB and/or high leprosy burden&quot; = true or\n			(\n				&quot;Risk of occupational exposure in low and high TB areas&quot; and (\n					Coalesce((IMMZCom.&quot;Most Recent TST Test Result&quot; in IMMZc.&quot;Negative Result&quot;), false) or \n					Coalesce((IMMZCom.&quot;Most Recent IGRA Test Result&quot; in IMMZc.&quot;Negative Result&quot;), false)\n				)\n			)\n		)\n\ndefine &quot;Schedule Due Date for BCG dose&quot;:\n	ToDateTime( Patient.birthDate )\n\ndefine &quot;Should vaccinate patient for BCG&quot;:\n	&quot;Provision of the BCG dose&quot; and (&quot;Schedule Due Date for BCG dose&quot; &lt;= (Now()))\n	\n</code></pre></div>"
  ] ; # 
  fhir:extension ( [
     fhir:url [ fhir:v "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-softwaresystem"^^xsd:anyURI ] ;
     fhir:value [
       a fhir:Reference ;
       fhir:link <http://fhir.org/guides/who/smart-immunization/Device/cqf-tooling> ;
       fhir:reference [ fhir:v "Device/cqf-tooling" ]
     ]
  ] ) ; # 
  fhir:url [ fhir:v "http://fhir.org/guides/who/smart-immunization/Library/IMMZDT01"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.1.0"] ; # 
  fhir:name [ fhir:v "IMMZDT01"] ; # 
  fhir:status [ fhir:v "draft"] ; # 
  fhir:date [ fhir:v "2023-08-02T04:40:13+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "World Health Organization (WHO)"] ; # 
  fhir:jurisdiction ( [
     fhir:coding ( [
       fhir:system [ fhir:v "http://unstats.un.org/unsd/methods/m49/m49.htm"^^xsd:anyURI ] ;
       fhir:code [ fhir:v "001" ]
     ] )
  ] ) ; # 
  fhir:content ( [
     fhir:contentType [ fhir:v "text/cql" ] ;
     fhir:data [ fhir:v "LyoKICogTGlicmFyeTogSU1NWkRUMDEgKElNTVouRFQuMDEuQkNHKQogKiBSdWxlOiBJZiBjaGlsZCBvciBwZXJzb24gaGFzIG5vdCBiZWVuIHZhY2NpbmF0ZWQsIGdpdmUgQkNHIHZhY2NpbmUgYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBiaXJ0aCAKICogVHJpZ2dlcjogUGF0aWVudCBoYXMgbmV2ZXIgaGFkIEJDRyB2YWNjaW5hdGlvbgogKi8KbGlicmFyeSBJTU1aRFQwMQovLyBTdGFydCBTa2VsZXRvbiBDUUwKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKaW5jbHVkZSBJTU1aQ29tbW9uIGNhbGxlZCBJTU1aQ29tCmluY2x1ZGUgSU1NWkNvbmNlcHRzIGNhbGxlZCBJTU1aYwppbmNsdWRlIElNTVpWYWNjaW5lTGlicmFyeSBjYWxsZWQgSU1NWnZsCmluY2x1ZGUgSU1NWkNvbmZpZyBjYWxsZWQgSU1NWkNvbmYKLy8gRW5kIFNrZWxldG9uIENRTApjb250ZXh0IFBhdGllbnQKCi8qCiAqIERldGVybWluZSBpZiB0aGUgcGF0aWVudCBoYXMgcmlzayBvZiBvY2N1cGF0aW9uYWwgZXhwb3N1cmUgaW4gbG93IGFuZCBoaWdoIFRCIGluY2lkZW5jZSBhcmVhcyAoZS5nLiBoZWFsdGgKICogd29ya2VycywgbGFib3JhdG9yeSB3b3JrZXJzLCBtZWRpY2FsIHN0dWRlbnRzLCBwcmlzb24gd29ya2Vycywgb3RoZXIgaW5kaXZpZHVhbHMgd2l0aCBvY2N1cGF0aW9uYWwgZXhwb3N1cmUpLgogKiAKICogVGhlIGxvZ2ljIGZvciBkZXRlcm1pbmUgdGhpcyBzdGlsbCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkLiAgRGVmYXVsdGluZyB0byB0cnVlIHVudGlsIHRoaXMgY2FuIGJlIGRvbmUuCiAqLwpkZWZpbmUgIlJpc2sgb2Ygb2NjdXBhdGlvbmFsIGV4cG9zdXJlIGluIGxvdyBhbmQgaGlnaCBUQiBhcmVhcyI6IHRydWUKCgovKgogKiBSdWxlOiBTaG91bGQgdmFjY2luYXRlIHBhdGllbnQgZm9yIEJDRwogKiBBbm5vdGF0aW9uczoKICogCSAtIFByb3ZpZGUgQkNHIGltbXVuaXphdGlvbnMg4oCTIHVzaW5nIHRoZSAiQkNHIHZhY2NpbmUgaW1tdW5pemF0aW9uIOKAkyBOTyBQUkVWSU9VUyIgc2NoZWR1bGUgKDEgZG9zZSBzY2hlbWUpCiAqIAkgLSAKICogCSAtIFByb3ZpZGUgQkNHIGltbXVuaXphdGlvbnMg4oCTIHVzaW5nIHRoZSAiQkNHIHZhY2NpbmUgaW1tdW5pemF0aW9uIOKAkyBOTyBQUkVWSU9VUyIgc2NoZWR1bGUgKDEgZG9zZSBzY2hlbWUpIGlmIENENCUgPjI1JSBmb3IgY2hpbGRyZW4gYWdlZCA8NSB5ZWFycyBvciBDRDQgY291bnQg4omlMjAwIGlmIGFnZWQgPjUgIHllYXJzCiAqIE91dHB1dHM6CiAqIAkgLSBJbW11bml6ZSBQYXRpZW50IGZvciBCQ0cgLSBUU1QtbmVnYXRpdmUKICogCSAtIEltbXVuaXplIFBhdGllbnQgZm9yIEJDRyAtIElHUkEtbmVnYXRpdmUKICogCSAtIEltbXVuaXplIFBhdGllbnQgZm9yIEJDRyAtIE5vIERvc2VzCiAqIAkgLSBJbW11bml6ZSBQYXRpZW50IGZvciBCQ0cgLSBIaXN0b3J5IFVua25vd24KICogCSAtIEltbXVuaXplIFBhdGllbnQgZm9yIEJDRyAtIE5vIERvc2VzIGFuZCBISVYgU3RhdHVzIFBvc2l0aXZlIGFuZCBpbW11bmljb2xvZ2ljYWxseSBzdGFibGUKICogCSAtIAogKiBSZWZlcmVuY2VzOgogKiAJLSBXSE8gcmVjb21tZW5kYXRpb25zIGZvciByb3V0aW5lIGltbXVuaXphdGlvbiAtIHN1bW1hcnkgdGFibGVzOiBodHRwczovL3d3dy53aG8uaW50L3RlYW1zL2ltbXVuaXphdGlvbi12YWNjaW5lcy1hbmQtYmlvbG9naWNhbHMvcG9saWNpZXMvd2hvLXJlY29tbWVuZGF0aW9ucy1mb3Itcm91dGluZS1pbW11bml6YXRpb24tLS1zdW1tYXJ5LXRhYmxlcwogKiAJLSAKICogTG9naWM6CiAqCSAoKCgoKCgoIlRTVCBUZXN0IFJlc3VsdCIgPSAiVFNULW5lZ2F0aXZlIikgYW5kICgiSGlnaCBpbmNpZGVuY2Ugb2YgVEIgYW5kL29yIGhpZ2ggbGVwcm9zeSBidXJkZW4iID0gdHJ1ZSkpIG9yICgoIklHUkEgVGVzdCBSZXN1bHQiID0gIklHUkEtbmVnYXRpdmUiKSBhbmQgKCJIaWdoIGluY2lkZW5jZSBvZiBUQiBhbmQvb3IgaGlnaCBsZXByb3N5IGJ1cmRlbiIgPSB0cnVlKSkpIG9yICgoIkJDRyB2YWNjaW5lIGltbXVuaXphdGlvbiBoaXN0b3J5IiA9ICJOby1kb3NlcyIpIGFuZCAoIkhpZ2ggaW5jaWRlbmNlIG9mIFRCIGFuZC9vciBoaWdoIGxlcHJvc3kgYnVyZGVuIiA9IHRydWUpKSkgb3IgKCgiQkNHIHZhY2NpbmUgaW1tdW5pemF0aW9uIGhpc3RvcnkiID0gIlVua25vd24iKSBhbmQgKCJIaWdoIGluY2lkZW5jZSBvZiBUQiBhbmQvb3IgaGlnaCBsZXByb3N5IGJ1cmRlbiIgPSB0cnVlKSkpIG9yICgoKCgoIkJDRyB2YWNjaW5lIGltbXVuaXphdGlvbiBoaXN0b3J5IiA9ICJOby1kb3NlcyIgPSB0cnVlKSBhbmQgKCJISVYgU3RhdHVzIiA9ICJQb3NpdGl2ZSIgPSB0cnVlKSkgYW5kICgiQ0Q0JSIgPiIyNSUiID0gdHJ1ZSkpIGFuZCAoIkN1cnJlbnQgUGF0aWVudCBBZ2UgaW4gWWVhcnMiIDwgNSkpIGFuZCAoIkhpZ2ggaW5jaWRlbmNlIG9mIFRCIGFuZC9vciBoaWdoIGxlcHJvc3kgYnVyZGVuIiA9IHRydWUpKSkgb3IgKCgoKCgiQkNHIHZhY2NpbmUgaW1tdW5pemF0aW9uIGhpc3RvcnkiID0gIk5vLWRvc2VzIiA9IHRydWUpIGFuZCAoIkhJViBTdGF0dXMiID0gIlBvc2l0aXZlIiA9IHRydWUpKSBhbmQgKCJDRDQgY291bnQiIOKJpSAiMjAwIiA9IHRydWUpKSBhbmQgKCJDdXJyZW50IFBhdGllbnQgQWdlIGluIFllYXJzIiA+IDUpKSBhbmQgKCJIaWdoIGluY2lkZW5jZSBvZiBUQiBhbmQvb3IgaGlnaCBsZXByb3N5IGJ1cmRlbiIgPSB0cnVlKSkpCiAqIFNIQVJJTkcgU0NIRURVTEUgTE9HSUMsIEtFRVBJTkcgVEhJUyBGT1IgTk9XIElOIENBU0UgVEhBVCBERUNJU0lPTiBDSEFOR0VTLgpkZWZpbmUgIlNob3VsZCB2YWNjaW5hdGUgcGF0aWVudCBmb3IgQkNHIjoKCUlNTVpDb25mLiJIaWdoIGluY2lkZW5jZSBvZiBUQiBhbmQvb3IgaGlnaCBsZXByb3N5IGJ1cmRlbiIgPSB0cnVlIGFuZCAoCgkJQ29hbGVzY2UoKElNTVpDb20uIk1vc3QgUmVjZW50IFRTVCBUZXN0IFJlc3VsdCIgaW4gSU1NWmMuIk5lZ2F0aXZlIFJlc3VsdCIpLCBmYWxzZSkgb3IgCgkJQ29hbGVzY2UoKElNTVpDb20uIk1vc3QgUmVjZW50IElHUkEgVGVzdCBSZXN1bHQiIGluIElNTVpjLiJOZWdhdGl2ZSBSZXN1bHQiKSwgZmFsc2UpIG9yIAoJCShJTU1aQ29tLiJObyBCQ0cgRG9zZXMgQWRtaW5pc3RlcmVkIHRvIFBhdGllbnQiKSBvciAKCQkoCgkJCQkoSU1NWkNvbS4iTm8gQkNHIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IiBhbmQgSU1NWkNvbS4iSElWIFN0YXR1cyIgaW4gSU1NWmMuIkhJViBzdGF0dXMgLSBISVYgcG9zaXRpdmUgQ2hvaWNlcyIpIGFuZCAKCQkJCSgKCQkJCQlDb2FsZXNjZSgoSU1NWkNvbS4iTW9zdCBSZWNlbnQgQ0Q0JSIgPiAyNSclJyBhbmQgSU1NWkNvbS4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPCA1KSwgZmFsc2UpIG9yIAoJCQkJCUNvYWxlc2NlKChJTU1aQ29tLiJNb3N0IFJlY2VudCBDRDQgQ291bnQiID49IDIwMCBhbmQgSU1NWkNvbS4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPj0gNSksIGZhbHNlKQoJCQkJKQoJCSkKCSkgCiovCgovKgogKiBSdWxlOiBQcm92aXNpb24gb2YgdGhlIEJDRyBkb3NlCiAqIENyZWF0ZSBDb25kaXRpb246CiAqICAgLSBCQ0cgZG9zZSBzaG91bGQgYmUgcHJvdmlkZWQgaWYgdGhlIHBhdGllbnQgaGFzIG5vdCByZWNlaXZlZCBhbnkgQkNHIGRvc2VzLCBhbmQgaXMgaW4gYSBIaWdoIGluY2lkZW5jZSBvZiBUQiBhbmQvb3IgaGlnaCBsZXByb3N5IGJ1cmRlbiwgYW5kIFRTVC1uZWdhdGl2ZSBhbmQgSUdSQS1uZWdhdGl2ZQogKiAKICogQ29tcGxldGlvbjoKICogICAtICJCQ0cgRG9zZSAxIHByb3ZpZGVkIiA9IFRSVUUKICoKICogUmVmZXJlbmNlczoKICogCS0gV0hPIHJlY29tbWVuZGF0aW9ucyBmb3Igcm91dGluZSBpbW11bml6YXRpb24gLSBzdW1tYXJ5IHRhYmxlczogaHR0cHM6Ly93d3cud2hvLmludC90ZWFtcy9pbW11bml6YXRpb24tdmFjY2luZXMtYW5kLWJpb2xvZ2ljYWxzL3BvbGljaWVzL3doby1yZWNvbW1lbmRhdGlvbnMtZm9yLXJvdXRpbmUtaW1tdW5pemF0aW9uLS0tc3VtbWFyeS10YWJsZXMKICogCSAKICovCmRlZmluZSAiUHJvdmlzaW9uIG9mIHRoZSBCQ0cgZG9zZSI6CiAgSU1NWkNvbS4iTm8gQkNHIERvc2VzIEFkbWluaXN0ZXJlZCB0byBQYXRpZW50IiBhbmQKICBpZiBJTU1aQ29tLiJISVYgU3RhdHVzIiBpbiBJTU1aYy4iSElWIHN0YXR1cyAtIEhJViBwb3NpdGl2ZSBDaG9pY2VzIiAKCXRoZW4gCgkJKAoJCQlDb2FsZXNjZSgoSU1NWkNvbS4iTW9zdCBSZWNlbnQgQ0Q0JSIgPiAyNSclJyBhbmQgSU1NWkNvbS4iQ3VycmVudCBQYXRpZW50IEFnZSBJbiBZZWFycyIgPCA1KSwgZmFsc2UpIG9yIAoJCQlDb2FsZXNjZSgoSU1NWkNvbS4iTW9zdCBSZWNlbnQgQ0Q0IENvdW50IiA+PSAyMDAgYW5kIElNTVpDb20uIkN1cnJlbnQgUGF0aWVudCBBZ2UgSW4gWWVhcnMiID49IDUpLCBmYWxzZSkKCQkpCgllbHNlIAoJCSgKCQkJSU1NWkNvbmYuIkhpZ2ggaW5jaWRlbmNlIG9mIFRCIGFuZC9vciBoaWdoIGxlcHJvc3kgYnVyZGVuIiA9IHRydWUgb3IKCQkJKAoJCQkJIlJpc2sgb2Ygb2NjdXBhdGlvbmFsIGV4cG9zdXJlIGluIGxvdyBhbmQgaGlnaCBUQiBhcmVhcyIgYW5kICgKCQkJCQlDb2FsZXNjZSgoSU1NWkNvbS4iTW9zdCBSZWNlbnQgVFNUIFRlc3QgUmVzdWx0IiBpbiBJTU1aYy4iTmVnYXRpdmUgUmVzdWx0IiksIGZhbHNlKSBvciAKCQkJCQlDb2FsZXNjZSgoSU1NWkNvbS4iTW9zdCBSZWNlbnQgSUdSQSBUZXN0IFJlc3VsdCIgaW4gSU1NWmMuIk5lZ2F0aXZlIFJlc3VsdCIpLCBmYWxzZSkKCQkJCSkKCQkJKQoJCSkKCmRlZmluZSAiU2NoZWR1bGUgRHVlIERhdGUgZm9yIEJDRyBkb3NlIjoKCVRvRGF0ZVRpbWUoIFBhdGllbnQuYmlydGhEYXRlICkKCmRlZmluZSAiU2hvdWxkIHZhY2NpbmF0ZSBwYXRpZW50IGZvciBCQ0ciOgoJIlByb3Zpc2lvbiBvZiB0aGUgQkNHIGRvc2UiIGFuZCAoIlNjaGVkdWxlIER1ZSBEYXRlIGZvciBCQ0cgZG9zZSIgPD0gKE5vdygpKSkKCQo="^^xsd:base64Binary ]
  ] ) . # 

# -------------------------------------------------------------------------------------

