Example generation

YamlGen has several ways to speed up generation of randomized data. This can be useful for example generation or test data.

Auto generator

You can use YamlGen to auto-generate FHIR resource data with an accelerator named $auto. This is a pseudo-field that generates data at the level where it is placed, and it takes one or more generator names. The following script takes the ‘example’ values from the Patient profile for address:

Patient/1:
    address:
        $auto: empty

resulting in:

{
    "resourceType": "Patient",
    "id": "1",
    "address":  [
        {
            "use": "",
            "type": "",
            "text": "",
            "line":  [
                ""
            ],
            "city": "",
            "district": "",
            "state": "",
            "postalCode": "",
            "country": ""
        }
    ]
}

You can place the $auto pseudo-field on any level that is not an actual value. The following generators exist:

  • example: takes example values from the profile

  • random: generates random values

  • fixed: puts the fixed values from the profile

  • code: fills in a random code from the referenced ValueSet or CodeSystem

  • empty: generates empty values

They are consumed in order, so you put the ones that always produce a value last. This creates a full example:

Patient/1:
    $auto: code, example, fixed, random, empty

Random references

You can reference a random resource from the produced set of resources by using # instead of the id reference:

Practitioner/#2:
  name:
    given: James
    family: Madison

Patient/#2:
  name:
    given: Walter
    family: White
  generalPractitioner:
    reference: Practitioner/#

Multiple resources

This part is still experimental and subject to change.

You can generate multiple resources with the following syntax:

Patient/#3:

will result in:

{
    "resourceType": "Patient",
    "id": "1"
}

{
    "resourceType": "Patient",
    "id": "2"
}

{
    "resourceType": "Patient",
    "id": "3"
}