Data Extraction
Aidbox supports 3 options for data extraction: Observation-Based, Definition-Based, and Template-Based. These options provide flexibility in how form data is transformed into different FHIR resources
Observation-based extraction
it allows data collected through a Questionnaire Response (QR) to be extracted and stored in FHIR Observation resources.
Current Logic:
A new Observation is created for each Questionnaire Response instance at the time of data extraction.
If a QR is amended (modified after submission), the existing Observations linked to that QR are updated accordingly.
For detailed instructions and an example of extracting data into an Observation resource, visit the Observation-Based Extraction Guide.
Definition-based extraction
It maps form data dynamically to the corresponding FHIR resources. When configuring extraction, you must specify a FHIR Path expression in the Path field. This expression defines the resource and field where the data should be extracted.
Current Logic:
Two Options for Resource Extraction:
New Resource: If "new resource" is selected, a new resource is always created during extraction.Comment
Existing Resource: If "existing resource" is selected, the system includes the
questionnaire-itemExtractionContext
extension. This extension can be added either at the root of the Questionnaire or at any item level. It identifies the resource that serves as the context for extraction.Comment
Using itemExtractionContext
:
Empty
itemExtractionContext
: When theitemExtractionContext
is empty, the Questionnaire is used to create a new resource.Populated
itemExtractionContext
: If theitemExtractionContext
contains a resource (or set of resources), the Questionnaire updates the existing resource.
For detailed instructions and an example of extracting data into a Patient resource, visit the Definition-Based Extraction Guide.
Template-based extraction
It uses predefined templates embedded in the Questionnaire to extract answers into FHIR resources, along with all the "boiler-plate" content for the resource that is to be extracted..
Current Logic:
Templates are included in the Questionnaire as contained resources and referenced using the
sdc-questionnaire-templateExtract
orsdc-questionnaire-templateExtractBundle
extensions.
There is one location where you can place the
templateExtractBundle
extension:At the root level of the Questionnaire: Used when you want to extract several resources and control properties of Bundle and it's entries.
There are two options where you can place the
templateExtract
extension:At the root level of the Questionnaire: Used when you want to extract a single resource based on multiple answers from the form.
At the item level: Used when you want to extract data from specific questions or create a separate resource per repeated item.
Data is mapped from answers in the QuestionnaireResponse into the template using FHIRPath expressions.
Repeating items:
When
templateExtract
is placed on a repeatable item, the engine creates a new resource for each answer.When extracting to a field that is an array (e.g.,
Patient.address
), repeated answers can be added as multiple entries in the same resource.
Use of the
allocateId
extension allows generation of unique IDs and referencing between related resources.There is a way to make references between extracted resources:
In template, where you want to put reference - you put
templateExtractValue
extension with a FHIRPath expression referencing variable (for example%newPatientId
)In item that contain template which you want to reference - you should put
fullUrl
extension intotemplateExtract
extension and reference the same variable (for example%newPatientId
)You should find common parent item for these 2 items and put there
allocateId
extension with that variable name (for examplenewPatientId
- without '%' sign at front).item with
allocateId
extension defines a scope with a variable where temporary created id is accessible.You can put
allocateId
on any item or questionnaire's root.For repeated items you should put
allocateId
into repeated item and there will be created separate id for every iteration.
There is a way to extract new resource or modify existed.
When creating new resource - you fill template as is - without any additional effort
When updating existed resource - there are a couple of actions should be done before.
hidden text item for resource-id should be created
item should be populated with existed resource-id in
$populate
stepresourceId
extension with FHIRPath should be added totemplateExtract
extension, and FHIRPath expression should extracts id from hidden item.
If the template includes expressions that return no result, the corresponding field or entry is automatically excluded from the output.
Steps to create a resource template:
Select a predefined resource template from existing ones, or create a new template.
At this moment, the Resource Template Editor will be opened.
Set up the template name.
Select the resource type of the template you want to create (e.g., Patient, Observation).
Choose
new or existing resource
Search and prefill the fields that you need in this resource template.
Test and debug the extraction using the debug console. For this purpose, enter test data in the form.
Close the Resource Template Editor panel if everything is correct, or discard changes.
For detailed instructions and examples of using templates for data extraction, visit the Template-Based Extraction Guide.
Last updated
Was this helpful?