Fact Of Death Direct Enquiry Response Implementation Guide
0.1.0 - ci-build United States of America flag

Fact Of Death Direct Enquiry Response Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Specification

FODDER Specification

Overview

The Fact Of Death Direct Enquiry Response (FODDER) Implementation Guide defines the FHIR interface for querying deceased patient records from the Veritas Data Research Fact of Death API. This specification document provides comprehensive technical details about the profiles, extensions, and operations that comprise FODDER.

Base Specifications

  • FHIR Version: R4 (4.0.1)
  • US Core Dependency: 6.1.0
  • SMART on FHIR: STU 2.2.0 for authorization
  • IG Version: 0.1.0
  • Release Status: CI Build (Draft)

Deceased Patient Profile

Profile Overview

The DeceasedPatient profile constrains the US Core Patient Profile to represent confirmed deceased individuals with known dates of death, as returned from the Veritas Fact of Death API.

Canonical URL: https://onyxhealth.io/fhir/fodder/StructureDefinition/fodder-deceased-patient

Key Requirements

Required Elements

  1. deceasedDateTime (1..1) - Cardinality is required (1 to 1)
    • Constraint: Must be a dateTime, never a boolean
    • Rationale: Accurate death date is essential for death record verification
    • MustSupport: Yes - All implementations must support this element
    • Example: 2024-01-10T14:30:00Z
  2. identifier (1..*) - At least one identifier required
    • Inherited from: US Core Patient Profile
    • Examples: Social Security Number (SSN), Medical Record Number (MRN), Driver License
    • MustSupport: Yes

Prohibited Elements

  1. deceasedBoolean (0..0) - Explicitly not permitted
    • Rationale: FODDER requires exact dates, not just a boolean indicator
    • Constraint: The deceased[x] choice type is constrained to dateTime only

Profile Definition

Profile: DeceasedPatient
Parent: USCorePatientProfile
Id: fodder-deceased-patient
Title: "FODDER Deceased Patient Profile"

* deceased[x] only dateTime
* deceased[x] 1..1 MS
* identifier 1..*

Match Grade (Standard FHIR Extension)

Overview

FODDER uses the standard FHIR match-grade extension to convey match quality, replacing the need for a custom extension. This extension is defined in the base FHIR specification and is designed specifically for Patient/$match responses.

Extension URL: http://hl7.org/fhir/StructureDefinition/match-grade

Where It Appears

The match-grade extension is placed on Bundle.entry.search in the $match response, not on the Patient resource itself. This is the standard location defined by the FHIR specification for match quality metadata.

Allowed Values

The extension uses a required binding to the match-grade ValueSet:

Code Display Definition
certain Certain Match The record is known to be a match
probable Probable Match The record is a probable match
possible Possible Match The record may be a possible match
certainly-not Certainly Not a Match The record is known not to be a match

Usage Example

{
  "entry": [
    {
      "resource": { ... },
      "search": {
        "mode": "match",
        "score": 0.95,
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/match-grade",
            "valueCode": "certain"
          }
        ]
      }
    }
  ]
}

Mapping from Veritas API Confidence Scores

The FODDER service maps Veritas API match confidence scores to standard match-grade codes:

Veritas Score Range match-grade Code Rationale
0.90 - 1.00 certain All identifiers match exactly
0.70 - 0.89 probable High confidence with minor discrepancies
0.50 - 0.69 possible Moderate confidence, some identifiers match
0.00 - 0.49 certainly-not Low confidence, likely not the same person

Death Record Document Reference Profile

Profile Overview

The DeathRecordDocumentReference profile defines a DocumentReference resource for optionally including a death record PDF document alongside a matched DeceasedPatient in a $match response Bundle.

Canonical URL: https://onyxhealth.io/fhir/fodder/StructureDefinition/fodder-death-record-document-reference

Key Requirements

Element Cardinality Description
status 1..1 (fixed: current) Document is current
type 1..1 (fixed: LOINC 64297-5) Death certificate
subject 1..1 Reference to the matched DeceasedPatient
content.attachment.contentType 1..1 (fixed: application/pdf) MIME type
content.attachment.data 0..1 Base64-encoded PDF (inline delivery)
content.attachment.url 0..1 URL to retrieve PDF (by-reference delivery)
content.attachment.title 0..1 Human-readable title
content.attachment.creation 0..1 Date the document was created

Delivery Modes

Servers MAY deliver the death record document in two ways:

  1. Inline (base64): Include the PDF directly in content.attachment.data. Suitable for small documents or when immediate access is needed.

  2. By reference (URL): Provide a URL in content.attachment.url pointing to a Binary endpoint. The client fetches the PDF separately. Recommended for large-scale $match responses to keep the Bundle size manageable.

Bundle Placement

The DocumentReference is included as an additional Bundle entry with search.mode = "include" to signal that it is supplementary to the matched Patient entry:

{
  "entry": [
    {
      "resource": { "resourceType": "Patient", ... },
      "search": { "mode": "match", "score": 0.95 }
    },
    {
      "resource": { "resourceType": "DocumentReference", ... },
      "search": { "mode": "include" }
    }
  ]
}

Clients that do not need the PDF can simply ignore entries with search.mode = "include".

Profile Definition

Profile: DeathRecordDocumentReference
Parent: DocumentReference
Id: fodder-death-record-document-reference

* status = #current
* type 1..1 MS
* type = $loinc#64297-5 "Death certificate"
* subject 1..1 MS
* subject only Reference(DeceasedPatient)
* content 1..* MS
* content.attachment.contentType 1..1 MS
* content.attachment.contentType = #application/pdf
* content.attachment.data 0..1 MS
* content.attachment.url 0..1 MS

Patient/$match Operation

Overview

FODDER implements the standard FHIR Patient/$match operation for querying deceased patient records. The operation accepts standard FHIR Patient search parameters and returns a Bundle of matching DeceasedPatient resources.

Request Format

Operation URL: POST /Patient/$match

Request Parameters (as per FHIR spec):

  • Standard FHIR Patient search parameters (identifier, birthdate, family name, given name, gender, etc.)
  • Optional parameters to refine search results

Example Request:

POST /Patient/$match HTTP/1.1
Content-Type: application/fhir+json
Authorization: Bearer <access-token>

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "resource",
      "resource": {
        "resourceType": "Patient",
        "identifier": [
          {
            "system": "http://hl7.org/fhir/sid/us-ssn",
            "value": "123-45-6789"
          }
        ],
        "name": [
          {
            "family": "Doe",
            "given": ["John"]
          }
        ],
        "birthDate": "1950-03-15"
      }
    }
  ]
}

Response Format

Response Type: Bundle of type searchset

The operation returns a FHIR Bundle containing:

  • Matching DeceasedPatient resources with search.mode = "match"
  • The standard match-grade extension on each entry's search element
  • Bundle includes search.score for each entry (0.0 to 1.0)
  • Optional DocumentReference entries with search.mode = "include" containing death record PDFs

Example Response:

{
  "resourceType": "Bundle",
  "type": "searchset",
  "timestamp": "2024-01-10T14:35:00Z",
  "total": 1,
  "entry": [
    {
      "fullUrl": "http://api.example.org/fhir/Patient/deceased-patient-example",
      "resource": {
        "resourceType": "Patient",
        "id": "deceased-patient-example",
        "meta": {
          "profile": [
            "https://onyxhealth.io/fhir/fodder/StructureDefinition/fodder-deceased-patient"
          ]
        },
        "identifier": [
          {
            "system": "http://hl7.org/fhir/sid/us-ssn",
            "value": "123-45-6789"
          }
        ],
        "name": [
          {
            "family": "Doe",
            "given": ["John"]
          }
        ],
        "birthDate": "1950-03-15",
        "gender": "male",
        "deceasedDateTime": "2024-01-10T14:30:00Z"
      },
      "search": {
        "mode": "match",
        "score": 0.95,
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/match-grade",
            "valueCode": "certain"
          }
        ]
      }
    },
    {
      "fullUrl": "http://api.example.org/fhir/DocumentReference/death-record-example",
      "resource": {
        "resourceType": "DocumentReference",
        "status": "current",
        "type": {
          "coding": [
            {
              "system": "http://loinc.org",
              "code": "64297-5",
              "display": "Death certificate"
            }
          ]
        },
        "subject": {
          "reference": "Patient/deceased-patient-example"
        },
        "content": [
          {
            "attachment": {
              "contentType": "application/pdf",
              "url": "http://api.example.org/fhir/Binary/death-record-example",
              "title": "Fact of Death Record - John Doe"
            }
          }
        ]
      },
      "search": {
        "mode": "include"
      }
    }
  ]
}

Match Quality Scoring

  • Score Range: 0.0 to 1.0 (floating point)
  • Score 1.0: Exact match on all identifiers
  • Score 0.5-0.9: High confidence matches with minor discrepancies
  • Score <0.5: Low confidence matches requiring manual verification

The search.score value is paired with the standard match-grade extension code to provide both a numeric score and a categorical classification.

Backend Integration Notes

FODDER defines the FHIR interface contract that clients see. The actual death record lookup is performed by proxying requests to the Veritas Data Research proprietary API. Key points:

  1. API Transformation: The FODDER service transforms Veritas API responses into FHIR-compliant DeceasedPatient resources
  2. Confidence Mapping: Veritas API match confidence scores are mapped to standard match-grade codes (certain, probable, possible, certainly-not)
  3. Document Inclusion: Death record PDFs from the Veritas API are wrapped in DocumentReference resources and included in the Bundle
  4. Error Handling: API errors are translated to appropriate FHIR OperationOutcome resources
  5. Rate Limiting: API rate limits from Veritas are enforced on FODDER clients

Conformance

Must Support Definition

When a system claims conformance to the DeceasedPatient profile:

  • Must Support (MS) elements must be present in query results when available from the source system
  • Must Support (MS) elements must be queried or searched on by consumer systems
  • Systems are not required to store or maintain data for non-MS elements

MustSupport Elements in DeceasedPatient

  • deceasedDateTime - All implementations SHALL return this element
  • identifier - All implementations SHALL return at least one identifier

MustSupport Elements in DeathRecordDocumentReference

  • type - All implementations SHALL set to LOINC 64297-5 "Death certificate"
  • subject - All implementations SHALL reference the matched DeceasedPatient
  • content.attachment.contentType - All implementations SHALL set to "application/pdf"
  • content.attachment.data or content.attachment.url - Implementations SHALL provide at least one

Validation

All DeceasedPatient and DocumentReference examples provided in this IG validate successfully against their respective profiles. Organizations implementing this IG should:

  1. Validate examples as part of implementation testing
  2. Use FHIR validation tools to ensure compliance
  3. Reference example instances for conformance validation

References