AnpherosAnpheros PlatformDevelopers

FHIR R4 validator

Paste a FHIR R4 resource in JSON and see every problem at once: the element path, what is wrong and how to fix it. Free, no account.

Use synthetic data. The resource is checked in memory and is not stored or logged, but there is no reason to paste a real patient's record into any website.

What this validator checks

It covers the 26 resource types Anpheros stores: AllergyIntolerance, Appointment, Basic, CarePlan, CareTeam, Condition, Consent, DiagnosticReport, DocumentReference, Encounter, EpisodeOfCare, FamilyMemberHistory, Goal, Immunization, MedicationAdministration, MedicationStatement, Observation, Organization, Patient, Practitioner, PractitionerRole, Procedure, Provenance, QuestionnaireResponse, RelatedPerson, ServiceRequest. The structural rules come from the fhir.resources R4B models, which match R4 for these types.

What it does not check

For full conformance testing, including terminology and implementation guides, use the official HL7 FHIR validator. This page is for the fast loop while you write code: paste, read the paths, fix, repeat.

Use it from code

The page calls a public endpoint you can call too, limited to 20 requests per minute per IP address and 100 kB per resource:

curl -s -X POST 'https://developers.anpheros.com/tools/fhir-validator/validate?profile=eu-lab' \
  -H 'Content-Type: application/fhir+json' \
  --data @observation.json

The answer is a FHIR OperationOutcome: one issue per problem, with severity, code, diagnostics and the element path in expression. Inside the platform the same checks run on every write and through POST /fhir/R4/{type}/$validate, which accepts the same profile parameter; see the API reference.

Valid examples to start from

The FHIR R4 JSON examples show a valid resource for each common type next to the mistakes that break it, with the exact error this validator returns.

Store it in a real FHIR R4 serverA free sandbox key gives you 30 synthetic patients and the full API, including POST /fhir/R4/Patient and $validate.
Get a free API key

Related guides