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
Draft as of 2024-12-06 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVB2DTLogic"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">HIV.B2.DT Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVB2DTLogic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.3.0</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVB2DTLogic.html">HIV.B2.DT Logic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span><a href="http://hl7.org/fhir/R4/codesystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2024-12-06 22:28:12+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">WHO</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>HIV.B2.DT Logic</p>
</div></td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">/**
Library: HIV.B2.DT Logic
@DecisionID: HIV.B2.DT
@BusinessRule: Check for signs of serious illness
@Trigger: HIV.B2 Check for signs of serious illness
@Trigger: HIV.D3 Check for signs of serious illness
@HitPolicy: Rule Order
@Description: Check for serious illness
Data Concepts:
* HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth
* HIV.D.DE17: Signs of serious illness | Signs that may indicate the client has a serious illness and needs triage or an emergency referral
* HIV.D.DE9: Body temperature | Temperature of the client in Celsius
Consolidated 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.
*/
library HIVB2DTLogic
using FHIR version '4.0.1'
include HIVCommon version '0.0.1' called HIC
include HIVConcepts called Concepts
include HIVEncounterElements called Elements
include FHIRHelpers version '4.0.1'
include WHOCommon called WCom
context Patient
/*
@input: "Age 10 or older"
@pseudocode: 'Age' >= 10 years
*/
define "Age 10 or older":
AgeInYearsAt(Today()) >= 10
/*
@input: "Age under 10"
@pseudocode: 'Age' < 10 years
*/
define "Age under 10":
AgeInYearsAt(Today()) < 10
/*
@output: "Immediately take action or refer for care if a client is having this issue"
*/
define "Immediately take action or refer for care if a client is having this issue":
"Age 10 or older" and exists(
Elements."Signs of serious illness Observation" O
where O.value ~ Concepts."Tachycardia"
)
/*
@output "Immediately take action or refer for care if client is showing this sign of a serious illness."
*/
define "Immediately take action or refer for care if client is showing this sign of a serious illness":
"Signs of serious illness age 10 or older" or "Signs of serious illness age under 10"
/*
@output "Use clinical judgement and consider local epidemiology to determine if symptoms suggest client is seriously ill"
*/
define "Use clinical judgement and consider local epidemiology to determine if symptoms suggest client is seriously ill":
"Signs of serious illness requiring clinical judgement age 10 or older" or "Signs of serious illness requiring clinical judgement age under 10"
/*
@dynamicValue: Guidance
*/
define "Guidance":
case
when "Immediately take action or refer for care if a client is having this issue"
then 'Immediately take action or refer for care if a client is having this issue.'
when "Immediately take action or refer for care if client is showing this sign of a serious illness" and "Age 10 or older"
then 'Immediately take action or refer for care if client is showing this sign of a serious illness.'
when "Immediately take action or refer for care if client is showing this sign of a serious illness" and "Age under 10"
then '''This is a sign and/or symptom of a serious health condition.
Immediately take action or refer for care if client is showing this sign of a serious illness.'''
else null
end
/*
Supporting Logic
*/
define "Signs of serious illness age 10 or older":
"Age 10 or older" and exists(
Elements."Signs of serious illness Observation" O
where
O.value ~ Concepts."Tachypnea" or
O.value ~ Concepts."Unable to walk unaided"
)
define "Signs of serious illness age under 10":
"Age under 10" and exists(
Elements."Signs of serious illness Observation" O
where
O.value ~ Concepts."Lethargy - HIV.D.DE22" or
O.value ~ Concepts."Unconsciousness" or
O.value ~ Concepts."Convulsions" or
O.value ~ Concepts."Unable to breastfeed" or
O.value ~ Concepts."Unable to drink" or
O.value ~ Concepts."Repeated vomiting"
)
define "Signs of serious illness requiring clinical judgement age 10 or older":
"Age 10 or older" and exists(
Elements."Signs of serious illness Observation" O
where
O.value ~ Concepts."Fever of 39 C or greater" or
O.value ~ Concepts."Other sign of serious illness"
)
define "Signs of serious illness requiring clinical judgement age under 10":
"Age under 10" and exists(
Elements."Signs of serious illness Observation" O
where
O.value ~ Concepts."Fever of 39 C or greater" or
O.value ~ Concepts."Other sign of serious illness"
)
</code></pre></td></tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><b>Content: </b> application/elm+xml</th></tr>
<tr><td><pre><code/></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<url value="http://smart.who.int/hiv/Library/HIVB2DTLogic"/>
<version value="0.3.0"/>
<name value="HIVB2DTLogic"/>
<title value="HIV.B2.DT Logic"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2024-12-06T22:28:12+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description value="HIV.B2.DT Logic"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCkxpYnJhcnk6IEhJVi5CMi5EVCBMb2dpYwoKQERlY2lzaW9uSUQ6IEhJVi5CMi5EVApAQnVzaW5lc3NSdWxlOiBDaGVjayBmb3Igc2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzCkBUcmlnZ2VyOiBISVYuQjIgQ2hlY2sgZm9yIHNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcwpAVHJpZ2dlcjogSElWLkQzIENoZWNrIGZvciBzaWducyBvZiBzZXJpb3VzIGlsbG5lc3MKQEhpdFBvbGljeTogUnVsZSBPcmRlcgpARGVzY3JpcHRpb246IENoZWNrIGZvciBzZXJpb3VzIGlsbG5lc3MKCkRhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuRC5ERTE3OiBTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgfCBTaWducyB0aGF0IG1heSBpbmRpY2F0ZSB0aGUgY2xpZW50IGhhcyBhIHNlcmlvdXMgaWxsbmVzcyBhbmQgbmVlZHMgdHJpYWdlIG9yIGFuIGVtZXJnZW5jeSByZWZlcnJhbAogKiBISVYuRC5ERTk6IEJvZHkgdGVtcGVyYXR1cmUgfCBUZW1wZXJhdHVyZSBvZiB0aGUgY2xpZW50IGluIENlbHNpdXMKCkNvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIEhJViBwcmV2ZW50aW9uLCB0ZXN0aW5nLCB0cmVhdG1lbnQsIHNlcnZpY2UgZGVsaXZlcnkgYW5kIG1vbml0b3Jpbmc6IHJlY29tbWVuZGF0aW9ucyBmb3IgYSBwdWJsaWMgaGVhbHRoIGFwcHJvYWNoICgyMDIxKSBDaGFwdGVyIDU6IEFkdmFuY2VkIEhJViBEaXNlYXNlLiBGaWd1cmUgNS4xOiBBbGdvcml0aG0gZm9yIHByb3ZpZGluZyBhIHBhY2thZ2Ugb2YgY2FyZSBmb3IgcGVvcGxlIHdpdGggYWR2YW5jZWQgSElWIGRpc2Vhc2UuCiovCgpsaWJyYXJ5IEhJVkIyRFRMb2dpYwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgSElWQ29uY2VwdHMgY2FsbGVkIENvbmNlcHRzCmluY2x1ZGUgSElWRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVsZW1lbnRzCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQoKY29udGV4dCBQYXRpZW50CgogLyoKICBAaW5wdXQ6ICJBZ2UgMTAgb3Igb2xkZXIiCiAgQHBzZXVkb2NvZGU6ICdBZ2UnID49IDEwIHllYXJzCiAgKi8KZGVmaW5lICJBZ2UgMTAgb3Igb2xkZXIiOgogIEFnZUluWWVhcnNBdChUb2RheSgpKSA+PSAxMAoKIC8qCiAgQGlucHV0OiAiQWdlIHVuZGVyIDEwIgogIEBwc2V1ZG9jb2RlOiAnQWdlJyA8IDEwIHllYXJzCiAgKi8KZGVmaW5lICJBZ2UgdW5kZXIgMTAiOgogIEFnZUluWWVhcnNBdChUb2RheSgpKSA8IDEwCgovKgogQG91dHB1dDogIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGEgY2xpZW50IGlzIGhhdmluZyB0aGlzIGlzc3VlIgogKi8KZGVmaW5lICJJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBhIGNsaWVudCBpcyBoYXZpbmcgdGhpcyBpc3N1ZSI6CiAgIkFnZSAxMCBvciBvbGRlciIgYW5kIGV4aXN0cygKICAgIEVsZW1lbnRzLiJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgT2JzZXJ2YXRpb24iIE8KICAgICAgd2hlcmUgTy52YWx1ZSB+IENvbmNlcHRzLiJUYWNoeWNhcmRpYSIKICApCgovKgogQG91dHB1dCAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgY2xpZW50IGlzIHNob3dpbmcgdGhpcyBzaWduIG9mIGEgc2VyaW91cyBpbGxuZXNzLiIKICovCmRlZmluZSAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgY2xpZW50IGlzIHNob3dpbmcgdGhpcyBzaWduIG9mIGEgc2VyaW91cyBpbGxuZXNzIjoKICAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIGFnZSAxMCBvciBvbGRlciIgb3IgIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBhZ2UgdW5kZXIgMTAiCgovKgogQG91dHB1dCAiVXNlIGNsaW5pY2FsIGp1ZGdlbWVudCBhbmQgY29uc2lkZXIgbG9jYWwgZXBpZGVtaW9sb2d5IHRvIGRldGVybWluZSBpZiBzeW1wdG9tcyBzdWdnZXN0IGNsaWVudCBpcyBzZXJpb3VzbHkgaWxsIgogKi8KZGVmaW5lICJVc2UgY2xpbmljYWwganVkZ2VtZW50IGFuZCBjb25zaWRlciBsb2NhbCBlcGlkZW1pb2xvZ3kgdG8gZGV0ZXJtaW5lIGlmIHN5bXB0b21zIHN1Z2dlc3QgY2xpZW50IGlzIHNlcmlvdXNseSBpbGwiOgogICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgMTAgb3Igb2xkZXIiIG9yICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgdW5kZXIgMTAiCgovKgogQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2UKICovCmRlZmluZSAiR3VpZGFuY2UiOgogIGNhc2UgCiAgd2hlbiAiSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgYSBjbGllbnQgaXMgaGF2aW5nIHRoaXMgaXNzdWUiIAogICAgdGhlbiAnSW1tZWRpYXRlbHkgdGFrZSBhY3Rpb24gb3IgcmVmZXIgZm9yIGNhcmUgaWYgYSBjbGllbnQgaXMgaGF2aW5nIHRoaXMgaXNzdWUuJwogIHdoZW4gIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGNsaWVudCBpcyBzaG93aW5nIHRoaXMgc2lnbiBvZiBhIHNlcmlvdXMgaWxsbmVzcyIgYW5kICJBZ2UgMTAgb3Igb2xkZXIiCiAgICB0aGVuICdJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBjbGllbnQgaXMgc2hvd2luZyB0aGlzIHNpZ24gb2YgYSBzZXJpb3VzIGlsbG5lc3MuJwogIHdoZW4gIkltbWVkaWF0ZWx5IHRha2UgYWN0aW9uIG9yIHJlZmVyIGZvciBjYXJlIGlmIGNsaWVudCBpcyBzaG93aW5nIHRoaXMgc2lnbiBvZiBhIHNlcmlvdXMgaWxsbmVzcyIgYW5kICJBZ2UgdW5kZXIgMTAiCiAgICB0aGVuICcnJ1RoaXMgaXMgYSBzaWduIGFuZC9vciBzeW1wdG9tIG9mIGEgc2VyaW91cyBoZWFsdGggY29uZGl0aW9uLgogIApJbW1lZGlhdGVseSB0YWtlIGFjdGlvbiBvciByZWZlciBmb3IgY2FyZSBpZiBjbGllbnQgaXMgc2hvd2luZyB0aGlzIHNpZ24gb2YgYSBzZXJpb3VzIGlsbG5lc3MuJycnCiAgZWxzZSBudWxsCiAgZW5kCgovKgogU3VwcG9ydGluZyBMb2dpYwoqLwpkZWZpbmUgIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBhZ2UgMTAgb3Igb2xkZXIiOgogICJBZ2UgMTAgb3Igb2xkZXIiIGFuZCBleGlzdHMoCiAgICBFbGVtZW50cy4iU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIE9ic2VydmF0aW9uIiBPCiAgICAgIHdoZXJlCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJUYWNoeXBuZWEiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJVbmFibGUgdG8gd2FsayB1bmFpZGVkIgogICkKCmRlZmluZSAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIGFnZSB1bmRlciAxMCI6CiAgIkFnZSB1bmRlciAxMCIgYW5kIGV4aXN0cygKICAgIEVsZW1lbnRzLiJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgT2JzZXJ2YXRpb24iIE8KICAgICAgd2hlcmUKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIkxldGhhcmd5IC0gSElWLkQuREUyMiIgb3IKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIlVuY29uc2Npb3VzbmVzcyIgb3IKICAgICAgICBPLnZhbHVlIH4gQ29uY2VwdHMuIkNvbnZ1bHNpb25zIiBvcgogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iVW5hYmxlIHRvIGJyZWFzdGZlZWQiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJVbmFibGUgdG8gZHJpbmsiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJSZXBlYXRlZCB2b21pdGluZyIKICAgICkKCmRlZmluZSAiU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIHJlcXVpcmluZyBjbGluaWNhbCBqdWRnZW1lbnQgYWdlIDEwIG9yIG9sZGVyIjoKICAiQWdlIDEwIG9yIG9sZGVyIiBhbmQgZXhpc3RzKAogICAgRWxlbWVudHMuIlNpZ25zIG9mIHNlcmlvdXMgaWxsbmVzcyBPYnNlcnZhdGlvbiIgTwogICAgICB3aGVyZQogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iRmV2ZXIgb2YgMzkgQyBvciBncmVhdGVyIiBvcgogICAgICAgIE8udmFsdWUgfiBDb25jZXB0cy4iT3RoZXIgc2lnbiBvZiBzZXJpb3VzIGlsbG5lc3MiCiAgKQoKZGVmaW5lICJTaWducyBvZiBzZXJpb3VzIGlsbG5lc3MgcmVxdWlyaW5nIGNsaW5pY2FsIGp1ZGdlbWVudCBhZ2UgdW5kZXIgMTAiOgogICJBZ2UgdW5kZXIgMTAiIGFuZCBleGlzdHMoCiAgICBFbGVtZW50cy4iU2lnbnMgb2Ygc2VyaW91cyBpbGxuZXNzIE9ic2VydmF0aW9uIiBPCiAgICAgIHdoZXJlCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJGZXZlciBvZiAzOSBDIG9yIGdyZWF0ZXIiIG9yCiAgICAgICAgTy52YWx1ZSB+IENvbmNlcHRzLiJPdGhlciBzaWduIG9mIHNlcmlvdXMgaWxsbmVzcyIKICApCg=="/>
</content>
<content>
<contentType value="application/elm+xml"/>
</content>
</Library>