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

HL7 PSG Segment: Product/Service Group

The PSG (Product/Service Group) segment groups a collection of related product/service line items so they can be adjudicated, summarised, or billed as a single unit. PSG was introduced in HL7 v2.6 as part of the patient-billing chapter and continues unchanged in v2.8.1 — it is one of three companion segments (PSS section, PSG group, PSL line item) that together describe a structured billing breakdown.

Purpose

PSG identifies a billable grouping of services that providers and payers can reference jointly. It carries both the provider-assigned and payer-assigned group identifiers, a sequence number that orders groups within a section, a flag indicating whether the group is adjudicated as a single unit, the rolled-up billed amount, and a short human-readable description. PSG normally sits between a PSS (section) header and one or more PSL (line item) entries to form the section → group → line hierarchy used in product/service billing exchanges.

Used in

PSG is used in product/service billing flows carried by financial and master-file messages such as DFT (Detailed Financial Transaction) and PMU (Add/Update Personnel) variants that exchange billable activity. See DFT message for the typical envelope. PSG always travels with a parent PSS and child PSL segments.

Field-by-field reference

Source: HAPI HL7v2 v2.8.1 javadocs (https://hapifhir.github.io/hapi-hl7v2/v281/apidocs/ca/uhn/hl7v2/model/v281/segment/PSG.html) for sequence, name, data type, and repetition. Length is not published in the javadocs (); Required and Table # are filled from the HL7 v2 standard where well-established.

SeqNameData TypeLengthReqRepeatTable #Description
PSG-1Provider Product/Service Group NumbereiRProvider-assigned identifier for this group
PSG-2Payer Product/Service Group NumbereiOPayer-assigned identifier for the group
PSG-3Product/Service Group Sequence NumbersiROrdinal position of group within section
PSG-4Adjudicate as GroupidO[HL70136]Flag: adjudicate the group as one unit
PSG-5Product/Service Group Billed AmountcpOTotal billed amount across the group
PSG-6Product/Service Group DescriptionstOFree-text description of the group

Most-used fields

  • PSG-1 Provider Product/Service Group Number is the primary key emitted by every sender; the value must be unique within the enclosing PSS and is referenced from each child PSL.
  • PSG-3 Product/Service Group Sequence Number lets receivers preserve the original ordering of groups when displaying or reconciling the invoice.
  • PSG-5 Product/Service Group Billed Amount is the rolled-up monetary total used by payer systems to cross-check the sum of child PSL billed amounts.
  • PSG-4 Adjudicate as Group is the toggle that tells the payer whether to score the group atomically or line-by-line; misuse here is the most common source of split-adjudication disputes.

Version differences

  • Introduced in HL7 v2.6 as part of the patient-billing additions.
  • v2.7 stabilised the data types around CWE/EI in surrounding segments; PSG itself kept the same six fields.
  • v2.7.1, v2.8, and v2.8.1 carry PSG forward unchanged.
  • v2.8.2 (draft at the time of writing) continues to publish the same field list with no structural change.

Common mistakes

  • Sending PSG without a parent PSS — most receivers reject the group because they cannot anchor it to a section.
  • Letting PSG-1 collide across sections in the same message; the identifier is scoped per-message, not per-section, in many implementations.
  • Putting the gross (pre-discount) amount in PSG-5 when the standard expects the billed (post-adjustment) amount.
  • Setting PSG-4 to Y while leaving child PSL-6 statuses inconsistent, which forces the payer to fall back to line-level adjudication.
  • Omitting PSG-3 and relying on segment order; many engines re-sort by sequence number on receipt.

Examples

Minimal:

PSG|GRP-7781^^VORRO^EI|||1

Fully populated:

PSG|GRP-7781^^VORRO^EI|PAYGRP-44120^^AETNA^EI|1|Y|425.00^USD|Imaging studies bundled for adjudication

Annotated breakdown:

PSG | GRP-7781^^VORRO^EI                 # PSG-1 Provider group number
    | PAYGRP-44120^^AETNA^EI             # PSG-2 Payer group number
    | 1                                  # PSG-3 Sequence within section
    | Y                                  # PSG-4 Adjudicate as group
    | 425.00^USD                         # PSG-5 Group billed amount
    | Imaging studies bundled ...        # PSG-6 Description

In-context excerpt, DFT P03 with section/group/line hierarchy:

MSH|^~&|VORRO|HOSP-A|AETNA|PAYER|20260610101500||DFT^P03^DFT_P03|MSG00045|P|2.8.1
EVN|P03|20260610101500
PID|1||MRN-99812^^^VORRO^MR||DOE^JANE^A||19720314|F
PV1|1|O|RAD-01^^^HOSP-A
PSS|SEC-301^^VORRO^EI||1|600.00^USD|Imaging
PSG|GRP-7781^^VORRO^EI||1|Y|425.00^USD|MRI bundled studies
PSL|LINE-9001^^VORRO^EI||1|||A^Active^HL70776|72148^MRI lumbar w/o contrast^CPT
PSL|LINE-9002^^VORRO^EI||2|||A^Active^HL70776|72149^MRI lumbar w/ contrast^CPT

In-context excerpt, DFT P11 with two groups under one section:

MSH|^~&|VORRO|CLINIC-B|UHG|PAYER|20260610113000||DFT^P11^DFT_P11|MSG00046|P|2.8.1
EVN|P11|20260610113000
PID|1||MRN-44021^^^VORRO^MR||SMITH^JOHN^Q||19601122|M
PSS|SEC-410^^VORRO^EI||1|980.00^USD|Outpatient visit
PSG|GRP-8810^^VORRO^EI||1|Y|240.00^USD|E/M services
PSL|LINE-9101^^VORRO^EI||1|||A^Active^HL70776|99213^Office visit^CPT
PSG|GRP-8811^^VORRO^EI||2|N|740.00^USD|Laboratory panel
PSL|LINE-9102^^VORRO^EI||1|||A^Active^HL70776|80053^Comp metabolic panel^CPT
PSL|LINE-9103^^VORRO^EI||2|||A^Active^HL70776|85025^CBC w/ diff^CPT

FHIR mapping

PSG has no segment-level ConceptMap in the official v2-to-FHIR Implementation Guide. Conceptually, a PSG aligns with a grouping of Claim.item or Invoice.lineItem entries that share a common Claim.item.subDetail or Invoice.lineItem.priceComponent rollup. Implementations typically:

  • map PSG-1 to a Claim.item.sequence parent or to an Invoice.lineItem identifier extension;
  • carry PSG-5 as the rolled-up Claim.total for the group, when the receiving Claim resource models grouping explicitly;
  • preserve PSG-4 in a sender-specific extension because no FHIR boolean expresses "adjudicate as group" natively.

Engine considerations

  • HAPI v2.8.1 exposes PSG via ca.uhn.hl7v2.model.v281.segment.PSG with typed accessors getProviderProductServiceGroupNumber(), getProductServiceGroupSequenceNumber(), getAdjudicateAsGroup(), etc.
  • Mirth Connect treats PSG inside a PSS_PSG_PSL group; iterating requires nested loops because PSG repeats within PSS and PSL repeats within PSG.
  • Rhapsody and Cloverleaf both expose the segment but most published mappers stop at PSL — custom JavaScript is usually needed to surface PSG-4 and PSG-5.
  • Ensure your engine carries PSG-5's CP currency identifier (^USD, ^EUR) end-to-end; stripping the second component is a frequent silent loss.

How Vorro parses and produces PSG

Vorro's HL7 parser normalises PSG into a ProductServiceGroup node anchored to its parent ProductServiceSection, preserving original sequence numbers in a separate _originalSequence attribute so downstream consumers can re-emit segments in the order they arrived. On the producer side, Vorro recomputes PSG-5 from the child PSL billed amounts and emits a warning when the recomputed total disagrees with an incoming PSG-5 by more than one cent, allowing operators to choose between trust-sender or recompute-on-egress modes per route. PSG-4 is mapped to a typed boolean and round-tripped without coercion.

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 PSG Segment: Product/Service Group | Vorro Academy | Vorro