NEWFree ROI Calculators — quantify what prior auth and siloed data are costing your organization.Prior Auth ROI Siloed Data ROI
HL7 v2Data Type6 min read

HL7 DLT Data Type: Daily Deductible

The DLT (Daily Deductible) data type was introduced in HL7 v2.5 to model a class of insurance benefits that flat-amount deductibles cannot express: a per-diem cost-share that begins after a delay period, runs for a bounded number of days, and rolls up to an accumulated maximum. DLT appears in insurance coverage detail fields where a plan needs to declare, for example, "after the first three inpatient days, the patient pays $200 per day for up to thirty days, capped at $6,000." A single MOP cannot carry this — DLT exists precisely because the daily structure is a payer-policy primitive.

Purpose

US-style Medicare-supplement and indemnity plans frequently structure inpatient cost-share as a daily amount with a delay (a waiting period before the deductible kicks in), a duration (how many days it applies), and a total cap. Encoding any one of those numbers alone misrepresents the benefit: a flat "$200 deductible" is wrong because it is per day; "$6,000 deductible" is wrong because the patient only owes it if they stay the full duration. DLT bundles all four facts — delay days, daily amount, number of days, total amount — so a receiver can compute patient liability for any given length of stay without consulting the plan document.

Components

Source: HAPI HL7v2 v2.8.1 javadoc (DLT).

CompNameSub-typeLengthRequiredDescription
DLT.1Delay DaysnmONumber of days that must elapse before the daily deductible begins to apply (e.g. 3 means the deductible starts on day 4).
DLT.2Monetary AmountmoOThe deductible amount charged per day once the delay has elapsed.
DLT.3Number of DaysnmOThe number of days over which the daily deductible applies.
DLT.4Total AmountmoOThe accumulated maximum the patient can be charged under this daily deductible.

Most-used components

  • DLT.2 Monetary Amount — the per-day figure receivers post to patient ledgers.
  • DLT.3 Number of Days — bounds the exposure; without it, a daily charge is open-ended.
  • DLT.4 Total Amount — the cap; receivers stop accruing patient liability once this is reached.

Where it's used

  • IN2 daily-deductible benefit fields in coverage-detail messages.
  • IN1 deductible overlay fields when the plan's deductible is structured per-diem rather than flat.
  • IN3-23 Daily Charge fields where per-diem patient share interacts with per-diem plan charge.
  • Custom Z-segments emitted by US-payer EDI bridges that translate Medicare-supplement daily deductible loops.
  • Outbound 271 (Eligibility Response) generators that derive per-diem benefit lines from DLT.

Version differences

  • HL7 v2.5 — DLT introduced with the four-component layout (delay, daily amount, days, total).
  • HL7 v2.6 through v2.8 — no structural changes; MO sub-type tightened in line with the broader MO refinement (ISO 4217 alpha-3 in MO.2).
  • HL7 v2.8.1 — HAPI javadoc confirms the four-component definition unchanged.
  • HL7 v2.8.2 — no structural changes; table refreshes only.

Common mistakes

  • Putting the daily amount in DLT.4 and leaving DLT.2 empty — receivers see a single total and treat it as a flat deductible, materially understating patient liability for short stays.
  • Conflating DLT.1 Delay Days with DLT.3 Number of Days — 3^200^30 (3-day delay, $200/day for 30 days) is very different from 30^200^3; ordering matters.
  • Omitting DLT.4 Total Amount on plans that have a cap — without the cap, receivers either compute unbounded liability or invent one from the daily × days product, which is wrong when the cap is lower than that product.
  • Using DLT.2/.4 as plain NM and dropping the MO currency sub-component — without ISO 4217 the amount is ambiguous across multi-country payer feeds.
  • Treating DLT.1 = 0 as "missing" — 0 is the meaningful value "no delay, starts on day 1" and must round-trip distinct from a truly empty DLT.1.

Examples

Minimal value — $200/day for 30 days, $6,000 max, no delay:

0^200.00^USD^30^6000.00^USD

Populated — $200/day with a 3-day delay, 30 days, $6,000 max:

3^200.00^USD^30^6000.00^USD

In context — IN2 daily-deductible field carrying a per-diem benefit:

IN2|1||||||||||||||||||||||0^200.00^USD^30^6000.00^USD||||||||||||||||||||||||||

Common pitfall — daily amount placed in the total slot:

^^^^200.00^USD       <- WRONG; reads as a $200 flat total, not $200/day
0^200.00^USD^30^6000.00^USD   <- CORRECT

FHIR mapping

The v2-to-FHIR Implementation Guide does not publish a per-datatype ConceptMap for DLT. The mapping target is Coverage.benefit with category set to a deductible code and the daily structure decomposed across the benefit's value, limit, and a small extension for the delay:

DLT componentFHIR target
DLT.1 Delay DaysCoverage.benefit.extension[delay-days].valueUnsignedInt
DLT.2 Monetary AmountCoverage.benefit.limit.value (per-day) with Coverage.benefit.unit = day
DLT.3 Number of DaysCoverage.benefit.limit.code carrying days; or a duration extension
DLT.4 Total AmountCoverage.benefit.value[x] as Money representing the accumulated max

In claim contexts the same content surfaces on ExplanationOfBenefit.benefitBalance.financial with allowed and used Money values.

Engine considerations

  • Slot ordering: DLT is positional and easy to mis-emit; engines should validate that DLT.2 is the per-day amount and DLT.4 the cap, with DLT.4 ≥ DLT.2 (a one-day daily deductible can equal its cap, but never exceed it).
  • Currency consistency: DLT.2.2 and DLT.4.2 must use the same ISO 4217 code; engines that allow mixed currencies (USD daily, CAD cap) produce nonsense ledgers.
  • Cap reconciliation: when DLT.4 < DLT.2 × DLT.3, the cap binds first and receivers must honour the cap; engines should compute and surface this as a derived fact rather than re-deriving on the fly.
  • BigDecimal precision: amounts carry minor units and require BigDecimal; days are integers and must be parsed as such even though NM permits decimals.
  • Empty vs zero: DLT.1 = 0 (no delay) and DLT.1 empty (unknown) must round-trip distinct — engines that normalise empty to zero on inbound corrupt the meaning.

How Vorro parses and produces DLT

On inbound, Vorro parses DLT as a structured DailyDeductible value object with delayDays: Optional<Int>, dailyAmount: Optional<Money>, numberOfDays: Optional<Int>, and totalAmount: Optional<Money>. Empties are preserved as None rather than coerced to zero. Currency is validated against ISO 4217 on both .2 and .4, and a same-currency invariant is enforced; violations route to a curation queue with provenance.

On outbound, Vorro emits DLT components in canonical order with explicit currency on every MO sub-component. Caps are emitted only when the source benefit record carries one — never synthesised from dailyAmount × numberOfDays. Where the source daily deductible is open-ended (no cap, no day count), Vorro emits only DLT.1 and DLT.2 and leaves DLT.3/.4 empty rather than fabricating sentinel values.

Sources

← Back to HL7 v2 Guide

Ready to Integrate This Into Your Workflow?

Talk to a Vorro expert about implementing HL7 v2 in your specific environment.

Browse HL7 v2 Guides
HL7 DLT Data Type: Daily Deductible | Vorro Academy | Vorro