The TCD (Test Code Detail) segment carries the per-run detail values that a laboratory analyzer actually applied — or is being instructed to apply — for a given test code. Where the TCC segment carries configuration defaults, TCD carries the concrete dilution factors, repeat permission, reflex permission, and analyte repeat status for a specific run. It is the run-level companion to the configuration-level TCC.
Purpose
TCD communicates the test-code processing detail tied to an actual analyzer run. It reports the auto-dilution factor, rerun dilution factor, pre-dilution factor, and the endogenous content of the pre-dilution diluent as they were used, along with whether automatic repeat and reflex were allowed and the current analyte repeat status. This lets the laboratory automation system reconcile what the instrument did against the defaults defined in TCC, and supports decisions about reruns and reflex testing.
Because TCD describes a specific run rather than a master-file default, it travels alongside observation results in laboratory automation traffic, scoped to the service identifier in TCD-1.
Used in
TCD appears in laboratory automation and test-code messages, where it conveys the dilution and repeat detail applied for a specific run of a service identifier. See the OUL unsolicited laboratory observation message for the message context in which test-code detail and configuration segments are exchanged. TCD is the run-level counterpart to the configuration-level TCC segment and is related to the observation-definition OM1 segment.
Field-by-field reference
Source: HAPI HL7v2 v2.5.1 javadocs (TCD javadoc) for sequence, name, data type, and repetition. Length is not published in the javadocs (—); Required and Table # are filled from the HL7 v2.5.1 standard where well-established.
| Seq | Name | Data Type | Length | Req | Repeat | Table # | Description |
|---|---|---|---|---|---|---|---|
| TCD-1 | Universal Service Identifier | ce | — | R | — | — | Test code this detail applies to |
| TCD-2 | Auto-Dilution Factor | sn | — | O | — | — | Automatic dilution factor applied for the run |
| TCD-3 | Rerun Dilution Factor | sn | — | O | — | — | Dilution factor used when rerunning |
| TCD-4 | Pre-Dilution Factor | sn | — | O | — | — | Pre-dilution factor applied to the specimen |
| TCD-5 | Endogenous Content of Pre-Dilution Diluent | sn | — | O | — | — | Analyte content of the pre-dilution diluent |
| TCD-6 | Automatic Repeat Allowed | id | — | O | — | HL70136 | Whether automatic repeat is permitted for run |
| TCD-7 | Reflex Allowed | id | — | O | — | HL70136 | Whether reflex testing is permitted for run |
| TCD-8 | Analyte Repeat Status | ce | — | O | — | HL70389 | Current repeat status of the analyte |
Most-used fields
The fields that carry the operational detail of a run are:
- TCD-1 Universal Service Identifier — the only required field; it scopes the detail to a specific test code.
- TCD-2 Auto-Dilution Factor — the dilution the analyzer actually applied, frequently compared against the TCC default.
- TCD-3 Rerun Dilution Factor — the dilution to use if a rerun is triggered.
- TCD-6, TCD-7 Repeat and reflex permissions — the run-level controls on automatic repeat and reflex testing.
- TCD-8 Analyte Repeat Status — the coded status that tells the automation system whether a repeat is pending, complete, or not required.
Version differences (2.3 to 2.8.2)
TCD was introduced with the laboratory automation chapter in HL7 v2.4 and has carried the same eight-field structure through v2.5.1, v2.6, v2.7, and into v2.8.x. There is no TCD in v2.3. From v2.4 onward the field roster is stable, with later versions refining table bindings — notably the analyte repeat status table in TCD-8 — rather than changing the segment shape. Engines bridging v2.3 traffic will never encounter a TCD and must up-convert before run-level detail can be represented.
Common mistakes
- Confusing TCD with TCC. TCD is the per-run detail; TCC holds the configuration defaults. Sending run detail in a TCC, or defaults in a TCD, inverts the intended semantics.
- Omitting TCD-1. The Universal Service Identifier is required; without it the detail cannot be associated with a test code.
- Flattening the SN dilution fields. TCD-2 through TCD-5 are structured numerics encoding a ratio; treating them as plain numbers loses the comparator and denominator.
- Sending free text in TCD-6 or TCD-7. These are ID-typed yes/no permissions and are validated against a bound table.
- Misusing TCD-8 Analyte Repeat Status. It is a coded element, not a comment field; downstream rerun logic depends on its coded value.
Examples
Minimal TCD with only the required service identifier:
TCD|1554-5^Glucose^LN
Fully-populated TCD with applied dilutions, permissions, and repeat status:
TCD|1554-5^Glucose^LN|4^1^:^1|5^1^:^1|2^1^:^1|0^0^:^1|Y|N|R^Repeat required^HL70389
Annotated breakdown:
TCD|1554-5^Glucose^LN|4^1^:^1|5^1^:^1|2^1^:^1|0^0^:^1|Y|N|R^Repeat required^HL70389
| | | | | | | |
| | | | | | | +-> TCD-8 Analyte Repeat Status
| | | | | | +---> TCD-7 Reflex Allowed (No)
| | | | | +-----> TCD-6 Automatic Repeat Allowed (Yes)
| | | | +-------------> TCD-5 Endogenous Content of Pre-Dilution Diluent
| | | +---------------------> TCD-4 Pre-Dilution Factor
| | +-----------------------------> TCD-3 Rerun Dilution Factor
| +-------------------------------------> TCD-2 Auto-Dilution Factor
+------------------------------------------------------> TCD-1 Universal Service Identifier (LOINC 1554-5)
In-context excerpt 1 — TCD following its TCC configuration in a test-code message:
MSH|^~&|LABAUTO|MAINLAB|ANALYZER|CHEM1|20260610101500||OUL^R22^OUL_R22|MSG00318|P|2.5.1
TCC|1554-5^Glucose^LN|APP4471^Roche^L|SER^Serum^HL70070|2^1^:^1|5^1^:^1|2^1^:^1|0^0^:^1|25|Y|Y|N|1^600^-^mg/dL|mg/dL^milligrams per deciliter^UCUM|P^Production^HL70388
TCD|1554-5^Glucose^LN|4^1^:^1|5^1^:^1|2^1^:^1|0^0^:^1|Y|N|N^No repeat needed^HL70389
In-context excerpt 2 — TCD reporting a rerun-required status for a second analyte:
MSH|^~&|LABAUTO|MAINLAB|ANALYZER|CHEM1|20260610101800||OUL^R22^OUL_R22|MSG00319|P|2.5.1
TCD|2160-0^Creatinine^LN|2^1^:^1|4^1^:^1|1^1^:^1|0^0^:^1|Y|Y|R^Repeat required^HL70389
FHIR mapping
No segment-level ConceptMap is published in the HL7 v2-to-FHIR Implementation Guide for TCD. Conceptually, TCD maps to FHIR ObservationDefinition and DeviceDefinition: the service identifier and repeat status relate to ObservationDefinition, while the applied dilution factors and instrument permissions relate to DeviceDefinition. Because TCD expresses the detail of a specific run rather than a single discrete clinical resource, no normalized one-to-one mapping is defined; integrators should treat it as run-level processing metadata.
Engine considerations
- Interface engines typically model TCD as an optional segment within laboratory automation structures, often immediately following the related TCC; confirm the schema includes both before routing OUL-family traffic.
- TCD-2 through TCD-5 are SN (structured numeric) ratios; engines that coerce SN to a scalar will discard the comparator and denominator.
- TCD-6 and TCD-7 are ID-typed against a yes/no table and will fail strict validation if populated with arbitrary text.
- TCD-8 is a CE coded element; preserve all three components (identifier, text, coding system) when routing so downstream rerun logic remains intact.
- Length is not published in the javadocs, so do not derive hard field-length limits from the javadoc; defer to the HL7 v2.5.1 standard.
How Vorro parses and produces TCD
On ingest, Vorro normalizes TCD-1 into a primary test-code reference that aligns with the matching TCC where one is present, preserving the source coding system. The SN-typed dilution fields are parsed into structured ratio objects so the comparator, numerator, separator, and denominator are retained. TCD-6 and TCD-7 are validated against the yes/no table and exposed as boolean run attributes, while TCD-8 is kept as a fully coded analyte repeat status.
When producing TCD, Vorro emits TCD-1 from the normalized test-code reference and reconstructs each SN field from its structured ratio representation without loss. The repeat and reflex permissions are rendered as normalized table values, and the analyte repeat status is emitted as a complete coded element. Optional fields that were never set are left empty rather than padded, so the produced segment reflects only the detail the run actually carried.
Related pages
- HL7 TCC Segment: Test Code Configuration
- HL7 OM1 Segment: General Observation
- HL7 OUL Message: Unsolicited Laboratory Observation
