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.B9.DT Logic - TTL Representation

Draft as of 2024-11-07

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 "HIVB9DTLogic"] ; # 
  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 HIVB9DTLogic</b></p><a name=\"HIVB9DTLogic\"> </a><a name=\"hcHIVB9DTLogic\"> </a><a name=\"HIVB9DTLogic-en-US\"> </a><h2>Contents</h2><p><code>text/cql</code></p><pre><code class=\"language-sql\">/*\nLibrary: HIV.B9.DT Logic\n\n@DecisionID: HIV.B9.DT.HIV Re-testing Recommendations\n@BusinessRule: HIV restesting recommendations\n@Trigger: HIV.B9 Determine recommended services\n@HitPolicy: Rule order\n@Description: Determine retest recommendation\n\nData Concepts:\n * HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.\n * HIV.B.DE33: Partner HIV status (reported) | The HIV status of the client's partner.\n * HIV.C.DE55: Sex partner's HIV treatment status | Treatment adherence of client's sex partner for partners that are HIV-positive\n * HIV.Config.DE12: HIV burden of the setting | HIV burden of the setting (high or low) based on the national HIV prevalence or where the HIV prevalence and/or incidence in a geographical setting is higher than national prevalence and, therefore, needs priority in the HIV response\n * HIV.B.DE49: Key population member | Client is a member of a key population that has an increased risk of HIV\n * HIV.B.DE29: Currently pregnant | Client is currently pregnant\n * HIV.D.DE939: TB diagnosis result | Final result of the TB investigation (bacteriological and/or clinical)\n * HIV.D.DE282: Presumptive TB | Client's comorbidities or coinfections or symptoms of these include presumptive TB\n * HIV.C.DE10: Currently on PrEP | The client is currently taking PrEP. Oral pre-exposure prophylaxis (PrEP) of HIV is the use of ARV drugs by people who are not infected with HIV to block the acquisition of HIV.\n * HIV.B.DE225: At elevated risk for HIV acquisition | Client is at elevated risk for HIV acquisition\n*/\nlibrary HIVB9DTLogic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called Common\ninclude HIVConcepts called Concepts\ninclude HIVConfig called Config\ninclude HIVEncounterElements called Elements\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\n// Included for PlanDefinition\ninclude WHOConcepts called WCx\ninclude WHOEncounterElements called WElm\n\ncontext Patient\n\n /*\n  @input: &quot;HIV status negative or unknown&quot;\n  @pseudocode: &quot;HIV status&quot; IN 'HIV-negative', 'Unknown'\n  */\ndefine &quot;HIV status negative or unknown&quot;:\n  exists(Elements.&quot;HIV status&quot; S\n    where S in { Concepts.&quot;HIV-negative&quot;, Concepts.&quot;Unknown&quot; }) \n\n /*\n  @input: &quot;Partner HIV reported positive&quot;\n  @pseudocode: &quot;Partner HIV status (reported)&quot;='HIV-positive'\n  */\ndefine &quot;Partner HIV positive&quot;:\n  exists(Elements.&quot;Partner HIV status reported Observation&quot; O\n    where O.value ~ Concepts.&quot;HIV-positive&quot;)\n\n /*\n  @input: &quot;Sex partner's HIV treatment status is partner not virally suppressed&quot;\n  @pseudocode: &quot;Sex partner's HIV treatment status&quot;='Partner is not virally suppressed'\n  */\ndefine &quot;Sex partner's HIV treatment status is partner not virally suppressed&quot;:\n  exists(Elements.&quot;Sex partners HIV treatment status Observation&quot; O\n    where O.value ~ Concepts.&quot;Partner is not virally suppressed&quot;)\n\n /*\n  @input: &quot;HIV burden of setting is high HIV burden setting&quot;\n  @pseudocode: &quot;HIV burden of the setting&quot;='High HIV burden setting'\n  */\ndefine &quot;HIV burden of setting is high HIV burden setting&quot;:\n  Config.&quot;HIV burden of setting&quot; ~ Concepts.&quot;High HIV burden setting&quot;\n\n /*\n  @input: &quot;HIV burden of setting is low HIV burden setting&quot;\n  @pseudocode: &quot;HIV burden of the setting&quot;='Low HIV burden setting'\n  */\ndefine &quot;HIV burden of setting is low HIV burden setting&quot;:\n  Config.&quot;HIV burden of setting&quot; ~ Concepts.&quot;Low HIV burden setting&quot;\n\n /*\n  @input: &quot;Key population member&quot;\n  @pseudocode: &quot;Key population member&quot; = TRUE\n  */\ndefine &quot;Key population member&quot;:\n  exists(Elements.&quot;Key population member B.DE49 Observation&quot; O\n    where O.value is true)\n\n /*\n  @input: &quot;Currently pregnant&quot;\n  @pseudocode: &quot;Currently pregnant&quot;=True\n  */\ndefine &quot;Currently pregnant&quot;:\n  exists(WElm.&quot;Pregnant Observation&quot;)\n\n /*\n  @input: &quot;TB diagnosis result is diagnosed TB&quot;\n  @pseudocode: &quot;Currently pregnant&quot;=True\n  */\ndefine &quot;TB diagnosis result is diagnosed TB&quot;:\n  exists(Elements.&quot;TB diagnosis result Observation&quot; O\n    where O.value ~ Concepts.&quot;Diagnosed TB&quot;)\n\n /*\n  @input: &quot;Presumptive TB&quot;\n  @pseudocode: &quot;Presumptive TB&quot;=True\n  */\ndefine &quot;Presumptive TB&quot;:\n  exists(Elements.&quot;Presumptive TB D.DE282 Observation&quot; O\n    where O.value is true)\n\n/*\n  @input: &quot;Currently on PrEP&quot;\n  @pseudocode: &quot;Currently on PrEP&quot;=True\n  */\ndefine &quot;Currently on PrEP&quot;:\n  exists(Elements.&quot;Currently on PrEP&quot; O\n    where O.value is true)\n\n /*\n  @input: &quot;At elevated risk for HIV acquisition&quot;\n  @pseudocode: &quot;At elevated risk for HIV acquisition&quot;=True\n  */\ndefine &quot;At elevated risk for HIV acquisition&quot;:\n  exists(Elements.&quot;At elevated risk for HIV acquisition&quot; O\n    where O.value is true)\n\n /*\n  @output: &quot;Schedule an annual follow-up test&quot;\n  @pseudocode: &quot;Follow-up test recommended date&quot; = &quot;Visit date&quot; + 1 year\n  */\ndefine &quot;Schedule an annual follow-up test&quot;:\n  &quot;HIV status negative or unknown&quot; and\n    case\n    when &quot;Partner has HIV and is not virally suppressed&quot;\n      then true\n    when &quot;HIV burden of setting is high HIV burden setting&quot;\n      then true\n    when &quot;Key population memeber&quot;\n      then true\n    when &quot;At elevated risk for HIV acquisition&quot;\n      then true\n    else false\n    end\n\n/*\n @output: &quot;Follow-up test recommended&quot;\n @pseudocode: N/A\n */\ndefine &quot;Follow-up test recommended&quot;:\n  &quot;HIV status negative or unknown&quot; and\n  case\n  when &quot;TB diagnosis result is diagnosed TB&quot;\n    then true\n  when &quot;Presumptive TB&quot;\n    then true\n  else false\n  end\n\n/*\n @output: &quot;Schedule quarterly retesting for PrEP users&quot;\n @pseudocode: N/A\n */\ndefine &quot;Schedule quarterly retesting for PrEP users&quot;:\n  &quot;HIV status negative or unknown&quot; and &quot;Currently on PrEP&quot;\n\n/*\n @output: &quot;Schedule an HIV test, syphilis test, hepatitis B test as early as possible during this pregnancy&quot;\n @pseudocode: N/A\n */\ndefine &quot;Schedule an HIV test, syphilis test, hepatitis B test as early as possible during this pregnancy&quot;:\n  &quot;Pregnant in high HIV burden setting&quot;\n\n/*\n @output: &quot;Schedule a 'Follow-up test recommended date during a third trimester visit&quot;\n @pseudocode: N/A\n */\ndefine &quot;Schedule a 'Follow-up test recommended date' during a third trimester visit&quot;:\n  &quot;Pregnant in high HIV burden setting&quot;\n\n/*\n @output: &quot;Schedule a 'Follow-up test recommended date during a third trimester visit&quot;\n @pseudocode: N/A\n */\ndefine &quot;Schedule a 'Follow-up test recommended date' at first ANC contact date&quot;:\n  &quot;Pregnant in low HIV burden setting&quot; and \n  case\n  when &quot;Key population member&quot;:\n    then true\n  when &quot;Partner has HIV and is not virally suppressed&quot;:\n    then true\n  when &quot;At elevated risk for HIV acquisition&quot;\n    then true\n  else false\n  end\n\n/*\n @dynamicValue: Guidance\n */\ndefine &quot;Guidance&quot;:\n  case\n  when &quot;Schedule an annual follow-up test&quot;\n    then &quot;&quot;&quot;Schedule an annual follow-up test.  \n\nWHO guidance recommends annual retesting for people who have ongoing HIV-related risks in all settings. These include people with a known HIV-positive partner who is not virally suppressed on ART.&quot;&quot;&quot;\n  when &quot;Follow-up test recommended&quot;\n    then &quot;&quot;&quot;Recommend a follow-up test.  \n\nIn certain conditions and situations, individuals who have been tested for HIV in the past can be advised to retest. These include: \n* Individuals presenting with a diagnosis or receiving treatment for STIs or viral hepatitis, \n* Individuals with a confirmed or presumptive TB diagnosis, \n* Outpatients presenting with clinical conditions or symptoms indicative of HIV, individuals with recent HIV risk exposure.&quot;&quot;&quot;\n  when &quot;Schedule quarterly retesting for PrEP users&quot;\n    then &quot;&quot;&quot;Schedule quarterly retesting for PrEP users.&quot;&quot;&quot;\n  when &quot;Schedule an HIV test, syphilis test, hepatitis B test as early as possible during this pregnancy&quot;\n    then &quot;&quot;&quot;Schedule an HIV test, syphilis test, hepatitis B test as early as possible during this pregnancy\n\nAll pregnant women should be tested for HIV as well as syphilis and hepatitis B virus at least once and as early as possible during pregnancy.&quot;&quot;&quot;\n  when &quot;Schedule a 'Follow-up test recommended date' at first ANC contact date&quot;:\n    then &quot;&quot;&quot;In low HIV burden settings, retesting all pregnant women is not warranted unless focused among women from key populations or at high ongoing risk, such as those from key populations or with partners with HIV who are not virally suppressed. Countries could consider one additional retest in the post-partum period, such as at 14 weeks, six months or nine months for women in high HIV burden or incidence districts or provinces, key populations or women with partners with HIV who are not virally suppressed.&quot;&quot;&quot;\n  else null\n  end\n\n/*\n @dynamicValue: &quot;Date to schedule&quot;\n */\ndefine &quot;Schedule Follow-up Date&quot;\n  case\n  when &quot;Schedule an annual follow-up test&quot;:\n    then Today + 1 years\n  when &quot;Schedule quarterly retesting for PrEP users&quot;:\n    then Today + 3 months\n  else null\n  end\n\n// Helper Logic\ndefine &quot;Pregnant in high HIV burden setting&quot;:\n  &quot;HIV status negative or unknown&quot; and\n  &quot;HIV burden of setting is high HIV burden setting&quot; and\n  &quot;Currently pregnant&quot;\n\ndefine &quot;Pregnant in low HIV burden setting&quot;:\n  &quot;HIV status negative or unknown&quot; and\n  &quot;HIV burden of setting is low HIV burden setting&quot; and\n  &quot;Currently pregnant&quot;\n\ndefine &quot;Partner has HIV and is not virally suppressed&quot;:\n  &quot;Partner HIV positive&quot; and &quot;Sex partner's HIV treatment status is partner not virally suppressed&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/HIVB9DTLogic"^^xsd:anyURI] ; # 
  fhir:version [ fhir:v "0.3.0"] ; # 
  fhir:name [ fhir:v "HIVB9DTLogic"] ; # 
  fhir:title [ fhir:v "HIV.B9.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-11-07T21:07: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.B9.DT Logic"] ; # 
  fhir:content ( [
fhir:contentType [ fhir:v "text/cql" ] ;
fhir:data [ fhir:v "LyoKTGlicmFyeTogSElWLkI5LkRUIExvZ2ljCgpARGVjaXNpb25JRDogSElWLkI5LkRULkhJViBSZS10ZXN0aW5nIFJlY29tbWVuZGF0aW9ucwpAQnVzaW5lc3NSdWxlOiBISVYgcmVzdGVzdGluZyByZWNvbW1lbmRhdGlvbnMKQFRyaWdnZXI6IEhJVi5COSBEZXRlcm1pbmUgcmVjb21tZW5kZWQgc2VydmljZXMKQEhpdFBvbGljeTogUnVsZSBvcmRlcgpARGVzY3JpcHRpb246IERldGVybWluZSByZXRlc3QgcmVjb21tZW5kYXRpb24KCkRhdGEgQ29uY2VwdHM6CiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUzMzogUGFydG5lciBISVYgc3RhdHVzIChyZXBvcnRlZCkgfCBUaGUgSElWIHN0YXR1cyBvZiB0aGUgY2xpZW50J3MgcGFydG5lci4KICogSElWLkMuREU1NTogU2V4IHBhcnRuZXIncyBISVYgdHJlYXRtZW50IHN0YXR1cyB8IFRyZWF0bWVudCBhZGhlcmVuY2Ugb2YgY2xpZW50J3Mgc2V4IHBhcnRuZXIgZm9yIHBhcnRuZXJzIHRoYXQgYXJlIEhJVi1wb3NpdGl2ZQogKiBISVYuQ29uZmlnLkRFMTI6IEhJViBidXJkZW4gb2YgdGhlIHNldHRpbmcgfCBISVYgYnVyZGVuIG9mIHRoZSBzZXR0aW5nIChoaWdoIG9yIGxvdykgYmFzZWQgb24gdGhlIG5hdGlvbmFsIEhJViBwcmV2YWxlbmNlIG9yIHdoZXJlIHRoZSBISVYgcHJldmFsZW5jZSBhbmQvb3IgaW5jaWRlbmNlIGluIGEgZ2VvZ3JhcGhpY2FsIHNldHRpbmcgaXMgaGlnaGVyIHRoYW4gbmF0aW9uYWwgcHJldmFsZW5jZSBhbmQsIHRoZXJlZm9yZSwgbmVlZHMgcHJpb3JpdHkgaW4gdGhlIEhJViByZXNwb25zZQogKiBISVYuQi5ERTQ5OiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgfCBDbGllbnQgaXMgYSBtZW1iZXIgb2YgYSBrZXkgcG9wdWxhdGlvbiB0aGF0IGhhcyBhbiBpbmNyZWFzZWQgcmlzayBvZiBISVYKICogSElWLkIuREUyOTogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuRC5ERTkzOTogVEIgZGlhZ25vc2lzIHJlc3VsdCB8IEZpbmFsIHJlc3VsdCBvZiB0aGUgVEIgaW52ZXN0aWdhdGlvbiAoYmFjdGVyaW9sb2dpY2FsIGFuZC9vciBjbGluaWNhbCkKICogSElWLkQuREUyODI6IFByZXN1bXB0aXZlIFRCIHwgQ2xpZW50J3MgY29tb3JiaWRpdGllcyBvciBjb2luZmVjdGlvbnMgb3Igc3ltcHRvbXMgb2YgdGhlc2UgaW5jbHVkZSBwcmVzdW1wdGl2ZSBUQgogKiBISVYuQy5ERTEwOiBDdXJyZW50bHkgb24gUHJFUCB8IFRoZSBjbGllbnQgaXMgY3VycmVudGx5IHRha2luZyBQckVQLiBPcmFsIHByZS1leHBvc3VyZSBwcm9waHlsYXhpcyAoUHJFUCkgb2YgSElWIGlzIHRoZSB1c2Ugb2YgQVJWIGRydWdzIGJ5IHBlb3BsZSB3aG8gYXJlIG5vdCBpbmZlY3RlZCB3aXRoIEhJViB0byBibG9jayB0aGUgYWNxdWlzaXRpb24gb2YgSElWLgogKiBISVYuQi5ERTIyNTogQXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uIHwgQ2xpZW50IGlzIGF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbgoqLwpsaWJyYXJ5IEhJVkI5RFRMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIENvbW1vbgppbmNsdWRlIEhJVkNvbmNlcHRzIGNhbGxlZCBDb25jZXB0cwppbmNsdWRlIEhJVkNvbmZpZyBjYWxsZWQgQ29uZmlnCmluY2x1ZGUgSElWRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIEVsZW1lbnRzCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQovLyBJbmNsdWRlZCBmb3IgUGxhbkRlZmluaXRpb24KaW5jbHVkZSBXSE9Db25jZXB0cyBjYWxsZWQgV0N4CmluY2x1ZGUgV0hPRW5jb3VudGVyRWxlbWVudHMgY2FsbGVkIFdFbG0KCmNvbnRleHQgUGF0aWVudAoKIC8qCiAgQGlucHV0OiAiSElWIHN0YXR1cyBuZWdhdGl2ZSBvciB1bmtub3duIgogIEBwc2V1ZG9jb2RlOiAiSElWIHN0YXR1cyIgSU4gJ0hJVi1uZWdhdGl2ZScsICdVbmtub3duJwogICovCmRlZmluZSAiSElWIHN0YXR1cyBuZWdhdGl2ZSBvciB1bmtub3duIjoKICBleGlzdHMoRWxlbWVudHMuIkhJViBzdGF0dXMiIFMKICAgIHdoZXJlIFMgaW4geyBDb25jZXB0cy4iSElWLW5lZ2F0aXZlIiwgQ29uY2VwdHMuIlVua25vd24iIH0pIAoKIC8qCiAgQGlucHV0OiAiUGFydG5lciBISVYgcmVwb3J0ZWQgcG9zaXRpdmUiCiAgQHBzZXVkb2NvZGU6ICJQYXJ0bmVyIEhJViBzdGF0dXMgKHJlcG9ydGVkKSI9J0hJVi1wb3NpdGl2ZScKICAqLwpkZWZpbmUgIlBhcnRuZXIgSElWIHBvc2l0aXZlIjoKICBleGlzdHMoRWxlbWVudHMuIlBhcnRuZXIgSElWIHN0YXR1cyByZXBvcnRlZCBPYnNlcnZhdGlvbiIgTwogICAgd2hlcmUgTy52YWx1ZSB+IENvbmNlcHRzLiJISVYtcG9zaXRpdmUiKQoKIC8qCiAgQGlucHV0OiAiU2V4IHBhcnRuZXIncyBISVYgdHJlYXRtZW50IHN0YXR1cyBpcyBwYXJ0bmVyIG5vdCB2aXJhbGx5IHN1cHByZXNzZWQiCiAgQHBzZXVkb2NvZGU6ICJTZXggcGFydG5lcidzIEhJViB0cmVhdG1lbnQgc3RhdHVzIj0nUGFydG5lciBpcyBub3QgdmlyYWxseSBzdXBwcmVzc2VkJwogICovCmRlZmluZSAiU2V4IHBhcnRuZXIncyBISVYgdHJlYXRtZW50IHN0YXR1cyBpcyBwYXJ0bmVyIG5vdCB2aXJhbGx5IHN1cHByZXNzZWQiOgogIGV4aXN0cyhFbGVtZW50cy4iU2V4IHBhcnRuZXJzIEhJViB0cmVhdG1lbnQgc3RhdHVzIE9ic2VydmF0aW9uIiBPCiAgICB3aGVyZSBPLnZhbHVlIH4gQ29uY2VwdHMuIlBhcnRuZXIgaXMgbm90IHZpcmFsbHkgc3VwcHJlc3NlZCIpCgogLyoKICBAaW5wdXQ6ICJISVYgYnVyZGVuIG9mIHNldHRpbmcgaXMgaGlnaCBISVYgYnVyZGVuIHNldHRpbmciCiAgQHBzZXVkb2NvZGU6ICJISVYgYnVyZGVuIG9mIHRoZSBzZXR0aW5nIj0nSGlnaCBISVYgYnVyZGVuIHNldHRpbmcnCiAgKi8KZGVmaW5lICJISVYgYnVyZGVuIG9mIHNldHRpbmcgaXMgaGlnaCBISVYgYnVyZGVuIHNldHRpbmciOgogIENvbmZpZy4iSElWIGJ1cmRlbiBvZiBzZXR0aW5nIiB+IENvbmNlcHRzLiJIaWdoIEhJViBidXJkZW4gc2V0dGluZyIKCiAvKgogIEBpbnB1dDogIkhJViBidXJkZW4gb2Ygc2V0dGluZyBpcyBsb3cgSElWIGJ1cmRlbiBzZXR0aW5nIgogIEBwc2V1ZG9jb2RlOiAiSElWIGJ1cmRlbiBvZiB0aGUgc2V0dGluZyI9J0xvdyBISVYgYnVyZGVuIHNldHRpbmcnCiAgKi8KZGVmaW5lICJISVYgYnVyZGVuIG9mIHNldHRpbmcgaXMgbG93IEhJViBidXJkZW4gc2V0dGluZyI6CiAgQ29uZmlnLiJISVYgYnVyZGVuIG9mIHNldHRpbmciIH4gQ29uY2VwdHMuIkxvdyBISVYgYnVyZGVuIHNldHRpbmciCgogLyoKICBAaW5wdXQ6ICJLZXkgcG9wdWxhdGlvbiBtZW1iZXIiCiAgQHBzZXVkb2NvZGU6ICJLZXkgcG9wdWxhdGlvbiBtZW1iZXIiID0gVFJVRQogICovCmRlZmluZSAiS2V5IHBvcHVsYXRpb24gbWVtYmVyIjoKICBleGlzdHMoRWxlbWVudHMuIktleSBwb3B1bGF0aW9uIG1lbWJlciBCLkRFNDkgT2JzZXJ2YXRpb24iIE8KICAgIHdoZXJlIE8udmFsdWUgaXMgdHJ1ZSkKCiAvKgogIEBpbnB1dDogIkN1cnJlbnRseSBwcmVnbmFudCIKICBAcHNldWRvY29kZTogIkN1cnJlbnRseSBwcmVnbmFudCI9VHJ1ZQogICovCmRlZmluZSAiQ3VycmVudGx5IHByZWduYW50IjoKICBleGlzdHMoV0VsbS4iUHJlZ25hbnQgT2JzZXJ2YXRpb24iKQoKIC8qCiAgQGlucHV0OiAiVEIgZGlhZ25vc2lzIHJlc3VsdCBpcyBkaWFnbm9zZWQgVEIiCiAgQHBzZXVkb2NvZGU6ICJDdXJyZW50bHkgcHJlZ25hbnQiPVRydWUKICAqLwpkZWZpbmUgIlRCIGRpYWdub3NpcyByZXN1bHQgaXMgZGlhZ25vc2VkIFRCIjoKICBleGlzdHMoRWxlbWVudHMuIlRCIGRpYWdub3NpcyByZXN1bHQgT2JzZXJ2YXRpb24iIE8KICAgIHdoZXJlIE8udmFsdWUgfiBDb25jZXB0cy4iRGlhZ25vc2VkIFRCIikKCiAvKgogIEBpbnB1dDogIlByZXN1bXB0aXZlIFRCIgogIEBwc2V1ZG9jb2RlOiAiUHJlc3VtcHRpdmUgVEIiPVRydWUKICAqLwpkZWZpbmUgIlByZXN1bXB0aXZlIFRCIjoKICBleGlzdHMoRWxlbWVudHMuIlByZXN1bXB0aXZlIFRCIEQuREUyODIgT2JzZXJ2YXRpb24iIE8KICAgIHdoZXJlIE8udmFsdWUgaXMgdHJ1ZSkKCi8qCiAgQGlucHV0OiAiQ3VycmVudGx5IG9uIFByRVAiCiAgQHBzZXVkb2NvZGU6ICJDdXJyZW50bHkgb24gUHJFUCI9VHJ1ZQogICovCmRlZmluZSAiQ3VycmVudGx5IG9uIFByRVAiOgogIGV4aXN0cyhFbGVtZW50cy4iQ3VycmVudGx5IG9uIFByRVAiIE8KICAgIHdoZXJlIE8udmFsdWUgaXMgdHJ1ZSkKCiAvKgogIEBpbnB1dDogIkF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiIKICBAcHNldWRvY29kZTogIkF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiI9VHJ1ZQogICovCmRlZmluZSAiQXQgZWxldmF0ZWQgcmlzayBmb3IgSElWIGFjcXVpc2l0aW9uIjoKICBleGlzdHMoRWxlbWVudHMuIkF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiIgTwogICAgd2hlcmUgTy52YWx1ZSBpcyB0cnVlKQoKIC8qCiAgQG91dHB1dDogIlNjaGVkdWxlIGFuIGFubnVhbCBmb2xsb3ctdXAgdGVzdCIKICBAcHNldWRvY29kZTogIkZvbGxvdy11cCB0ZXN0IHJlY29tbWVuZGVkIGRhdGUiID0gIlZpc2l0IGRhdGUiICsgMSB5ZWFyCiAgKi8KZGVmaW5lICJTY2hlZHVsZSBhbiBhbm51YWwgZm9sbG93LXVwIHRlc3QiOgogICJISVYgc3RhdHVzIG5lZ2F0aXZlIG9yIHVua25vd24iIGFuZAogICAgY2FzZQogICAgd2hlbiAiUGFydG5lciBoYXMgSElWIGFuZCBpcyBub3QgdmlyYWxseSBzdXBwcmVzc2VkIgogICAgICB0aGVuIHRydWUKICAgIHdoZW4gIkhJViBidXJkZW4gb2Ygc2V0dGluZyBpcyBoaWdoIEhJViBidXJkZW4gc2V0dGluZyIKICAgICAgdGhlbiB0cnVlCiAgICB3aGVuICJLZXkgcG9wdWxhdGlvbiBtZW1lYmVyIgogICAgICB0aGVuIHRydWUKICAgIHdoZW4gIkF0IGVsZXZhdGVkIHJpc2sgZm9yIEhJViBhY3F1aXNpdGlvbiIKICAgICAgdGhlbiB0cnVlCiAgICBlbHNlIGZhbHNlCiAgICBlbmQKCi8qCiBAb3V0cHV0OiAiRm9sbG93LXVwIHRlc3QgcmVjb21tZW5kZWQiCiBAcHNldWRvY29kZTogTi9BCiAqLwpkZWZpbmUgIkZvbGxvdy11cCB0ZXN0IHJlY29tbWVuZGVkIjoKICAiSElWIHN0YXR1cyBuZWdhdGl2ZSBvciB1bmtub3duIiBhbmQKICBjYXNlCiAgd2hlbiAiVEIgZGlhZ25vc2lzIHJlc3VsdCBpcyBkaWFnbm9zZWQgVEIiCiAgICB0aGVuIHRydWUKICB3aGVuICJQcmVzdW1wdGl2ZSBUQiIKICAgIHRoZW4gdHJ1ZQogIGVsc2UgZmFsc2UKICBlbmQKCi8qCiBAb3V0cHV0OiAiU2NoZWR1bGUgcXVhcnRlcmx5IHJldGVzdGluZyBmb3IgUHJFUCB1c2VycyIKIEBwc2V1ZG9jb2RlOiBOL0EKICovCmRlZmluZSAiU2NoZWR1bGUgcXVhcnRlcmx5IHJldGVzdGluZyBmb3IgUHJFUCB1c2VycyI6CiAgIkhJViBzdGF0dXMgbmVnYXRpdmUgb3IgdW5rbm93biIgYW5kICJDdXJyZW50bHkgb24gUHJFUCIKCi8qCiBAb3V0cHV0OiAiU2NoZWR1bGUgYW4gSElWIHRlc3QsIHN5cGhpbGlzIHRlc3QsIGhlcGF0aXRpcyBCIHRlc3QgYXMgZWFybHkgYXMgcG9zc2libGUgZHVyaW5nIHRoaXMgcHJlZ25hbmN5IgogQHBzZXVkb2NvZGU6IE4vQQogKi8KZGVmaW5lICJTY2hlZHVsZSBhbiBISVYgdGVzdCwgc3lwaGlsaXMgdGVzdCwgaGVwYXRpdGlzIEIgdGVzdCBhcyBlYXJseSBhcyBwb3NzaWJsZSBkdXJpbmcgdGhpcyBwcmVnbmFuY3kiOgogICJQcmVnbmFudCBpbiBoaWdoIEhJViBidXJkZW4gc2V0dGluZyIKCi8qCiBAb3V0cHV0OiAiU2NoZWR1bGUgYSAnRm9sbG93LXVwIHRlc3QgcmVjb21tZW5kZWQgZGF0ZSBkdXJpbmcgYSB0aGlyZCB0cmltZXN0ZXIgdmlzaXQiCiBAcHNldWRvY29kZTogTi9BCiAqLwpkZWZpbmUgIlNjaGVkdWxlIGEgJ0ZvbGxvdy11cCB0ZXN0IHJlY29tbWVuZGVkIGRhdGUnIGR1cmluZyBhIHRoaXJkIHRyaW1lc3RlciB2aXNpdCI6CiAgIlByZWduYW50IGluIGhpZ2ggSElWIGJ1cmRlbiBzZXR0aW5nIgoKLyoKIEBvdXRwdXQ6ICJTY2hlZHVsZSBhICdGb2xsb3ctdXAgdGVzdCByZWNvbW1lbmRlZCBkYXRlIGR1cmluZyBhIHRoaXJkIHRyaW1lc3RlciB2aXNpdCIKIEBwc2V1ZG9jb2RlOiBOL0EKICovCmRlZmluZSAiU2NoZWR1bGUgYSAnRm9sbG93LXVwIHRlc3QgcmVjb21tZW5kZWQgZGF0ZScgYXQgZmlyc3QgQU5DIGNvbnRhY3QgZGF0ZSI6CiAgIlByZWduYW50IGluIGxvdyBISVYgYnVyZGVuIHNldHRpbmciIGFuZCAKICBjYXNlCiAgd2hlbiAiS2V5IHBvcHVsYXRpb24gbWVtYmVyIjoKICAgIHRoZW4gdHJ1ZQogIHdoZW4gIlBhcnRuZXIgaGFzIEhJViBhbmQgaXMgbm90IHZpcmFsbHkgc3VwcHJlc3NlZCI6CiAgICB0aGVuIHRydWUKICB3aGVuICJBdCBlbGV2YXRlZCByaXNrIGZvciBISVYgYWNxdWlzaXRpb24iCiAgICB0aGVuIHRydWUKICBlbHNlIGZhbHNlCiAgZW5kCgovKgogQGR5bmFtaWNWYWx1ZTogR3VpZGFuY2UKICovCmRlZmluZSAiR3VpZGFuY2UiOgogIGNhc2UKICB3aGVuICJTY2hlZHVsZSBhbiBhbm51YWwgZm9sbG93LXVwIHRlc3QiCiAgICB0aGVuICIiIlNjaGVkdWxlIGFuIGFubnVhbCBmb2xsb3ctdXAgdGVzdC4gIAoKV0hPIGd1aWRhbmNlIHJlY29tbWVuZHMgYW5udWFsIHJldGVzdGluZyBmb3IgcGVvcGxlIHdobyBoYXZlIG9uZ29pbmcgSElWLXJlbGF0ZWQgcmlza3MgaW4gYWxsIHNldHRpbmdzLiBUaGVzZSBpbmNsdWRlIHBlb3BsZSB3aXRoIGEga25vd24gSElWLXBvc2l0aXZlIHBhcnRuZXIgd2hvIGlzIG5vdCB2aXJhbGx5IHN1cHByZXNzZWQgb24gQVJULiIiIgogIHdoZW4gIkZvbGxvdy11cCB0ZXN0IHJlY29tbWVuZGVkIgogICAgdGhlbiAiIiJSZWNvbW1lbmQgYSBmb2xsb3ctdXAgdGVzdC4gIAoKSW4gY2VydGFpbiBjb25kaXRpb25zIGFuZCBzaXR1YXRpb25zLCBpbmRpdmlkdWFscyB3aG8gaGF2ZSBiZWVuIHRlc3RlZCBmb3IgSElWIGluIHRoZSBwYXN0IGNhbiBiZSBhZHZpc2VkIHRvIHJldGVzdC4gVGhlc2UgaW5jbHVkZTogCiogSW5kaXZpZHVhbHMgcHJlc2VudGluZyB3aXRoIGEgZGlhZ25vc2lzIG9yIHJlY2VpdmluZyB0cmVhdG1lbnQgZm9yIFNUSXMgb3IgdmlyYWwgaGVwYXRpdGlzLCAKKiBJbmRpdmlkdWFscyB3aXRoIGEgY29uZmlybWVkIG9yIHByZXN1bXB0aXZlIFRCIGRpYWdub3NpcywgCiogT3V0cGF0aWVudHMgcHJlc2VudGluZyB3aXRoIGNsaW5pY2FsIGNvbmRpdGlvbnMgb3Igc3ltcHRvbXMgaW5kaWNhdGl2ZSBvZiBISVYsIGluZGl2aWR1YWxzIHdpdGggcmVjZW50IEhJViByaXNrIGV4cG9zdXJlLiIiIgogIHdoZW4gIlNjaGVkdWxlIHF1YXJ0ZXJseSByZXRlc3RpbmcgZm9yIFByRVAgdXNlcnMiCiAgICB0aGVuICIiIlNjaGVkdWxlIHF1YXJ0ZXJseSByZXRlc3RpbmcgZm9yIFByRVAgdXNlcnMuIiIiCiAgd2hlbiAiU2NoZWR1bGUgYW4gSElWIHRlc3QsIHN5cGhpbGlzIHRlc3QsIGhlcGF0aXRpcyBCIHRlc3QgYXMgZWFybHkgYXMgcG9zc2libGUgZHVyaW5nIHRoaXMgcHJlZ25hbmN5IgogICAgdGhlbiAiIiJTY2hlZHVsZSBhbiBISVYgdGVzdCwgc3lwaGlsaXMgdGVzdCwgaGVwYXRpdGlzIEIgdGVzdCBhcyBlYXJseSBhcyBwb3NzaWJsZSBkdXJpbmcgdGhpcyBwcmVnbmFuY3kKCkFsbCBwcmVnbmFudCB3b21lbiBzaG91bGQgYmUgdGVzdGVkIGZvciBISVYgYXMgd2VsbCBhcyBzeXBoaWxpcyBhbmQgaGVwYXRpdGlzIEIgdmlydXMgYXQgbGVhc3Qgb25jZSBhbmQgYXMgZWFybHkgYXMgcG9zc2libGUgZHVyaW5nIHByZWduYW5jeS4iIiIKICB3aGVuICJTY2hlZHVsZSBhICdGb2xsb3ctdXAgdGVzdCByZWNvbW1lbmRlZCBkYXRlJyBhdCBmaXJzdCBBTkMgY29udGFjdCBkYXRlIjoKICAgIHRoZW4gIiIiSW4gbG93IEhJViBidXJkZW4gc2V0dGluZ3MsIHJldGVzdGluZyBhbGwgcHJlZ25hbnQgd29tZW4gaXMgbm90IHdhcnJhbnRlZCB1bmxlc3MgZm9jdXNlZCBhbW9uZyB3b21lbiBmcm9tIGtleSBwb3B1bGF0aW9ucyBvciBhdCBoaWdoIG9uZ29pbmcgcmlzaywgc3VjaCBhcyB0aG9zZSBmcm9tIGtleSBwb3B1bGF0aW9ucyBvciB3aXRoIHBhcnRuZXJzIHdpdGggSElWIHdobyBhcmUgbm90IHZpcmFsbHkgc3VwcHJlc3NlZC4gQ291bnRyaWVzIGNvdWxkIGNvbnNpZGVyIG9uZSBhZGRpdGlvbmFsIHJldGVzdCBpbiB0aGUgcG9zdC1wYXJ0dW0gcGVyaW9kLCBzdWNoIGFzIGF0IDE0IHdlZWtzLCBzaXggbW9udGhzIG9yIG5pbmUgbW9udGhzIGZvciB3b21lbiBpbiBoaWdoIEhJViBidXJkZW4gb3IgaW5jaWRlbmNlIGRpc3RyaWN0cyBvciBwcm92aW5jZXMsIGtleSBwb3B1bGF0aW9ucyBvciB3b21lbiB3aXRoIHBhcnRuZXJzIHdpdGggSElWIHdobyBhcmUgbm90IHZpcmFsbHkgc3VwcHJlc3NlZC4iIiIKICBlbHNlIG51bGwKICBlbmQKCi8qCiBAZHluYW1pY1ZhbHVlOiAiRGF0ZSB0byBzY2hlZHVsZSIKICovCmRlZmluZSAiU2NoZWR1bGUgRm9sbG93LXVwIERhdGUiCiAgY2FzZQogIHdoZW4gIlNjaGVkdWxlIGFuIGFubnVhbCBmb2xsb3ctdXAgdGVzdCI6CiAgICB0aGVuIFRvZGF5ICsgMSB5ZWFycwogIHdoZW4gIlNjaGVkdWxlIHF1YXJ0ZXJseSByZXRlc3RpbmcgZm9yIFByRVAgdXNlcnMiOgogICAgdGhlbiBUb2RheSArIDMgbW9udGhzCiAgZWxzZSBudWxsCiAgZW5kCgovLyBIZWxwZXIgTG9naWMKZGVmaW5lICJQcmVnbmFudCBpbiBoaWdoIEhJViBidXJkZW4gc2V0dGluZyI6CiAgIkhJViBzdGF0dXMgbmVnYXRpdmUgb3IgdW5rbm93biIgYW5kCiAgIkhJViBidXJkZW4gb2Ygc2V0dGluZyBpcyBoaWdoIEhJViBidXJkZW4gc2V0dGluZyIgYW5kCiAgIkN1cnJlbnRseSBwcmVnbmFudCIKCmRlZmluZSAiUHJlZ25hbnQgaW4gbG93IEhJViBidXJkZW4gc2V0dGluZyI6CiAgIkhJViBzdGF0dXMgbmVnYXRpdmUgb3IgdW5rbm93biIgYW5kCiAgIkhJViBidXJkZW4gb2Ygc2V0dGluZyBpcyBsb3cgSElWIGJ1cmRlbiBzZXR0aW5nIiBhbmQKICAiQ3VycmVudGx5IHByZWduYW50IgoKZGVmaW5lICJQYXJ0bmVyIGhhcyBISVYgYW5kIGlzIG5vdCB2aXJhbGx5IHN1cHByZXNzZWQiOgogICJQYXJ0bmVyIEhJViBwb3NpdGl2ZSIgYW5kICJTZXggcGFydG5lcidzIEhJViB0cmVhdG1lbnQgc3RhdHVzIGlzIHBhcnRuZXIgbm90IHZpcmFsbHkgc3VwcHJlc3NlZCIKCg=="^^xsd:base64Binary ]
  ] [
fhir:contentType [ fhir:v "application/elm+xml" ]
  ] ) . #