Tools for generating PHP classes from the HL7 FHIR specification.
php-fhir reads the official FHIR XSD schema files and produces a fully-typed PHP library — complete with models for every FHIR type, JSON & XML (de)serialization, validation, and a ready-to-use FHIR REST client.
If you don't need to customise the generation process and just want usable FHIR models in your PHP project, grab the pre-built package:
➡️ dcarbone/php-fhir-generated
Full documentation is maintained on the project wiki:
| Page | Description |
|---|---|
| Getting Started | Prerequisites, installation, and downloading FHIR schemas |
| CLI Usage | Running the generator from the command line |
| Configuration Reference | All Config and VersionConfig options |
| Architecture | How the generator pipeline works internally |
| Generated Code | Understanding the output: namespaces, types, client, encoding |
| Testing | Running tests on the generator and on generated code |
| Contributing | Developer workflow and code-style notes |
| PHPFHIR Version | PHP Versions | FHIR Versions | Supported |
|---|---|---|---|
| v4 | 8.1+ | DSTU1, DSTU2, STU3, R4, R4B, R5 | Yes |
| v3 | 8.1–8.4 | DSTU1, DSTU2, STU3, R4, R4B, R5 | No |
| v2 | 5.4–7.4 | DSTU1, DSTU2, STU3, R4 | No |
- PHP 8.1 or newer
- Composer — getcomposer.org
- PHP extensions:
ctype,curl,dom,json,libxml,simplexml,xmlreader,xmlwriter - FHIR schemas: extracted XSD bundles for each version you wish to generate (see the Getting Started wiki page for download links)
# Standalone
git clone https://github.com/dcarbone/php-fhir.git
cd php-fhir && composer install
# — or as a Composer dependency in your own project —
composer require dcarbone/php-fhirmkdir -p fhir-schemas/R4
curl -Lo fhir-schemas/R4.zip https://hl7.org/fhir/R4/fhir-codegen-xsd.zip
unzip fhir-schemas/R4.zip -d fhir-schemas/R4Option A — PHP script:
<?php declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use DCarbone\PHPFHIR\Builder;
use DCarbone\PHPFHIR\Config;
use DCarbone\PHPFHIR\Config\VersionConfig;
$config = new Config(
libraryPath: __DIR__ . '/output/src',
versions: [
new VersionConfig(name: 'R4', schemaPath: __DIR__ . '/fhir-schemas/R4'),
],
testsPath: __DIR__ . '/output/tests', // optional
);
$builder = new Builder($config);
$builder->render();Option B — CLI (standalone checkout only):
./bin/generate.sh --versions R4 --logLevel infoSee the CLI Usage and Configuration Reference wiki pages for full details.
| Source | https://github.com/dcarbone/php-fhir |
| Pre-generated code | https://github.com/dcarbone/php-fhir-generated |
| Wiki / Docs | https://github.com/dcarbone/php-fhir/wiki |
| HL7 FHIR | https://hl7.org/fhir/ |