EDI X12 837P Professional Health Care Claim Parser & Validator
Instant sub-5ms parsing of ANSI X12 837P (5010X222A1) professional medical claims into structured JSON with full Hierarchical Loop (HL) resolution.
Quick Technical Summary: Instant sub-5ms parsing of ANSI X12 837P (5010X222A1) professional medical claims into structured JSON with full Hierarchical Loop (HL) resolution. Implementation conforms to ANSI ASC X12 Standards (005010).
Specification & Structural Breakdown
The ANSI X12 837P transaction set is mandated under HIPAA for submitting professional health care claims and billing encounters from physicians, clinics, and medical groups to commercial payers and Medicare/Medicaid.
Hierarchical Level (HL) loops structure the interchange into Billing Provider (HL*20), Subscriber (HL*22), and Dependent/Patient (HL*23) hierarchies.
The parser extracts CLM segments (claim control number, monetary charge totals, place of service), HI diagnosis codes (ICD-10-CM), and SV1 service lines with CPT/HCPCS procedure codes, modifiers, units, and line item charges.
| Segment | Description | Key Elements Extracted | Usage |
|---|---|---|---|
| BHT | Beginning of Hierarchical Transaction | BHT03 (Claim Reference), BHT04 (Creation Date), BHT06 (Claim Type) | Mandatory header |
| HL | Hierarchical Level | HL01 (ID), HL02 (Parent ID), HL03 (Level Code: 20/22/23) | Loop control |
| NM1 | Individual or Organizational Name | NM101 (85=Billing, IL=Insured, QC=Patient), NM103 (Last), NM109 (NPI/ID) | Entity identification |
| CLM | Health Care Claim | CLM01 (Patient Account #), CLM02 (Total Charge), CLM05 (Facility Code) | Claim header |
| HI | Health Care Information Codes | HI01-1 (BK: ICD-10 Principal Diagnosis), HI02-1 (BF: Secondary) | Clinical diagnosis |
| SV1 | Professional Service Line | SV101 (HC:CPT Code:Mod), SV102 (Charge), SV103 (UN), SV104 (Units) | Itemized billing |
Test EDI X12 837P Professional Health Care Claim Parser & Validator Live
Paste raw inputs up to 32KB and inspect deterministic parsed JSON in real-time across 330+ Cloudflare edge locations. Pure compute, zero cold-starts.
Parsed JSON Response Model
The edge microservice transforms input payloads into strongly-typed hierarchical JSON with zero cold starts:
{
"transactionSet": "837",
"implementationGuide": "005010X222A1",
"billingProvider": {
"name": "ACME MEDICAL GROUP",
"npi": "1982739485",
"taxId": "123456789"
},
"subscriber": {
"id": "W987654321",
"lastName": "JOHNSON",
"firstName": "ALICE",
"payerId": "PAYER01"
},
"claims": [
{
"claimSubmitterId": "CLM2026-001",
"totalClaimChargeAmount": 245,
"placeOfService": "11",
"diagnoses": [
{
"code": "M54.5",
"type": "principal"
}
],
"lines": [
{
"line": 1,
"procedureCode": "99214",
"chargeAmount": 245,
"units": 1
}
]
}
]
}
Copy-Paste Integration Code
Integrate this validator directly into your application using your production API key:
curl --request POST \
--url "https://healthcare-edi-ansi-x12-parser-837p-835-271.stanzaapi.com/api/v1/x12/parse" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data '{
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
}'
const response = await fetch("https://healthcare-edi-ansi-x12-parser-837p-835-271.stanzaapi.com/api/v1/x12/parse", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.API_KEY || "YOUR_API_KEY"
},
body: JSON.stringify({
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
})
});
const data = await response.json();
console.log(data);
import requests
import json
url = "https://healthcare-edi-ansi-x12-parser-837p-835-271.stanzaapi.com/api/v1/x12/parse"
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
}
payload = {
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := "https://healthcare-edi-ansi-x12-parser-837p-835-271.stanzaapi.com/api/v1/x12/parse"
payload := []byte(`{"raw":"ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Frequently Asked Questions & Technical Notes
The parser supports ANSI X12 837P version 005010X222A1 (HIPAA 5010) as well as legacy 4010 formats.
Yes. All LX and SV1 service loops are collected into strongly-typed arrays with procedure codes, modifiers, and charges.
Coordination of Benefits loops (2320/2330) are parsed into payer hierarchy arrays with respective prior payments.
Related Healthcare EDI ANSI X12 Parser API Formats
Explore sibling specifications and standards in the same developer cluster:
EDI X12 837I Institutional Health Care Claim Parser & Validator
Automated institutional claim parser for hospital inpatient and outpatient EDI 837I files with UB-04 revenue code mapping.
View Format →ANSI 835 EDI Remittance Advice (ERA) Parser & Payment Engine
High-speed ANSI 835 ERA parser extracting payer payments, deductible/coinsurance CAS adjustments, CARC/RARC codes, and PLB provider adjustments.
View Format →EDI X12 270 Health Care Eligibility & Benefit Inquiry Parser
Parse inbound real-time and batch HIPAA 270 eligibility check requests into structured JSON payloads in under 3ms.
View Format →EDI X12 271 Health Care Eligibility & Benefit Response Parser
Extract copays, remaining deductibles, out-of-pocket maximums, and in-network coverage terms from 271 EDI response streams.
View Format →