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

HL7 Table HL70203: Identifier Type Code

HL70203 is the flagship identifier-semantics table in HL7 v2. It declares what kind of identifier a CX composite is carrying — a medical record number, a Social Security number, a driver's license, an NPI, an account number, a visit number, and many more — by populating CX.5 Identifier Type Code with one of the table's short alphabetic codes. The table is HL7-defined but allows local extension (it is sometimes described as "user-defined with HL7 suggested values"), making it the most operationally extended code table in the v2 catalogue.

Purpose

Identifiers in v2 are positional and ambiguous unless tagged. The string 123-45-6789 is meaningless without a label saying it is a Social Security number. HL70203 supplies that label. A receiver reading 123-45-6789^^^USA^SS immediately knows the value is an SSN and can route it to the SSN-handling logic without inferring the type from CX.4 (assigning authority) or out-of-band agreements.

The table is also the linchpin of v2-to-FHIR identifier mapping: FHIR Identifier.type.coding is bound directly to the HL70203 ValueSet, so a faithful FHIR translation of any CX composite hinges on getting CX.5 right.

Where it's used

  • CX.5 Identifier Type Code — every CX composite in the spec, which means PID-2, PID-3, PID-4, NK1-33, GT1-2, IN1-49, ORC-12, and many more.
  • PID-3 Patient Identifier List, with one CX per identifier — MR for the MRN, SS for the SSN, DL for the driver's license, etc.
  • PV1-19 Visit Number (with type code VN).
  • Most extended-composite identifier fields across ADT, ORM, ORU, BAR, and SIU messages.

Code list

The list below is the v2.8.1 set, filtered to the codes most commonly seen on production interfaces. The full HL70203 includes additional administrative and financial codes; consult the HL7 Terminology CodeSystem for the exhaustive list.

CodeDisplayComment/Description
ACActivation CardCard used to activate a service or account.
AMAmerican ExpressPayment card identifier — American Express.
ANAccount numberGeneric financial account number.
ANCAccount number CreditorCreditor-side account number for financial postings.
APNAnonymous IdentifierIdentifier used when the subject must remain anonymous.
APRNAdvanced Practice Registered Nurse NumberLicensing number for APRNs.
BABank Account NumberBanking account number, used in remittance flows.
BCBank Card NumberGeneric bank card identifier.
BRBirth registry numberBirth registry record identifier.
BRNBreed Registry NumberVeterinary breed-registry identifier.
CCCost Center numberInternal accounting cost-center identifier.
CYCounty numberCounty-level identifier.
DIDiner's Club CardPayment card identifier — Diner's Club.
DLDriver's license numberGovernment-issued driver license.
DNDoctor numberSite-specific physician identifier (distinct from NPI).
DRDonor Registration NumberOrgan/tissue donor registry identifier.
DSDiscover CardPayment card identifier — Discover.
DSGDiagnostic Study Generator IdentifierIdentifier for the system that generated a diagnostic study.
EIEmployee numberInternal employer-assigned employee identifier.
ENEmployer numberIdentifier of the employer itself.
ESNStaff Enterprise NumberEnterprise-wide staff identifier (distinct from EI).
FIFacility IDIdentifier of a healthcare facility.
GIGuarantor Internal IdentifierSite-internal guarantor identifier (financial guarantor of an account).
GNGuarantor External IdentifierExternal (e.g., insurer-assigned) guarantor identifier.
HCHealth Card NumberNational or regional health-coverage card number.
LILabor and industries numberUS workers'-comp / L&I identifier.
LNLicense numberGeneric professional license.
LRLocal Registry IDSite-local registry identifier.
MAMedicaid NumberUS Medicaid beneficiary identifier.
MBMember NumberInsurance plan member number.
MCMedicare NumberUS Medicare beneficiary identifier (MBI in modern usage).
MCDPractitioner Medicaid NumberMedicaid identifier for a practitioner (not a patient).
MCRPractitioner Medicare NumberMedicare identifier for a practitioner.
MDMedical License NumberState-issued medical license.
MIMilitary ID numberUS DoD / military identifier.
MRMedical record numberThe canonical MRN. The single most common CX.5 value in clinical messaging.
MRTTemporary Medical Record NumberPre-merge or trauma-registration temporary MRN.
MSMasterCardPayment card identifier — MasterCard.
NENational employer identifierCountry-level employer identifier (e.g., US EIN).
NHNational Health Plan IdentifierNational identifier for a health plan/payer.
NINational unique individual identifierCountry-level unique person identifier (e.g., NHS number, BSN).
NIINational Insurance Organization IdentifierNational identifier for an insurance carrier.
NIIPNational Insurance Payor Identifier (Payor)National payor identifier.
NNNational Person IdentifierGeneric country-level person identifier (use NNxxx for ISO-coded country specifics).
NNxxxNational Person Identifier where xxx is ISO 3166 3-character country codeE.g., NNUSA, NNGBR, NNNLD.
NPNon-Provider IdentifierIdentifier for an entity that is not a provider.
NPINational provider identifierUS CMS-assigned NPI.
ODOptometrist license numberOptometrist state license.
PEPenitentiary/correctional institution NumberInmate identifier in correctional contexts.
PENPension NumberPension-scheme identifier.
PIPatient internal identifierSite-internal patient identifier (distinct from MR).
PNPerson numberGeneric person identifier.
PNTTemporary Living Subject NumberTemporary identifier for a living subject.
PPNPassport numberGovernment-issued passport.
PRCPractitioner Registration CardPractitioner registration card identifier.
PRNProvider numberGeneric provider identifier (site-local, not NPI).
PTPatient external identifierExternally assigned patient identifier.
QAQA numberQuality-assurance identifier (e.g., for tracked QA samples).
RIResource identifierIdentifier of a scheduling resource.
RNRegistered Nurse NumberRN licensing number.
RPHPharmacist License NumberPharmacist state license.
RRRailroad Retirement numberUS Railroad Retirement Board identifier.
RRIRegional registry IDRegional registry identifier.
RRPRailroad Retirement ProviderRailroad-retirement-affiliated provider identifier.
SBSocial Beneficiary IdentifierSocial-insurance beneficiary identifier.
SIDSpecimen IDLaboratory specimen identifier.
SLState licenseGeneric state-issued license.
SNSubscriber NumberInsurance subscriber number.
SPStudy Permit IdentifierImmigration study-permit identifier.
SRState registry IDState-level registry identifier.
SSSocial Security numberUS Social Security number.
TAXTax ID numberTax identification number (US EIN, UTR, etc.).
TNTelephone numberIdentifier expressed as a telephone number.
TPRTemporary Permanent Resident NumberTemporary PR identifier.
TRLTraining License NumberTraining/residency license.
UUnspecified identifierType is unknown or not specified.
UPINMedicare/CMS Universal Physician Identification NumberPre-NPI CMS identifier; deprecated for new issuance.
USIDUnspecified IdentifierAlternate form of "unspecified."
VNVisit numberEncounter/visit identifier (PV1-19, PV1-50).
VPVisitor Permit IdentifierImmigration visitor permit.
WCWIC identifierWomen, Infants, and Children program identifier.
WCNWorkers' Comp NumberWorkers' compensation claim number.
WPWork PermitImmigration work permit.
XXOrganization identifierGeneric organization identifier (used heavily in XON.10).

Code system OID

  • OID: 2.16.840.1.113883.18.108
  • Canonical URI: http://terminology.hl7.org/CodeSystem/v2-0203

This OID is emitted in CX.9 when a profile demands OID-bound coded type values.

HL7-defined vs user-defined

HL70203 is HL7-defined with extensibility. The HL7 codes above are normative, but the table explicitly allows local extension for identifier types that do not appear in the suggested set. Local extensions must not collide with HL7 codes and should be registered in the site's interface specification.

In practice, the table is one of the most-extended in HL7: payers, government agencies, and large health systems routinely add codes for their own identifier classes.

Version differences

  • v2.2 — Initial small set: MR, SS, EI, PI, VN, DL.
  • v2.3 — Major expansion: NPI predecessor codes, payment-card codes (AM, MS, VS, DS, DI), guarantor codes.
  • v2.5 — NPI added formally after the CMS Final Rule. UPIN reclassified as legacy.
  • v2.6 — APRN, RPH, RN added for non-physician licensure. NNxxx pattern added for ISO-coded national identifiers.
  • v2.7 — Several anonymized/temporary codes added (APN, MRT, PNT, TPR).
  • v2.8 – v2.8.1 — Set largely stable; minor display-string edits.

Common mistakes

  • Using MR and PI interchangeably. MR is the canonical medical record number issued by a hospital; PI is an internal patient identifier that may be distinct (e.g., an enterprise master-patient-index ID). Collapsing them loses semantic precision and breaks FHIR Patient.identifier slicing.
  • Sending SSN instead of SS. HL70203 codes are short alphabetic literals; multi-character variants like SSN, MRN, or DLN are not valid.
  • Using NPI in CX.5 without populating CX.4 with the US NPI assigning authority OID (2.16.840.1.113883.4.6). The type code alone is not enough for unambiguous downstream consumption.
  • Treating VN as a patient identifier. VN is the visit number and belongs in PV1-19, not PID-3.
  • Inventing local codes that collide with HL7 codes (e.g., redefining DL to mean "Department List"). Local extensions must use new codes, not redefine the standard ones.

Examples

A PID-3 list with MRN, SSN, and driver's license:

PID|1||10456^7^M10^HOSPITAL^MR~123-45-6789^^^USA^SS~D1234567^^^MA-DMV^DL||DOE^JANE

NPI on a provider XCN inside ORC-12:

ORC|RE|||||||||||1234567893^SMITH^JOHN^^^^^^&2.16.840.1.113883.4.6&ISO^L^^^NPI

Visit number on PV1-19:

PV1|1|I|2W^201^A^HOSPITAL||||||||||||||||V20260626001^^^HOSPITAL^VN

A FHIR Patient.identifier translation preserving HL70203 in type.coding:

{
  "identifier": [{
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
        "code": "MR",
        "display": "Medical record number"
      }]
    },
    "system": "urn:oid:2.16.840.1.113883.19.5.99999.1",
    "value": "10456"
  }, {
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
        "code": "SS"
      }]
    },
    "system": "http://hl7.org/fhir/sid/us-ssn",
    "value": "123-45-6789"
  }]
}

FHIR mapping

The v2-to-FHIR IG does not publish a ConceptMap for this table; the mapping below follows the obvious correspondence, preserving the HL70203 codes verbatim and binding them to Identifier.type.coding under the canonical CodeSystem http://terminology.hl7.org/CodeSystem/v2-0203. The mapping is one-to-one for the standard codes; local extensions ride through unchanged but must use a stable system URI.

FHIR additionally provides a smaller, opinionated value set at http://terminology.hl7.org/ValueSet/identifier-type (DL, PPN, BRN, MR, MCN, EN, TAX, NIIP, PRN, MD, DR, SB, ANON, TEMP, WP, RI, etc.) that overlaps HL70203 but is intentionally narrower. Most v2-to-FHIR pipelines bind to the full v2-0203 set rather than the abbreviated FHIR set to avoid losing information.

Engine considerations

  • Slicing on FHIR output — Identifier.type.coding.code is the natural slice discriminator for FHIR Patient, Practitioner, and Organization. Engines should preserve CX.5 faithfully to keep the slices stable.
  • Round-trip safety — When a local code is encountered, do not silently coerce to U or USID; preserve the original code with a custom system URI so the outbound v2 channel can restore it.
  • Type vs assigning authority — CX.5 is the type code; CX.4 is the assigning authority. Both must be populated to disambiguate identifiers across systems. Engines should warn on missing CX.4 for any code in (MR, PI, NPI, NPN).
  • Case sensitivity — HL70203 codes are case-sensitive uppercase. Normalize on ingest.
  • Local code registry — Maintain a per-site registry of locally-extended HL70203 codes with documentation, FHIR system URIs, and intended FHIR Identifier.type.coding bindings.

How Vorro handles HL70203

Vorro validates CX.5 against the full HL70203 set plus the site's locally-extended codes on ingest. Unrecognized values are routed to the terminology curation queue rather than silently passed; once curated, the new code joins the site's registry and is honored on all future messages.

On FHIR outbound, Vorro emits Identifier.type.coding with the HL70203 system URI and the original code. For codes with a known FHIR-narrowed equivalent (e.g., MR → FHIR MR), the additional FHIR coding is added as a second entry in Identifier.type.coding so consumers bound to the narrower value set still resolve a match.

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 Table HL70203: Identifier Type Code | Vorro Academy | Vorro