Validation & Profiles

100% offline FHIR validation with US Core 6.1.0 and implementation guide profiles.

Overview

InteropSuite provides comprehensive validation at two stages: preflight validation of source messages and FHIR validation of generated bundles. All validation runs 100% offline with no network calls required.

100% Offline - PHI Never Leaves Your Infrastructure

All validation profiles are embedded in the library. No calls to external validation services, no FHIR servers required, no PHI exposure risk.

Offline Validation

InteropSuite embeds all validation resources locally:

ComponentDescription
FHIR R4 Definitions Complete HL7 FHIR R4 structure definitions and value sets
US Core 6.1.0 All US Core profiles, extensions, and terminology
CARIN Blue Button 2.1.0 Consumer-directed health data exchange profiles
Da Vinci PAS 2.0.1 Prior Authorization Support profiles
PDex 2.1.0 Payer Data Exchange provenance profiles
HL7 Terminology 5.5.0 SNOMED CT, LOINC, ICD-10, CPT, NDC, CVX, and all HL7 code systems
No External Dependencies

Validation uses the Firely SDK with embedded specifications. No internet connection, no external FHIR servers, no terminology services required.

US Core 6.1.0 Profiles

All FHIR resources are validated against appropriate US Core profiles:

Clinical Resources

ResourceProfile
Patientus-core-patient
Encounterus-core-encounter
Conditionus-core-condition-encounter-diagnosis, us-core-condition-problems-health-concerns
AllergyIntoleranceus-core-allergyintolerance
Procedureus-core-procedure
Immunizationus-core-immunization
MedicationRequestus-core-medicationrequest
MedicationDispenseus-core-medicationdispense

Diagnostic Resources

ResourceProfile
Observation (Lab)us-core-observation-lab
Observation (Vital Signs)us-core-vital-signs (with specific profiles per vital)
Observation (Smoking)us-core-smokingstatus
DiagnosticReportus-core-diagnosticreport-lab
DocumentReferenceus-core-documentreference

Administrative Resources

ResourceProfile
Practitionerus-core-practitioner
Organizationus-core-organization
Coverageus-core-coverage
CareTeamus-core-careteam
Provenanceus-core-provenance

Vital Signs Profiles

Vital sign observations are automatically profiled based on LOINC code:

Vital SignLOINCProfile
Blood Pressure85354-9us-core-blood-pressure
Heart Rate8867-4us-core-heart-rate
Respiratory Rate9279-1us-core-respiratory-rate
Body Temperature8310-5us-core-body-temperature
Body Weight29463-7us-core-body-weight
Body Height8302-2us-core-body-height
BMI39156-5us-core-bmi
Oxygen Saturation2708-6us-core-pulse-oximetry

CMS-0057-F Profiles

InteropSuite transforms X12 5010 transactions to FHIR R4 bundles validated against CMS-0057-F profiles. When using OutputFormat.Cms0057F, profiles are automatically selected based on transaction type:

CARIN Blue Button 2.1.0

Used for 835 (Remittance) and 837 (Claims) transactions:

ResourceProfile
ExplanationOfBenefitC4BB-ExplanationOfBenefit-Professional, C4BB-ExplanationOfBenefit-Institutional
ClaimC4BB-Claim-Professional, C4BB-Claim-Institutional
CoverageC4BB-Coverage
OrganizationC4BB-Organization

Da Vinci PAS 2.0.1

Used for 278 (Prior Authorization) transactions:

ResourceProfile
ClaimPAS-Claim
ClaimResponsePAS-ClaimResponse
CoveragePAS-Coverage

PDex 2.1.0 Provenance

All CMS-0057-F bundles include PDex Provenance with source format tracking:

TransactionProvenance Source Code
837P/I/D (Claims)x12837
278 (Prior Auth)x12278
835 (Remittance)x12other
834 (Enrollment)x12other
270/271 Eligibility

Eligibility transactions use US Core profiles (not PDex) because Da Vinci PDex 2.1.0 does not define CoverageEligibilityRequest/Response profiles.

Preflight Validation

Before transformation, source messages undergo preflight validation:

HL7 v2.x Preflight

  • Message structure validation (MSH segment present)
  • Required segment checks (PID for patient messages)
  • Field format validation (dates, identifiers)
  • Code system validation (optional)

X12 Preflight

  • Envelope validation (ISA/GS/ST structure)
  • Delimiter consistency
  • Loop structure validation
  • NPI checksum validation

C-CDA Preflight

  • XML well-formedness
  • ClinicalDocument root element
  • HL7 v3 namespace presence
  • Required header elements

Severity Levels

SeverityBehavior
BlockTransformation stops, message is rejected
ErrorTransformation stops, message is rejected
WarnTransformation continues, warning logged
InfoInformational only, transformation continues

Handling Warnings

Warnings indicate non-blocking issues that may affect data quality:

var result = await Interop.HL7ToFhirAsync(message);

// Transformation succeeds even with warnings
if (result.Success)
{
    // Process the bundle
    SaveBundle(result.FhirBundle);

    // Log warnings for review
    if (result.Warnings.Any())
    {
        foreach (var warning in result.Warnings)
        {
            _logger.LogWarning("Transformation warning: {Warning}", warning);
        }

        // Optionally flag for manual review
        FlagForReview(result.FhirBundle, result.Warnings);
    }
}

Common Warning Types

WarningDescriptionAction
Missing optional field Recommended field not populated Review source data quality
Unknown code Code not found in expected code system Verify code mapping
Date format Date precision lower than expected Check source system date handling
Identifier format Identifier doesn't match expected pattern Review identifier assignment