HL70002 is the HL7-defined code table for marital status, present since HL7 v2.1 and expanded several times since. It sits behind PID-16 Marital Status on patient demographic messages and behind NK1-14 Next of Kin Marital Status on related-party segments. v2.8.1 publishes sixteen single-letter codes covering legal statuses (Married, Divorced, Annulled), social statuses (Living together, Domestic partner), and administrative placeholders (Unknown, Unreported, Other).
Purpose
HL70002 records the legal and social marital state of a person for registration, demographic reporting, and downstream billing. It is intentionally finer-grained than common civil registries — it distinguishes Separated (A) from Legally Separated (E), Common law (C) from Married (M), and Domestic partner (P) from Registered domestic partner (R) — because U.S. healthcare workflows need to compute next-of-kin authority, insurance dependent eligibility, and beneficiary defaults from this single field.
The table is HL7-defined and aligned with HL7 v3 vs.MaritalStatus, which is what allows the FHIR Patient.maritalStatus element to bind directly to the v3 ValueSet and consume v2 values without remapping.
Where it's used
- PID-16 Marital Status — primary home of HL70002, carried on ADT, ORM, ORU, and SIU messages.
- NK1-14 Marital Status — same code set applied to next-of-kin relationships on the NK1 segment.
Code list
| Code | Display | Comment/Description |
|---|---|---|
| A | Separated | Spouses living apart but not legally separated; informal separation. |
| B | Unmarried | Person has never married and is not partnered; broader than Single. |
| C | Common law | Common-law marriage recognized under jurisdiction-specific rules. |
| D | Divorced | Marriage legally dissolved. |
| E | Legally Separated | Court-ordered separation; not the same as Divorced. |
| G | Living together | Cohabiting; no legal marriage or domestic partnership. |
| I | Interlocutory | Pending divorce; interlocutory decree issued, final decree not yet entered. |
| M | Married | Currently legally married. |
| N | Annulled | Marriage declared null and void retroactively. |
| O | Other | Marital status that does not fit any other code. |
| P | Domestic partner | Domestic partnership, not formally registered with the state. |
| R | Registered domestic partner | Domestic partnership recorded in a jurisdictional registry. |
| S | Single | Never married, not currently partnered. |
| T | Unreported | Person declined to report marital status. |
| U | Unknown | Marital status is not known. |
| W | Widowed | Spouse is deceased; surviving spouse has not remarried. |
Code system OID
- OID:
2.16.840.1.113883.18.3 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0002
HL7-defined vs user-defined
HL70002 is HL7-defined. The code set is normative — receivers are required to recognize all sixteen letters without local extension. Sites occasionally want to add a Z for "civil union (non-U.S.)" or local rollups; the conformant approach is to extend a separate value set bound to the same CWE field, never to extend HL70002 itself.
Version differences
- v2.1 – v2.2 — Small core: M, S, D, W, A, U.
- v2.3 —
C(Common law) andO(Other) added. - v2.3.1 —
B(Unmarried),G(Living together),N(Annulled),P(Domestic partner),R(Registered domestic partner) added to reflect changing civil-status practice. - v2.4 —
E(Legally Separated),I(Interlocutory),T(Unreported) added; finer-grained legal distinctions for billing systems. - v2.5 – v2.8.1 — Set frozen at sixteen codes; no further additions.
- v2.7+ — PID-16 data type widened from IS to CWE, allowing OID metadata in CWE.14.
Common mistakes
- Sending the display word —
Married— in PID-16 instead ofM. The field carries the single-letter code, not the label. - Defaulting unknown marital status to
S(Single) because the EHR demands a non-null value.U(Unknown) andT(Unreported) exist for exactly this case. - Confusing
A(Separated) withE(Legally Separated).Ais informal;Erequires a court order. Downstream billing logic depends on the distinction. - Treating
PandRas synonyms.R(Registered domestic partner) implies a state-issued registration that affects insurance eligibility;Pdoes not. - Extending HL70002 locally with
X,Z, or vendor codes. HL70002 is HL7-defined; non-conformant codes break FHIR mapping and partner integrations.
Examples
A PID with marital status M (Married):
PID|1||10456^^^MRN^MR||DOE^JANE^A||19850412|F|||123 MAIN ST^^BOSTON^MA^02118||(617)555-1212|||M||10456|123-45-6789
Widowed patient:
PID|1||10456^^^MRN^MR||DOE^JANE^A||19350412|F|||123 MAIN ST^^BOSTON^MA^02118||(617)555-1212|||W||10456
Registered domestic partner with CWE-typed PID-16 (v2.7+ profile):
PID|1||10456^^^MRN^MR||SMITH^ALEX||19800101|F|||...|R^Registered domestic partner^HL70002
Same M value translated to a FHIR Patient.maritalStatus snippet:
{
"resourceType": "Patient",
"id": "10456",
"maritalStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"code": "M",
"display": "Married"
}]
}
}
Mapping failure example — unknown vendor code:
PID|1||10456^^^MRN^MR||DOE^JANE||19850412|F|||...|Z
Z is not in HL70002. A conformant engine should preserve Z in the audit log, emit Patient.maritalStatus with a text fallback or a data-absent-reason extension, and route the message to terminology curation rather than silently dropping the value.
FHIR mapping
The HL7 v2-to-FHIR Implementation Guide publishes ConceptMap-table-hl70002-to-v3-maritalstatus. Most HL70002 codes are equivalent to v3 vs.MaritalStatus codes of the same letter:
| HL7 v2 (HL70002) | FHIR (v3-MaritalStatus) |
|---|---|
| A | A (Annulled in v3, but mapped via IG) — see IG for resolution |
| D | D (Divorced) |
| I | I (Interlocutory) |
| L | L (Legally Separated) — note FHIR uses L, v2 uses E |
| M | M (Married) |
| P | P (Polygamous) — IG remaps v2 P (Domestic partner) explicitly |
| S | S (Never Married) |
| T | T (Domestic partner) — IG remaps |
| U | UNK (Unknown) |
| W | W (Widowed) |
Because v3 vs.MaritalStatus reuses some letters with different meanings, the IG ConceptMap is mandatory — do not assume letter-equality. Patient.maritalStatus is a CodeableConcept bound to http://terminology.hl7.org/ValueSet/v3-MaritalStatus.
Engine considerations
- Case sensitivity — HL70002 codes are uppercase single letters; lowercase variants must be normalized on ingest.
- Letter collisions with v3 — the v2 → v3 mapping is not always a no-op; engines must consult the IG ConceptMap rather than passing the v2 letter through unchanged.
- CWE upgrade path — In v2.7+ profiles PID-16 may be CWE rather than IS, allowing CWE.14 to carry the HL70002 OID for OID-bound profiles.
- Round-trip preservation — Store the original HL70002 code as a secondary
Codingso v2 outbound channels can restore distinctions (P vs R, A vs E) that v3 collapses.
How Vorro handles HL70002
Vorro validates PID-16 against the sixteen HL70002 codes on ingest. Conformant codes are routed unchanged; non-conformant values land in the terminology curation queue, where Vorro either creates a remap rule (e.g. X → O for a specific partner) or surfaces the original code as Patient.maritalStatus.text while flagging the message for review. The IG ConceptMap is consulted on every FHIR translation; we never assume letter-equality between HL70002 and v3-MaritalStatus.
On outbound, Vorro emits HL70002 as IS for v2.5 and earlier profiles and as CWE with CWE.14 populated for v2.7+ destinations. The HL7 v3 code is preserved as a secondary Coding to support lossless round-trip.
Related pages
- PID segment — Patient Identification
- HL70001 code table — Administrative Sex
- CWE data type — Coded With Exceptions
