🎓Load zen profiles into Aidbox
Enable the US Core Implementation Guide, extend it with profile and validate data against it
Prerequisites
Install the Aidbox following this guide.
In the .env
file find the line starting with AIDBOX_IMAGE
and edit it to be like this if it is not:
AIDBOX_IMAGE=healthsamurai/aidboxone:edge
Start with a zen project
The Aidbox starter repository you cloned by following the guide from Prerequisites is already a zen project. It has zen-package.edn
, the project package file, and zrc/system.edn
, the project entry file.
Add the required IG packages as dependencies
Update zen-package.edn
so that it reflects information about the new project’ dependencies.
;; zen-package.edn
{:deps {hl7-fhir-r4-core "https://github.com/zen-fhir/hl7-fhir-r4-core.git"
hl7-fhir-us-core "https://github.com/zen-fhir/hl7-fhir-us-core.git"}}
A dependency is any other zen project. It is common to include FHIR IG packages this way. We provide a number of prepackaged FHIR IGs which you can use similarly to the example above.
You also need to update an entry file, zrc/system.edn
. It is used, among other things, for importing and loading all the project’s files, including its dependencies.
;; zrc/system.edn
{ns system
import #{aidbox
aidbox.config
hl7-fhir-r4-core
hl7-fhir-us-core}
…}
Create a namespace with your profiles
;; zrc/my-profiles.edn
{ns my-profiles
import #{hl7-fhir-us-core.us-core-patient}
MyPatientProfile
{:zen/tags #{zen/schema zen.fhir/profile-schema}
;; :confirms is needed only if you want to extend an existing profile
:confirms #{hl7-fhir-us-core.us-core-patient/schema}
:zen.fhir/type "Patient"
:zen.fhir/profileUri "urn:profile:MyPatientProfile"
:type zen/map
:require #{:birthDate}}}
Add my-profiles
namespace to the entry file imports.
;; zrc/system.edn
{ns system
import #{aidbox
aidbox.config
hl7-fhir-r4-core
hl7-fhir-us-core
my-profiles}
…}
Setup Aidbox for development with zen projects
Add AIDBOX_ZEN_DEV_MODE=enable
to your.env
file:
AIDBOX_ZEN_DEV_MODE=enable
Now Aidbox will automatically reload when changes are made in the project. Note that this feature is a work in progress and some things may not reload properly.
Check if your profile is loaded
Start Aidbox.
docker compose up
Open Aidbox in your browser and click Profiles
tab in the left menu:

You should see the list of zen namespaces loaded.

Open your profile by clicking its name

Start validation
Test the data against this profile using validate tab

If your profile is tagged zen.fhir/profile-schema
it can be used to validate your data
On FHIR CRUD API requests a profile will be applied if data includes :zen.fhir/profileUri
in the meta.profile
attribute:
POST /Patient
Content-Type: text/yaml
name: [{given: [Harry], family: Potter}]
meta: {profile: ["urn:profile:MyPatientProfile"]}
POST /Patient
Content-Type: text/yaml
name: [{given: [Harry], family: Potter}]
birthDate: "1980-07-31"
meta: {profile: ["urn:profile:MyPatientProfile"]}
Development and production tips
If you want more tips about development and production usage, visit the links below:
Example project
See the example project used on this page.
Last updated
Was this helpful?