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

HL7 CNN Data Type: Composite ID Number and Name Simplified

The CNN (Composite ID Number and Name Simplified) data type was introduced in HL7 v2.4 as a lighter-weight cousin of XCN. Like XCN, it pairs a person's identifier with a structured name (family, given, middle, suffix, prefix, degree), but it flattens the assigning authority into three plain components instead of nesting an HD sub-structure. The flagship use is inside other composite data types — most notably as the .1 Name component of NDL (Name with Date and Location) — and in profiles where the full 25-component XCN was overkill (CTI-3 Sponsor Study Identifier, plus ABS, BTS, and ROL in older profiles).

Purpose

CNN exists because not every person-bearing field needs the full machinery of XCN. The 25 components of XCN — name type code, check digit, check-digit scheme, assigning facility, name representation, name context, validity range, assembly order, effective/expiration dates, professional suffix, assigning jurisdiction, assigning agency, security check, security check scheme — are far more than many use cases need. CNN trims the surface to 11 components: an ID, a name, a degree, a source-table code, and a three-part flattened assigning authority. The flattening matters: where XCN.9 is a single HD whose sub-components use & as the separator, CNN.9 / CNN.10 / CNN.11 are three sibling components separated by the normal ^. That choice removes the sub-component delimiter from CNN entirely.

Components

Source: HAPI HL7v2 v2.8.1 javadoc (CNN). Length is not published in v2.8.1 javadocs ().

CompNameSub-typeLengthReqDescription
CNN.1ID NumberstOThe person's identifier (NPI, internal ID, staff number).
CNN.2Family NamestOSurname. Note: plain ST in CNN, not FN as in XCN — compound surnames are passed as a single string.
CNN.3Given NamestOFirst given name.
CNN.4Second And Further Given Names Or Initials ThereofstOMiddle name(s) or initial.
CNN.5Suffix (e.g. JR or III)stOGenerational suffix.
CNN.6Prefix (e.g. DR)stOHonorific prefix.
CNN.7Degree (e.g. MD)isOAcademic or professional degree.
CNN.8Source TableisOHL70297 code identifying the source-table user-defined list for CNN.1.
CNN.9Assigning Authority — Namespace IDisOHL70363 namespace identifier of the authority that issued CNN.1. Flattened from HD.1.
CNN.10Assigning Authority — Universal IDstOUniversal identifier (OID, UUID) of the assigning authority. Flattened from HD.2.
CNN.11Assigning Authority — Universal ID TypeidOHL70301 universal ID type (ISO, GUID, etc.). Flattened from HD.3.

Most-used components

  • CNN.1 ID Number — the practitioner's directory key; the one component that drives downstream resolution.
  • CNN.2 Family Name — surname (plain ST, not FN).
  • CNN.3 Given Name — first name.
  • CNN.7 Degree — professional credential (MD, RN, PA-C). Unlike XCN, CNN never had this withdrawn.
  • CNN.9 / CNN.10 / CNN.11 — the flattened assigning authority triple; populated together when the identifier needs to be disambiguated across networks.

Where it's used

  • CTI-3 Sponsor Study Identifier — the sponsor's principal investigator reference in clinical-trial profiles.
  • ABS, BTS, ROL in older v2.4-era profiles where the full XCN was considered overkill for the role-holder field.
  • As the .1 Name component of NDL (Name with Date and Location) — every OBR-32/33/34/35 v2.5+ message uses CNN inside its NDL.
  • Custom Z-segments in trial-management and research workflows that needed a person reference but did not want to take on XCN's full structure.

In all of these, CNN typically does not repeat — it stands alone or is held inside a single NDL slot.

Version differences

  • v2.4 — CNN introduced as a simplified alternative to XCN; 11 components from the start.
  • v2.5 — No structural changes. NDL retypes its .1 Name component to CNN.
  • v2.6 / v2.7 — No new CNN components added. CNN deliberately remained frozen as the "simple" alternative while XCN accreted security and validity-range fields.
  • v2.8 / v2.8.1 — No structural changes; HAPI v2.8.1 javadoc shows the same 11 components.

Common mistakes

  • Treating CNN.2 as FN. CNN.2 is plain ST, so there are no FN sub-components — a compound surname like "de la Cruz" must be sent as a single ST value. Senders that emit de la&de la&Cruz inside CNN.2 produce a corrupted family name.
  • Using & inside CNN.9 / CNN.10 / CNN.11. The assigning authority is flattened in CNN, not nested. The three pieces sit at the field level separated by ^, not at the sub-component level separated by &.
  • Substituting XCN for CNN. Some profiles strictly type a slot as CNN; sending a full 25-component XCN value into it overflows the schema and discards components past CNN.11.
  • Omitting CNN.9 / CNN.10 / CNN.11 on cross-network messages. Without the flattened authority triple, the same 99812 can refer to two different clinicians at two different sites.
  • Putting the degree text in CNN.6 (prefix) instead of CNN.7. "MD" belongs in CNN.7 Degree; "DR" belongs in CNN.6 Prefix. They are not interchangeable.

Examples

Minimal value

99812^SMITH^JANE

Multi-component value

99812^SMITH^JANE^L^^DR^MD

Fully populated value

99812^SMITH^JANE^L^MD^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO

Annotated breakdown

99812                             CNN.1   ID Number
^SMITH                            CNN.2   Family Name (ST — plain string, not FN)
^JANE                             CNN.3   Given Name
^L                                CNN.4   Second Given (initial)
^MD                               CNN.5   Suffix
^DR                               CNN.6   Prefix
^MD                               CNN.7   Degree (IS)
^L                                CNN.8   Source Table (IS HL70297)
^MERCY                            CNN.9   Assigning Authority Namespace ID (IS HL70363)
^2.16.840.1.113883.19.5           CNN.10  Assigning Authority Universal ID (ST)
^ISO                              CNN.11  Assigning Authority Universal ID Type (ID HL70301)

In-context excerpt — CTI-3 Sponsor Study Identifier

CTI|TRIAL-2026-OCN-014|Phase 2 Oncology|99812^SMITH^JANE^L^^DR^MD^L^MERCY^2.16.840.1.113883.19.5^ISO

Common pitfall snippet

99812^SMITH^JANE^L^^DR^^^MERCY&2.16.840.1.113883.19.5&ISO

The sender treated the assigning authority as nested HD (the XCN convention) using & separators inside a single CNN.9. A strict parser sees one component containing literal ampersands and never populates CNN.10 or CNN.11.

FHIR mapping

The v2-to-FHIR IG publishes CNN → Practitioner as the primary mapping. Because CNN's assigning authority is flattened, the receiving FHIR Practitioner.identifier.assigner reference must be assembled from three sibling components rather than parsed from a single HD sub-structure.

CNNFHIR (Practitioner)
CNN.1Practitioner.identifier.value
CNN.2Practitioner.name.family
CNN.3Practitioner.name.given (first)
CNN.4Practitioner.name.given (additional)
CNN.5Practitioner.name.suffix
CNN.6Practitioner.name.prefix
CNN.7Practitioner.qualification.code
CNN.8Practitioner.identifier.type (source table)
CNN.9 / CNN.10 / CNN.11Practitioner.identifier.assigner (assembled from flat triple)

Engine considerations

  • No sub-component delimiter in CNN: CNN was deliberately designed without nested HDs. Engines that expect & somewhere inside CNN are wrong by spec — the only delimiter inside CNN is ^.
  • Flat vs nested assigning authority: When converting between CNN and XCN, an engine must (a) split CNN.9 / CNN.10 / CNN.11 into XCN.9's HD sub-components on upgrade, and (b) collapse XCN.9's HD sub-components into three flat siblings on downgrade. Round-tripping a CNN through an XCN-only intermediate model loses the flatness contract.
  • Family name is ST, not FN: An engine that strongly types every person-name family slot as FN cannot represent compound surnames in CNN without overflowing into other components. The string is stored as-is.
  • Source Table (CNN.8) was never widened: Unlike XCN.8 which became CWE in v2.7+, CNN.8 remains IS in v2.8.1. Engines that fold both into a CWE model must remember that CNN's column is still IS on the wire.
  • No security check, no validity range: CNN has no XCN.19/20 effective/expiration dates, no XCN.24/25 security check. Engines that expect those fields must obtain them out-of-band when serializing CNN.

How Vorro parses and produces CNN

On inbound, Vorro materializes CNN as a Practitioner using the same internal directory it uses for XCN, but the identifier triple is built from (CNN.9, CNN.10, CNN.11) as three flat strings rather than from a nested HD. CNN.2 is stored as a plain string; we do not attempt to split compound surnames into FN-like sub-parts because the wire form does not carry that structure.

On outbound, Vorro always emits CNN.1 with a populated identifier (we refuse to send a CNN without one). When the upstream model carries an HD-shaped assigning authority, we flatten it into CNN.9 / CNN.10 / CNN.11 and emit a debug breadcrumb noting the downgrade so audit consumers can see the conversion. The degree value is always emitted in CNN.7; we never overload CNN.6 prefix with credentials.

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 CNN Data Type: Composite ID Number and Name Simplified | Vorro Academy | Vorro