SMART DAK Cervical Cancer Screening
0.0.1 - ci-build
SMART DAK Cervical Cancer Screening, published by Dan Heslinga (independent contributor). This guide is not an authorized publication; it is the continuous build for version 0.0.1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/dhes/smart-dak-cxca/ and changes regularly. See the Directory of published versions
| Draft as of 2026-05-14 |
<PlanDefinition xmlns="http://hl7.org/fhir">
<id value="CXCAD2DTScreeningEligibility"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-recommendationdefinition"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">CXCAD2DTScreeningEligibility</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="PlanDefinition-CXCAD2DTScreeningEligibility.html">CXCA.D2.DT — Cervical Cancer Screening Eligibility</a></td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.0.1</td>
</tr>
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">CXCA.D2.DT — Cervical Cancer Screening Eligibility</td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</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://terminology.hl7.org/7.1.0/CodeSystem-plan-definition-type.html">http://terminology.hl7.org/CodeSystem/plan-definition-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>eca-rule</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2026-05-14 00:50:23+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">Dan Heslinga (independent contributor)</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>Decision support recommendation for cervical cancer screening eligibility (CXCA.D2). Evaluates the rules from Mongolia MOH Order A/641 (2020) section 2.2 via the CXCAD2DTScreeningEligibilityLogic CQL library; when the client is due, recommends instantiating the CXCAD2HPVScreeningServiceRequest ActivityDefinition.</p>
</div></td>
</tr>
<tr>
<th scope="row"><b>Libraries: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td><a href="Library-CXCAD2DTScreeningEligibilityLogic.html">CXCAD2DTScreeningEligibilityLogic</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<th scope="row"><b>Actions: </b></th>
<td style="padding-left: 4px;">
<table class="grid-dict">
<tr>
<td>
<b> Recommend HPV high-risk DNA screening (client is due):</b> Client is at the binding target age (35 or 45 per A/641 section 2.2), has not had a hysterectomy, and has not been screened in the current cycle. Create a proposed ServiceRequest for HPV high-risk DNA testing.
<br/>
<b>If:</b>
<i>Applicability:</i>
<i>(Client is due for HPV screening (legal binding))</i>
<br/>
<b>Then:</b> <i>Definition:</i> <a href="ActivityDefinition-CXCAD2HPVScreeningServiceRequest.html">CXCAD2 — HPV Screening Service Request</a><br/>
</td>
</tr>
<tr>
<td>
<b> Defer screening — client already screened in current cycle:</b> Client is at a binding target age but has had a recent valid HPV screening result. Per A/641 section 2.2 they are not due for re-screening at this encounter. Inform the client of their next due date.
<br/>
<b>If:</b>
<i>Applicability:</i>
<i>(Client not due — already screened in current cycle (legal binding))</i>
<br/>
</td>
</tr>
<tr>
<td>
<b> Defer screening — client outside binding target age range:</b> Client is not at a binding target age (35 or 45 per A/641 section 2.2 for HPV-test-capable facilities). Note: cytology-only facilities follow a different age cycle (30, 33, 36, ..., 60 every 3 years per A/641 section 2.2 cytology pathway) — see the separate cytology-pathway PlanDefinition (deferred to a future Phase 5 chunk).
<br/>
<b>If:</b>
<i>Applicability:</i>
<i>(Client excluded — outside target age range (legal binding))</i>
<br/>
</td>
</tr>
<tr>
<td>
<b> Exclude from screening — prior hysterectomy:</b> Client has had a hysterectomy. Per A/641 section 2.2, women who have had a hysterectomy for non-cervical-cancer indication and who have a documented negative post-operative vaginal-smear cytology are exempt from cervical cancer screening. Verify the indication and the post-operative cytology status before fully excluding.
<br/>
<b>If:</b>
<i>Applicability:</i>
<i>(Client excluded — prior hysterectomy (legal binding))</i>
<br/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<contained>
<Library>
<id value="effective-data-requirements"/>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString value="Client age"/>
</extension>
<extension url="statement">
<valueString
value="// =============================================================================
// Helper definitions
// =============================================================================
/*
* Client age in years at the encounter date.
*/
define "Client age":
AgeInYearsAt(Today)"/>
</extension>
<extension url="displaySequence">
<valueInteger value="0"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString value="Client is at binding target age (35 or 45)"/>
</extension>
<extension url="statement">
<valueString
value="/*
* The client is at one of the binding target ages per A/641 section 2.2
* (HPV-test-capable facilities: ages 35 and 45 only).
*/
define "Client is at binding target age (35 or 45)":
"Client age" = 35 or "Client age" = 45"/>
</extension>
<extension url="displaySequence">
<valueInteger value="1"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAElements"/>
</extension>
<extension url="name">
<valueString value="Hysterectomy Procedures"/>
</extension>
<extension url="statement">
<valueString
value="// =============================================================================
// Hysterectomy history
// =============================================================================
/*
* @internal: All recorded hysterectomy procedures for this patient,
* filtered to status = completed.
*/
define "Hysterectomy Procedures":
[Procedure] P
where P.status = 'completed'
and exists (P.code.coding C where C.code = 'DE45'
and C.system = 'http://smart.who.int/cxca/CodeSystem/CXCA.D')"/>
</extension>
<extension url="displaySequence">
<valueInteger value="2"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAElements"/>
</extension>
<extension url="name">
<valueString value="Has Had Hysterectomy"/>
</extension>
<extension url="statement">
<valueString
value="/*
* The patient has a documented completed hysterectomy.
*
* NOTE: A/641 section 2.2 only excludes hysterectomy for non-cervical-cancer indication
* with a documented negative post-op vaginal-smear cytology. This define
* captures only the hysterectomy fact; the indication and post-op cytology
* checks live in higher-layer logic that combines this define with others.
*/
define "Has Had Hysterectomy":
exists "Hysterectomy Procedures""/>
</extension>
<extension url="displaySequence">
<valueInteger value="3"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString
value="Client is due for HPV screening (legal binding)"/>
</extension>
<extension url="statement">
<valueString
value="// =============================================================================
// Legal-binding eligibility tree — A/641 section 2.2 (HPV at ages 35 and 45)
// Bindingness: legal
// =============================================================================
/*
* @output: CXCA.D#DE4 "Due for HPV screening"
* @bindingness: legal
* Client is due if at a binding target age, has not had a hysterectomy,
* and has not been screened in the current cycle.
*/
define "Client is due for HPV screening (legal binding)":
"Client is at binding target age (35 or 45)"
and not Elements."Has Had Hysterectomy"
and not "HasRecentHPVScreening""/>
</extension>
<extension url="displaySequence">
<valueInteger value="4"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString
value="Client excluded — prior hysterectomy (legal binding)"/>
</extension>
<extension url="statement">
<valueString
value="/*
* @output: CXCA.D#DE7 "Excluded — prior hysterectomy"
* @bindingness: legal
* Client has had a hysterectomy for non-cervical-cancer indication and is
* therefore exempt from cervical cancer screening per A/641 section 2.2.
*/
define "Client excluded — prior hysterectomy (legal binding)":
Elements."Has Had Hysterectomy""/>
</extension>
<extension url="displaySequence">
<valueInteger value="5"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString
value="Client excluded — outside target age range (legal binding)"/>
</extension>
<extension url="statement">
<valueString
value="/*
* @output: CXCA.D#DE6 "Excluded — outside target age range"
* @bindingness: legal
* Client is not at a binding target age (35 or 45 only for HPV-capable facilities).
*/
define "Client excluded — outside target age range (legal binding)":
not "Client is at binding target age (35 or 45)"
and not Elements."Has Had Hysterectomy""/>
</extension>
<extension url="displaySequence">
<valueInteger value="6"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="CXCAD2DTScreeningEligibilityLogic"/>
</extension>
<extension url="name">
<valueString
value="Client not due — already screened in current cycle (legal binding)"/>
</extension>
<extension url="statement">
<valueString
value="/*
* @output: CXCA.D#DE5 "Not due — already screened in current cycle"
* @bindingness: legal
* Client is at a target age but has had a recent valid HPV screening result.
*/
define "Client not due — already screened in current cycle (legal binding)":
"Client is at binding target age (35 or 45)"
and "HasRecentHPVScreening"
and not Elements."Has Had Hysterectomy""/>
</extension>
<extension url="displaySequence">
<valueInteger value="7"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value ProcedureStatus): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="8"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value string): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="9"/>
</extension>
</extension>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-logicDefinition">
<extension url="libraryName">
<valueString value="FHIRHelpers"/>
</extension>
<extension url="name">
<valueString value="ToString"/>
</extension>
<extension url="statement">
<valueString
value="define function ToString(value uri): value.value"/>
</extension>
<extension url="displaySequence">
<valueInteger value="10"/>
</extension>
</extension>
<name value="EffectiveDataRequirements"/>
<status value="active"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="module-definition"/>
</coding>
</type>
<relatedArtifact>
<type value="depends-on"/>
<display value="FHIR model information"/>
<resource
value="http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library Elements"/>
<resource value="http://smart.who.int/cxca/Library/CXCAElements"/>
</relatedArtifact>
<relatedArtifact>
<type value="depends-on"/>
<display value="Library FHIRHelpers"/>
<resource
value="http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"/>
</relatedArtifact>
<parameter>
<name value="Today"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="date"/>
</parameter>
<parameter>
<name value="HasRecentHPVScreening"/>
<use value="in"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client is due for HPV screening (legal binding)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name value="Client excluded — prior hysterectomy (legal binding)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Client excluded — outside target age range (legal binding)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<parameter>
<name
value="Client not due — already screened in current cycle (legal binding)"/>
<use value="out"/>
<min value="0"/>
<max value="1"/>
<type value="boolean"/>
</parameter>
<dataRequirement>
<type value="Patient"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Patient"/>
</dataRequirement>
<dataRequirement>
<type value="Procedure"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
<mustSupport value="status"/>
<mustSupport value="code"/>
<mustSupport value="code.coding"/>
</dataRequirement>
<dataRequirement>
<type value="Procedure"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
<mustSupport value="status"/>
<mustSupport value="code"/>
<mustSupport value="code.coding"/>
</dataRequirement>
<dataRequirement>
<type value="Procedure"/>
<profile value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
<mustSupport value="status"/>
<mustSupport value="code"/>
<mustSupport value="code.coding"/>
</dataRequirement>
</Library>
</contained>
<extension
url="http://smart.who.int/cxca/StructureDefinition/cxca-bindingness">
<valueCoding>
<system value="http://smart.who.int/cxca/CodeSystem/CXCA.Bindingness"/>
<code value="legal"/>
<display value="Legal — binding regulatory instrument"/>
</valueCoding>
</extension>
<extension
url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-effectiveDataRequirements">
<valueCanonical value="#effective-data-requirements"/>
</extension>
<url
value="http://smart.who.int/cxca/PlanDefinition/CXCAD2DTScreeningEligibility"/>
<version value="0.0.1"/>
<name value="CXCAD2DTScreeningEligibility"/>
<title value="CXCA.D2.DT — Cervical Cancer Screening Eligibility"/>
<type>
<coding>
<system
value="http://terminology.hl7.org/CodeSystem/plan-definition-type"/>
<code value="eca-rule"/>
</coding>
</type>
<status value="draft"/>
<experimental value="false"/>
<date value="2026-05-14T00:50:23+00:00"/>
<publisher value="Dan Heslinga (independent contributor)"/>
<contact>
<name value="Dan Heslinga (independent contributor)"/>
<telecom>
<system value="url"/>
<value value="https://github.com/dhes"/>
</telecom>
</contact>
<description
value="Decision support recommendation for cervical cancer screening eligibility (CXCA.D2). Evaluates the rules from Mongolia MOH Order A/641 (2020) section 2.2 via the CXCAD2DTScreeningEligibilityLogic CQL library; when the client is due, recommends instantiating the CXCAD2HPVScreeningServiceRequest ActivityDefinition."/>
<library
value="http://smart.who.int/cxca/Library/CXCAD2DTScreeningEligibilityLogic"/>
<action>
<title value="Recommend HPV high-risk DNA screening (client is due)"/>
<description
value="Client is at the binding target age (35 or 45 per A/641 section 2.2), has not had a hysterectomy, and has not been screened in the current cycle. Create a proposed ServiceRequest for HPV high-risk DNA testing."/>
<condition>
<kind value="applicability"/>
<expression>
<language value="text/cql-identifier"/>
<expression value="Client is due for HPV screening (legal binding)"/>
</expression>
</condition>
<definitionCanonical
value="http://smart.who.int/cxca/ActivityDefinition/CXCAD2HPVScreeningServiceRequest"/>
</action>
<action>
<title
value="Defer screening — client already screened in current cycle"/>
<description
value="Client is at a binding target age but has had a recent valid HPV screening result. Per A/641 section 2.2 they are not due for re-screening at this encounter. Inform the client of their next due date."/>
<condition>
<kind value="applicability"/>
<expression>
<language value="text/cql-identifier"/>
<expression
value="Client not due — already screened in current cycle (legal binding)"/>
</expression>
</condition>
</action>
<action>
<title value="Defer screening — client outside binding target age range"/>
<description
value="Client is not at a binding target age (35 or 45 per A/641 section 2.2 for HPV-test-capable facilities). Note: cytology-only facilities follow a different age cycle (30, 33, 36, ..., 60 every 3 years per A/641 section 2.2 cytology pathway) — see the separate cytology-pathway PlanDefinition (deferred to a future Phase 5 chunk)."/>
<condition>
<kind value="applicability"/>
<expression>
<language value="text/cql-identifier"/>
<expression
value="Client excluded — outside target age range (legal binding)"/>
</expression>
</condition>
</action>
<action>
<title value="Exclude from screening — prior hysterectomy"/>
<description
value="Client has had a hysterectomy. Per A/641 section 2.2, women who have had a hysterectomy for non-cervical-cancer indication and who have a documented negative post-operative vaginal-smear cytology are exempt from cervical cancer screening. Verify the indication and the post-operative cytology status before fully excluding."/>
<condition>
<kind value="applicability"/>
<expression>
<language value="text/cql-identifier"/>
<expression
value="Client excluded — prior hysterectomy (legal binding)"/>
</expression>
</condition>
</action>
</PlanDefinition>