🎓
Load zen profiles into Aidbox
Enable the US Core Implementation Guide, extend it with profile and validate data against it
In the
.env
file find the line starting with AIDBOX_IMAGE
and edit it to be like this if it is not:.env
AIDBOX_IMAGE=healthsamurai/aidboxone:edge
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.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}
…}
;; 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}
…}
Add
AIDBOX_ZEN_DEV_MODE=enable
to your.env
file:.env
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.
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.

On this page you see the namespaces that are explicitly included in the zen project or used by Aidbox
Open your profile by clicking its name

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:Request
Response
Data is missing `birthDate` attribute, required by the profile
POST /Patient
Content-Type: text/yaml
name: [{given: [Harry], family: Potter}]
meta: {profile: ["urn:profile:MyPatientProfile"]}
An error has been returned
# status 422
resourceType: OperationOutcome
text:
status: generated
div: Invalid resource
issue:
- severity: fatal
code: invalid
expression:
- Patient.birthDate
diagnostics: ':birthDate is required'
Request
Response
Data contains `birthDate` required by profile
POST /Patient
Content-Type: text/yaml
name: [{given: [Harry], family: Potter}]
birthDate: "1980-07-31"
meta: {profile: ["urn:profile:MyPatientProfile"]}
# status 201
id: 20fdde9d-ede6-4edb-a16a-278ddfeef952
resourceType: Patient
name:
- given:
- Harry
family: Potter
birthDate: '1980-07-31'
meta:
profile:
- urn:profile:MyPatientProfile
lastUpdated: '2021-09-03T14:40:11.300957Z'
createdAt: '2021-09-03T14:40:11.300957Z'
versionId: '57'
If you want more tips about development and production usage, visit the links below:
Last modified 19d ago