HL7 & CDA HIPAA X12 & RMap CMS 2026 API

Redix Universal Healthcare Data Converter

Transform healthcare data between formats: HL7, FHIR, HIPAA/X12, CDA, CSV, XML, RMap, and more

New! Now supports HIPAA/X12, CSV, XML, RMap conversions - Select from dropdown below
Demo Environment - Test data only. No real patient information.
Choose a specific conversion or leave as "Auto-Detect" for automatic HL7/CDA detection

Drop file here or click to browse

Auto-Detect Mode: HL7 v2.x (14 message types) and CDA R2 documents
Or select a conversion above for: HIPAA/X12, CSV, XML, RMap, Fixed-format, and more!

Drop multiple files here or click to browse

Process up to HL7 files at once (Auto-Detect mode only)

Processing Pipeline
Auto-detecting message type from MSH
Running HL7Normalize preprocessing
Converting to FHIR using Redix engine
Conversion complete
Message Type
-
Resources Created
-
Bundle Type
Collection
FHIR Version
R4

                        

                            
Common Use Cases & Demo Scenarios

Explore typical healthcare integration challenges and see how Redix can solve them

Common Challenge: Care coordinators often spend 1-2 hours per discharge manually transcribing allergy data from CDA documents.
Before: CDA XML
<allergiesSection>
  <entry>
    <act classCode="ACT">
      <observation>
        <code code="416098002"
              displayName="Drug allergy"/>
        <participant>
          <playingEntity>
            <code code="372687004"
                  displayName="Penicillin"/>
          </playingEntity>
        </participant>
        <entryRelationship>
          <observation>
            <value code="271807003"
                   displayName="Rash"/>
          </observation>
        </entryRelationship>
      </observation>
    </act>
  </entry>
</allergiesSection>
After: FHIR R4
{
  "resourceType": "AllergyIntolerance",
  "clinicalStatus": {
    "coding": [{
      "code": "active"
    }]
  },
  "type": "allergy",
  "category": ["medication"],
  "code": {
    "coding": [{
      "system": "http://snomed.info/sct",
      "code": "372687004",
      "display": "Penicillin"
    }]
  },
  "patient": {
    "reference": "Patient/12345"
  },
  "reaction": [{
    "manifestation": [{
      "coding": [{
        "code": "271807003",
        "display": "Rash"
      }]
    }]
  }]
}
Expected Benefits:
  • Eliminate manual transcription time
  • Improve data accuracy and consistency
  • Rapid implementation (days, not months)

Common Challenge: Payer quality teams need to extract A1C values for HEDIS reporting, but analysts often spend hours manually parsing CCD XML files.
Before: CCD Results
<results>
  <entry>
    <organizer>
      <code code="4548-4"
            displayName="Hemoglobin A1c"/>
      <component>
        <observation>
          <effectiveTime value="20250314"/>
          <value xsi:type="PQ"
                 value="7.6"
                 unit="%"/>
          <interpretationCode code="H"
                              displayName="High"/>
          <referenceRange>
            <observationRange>
              <value>
                <low value="4.0" unit="%"/>
                <high value="5.6" unit="%"/>
              </value>
            </observationRange>
          </referenceRange>
        </observation>
      </component>
    </organizer>
  </entry>
</results>
After: FHIR R4 Observation
{
  "resourceType": "Observation",
  "status": "final",
  "category": [{
    "coding": [{
      "code": "laboratory"
    }]
  }],
  "code": {
    "coding": [{
      "system": "http://loinc.org",
      "code": "4548-4",
      "display": "Hemoglobin A1c"
    }]
  },
  "subject": {
    "reference": "Patient/789"
  },
  "effectiveDateTime": "2025-03-14",
  "valueQuantity": {
    "value": 7.6,
    "unit": "%"
  },
  "interpretation": [{
    "coding": [{
      "code": "H",
      "display": "High"
    }]
  }],
  "referenceRange": [{
    "low": {"value": 4.0},
    "high": {"value": 5.6}
  }]
}
Expected Benefits:
  • Automate bulk CCD processing (95%+ no-touch rate)
  • Dramatically reduce analyst time (70%+ reduction typical)
  • Improve data quality through consistent extraction

Common Challenge: Health information exchanges (HIEs) receive ADT feeds from multiple hospitals in legacy HL7 v2.5 format, but modern patient matching engines require FHIR R4.
Before: HL7 v2.5 ADT
MSH|^~\&|SendApp|SendFac|RecApp|RecFac|
  20240101120000||ADT^A01|MSG123456|P|2.5
EVN|A01|20240101120000
PID|1||12345^^^MRN||DOE^JOHN^ALLEN||
  19800115|M|||123 MAIN ST^^BOSTON^MA^
  02118||555-1234|||S||MRN12345
PV1|1|I|4W^401^01||||ADM||||||||
  V123456|||||||||||||||||20240101120000
After: FHIR R4 Patient
{
  "resourceType": "Patient",
  "identifier": [{
    "type": {"coding": [{"code": "MR"}]},
    "value": "12345"
  }],
  "name": [{
    "use": "official",
    "family": "DOE",
    "given": ["JOHN", "ALLEN"]
  }],
  "telecom": [{
    "system": "phone",
    "value": "555-1234"
  }],
  "gender": "male",
  "birthDate": "1980-01-15",
  "address": [{
    "line": ["123 MAIN ST"],
    "city": "BOSTON",
    "state": "MA",
    "postalCode": "02118"
  }],
  "maritalStatus": {
    "coding": [{
      "code": "S",
      "display": "Never Married"
    }]
  }
}
Expected Benefits:
  • High-speed processing (200-400ms per message)
  • Enterprise throughput: 2,000+ messages/minute
  • Rapid deployment: days instead of months
Ready to test your own data?

Upload your HL7 or CDA file above and get instant FHIR R4 output. No registration required.

REST API Documentation

Integrate Redix Universal Converter into your applications - supports HL7, CDA, HIPAA/X12, and more

API Base URL: https://demo.redix.com/api/v2
Interactive Documentation (Swagger UI): https://demo.redix.com/docs
Local/Direct Access: http://localhost:8080/api/v2 (bypasses Nginx, for server-side testing only)

The Redix REST API enables programmatic access to our universal data conversion platform. Convert between:

HL7 to FHIR
  • ADT (Admissions)
  • ORU (Lab Results)
  • ORM (Orders)
  • 14+ message types
CDA to FHIR
  • CCD (Continuity of Care)
  • Discharge Summaries
  • Progress Notes
  • Clinical Documents
Universal Conversions
  • HIPAA/X12 (837, 835, 270, etc.)
  • EDIFACT/RMap
  • XML, CSV, Fixed-format
  • Custom conversions
Smart Detection: The API automatically detects input format and applies appropriate conversion rules.

Endpoint:
POST /api/v2/convert/hl7-to-fhir
Description:

Convert HL7 v2.x messages to FHIR R4 bundles. Supports ADT, ORU, ORM, SIU, VXU, MDM, DFT, and more.

Request Example:
curl -X POST https://demo.redix.com/api/v2/convert/hl7-to-fhir \
  -H "Content-Type: application/json" \
  -d '{
    "content": "MSH|^~\\&|SendApp|SendFac|RecApp|RecFac|20240101120000||ADT^A01|123456|P|2.5\rPID|1||12345^^^MRN||DOE^JOHN^A||19800101|M|||123 MAIN ST^^CITY^ST^12345||555-1234|||S||"
  }'
import requests

hl7_message = """MSH|^~\\&|SendApp|SendFac|RecApp|RecFac|20240101120000||ADT^A01|123456|P|2.5
PID|1||12345^^^MRN||DOE^JOHN^A||19800101|M|||123 MAIN ST^^CITY^ST^12345||555-1234|||S||"""

response = requests.post(
    'https://demo.redix.com/api/v2/convert/hl7-to-fhir',
    json={'content': hl7_message}
)

result = response.json()
if result['success']:
    fhir_bundle = result['fhir_bundle']
    print(f"āœ“ Converted to {len(fhir_bundle['entry'])} FHIR resources")
else:
    print(f"āœ— Error: {result['error']}")
const hl7Message = `MSH|^~\\&|SendApp|SendFac|RecApp|RecFac|20240101120000||ADT^A01|123456|P|2.5
PID|1||12345^^^MRN||DOE^JOHN^A||19800101|M|||123 MAIN ST^^CITY^ST^12345||555-1234|||S||`;

fetch('https://demo.redix.com/api/v2/convert/hl7-to-fhir', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ content: hl7Message })
})
.then(res => res.json())
.then(result => {
    if (result.success) {
        console.log('āœ“ FHIR Bundle:', result.fhir_bundle);
    } else {
        console.error('āœ— Error:', result.error);
    }
});
Response Format:
{
  "success": true,
  "message_type": "ADT",
  "description": "Admit/Discharge/Transfer",
  "fhir_bundle": {
    "resourceType": "Bundle",
    "type": "collection",
    "entry": [
      {
        "resource": {
          "resourceType": "Patient",
          "id": "patient-12345",
          "name": [{"family": "DOE", "given": ["JOHN"]}],
          "birthDate": "1980-01-01",
          "gender": "male"
        }
      }
    ]
  },
  "metadata": {
    "patient_id": "12345",
    "patient_name": "JOHN DOE",
    "message_control_id": "123456"
  }
}

Endpoint:
POST /api/v2/convert/cda-to-fhir
Description:

Convert CDA (Clinical Document Architecture) documents to FHIR R4 bundles. Supports C-CDA, CCD, discharge summaries, progress notes, and more.

Request Example:
curl -X POST https://demo.redix.com/api/v2/convert/cda-to-fhir \
  -H "Content-Type: application/json" \
  -d '{
    "content": "\n..."
  }'
import requests

# Read CDA XML file
with open('ccd_sample.xml', 'r') as f:
    cda_content = f.read()

response = requests.post(
    'https://demo.redix.com/api/v2/convert/cda-to-fhir',
    json={'content': cda_content}
)

result = response.json()
if result['success']:
    fhir_bundle = result.get('fhir_bundle') or result.get('output')
    print(f"āœ“ CDA converted successfully")
else:
    print(f"āœ— Error: {result['error']}")
// Read CDA XML content
const cdaXml = `

  
`;

fetch('https://demo.redix.com/api/v2/convert/cda-to-fhir', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ content: cdaXml })
})
.then(res => res.json())
.then(result => {
    if (result.success) {
        console.log('āœ“ FHIR Output:', result.fhir_bundle || result.output);
    } else {
        console.error('āœ— Error:', result.error);
    }
});
Response Format:
{
  "success": true,
  "output": {
    "resourceType": "Bundle",
    "type": "collection",
    "entry": [
      {
        "resource": {
          "resourceType": "Composition",
          "type": {"coding": [{"code": "34133-9", "display": "Summarization of Episode Note"}]},
          "subject": {"reference": "Patient/patient-id"}
        }
      },
      {
        "resource": {
          "resourceType": "Patient",
          "name": [{"family": "Smith", "given": ["Jane"]}]
        }
      }
    ]
  }
}

Endpoint:
POST /api/v2/convert/smart
Description:

Universal conversion endpoint with smart format detection. Handles HIPAA/X12 (837, 835, 270, 271, etc.), EDIFACT/RMap, XML, CSV, fixed-format files, and custom conversions.

Smart Detection: Automatically detects input format and selects appropriate converter based on configured conversion rules.
Supported Formats:
Format CONVFLAG Examples
HIPAA/X12 x 837P, 837I, 835, 270, 271, 276, 277, 834
EDIFACT/RMap e RMap version 5 documents
XML b/c/d Well-formed, with DTD, with Schema
CSV/Delimited t Comma, tab, pipe-delimited files
Fixed-Length f Fixed-position text files
Database Extract r Database export formats
Request Example (HIPAA 837P):
curl -X POST https://demo.redix.com/api/v2/convert/smart \
  -H "Content-Type: application/json" \
  -d '{
    "content": "ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *240101*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20240101*1200*1*X*005010X222A1~..."
  }'
import requests

# Example: HIPAA 837P Professional Claims
x12_837p = """ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *240101*1200*^*00501*000000001*0*P*:~
GS*HC*SENDER*RECEIVER*20240101*1200*1*X*005010X222A1~
ST*837*0001*005010X222A1~
BHT*0019*00*123456*20240101*1200*CH~
..."""

response = requests.post(
    'https://demo.redix.com/api/v2/convert/smart',
    json={'content': x12_837p}
)

result = response.json()
if result['success']:
    output = result.get('output') or result.get('fhir_bundle')
    print(f"āœ“ Conversion successful")
    print(f"Output: {output}")
else:
    print(f"āœ— Error: {result['error']}")
// Example: CSV to JSON conversion
const csvData = `PatientID,FirstName,LastName,DOB,Gender
12345,John,Doe,1980-01-01,M
67890,Jane,Smith,1975-05-15,F`;

fetch('https://demo.redix.com/api/v2/convert/smart', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ content: csvData })
})
.then(res => res.json())
.then(result => {
    if (result.success) {
        console.log('āœ“ Converted:', result.output);
    } else {
        console.error('āœ— Error:', result.error);
    }
});
Response Format:
{
  "success": true,
  "conversion_type": "hipaa-x12",
  "output": {
    // Converted output (JSON, XML, or other format based on conversion rules)
    // Format depends on the output configuration in .cfg file
  },
  "metadata": {
    "input_format": "X12/HIPAA",
    "conversion_applied": "837p_professional",
    "timestamp": "2024-01-01T12:00:00Z"
  }
}

Endpoint:
POST /api/v2/detect
Description:

Detect the format of input data without performing conversion. Returns detected format type and confidence level.

Example Request:
curl -X POST https://demo.redix.com/api/v2/detect \
  -H "Content-Type: application/json" \
  -d '{
    "content": "MSH|^~\\&|SendApp|SendFac|RecApp|RecFac|20240101120000||ADT^A01|123456|P|2.5"
  }'
Response:
{
  "success": true,
  "detected_format": "HL7",
  "message_type": "ADT",
  "confidence": "high",
  "details": {
    "version": "2.5",
    "encoding_characters": "^~\\&",
    "message_control_id": "123456"
  }
}

šŸ„ Healthcare Interoperability

Convert legacy HL7 messages and CDA documents to FHIR for modern EHR integration.

šŸ’³ Claims Processing

Transform HIPAA X12 837 claims to JSON for analytics, or convert database extracts to 837 for submission.

šŸ“Š Data Migration

Batch convert thousands of files during system migrations - HL7, CDA, X12, CSV, XML, and more.

šŸ”„ Real-time Integration

Process incoming data streams in real-time - lab results, eligibility checks, claim status updates.

šŸ“ˆ Analytics & Reporting

Convert healthcare transactions to structured JSON/FHIR for business intelligence and reporting.

🌐 International Exchange

Transform between US HIPAA and international EDIFACT/RMap formats for global partnerships.

Demo Environment: Use only test/synthetic data. Never submit real patient information!

HTTP Status Codes:
Status Code Meaning Solution
200 Success Conversion completed successfully
400 Bad Request Invalid input format or missing required fields
404 Not Found Conversion configuration not found for detected format
413 Payload Too Large File exceeds size limit (10MB)
422 Unprocessable Entity Format detected but conversion failed - check content validity
500 Server Error Internal conversion error - check error message for details
Error Response Format:
{
  "success": false,
  "error": "Could not detect message type from MSH-9 field",
  "error_type": "ValidationError",
  "details": {
    "field": "MSH-9",
    "expected": "Message type code (e.g., ADT^A01)",
    "received": "null"
  }
}
Best Practices:
  • Always check the success field in responses
  • Use format detection endpoint first for unknown data types
  • Implement retry logic with exponential backoff for 5xx errors
  • Validate input data before sending to reduce 400 errors
  • Log error details for troubleshooting
Need Help?

Contact our support team for API assistance:

support@redix.com