Advance Directives Section¶
Template ID: 2.16.840.1.113883.10.20.22.2.21.1
Version: 2015-08-01 (R2.1 | R2.0)
Badge: Extended Section
Overview¶
The Advance Directives Section (entries required) contains advance directive data and references to supporting documentation. Advance directives are legal documents that record a person's wishes about life-sustaining medical treatment in the event they become unable to make decisions for themselves.
This section includes: - Living Wills: Instructions about life-sustaining treatment - Healthcare Proxies/Power of Attorney: Designated decision-makers - Resuscitation Status: Do Not Resuscitate (DNR), Do Not Intubate (DNI), Full Code - Organ Donation: Organ and tissue donation preferences - POLST/MOLST: Physician/Medical Orders for Life-Sustaining Treatment
Understanding and respecting advance directives is essential for patient-centered care and honoring patient autonomy.
Template Details¶
Identifiers¶
- Root:
2.16.840.1.113883.10.20.22.2.21.1 - Extension:
2015-08-01 - LOINC Code:
42348-3(Advance Directives)
Conformance Requirements¶
- MAY contain
@nullFlavor="NI"if no information available (CONF:1198-32800) - SHALL contain exactly one [1..1]
templateId(CONF:1198-30227) - SHALL contain exactly one [1..1]
codewith code="42348-3" from LOINC (CONF:1198-32929) - SHALL contain exactly one [1..1]
title(CONF:1198-32932) - SHALL contain exactly one [1..1]
text(narrative block) (CONF:1198-32933) - If
@nullFlavornot present, SHALL contain at least one [1..*]entry(CONF:1198-30235) - Each
entrySHALL contain Advance Directive Observation (CONF:1198-30236, 32881)
Cardinality¶
- Section: Optional
- Entries: Required if not using nullFlavor (1..*)
- Advance Directive Observations: One per entry
Protocol Requirements¶
The section uses the AdvanceDirectiveProtocol from ccdakit.protocols.advance_directive:
Required Properties¶
@property
def directive_type(self) -> str:
"""Type: 'Resuscitate', 'Do Not Resuscitate', 'Living Will', etc."""
@property
def directive_value(self) -> str:
"""Detailed directive: 'Full code', 'No intubation', etc."""
Optional Properties¶
@property
def directive_type_code(self) -> Optional[str]:
"""Code for directive type (SNOMED CT or LOINC)"""
@property
def directive_type_code_system(self) -> Optional[str]:
"""Code system for directive type code"""
@property
def directive_value_code(self) -> Optional[str]:
"""Code for directive value (typically SNOMED CT)"""
@property
def directive_value_code_system(self) -> Optional[str]:
"""Code system for directive value code"""
@property
def start_date(self) -> Optional[date]:
"""Date when advance directive becomes effective"""
@property
def end_date(self) -> Optional[date]:
"""Date when advance directive ends or expires"""
@property
def custodian_name(self) -> Optional[str]:
"""Name of healthcare agent/proxy/custodian"""
@property
def custodian_relationship(self) -> Optional[str]:
"""Relationship to patient: 'Spouse', 'Child', 'Attorney', etc."""
@property
def custodian_relationship_code(self) -> Optional[str]:
"""Code for custodian relationship"""
@property
def custodian_phone(self) -> Optional[str]:
"""Contact phone number for custodian"""
@property
def custodian_address(self) -> Optional[str]:
"""Address of custodian"""
@property
def verifier_name(self) -> Optional[str]:
"""Name of clinician who verified the directive"""
@property
def verification_date(self) -> Optional[date]:
"""Date when directive was verified"""
@property
def document_id(self) -> Optional[str]:
"""Identifier for the advance directive document"""
@property
def document_url(self) -> Optional[str]:
"""URL reference to the advance directive document"""
@property
def document_description(self) -> Optional[str]:
"""Description of the advance directive document"""
Code Example¶
Basic Usage¶
from datetime import date
from ccdakit import AdvanceDirectivesSection, CDAVersion
# Define advance directives
directives = [
{
"directive_type": "Resuscitation Status",
"directive_value": "Do Not Resuscitate (DNR)",
"directive_type_code": "304251008",
"directive_type_code_system": "SNOMED",
"directive_value_code": "304253006",
"directive_value_code_system": "SNOMED",
"start_date": date(2023, 6, 15),
"verifier_name": "Dr. Sarah Johnson",
"verification_date": date(2024, 1, 10),
},
{
"directive_type": "Healthcare Proxy",
"directive_value": "Jane Doe is designated healthcare proxy",
"start_date": date(2023, 6, 15),
"custodian_name": "Jane Doe",
"custodian_relationship": "Spouse",
"custodian_phone": "555-123-4567",
"custodian_address": "123 Main St, Anytown, ST 12345",
}
]
# Create section
section = AdvanceDirectivesSection(
directives=directives,
version=CDAVersion.R2_1
)
# Generate XML
xml_element = section.to_element()
Section with No Information¶
# When no information is available
section = AdvanceDirectivesSection(
directives=[],
null_flavor="NI", # No information
version=CDAVersion.R2_1
)
Empty Section (No Directives on File)¶
# When patient has no advance directives
section = AdvanceDirectivesSection(
directives=[],
version=CDAVersion.R2_1
)
# Generates section with narrative: "No advance directives on file"
Comprehensive Advance Directives¶
directives = [
# DNR/DNI Status
{
"directive_type": "Resuscitation Status",
"directive_value": "Do Not Resuscitate, Do Not Intubate",
"directive_type_code": "304251008",
"directive_type_code_system": "SNOMED",
"directive_value_code": "304253006",
"directive_value_code_system": "SNOMED",
"start_date": date(2024, 1, 15),
"verifier_name": "Dr. Michael Chen",
"verification_date": date(2024, 3, 1),
},
# Living Will
{
"directive_type": "Living Will",
"directive_value": "No artificial nutrition or hydration if permanently unconscious",
"directive_type_code": "52765003",
"directive_type_code_system": "SNOMED",
"start_date": date(2023, 8, 20),
"document_id": "LW-2023-08-20-001",
"document_url": "https://example.org/documents/living-will-12345.pdf",
"custodian_name": "John Smith",
"custodian_relationship": "Attorney",
"custodian_phone": "555-987-6543",
},
# Healthcare Proxy
{
"directive_type": "Healthcare Power of Attorney",
"directive_value": "Sarah Johnson authorized to make all healthcare decisions",
"directive_type_code": "71388002",
"directive_type_code_system": "SNOMED",
"start_date": date(2023, 8, 20),
"custodian_name": "Sarah Johnson",
"custodian_relationship": "Daughter",
"custodian_relationship_code": "DAUC",
"custodian_phone": "555-234-5678",
"custodian_address": "456 Oak Ave, Anytown, ST 12345",
},
# Organ Donation
{
"directive_type": "Consent for Organ Donation",
"directive_value": "Willing to donate all organs and tissues",
"directive_type_code": "304252001",
"directive_type_code_system": "SNOMED",
"start_date": date(2023, 8, 20),
"document_id": "donor-registry-123456",
}
]
section = AdvanceDirectivesSection(directives=directives)
POLST Form¶
# Physician Orders for Life-Sustaining Treatment
polst_directive = {
"directive_type": "POLST - Medical Orders",
"directive_value": "Comfort Measures Only - DNR, no hospital transfer, "
"comfort-focused treatment only",
"directive_type_code": "304252001",
"directive_type_code_system": "SNOMED",
"start_date": date(2024, 2, 10),
"verifier_name": "Dr. Amanda Rodriguez",
"verification_date": date(2024, 2, 10),
"document_id": "POLST-2024-02-10",
"document_url": "https://example.org/polst/patient-12345.pdf",
}
section = AdvanceDirectivesSection(directives=[polst_directive])
With Document Reference¶
directive_with_doc = {
"directive_type": "Living Will",
"directive_value": "See attached living will document",
"start_date": date(2023, 5, 1),
"document_id": "LW-2023-001",
"document_url": "https://hospital.example.org/documents/living-will-patient123.pdf",
"document_description": "Living Will executed May 1, 2023",
"custodian_name": "Legal Department",
"verifier_name": "Dr. Emily White",
"verification_date": date(2024, 1, 15),
}
section = AdvanceDirectivesSection(directives=[directive_with_doc])
With Custom Protocol Implementation¶
from dataclasses import dataclass
from datetime import date
from typing import Optional
@dataclass
class AdvanceDirective:
"""Custom advance directive implementation."""
directive_type: str
directive_value: str
directive_type_code: Optional[str] = None
directive_type_code_system: Optional[str] = None
directive_value_code: Optional[str] = None
directive_value_code_system: Optional[str] = None
start_date: Optional[date] = None
end_date: Optional[date] = None
custodian_name: Optional[str] = None
custodian_relationship: Optional[str] = None
custodian_relationship_code: Optional[str] = None
custodian_phone: Optional[str] = None
custodian_address: Optional[str] = None
verifier_name: Optional[str] = None
verification_date: Optional[date] = None
document_id: Optional[str] = None
document_url: Optional[str] = None
document_description: Optional[str] = None
# Create directives
directives = [
AdvanceDirective(
directive_type="Do Not Intubate",
directive_value="Patient does not wish to be intubated",
directive_type_code="304251008",
directive_type_code_system="SNOMED",
start_date=date(2024, 1, 1),
verifier_name="Dr. Robert Lee",
verification_date=date(2024, 3, 15),
)
]
section = AdvanceDirectivesSection(directives=directives)
Official Reference¶
For complete specification details, refer to:
- C-CDA Online: Advance Directives Section (entries required)
- Local Reference: references/C-CDA_2.1/templates/2.16.840.1.113883.10.20.22.2.21.1.html
Best Practices¶
1. Verify Current Status¶
# Always verify directives are current
{
"verifier_name": "Dr. Jane Smith",
"verification_date": date(2024, 3, 15), # Recent verification
}
2. Include Contact Information¶
# Provide complete healthcare proxy information
{
"custodian_name": "John Doe",
"custodian_relationship": "Son",
"custodian_phone": "555-123-4567",
"custodian_address": "123 Main St, City, ST 12345",
}
3. Document Links¶
# Link to actual directive documents
{
"document_id": "AD-2024-001",
"document_url": "https://emr.hospital.org/documents/advance-directive-12345.pdf",
"document_description": "Advance Directive signed 2024-01-15",
}
4. Common Directive Types¶
directive_types = [
"Resuscitation Status",
"Do Not Resuscitate",
"Do Not Intubate",
"Living Will",
"Healthcare Power of Attorney",
"Healthcare Proxy",
"POLST/MOLST",
"Organ Donation",
"Guardianship",
]
5. Resuscitation Status Values¶
resuscitation_values = {
"Full Code": "Attempt resuscitation",
"DNR": "Do not attempt resuscitation",
"DNI": "Do not intubate",
"DNR/DNI": "Do not resuscitate or intubate",
"Comfort Measures Only": "Provide comfort care only",
"Limited Intervention": "CPR but no intubation",
}
6. Effective Dates¶
# Document when directive takes effect and expires
{
"start_date": date(2024, 1, 1), # When it becomes effective
"end_date": None, # None if no expiration
}
# Or with expiration
{
"start_date": date(2024, 1, 1),
"end_date": date(2026, 1, 1), # Requires renewal
}
7. Relationship Codes¶
# Use standard relationship codes
relationship_codes = {
"DAUC": "Daughter",
"SONC": "Son",
"SPS": "Spouse",
"BRO": "Brother",
"SIS": "Sister",
"CHILD": "Child",
"PRN": "Parent",
}
8. Narrative Generation¶
The section automatically generates an HTML table with: - Type (directive type with unique ID reference) - Directive details (with link if URL available) - Start date and end date - Custodian information - Verification details
9. Code Systems¶
# Use SNOMED CT for advance directive codes
{
"directive_type_code": "304251008", # Resuscitation status
"directive_type_code_system": "SNOMED",
"directive_value_code": "304253006", # DNR
"directive_value_code_system": "SNOMED",
}
10. Regular Updates¶
# Update verification regularly
{
"verification_date": date(2024, 3, 15), # Recent verification
"verifier_name": "Dr. Sarah Johnson",
}
# Document changes
{
"start_date": date(2024, 3, 15), # New directive date
"end_date": date(2024, 3, 14), # Previous directive ended
}
Common SNOMED CT Codes¶
Directive Type Codes¶
304251008- Resuscitation status52765003- Living will71388002- Power of attorney304252001- Consent for organ donation225204009- Healthcare proxy
Directive Value Codes¶
304253006- Do not resuscitate304252001- Intubation89666000- CPR (cardiopulmonary resuscitation)225287000- Artificial nutrition76691003- Mechanical ventilation
Common Pitfalls¶
- Outdated Information: Regularly verify directive status and currency
- Missing Contact Info: Always include healthcare proxy contact details
- No Verification: Document who verified the directive and when
- Vague Language: Use specific, clear terminology
- Missing Documents: Link to actual advance directive documents when available
- Incomplete Proxies: Include all designated decision-makers
- No Expiration Handling: Document if/when directives expire
- Conflicting Directives: Ensure consistency across multiple directives
- No Code Status: Always document resuscitation preferences
- Missing Updates: Update when patient's wishes change
Legal Considerations¶
Documentation Requirements¶
- Verify directives are properly executed according to state law
- Confirm witnesses/notarization as required
- Document patient competency at time of execution
- Note any changes or revocations
Healthcare Proxy Authority¶
- Specify scope of decision-making authority
- Document when proxy authority becomes active
- Note any limitations on proxy decisions
- Include alternate proxies if designated
Validity Across Settings¶
- Ensure directives transfer across care settings
- Verify POLST forms are signed by physician
- Confirm organ donation registry enrollment
- Document guardianship orders if applicable