WHO SMART Guidelines - HIV
0.3.0 - ci-build

WHO SMART Guidelines - HIV - Local Development build (v0.3.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: HIV.B2.DT Logic - TTL Representation

Draft as of 2024-08-18

Raw ttl | Download


@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 -------------------------------------------------------------------

 a fhir:Library ;
  fhir:nodeRole fhir:treeRoot ;
  fhir:id [ fhir:v "HIVB2DTLogic"] ; # 
  fhir:meta [
    ( fhir:profile [
fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary>     ] [
fhir:v "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary>     ] [
fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library>     ] [
fhir:v "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"^^xsd:anyURI ;
fhir:link <http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module>     ] )
  ] ; # 
  fhir:text [
fhir:status [ fhir:v "generated" ] ;
fhir:div "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: Library HIVB2DTLogic</b></p><a name=\"HIVB2DTLogic\"> </a><a name=\"hcHIVB2DTLogic\"> </a><a name=\"HIVB2DTLogic-en-US\"> </a><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/**\nLibrary: HIV.B2.DT Logic\n\n@DecisionID: HIV.B2.DT\n@BusinessRule: Check for signs of serious illness\n@Trigger: HIV.B2 Check for signs of serious illness\n@Trigger: HIV.D3 Check for signs of serious illness\n@HitPolicy: Rule Order\n@Description: Check for serious illness\n\nData Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.D.DE17: Signs of serious illness | Signs that may indicate the client has a serious illness and needs triage or an emergency referral\n * HIV.D.DE9: Body temperature | Temperature of the client in Celsius\n\nConsolidated guidelines on HIV prevention, testing, treatment, service delivery and monitoring: recommendations for a public health approach (2021) Chapter 5: Advanced HIV Disease. Figure 5.1: Algorithm for providing a package of care for people with advanced HIV disease.\n*/\n\nlibrary HIVB2DTLogic\n\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude HIVConcepts called Concepts\ninclude HIVEncounterElements called Elements\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\n\ncontext Patient\n\n /*\n  @input: &quot;Age 10 or older&quot;\n  @pseudocode: 'Age' &gt;= 10 years\n  */\ndefine &quot;Age 10 or older&quot;:\n  AgeInYearsAt(Today()) &gt;= 10\n\n /*\n  @input: &quot;Age under 10&quot;\n  @pseudocode: 'Age' &lt; 10 years\n  */\ndefine &quot;Age under 10&quot;:\n  AgeInYearsAt(Today()) &lt; 10\n\n/*\n @output: &quot;Immediately take action or refer for care if a client is having this issue&quot;\n */\ndefine &quot;Immediately take action or refer for care if a client is having this issue&quot;:\n  &quot;Age 10 or older&quot; and exists(\n    Elements.&quot;Signs of serious illness Observation&quot; O\n      where O.value ~ Concepts.&quot;Tachycardia&quot;\n  )\n\n/*\n @output &quot;Immediately take action or refer for care if client is showing this sign of a serious illness.&quot;\n */\ndefine &quot;Immediately take action or refer for care if client is showing this sign of a serious illness&quot;:\n  &quot;Signs of serious illness age 10 or older&quot; or &quot;Signs of serious illness age under 10&quot;\n\n/*\n @output &quot;Use clinical judgement and consider local epidemiology to determine if symptoms suggest client is seriously ill&quot;\n */\ndefine &quot;Use clinical judgement and consider local epidemiology to determine if symptoms suggest client is seriously ill&quot;:\n  &quot;Signs of serious illness requiring clinical judgement age 10 or older&quot; or &quot;Signs of serious illness requiring clinical judgement age under 10&quot;\n\n/*\n @dynamicValue: Guidance\n */\ndefine &quot;Guidance&quot;:\n  case \n  when &quot;Immediately take action or refer for care if a client is having this issue&quot; \n    then 'Immediately take action or refer for care if a client is having this issue.'\n  when &quot;Immediately take action or refer for care if client is showing this sign of a serious illness&quot; and &quot;Age 10 or older&quot;\n    then 'Immediately take action or refer for care if client is showing this sign of a serious illness.'\n  when &quot;Immediately take action or refer for care if client is showing this sign of a serious illness&quot; and &quot;Age under 10&quot;\n    then '''This is a sign and/or symptom of a serious health condition.\n  \nImmediately take action or refer for care if client is showing this sign of a serious illness.'''\n  else null\n  end\n\n/*\n Supporting Logic\n*/\ndefine &quot;Signs of serious illness age 10 or older&quot;:\n  &quot;Age 10 or older&quot; and exists(\n    Elements.&quot;Signs of serious illness Observation&quot; O\n      where\n        O.value ~ Concepts.&quot;Tachypnea&quot; or\n        O.value ~ Concepts.&quot;Unable to walk unaided&quot;\n  )\n\ndefine &quot;Signs of serious illness age under 10&quot;:\n  &quot;Age under 10&quot; and exists(\n    Elements.&quot;Signs of serious illness Observation&quot; O\n      where\n        O.value ~ Concepts.&quot;Lethargy - HIV.D.DE22&quot; or\n        O.value ~ Concepts.&quot;Unconsciousness&quot; or\n        O.value ~ Concepts.&quot;Convulsions&quot; or\n        O.value ~ Concepts.&quot;Unable to breastfeed&quot; or\n        O.value ~ Concepts.&quot;Unable to drink&quot; or\n        O.value ~ Concepts.&quot;Repeated vomiting&quot;\n    )\n\ndefine &quot;Signs of serious illness requiring clinical judgement age 10 or older&quot;:\n  &quot;Age 10 or older&quot; and exists(\n    Elements.&quot;Signs of serious illness Observation&quot; O\n      where\n        O.value ~ Concepts.&quot;Fever of 39 C or greater&quot; or\n        O.value ~ Concepts.&quot;Other sign of serious illness&quot;\n  )\n\ndefine &quot;Signs of serious illness requiring clinical judgement age under 10&quot;:\n  &quot;Age under 10&quot; and exists(\n    Elements.&quot;Signs of serious illness Observation&quot; O\n      where\n        O.value ~ Concepts.&quot;Fever of 39 C or greater&quot; or\n        O.value ~ Concepts.&quot;Other sign of serious illness&quot;\n  )\n</code></pre><p><code>No Content</code> (<code>application/elm+xml</code>)</p></div>"
  ] ; # 
  fhir:extension ( [
fhir:url [ fhir:v "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability"^^xsd:anyURI ] ;
fhir:value [ fhir:v "computable" ]
  ] ) ; # 
  fhir:url [ fhir:v "http://smart.who.int/hiv/Library/HIVB2DTLogic"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.3.0"] ; # 
  fhir:name [ fhir:v "HIVB2DTLogic"] ; # 
  fhir:title [ fhir:v "HIV.B2.DT Logic"] ; # 
  fhir:status [ fhir:v "draft"] ; # 
  fhir:experimental [ fhir:v "true"^^xsd:boolean] ; # 
  fhir:type [
    ( fhir:coding [
fhir:system [ fhir:v "http://terminology.hl7.org/CodeSystem/library-type"^^xsd:anyURI ] ;
fhir:code [ fhir:v "logic-library" ]     ] )
  ] ; # 
  fhir:date [ fhir:v "2024-08-18T19:14:17+00:00"^^xsd:dateTime] ; # 
  fhir:publisher [ fhir:v "WHO"] ; # 
  fhir:contact ( [
fhir:name [ fhir:v "WHO" ] ;
    ( fhir:telecom [
fhir:system [ fhir:v "url" ] ;
fhir:value [ fhir:v "http://who.int" ]     ] )
  ] ) ; # 
  fhir:description [ fhir:v "HIV.B2.DT Logic"] ; # 
  fhir:content ( [
fhir:contentType [ fhir:v "text/cql" ] ;
fhir:data [ fhir:v "LyoqCkxpYnJhcnk6IEhJVi5CMi5EVCBMb2dpYwoKQERlY2lzaW9uSUQ6IEhJVi5CMi5EVApAQnVzaW5lc3NSdWxlOiBDaGVjayBmb3Igc2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzCkBUcmlnZ2VyOiBISVYuQjIgQ2hlY2sgZm9yIHNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcwpAVHJpZ2dlcjogSElWLkQzIENoZWNrIGZvciBzaWducyBvZiBzZXJpb3VzIGlsbG5lc3MKQEhpdFBvbGljeTogUnVsZSBPcmRlcgpARGVzY3JpcHRpb246IENoZWNrIGZvciBzZXJpb3VzIGlsbG5lc3MKCkRhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuRC5ERTE3OiBTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgfCBTaWducyB0aGF0IG1heSBpbmRpY2F0ZSB0aGUgY2xpZW50IGhhcyBhIHNlcmlvdXMgaWxsbmVzcyBhbmQgbmVlZHMgdHJpYWdlIG9yIGFuIGVtZXJnZW5jeSByZWZlcnJhbAogKiBISVYuRC5ERTk6IEJvZHkgdGVtcGVyYXR1cmUgfCBUZW1wZXJhdHVyZSBvZiB0aGUgY2xpZW50IGluIENlbHNpdXMKCkNvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIEhJViBwcmV2ZW50aW9uLCB0ZXN0aW5nLCB0cmVhdG1lbnQsIHNlcnZpY2UgZGVsaXZlcnkgYW5kIG1vbml0b3Jpbmc6IHJlY29tbWVuZGF0aW9ucyBmb3IgYSBwdWJsaWMgaGVhbHRoIGFwcHJvYWNoICgyMDIxKSBDaGFwdGVyIDU6IEFkdmFuY2VkIEhJViBEaXNlYXNlLiBGaWd1cmUgNS4xOiBBbGdvcml0aG0gZm9yIHByb3ZpZGluZyBhIHBhY2thZ2Ugb2YgY2FyZSBmb3IgcGVvcGxlIHdpdGggYWR2YW5jZWQgSElWIGRpc2Vhc2UuCiovCgpsaWJyYXJ5IEhJVkIyRFRMb2dpYwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgSElWQ29uY2VwdHMgY2FsbGVkIENvbmNlcHRzCmluY2x1ZGUgSElWRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVsZW1lbnRzCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKY29udGV4dCBQYXRpZW50CgogLyoKICBAaW5wdXQ6ICJBZ2UgMTAgb3Igb2xkZXIiCiAgQHBzZXVkb2NvZGU6ICdBZ2UnID49IDEwIHllYXJzCiAgKi8KZGVmaW5lICJBZ2UgMTAgb3Igb2xkZXIiOgogIEFnZUluWWVhcnNBdChUb2RheSgpKSA+PSAxMAoKIC8qCiAgQGlucHV0OiAiQWdlIHVuZGVyIDEwIgogIEBwc2V1ZG9jb2RlOiAnQWdlJyA8IDEwIHllYXJzCiAgKi8KZGVmaW5lICJBZ2UgdW5kZXIgMTAiOgogIEFnZUluWWVhcnNBdChUb2RheSgpKSA8IDEwCgovKgogQG91dHB1dDogIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGEgY2xpZW50IGlzIGhhdmluZyB0aGlzIGlzc3VlIgogKi8KZGVmaW5lICJJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBhIGNsaWVudCBpcyBoYXZpbmcgdGhpcyBpc3N1ZSI6CiAgIkFnZSAxMCBvciBvbGRlciIgYW5kIGV4aXN0cygKICAgIEVsZW1lbnRzLiJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgT2JzZXJ2YXRpb24iIE8KICAgICAgd2hlcmUgTy52YWx1ZSB+IENvbmNlcHRzLiJUYWNoeWNhcmRpYSIKICApCgovKgogQG91dHB1dCAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgY2xpZW50IGlzIHNob3dpbmcgdGhpcyBzaWduIG9mIGEgc2VyaW91cyBpbGxuZXNzLiIKICovCmRlZmluZSAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgY2xpZW50IGlzIHNob3dpbmcgdGhpcyBzaWduIG9mIGEgc2VyaW91cyBpbGxuZXNzIjoKICAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIGFnZSAxMCBvciBvbGRlciIgb3IgIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBhZ2UgdW5kZXIgMTAiCgovKgogQG91dHB1dCAiVXNlIGNsaW5pY2FsIGp1ZGdlbWVudCBhbmQgY29uc2lkZXIgbG9jYWwgZXBpZGVtaW9sb2d5IHRvIGRldGVybWluZSBpZiBzeW1wdG9tcyBzdWdnZXN0IGNsaWVudCBpcyBzZXJpb3VzbHkgaWxsIgogKi8KZGVmaW5lICJVc2UgY2xpbmljYWwganVkZ2VtZW50IGFuZCBjb25zaWRlciBsb2NhbCBlcGlkZW1pb2xvZ3kgdG8gZGV0ZXJtaW5lIGlmIHN5bXB0b21zIHN1Z2dlc3QgY2xpZW50IGlzIHNlcmlvdXNseSBpbGwiOgogICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgMTAgb3Igb2xkZXIiIG9yICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgdW5kZXIgMTAiCgovKgogQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2UKICovCmRlZmluZSAiR3VpZGFuY2UiOgogIGNhc2UgCiAgd2hlbiAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgYSBjbGllbnQgaXMgaGF2aW5nIHRoaXMgaXNzdWUiIAogICAgdGhlbiAnSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgYSBjbGllbnQgaXMgaGF2aW5nIHRoaXMgaXNzdWUuJwogIHdoZW4gIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGNsaWVudCBpcyBzaG93aW5nIHRoaXMgc2lnbiBvZiBhIHNlcmlvdXMgaWxsbmVzcyIgYW5kICJBZ2UgMTAgb3Igb2xkZXIiCiAgICB0aGVuICdJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBjbGllbnQgaXMgc2hvd2luZyB0aGlzIHNpZ24gb2YgYSBzZXJpb3VzIGlsbG5lc3MuJwogIHdoZW4gIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGNsaWVudCBpcyBzaG93aW5nIHRoaXMgc2lnbiBvZiBhIHNlcmlvdXMgaWxsbmVzcyIgYW5kICJBZ2UgdW5kZXIgMTAiCiAgICB0aGVuICcnJ1RoaXMgaXMgYSBzaWduIGFuZC9vciBzeW1wdG9tIG9mIGEgc2VyaW91cyBoZWFsdGggY29uZGl0aW9uLgogIApJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBjbGllbnQgaXMgc2hvd2luZyB0aGlzIHNpZ24gb2YgYSBzZXJpb3VzIGlsbG5lc3MuJycnCiAgZWxzZSBudWxsCiAgZW5kCgovKgogU3VwcG9ydGluZyBMb2dpYwoqLwpkZWZpbmUgIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBhZ2UgMTAgb3Igb2xkZXIiOgogICJBZ2UgMTAgb3Igb2xkZXIiIGFuZCBleGlzdHMoCiAgICBFbGVtZW50cy4iU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIE9ic2VydmF0aW9uIiBPCiAgICAgIHdoZXJlCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJUYWNoeXBuZWEiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJVbmFibGUgdG8gd2FsayB1bmFpZGVkIgogICkKCmRlZmluZSAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIGFnZSB1bmRlciAxMCI6CiAgIkFnZSB1bmRlciAxMCIgYW5kIGV4aXN0cygKICAgIEVsZW1lbnRzLiJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgT2JzZXJ2YXRpb24iIE8KICAgICAgd2hlcmUKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIkxldGhhcmd5IC0gSElWLkQuREUyMiIgb3IKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIlVuY29uc2Npb3VzbmVzcyIgb3IKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIkNvbnZ1bHNpb25zIiBvcgogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iVW5hYmxlIHRvIGJyZWFzdGZlZWQiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJVbmFibGUgdG8gZHJpbmsiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJSZXBlYXRlZCB2b21pdGluZyIKICAgICkKCmRlZmluZSAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIHJlcXVpcmluZyBjbGluaWNhbCBqdWRnZW1lbnQgYWdlIDEwIG9yIG9sZGVyIjoKICAiQWdlIDEwIG9yIG9sZGVyIiBhbmQgZXhpc3RzKAogICAgRWxlbWVudHMuIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBPYnNlcnZhdGlvbiIgTwogICAgICB3aGVyZQogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iRmV2ZXIgb2YgMzkgQyBvciBncmVhdGVyIiBvcgogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iT3RoZXIgc2lnbiBvZiBzZXJpb3VzIGlsbG5lc3MiCiAgKQoKZGVmaW5lICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgdW5kZXIgMTAiOgogICJBZ2UgdW5kZXIgMTAiIGFuZCBleGlzdHMoCiAgICBFbGVtZW50cy4iU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIE9ic2VydmF0aW9uIiBPCiAgICAgIHdoZXJlCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJGZXZlciBvZiAzOSBDIG9yIGdyZWF0ZXIiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJPdGhlciBzaWduIG9mIHNlcmlvdXMgaWxsbmVzcyIKICApCg=="^^xsd:base64Binary ]
  ] [
fhir:contentType [ fhir:v "application/elm+xml" ]
  ] ) . #