Aidbox User Docs
Run Aidbox locallyRun Aidbox in SandboxTalk to us Ask community
  • Aidbox FHIR platform documentation
    • Features
    • Architecture
  • Getting Started
    • Run Aidbox in Sandbox
    • Run Aidbox locally
    • Run Aidbox on AWS
    • Upload Sample Data
  • Tutorials
    • CRUD, Search Tutorials
      • Delete data
      • Set up uniqueness in Resource
      • Search Tutorials
        • Custom SearchParameter tutorial
        • Create custom Aidbox Search resource
        • Multilingual search tutorial
        • Migrate from Aidbox SearchParameter to FHIR SearchParameter
        • Change sort order by locale collation
    • Bulk API Tutorials
      • 🎓Synthea by Bulk API
      • 🎓$dump-sql tutorial
    • Security & Access Control Tutorials
      • Authentication Tutorial
      • Allow patients to see their own data
      • Restrict operations on resource type
      • Relationship-based access control
      • Creating user & set up full user access
      • Restricting Access to Patient Data
      • Create and test access control
      • RBAC
        • Flexible RBAC built-in to Aidbox
        • RBAC with JWT containing role
        • RBAC with ACL
      • Set-up token introspection
      • Prohibit user to login
      • Debug access control
      • Managing Admin Access to the Aidbox UI Using Okta Groups
      • Run Multibox locally
      • How to enable labels-based access control
      • How to enable patient data access API
      • How to enable SMART on FHIR on Patient Access API
      • How to enable hierarchical access control
      • How to configure Audit Log
    • Terminology Tutorials
      • Load ICD-10 terminology into Aidbox
      • Uploading IG terminology content to external FHIR terminology server
    • Validation Tutorials
      • Upload FHIR Implementation Guide
        • Environment Variable
        • Aidbox UI
          • IG Package from Aidbox Registry
          • Public URL to IG Package
          • Local IG Package
        • Aidbox FHIR API
        • UploadFIG Tool
      • ISiK
      • Carin BB
      • US Core
      • Davinci Pdex
      • mCode
    • Integration Toolkit Tutorials
      • Postmark integration tutorial
      • Mailgun integration tutorial
    • Subscriptions Tutorials
      • AidboxTopicSubscription NATS tutorial
    • Other tutorials
      • Run Aidbox with FHIR R6
      • Migrate from Multibox to Aidbox
      • SDC with Custom Resources
      • How to create FHIR NPM package
      • Migrate from legacy licence portal to Aidbox portal
      • How to run Aidbox in GCP Cloud Run
  • Overview
    • Licensing and Support
    • Aidbox user portal
      • Projects
      • Licenses
      • Members
    • Aidbox UI
      • Aidbox Notebooks
      • REST Console
      • Database Console
      • Attrs stats
      • DB Tables
      • DB Queries
    • Versioning
    • Release Notes
    • Contact us
  • Configuration
    • Settings
    • Configure Aidbox and Multibox
    • Init Bundle
  • API
    • REST API
      • CRUD
        • Create
        • Read
        • Update
        • Patch
        • Delete
      • FHIR Search
        • SearchParameter
        • Include and Revinclude
        • Chaining
      • Aidbox Search
      • Bundle
      • History
      • $everything on Patient
      • Other
        • Aidbox & FHIR formats
        • Capability Statement
        • $document
        • Observation/$lastn
        • $validate
        • SQL endpoints
        • $matcho
        • $to-format
        • Aidbox version
        • Health check
    • Bulk API
      • Configure Access Policies for Bulk API
      • $dump
      • $dump-sql
      • $dump-csv
      • $export
      • $load & /fhir/$load
      • $import & /fhir/$import
      • aidbox.bulk data import
      • Bulk import from an S3 bucket
    • Batch/Transaction
    • GraphQL API
    • Other APIs
      • Plan API
        • Provider Directory API
          • Practitioner
          • PractitionerRole
          • Organization
          • OrganizationAffiliation
        • Plan API Overview
      • Archive/Restore API
        • create-archive
        • restore-archive
        • prune-archived-data
        • delete-archive
      • ETAG support
      • Cache
      • Changes API
      • RPC API
      • Sequence API
      • Encryption API
      • Batch Upsert
  • Modules
    • Profiling and validation
      • FHIR Schema Validator
        • Aidbox FHIR IGs Registry
        • Setup Aidbox with FHIR Schema validation engine
      • Skip validation of references in resource using request header
      • Asynchronous resource validation
    • Security & Access Control
      • Authentication Flows
        • Basic Auth
        • Client Credentials Grant
        • Resource Owner Grant
        • Authorization Code Grant
        • Implicit Grant
        • Two Factor Authentication
        • External OAuth 2.0 Providers
        • Token Exchange
      • External identity providers
        • Aidbox
        • Okta
        • Azure AD
        • Azure AD with certificate authentication
        • Keycloak
        • GitHub
        • Microsoft AD FS
        • Apple
      • Access Control
        • AccessPolicy
        • Evaluation engines
        • Role-Based Access Control (/RBAC)
        • Attribute-based Access Control (/ABAC)
        • Multitenancy
        • Access control lists (/ACL)
        • Access policy dev tool
        • AccessPolicy best practices
      • Audit
        • Audit Log
    • Observability
      • Getting started
        • Run Aidbox with OpenTelemetry locally
        • How to export telemetry to the OTEL collector
      • Logs
        • How-to guides
          • OpenTelemetry logs
          • Elastic Logs and Monitoring Integration
          • Datadog Log management integration
          • Loki Log management integration
        • Tutorials
          • Log analysis and visualization tutorial
          • Export logs to Datadog tutorial
        • Extending Aidbox Logs
        • Technical reference
          • Log appenders
          • Log transformations
          • Log Schema
          • OTEL logs exporter parameters
      • Metrics
        • How-to guides
          • How to export metrics to the OTEL collector
          • Use Aidbox Metrics Server
          • Set-up Grafana integration
        • Technical reference
          • OpenTelemetry Metrics
          • OTEL metrics exporter parameters
      • Traces
        • How to use tracing
        • OTEL traces exporter parameters
    • Subscriptions
      • Aidbox topic-based subscriptions
        • Kafka AidboxTopicDestination
        • Webhook AidboxTopicDestination
        • GCP Pub/Sub AidboxTopicDestination
        • Tutorial: produce QuestionnaireResponse to Kafka topic
      • Aidbox SubSubscriptions
    • Aidbox Forms
      • Getting started
      • Aidbox Forms Interface
      • Aidbox UI Builder
        • UI Builder Interface
        • Form creation
          • Form Settings
          • Widgets
          • Components
          • Versioning
          • Form customisation in Theme Editor
          • Form signature
          • How-to guides
            • How to: populate forms with data
            • How to extract data from forms
            • How to calculate form filling percentage
          • Multilingual forms
          • FHIRPath Editor
        • Import Questionnaire
        • Form sharing
        • Printing forms
          • Template-based PDF generation
        • FHIR versions
        • Offline forms
        • Embedding
          • Request Interception
        • Configuration
        • Forms multitenancy
        • Building reports using SQL on FHIR
        • Integration with external terminology servers
        • External FHIR servers as a data backend
        • Store attachments in S3-like storages
      • Access Control in Forms
      • Audit Logging in Forms
      • Aidbox Form Gallery
    • Define extensions
      • Extensions using StructureDefinition
      • Extensions using FHIRSchema
    • Custom Resources
      • Custom resources using FHIR Schema
      • Custom resources using StructureDefinition
      • Migrate to FHIR Schema
        • Migrate custom resources defined with Entity & Attributes to FHIR Schema
        • Migrate custom resources defined with Zen to FHIR Schema
    • Aidbox terminology module
      • Concept
        • $translate-concepts
        • Handling hierarchies using ancestors
      • ValueSet
        • ValueSet Expansion
        • ValueSet Code Validation
        • Create a ValueSet
      • CodeSystem
        • CodeSystem Concept Lookup
        • CodeSystem Subsumption testing
        • CodeSystem Code Composition
      • Import external terminologies
        • Import flat file (/CSV)
        • $import operation
        • Ready-to-use terminologies
      • $translate on ConceptMap
    • SQL on FHIR
      • Defining flat views with View Definitions
      • Query data from flat views
      • Reference
    • Integration toolkit
      • C-CDA / FHIR Converter
        • List of supported templates
          • Admission Diagnosis Section (/V3)
          • Advance Directives Section (/entries optional) (/V3)
          • Advance Directives Section (/entries required) (/V3)
          • Allergies and Intolerances Section (/entries optional) (/V3)
          • Allergies and Intolerances Section (/entries required) (/V3)
          • Assessment Section
          • Chief Complaint Section
          • Chief Complaint and Reason for Visit Section
          • Complications Section (/V3)
          • Course of Care Section
          • DICOM Object Catalog Section - DCM 121181
          • Default Section Rules
          • Discharge Diagnosis Section (/V3)
          • Document Header
          • Encounters Section (/entries optional) (/V3)
          • Encounters Section (/entries required) (/V3)
          • Family History Section (/V3)
          • Functional Status Section (/V2)
          • General Status Section
          • Goals Section
          • Health Concerns Section (/V2)
          • History of Present Illness Section
          • Hospital Consultations Section
          • Hospital Course Section
          • Hospital Discharge Instructions Section
          • Hospital Discharge Physical Section
          • Hospital Discharge Studies Summary Section
          • Immunizations Section (/entries optional) (/V3)
          • Immunizations Section (/entries required) (/V3)
          • Medical (/General) History Section
          • Medical Equipment Section (/V2)
          • Medications Administered Section (/V2)
          • Medications Section (/entries optional) (/V2)
          • Medications Section (/entries required) (/V2)
          • Mental Status Section (/V2)
          • Notes
          • Nutrition Section
          • Objective Section
          • Operative Note Fluids Section
          • Operative Note Surgical Procedure Section
          • Past Medical History (/V3)
          • Payers Section (/V3)
          • Plan of Treatment Section (/V2)
          • Postprocedure Diagnosis Section (/V3)
          • Preoperative Diagnosis Section (/V3)
          • Problem Section (/entries optional) (/V3)
          • Problem Section (/entries required) (/V3)
          • Procedure Description Section
          • Procedure Disposition Section
          • Procedure Estimated Blood Loss Section
          • Procedure Implants Section
          • Procedure Specimens Taken Section
          • Procedures Section (/entries optional) (/V2)
          • Procedures Section (/entries required) (/V2)
          • Reason for Visit Section
          • Results Section (/entries optional) (/V3)
          • Results Section (/entries required) (/V3)
          • Review of Systems Section
          • Social History Section (/V3)
          • Vital Signs Section (/entries optional) (/V3)
          • Vital Signs Section (/entries required) (/V3)
        • How to deploy the service
        • Producing C-CDA documents
        • How to customize conversion rules
      • HL7 v2 Integration
        • HL7 v2 integration with Aidbox Project
        • Mappings with lisp/mapping
      • X12 message converter
      • Analytics
        • Power BI
      • Mappings
      • Email Providers integration
        • Setup SMTP provider
    • SMARTbox | FHIR API for EHRs
      • Get started
        • Set up Smartbox locally
        • Deploy Smartbox with Kubernetes
      • (/g)(/10) Standardized API for patient and population services
      • The B11 Decision Support Interventions
        • Source attributes
        • Feedback Sections
      • How-to guides
        • Pass Inferno tests with Smartbox
        • Perform EHR launch
        • Pass Inferno Visual Inspection and Attestation
        • Revoke granted access
        • Set up EHR-level customization
        • Check email templates
        • Setup email provider
        • Register users
        • Set up SSO with Auth0
        • Publish Terms of Use link onto the documentation page
        • Find out what resources were exported during the $export operation
        • Find documentation endpoint
      • Background information
        • Considerations for Testing with Inferno ONC
        • Adding Clients for Inferno tests
        • Multitenancy approach
        • What is Tenant
        • Email templating
    • ePrescription
      • Getting started
      • Authentication with mTLS
      • Pharmacies synchronization
      • Prescribing
        • NewRx Message
        • CancelRx Message
        • How to test Callback
      • Directory
        • DirectoryDownload Message
        • GetProviderLocation Message
        • AddProviderLocation Message
        • UpdateProviderLocation Message
        • DisableProviderLocation Message
      • Medications
        • FDB
      • References
        • Environment Variables
      • Frequently Asked Questions
    • Other modules
      • MDM
        • Train model
        • Configure MDM module
        • Find duplicates: $match
        • Mathematical details
      • MCP
  • Database
    • Overview
    • Database schema
    • PostgreSQL Extensions
    • AidboxDB
      • HA AidboxDB
    • Tutorials
      • Migrate to AidboxDB 16
      • Working with pgAgent
  • File storage
    • AWS S3
    • GCP Cloud Storage
    • Azure Blob Storage
    • Oracle Cloud Storage
  • Deployment and maintenance
    • Deploy Aidbox
      • Run Aidbox on Kubernetes
        • Deploy Production-ready Aidbox to Kubernetes
        • Deploy Aidbox with Helm Charts
        • Highly Available Aidbox
        • Self-signed SSL certificates
      • Run Aidbox on managed PostgreSQL
      • How to inject env variables into Init Bundle
    • Backup and Restore
      • Crunchy Operator (/pgBackRest)
      • pg_dump
      • pg_basebackup
      • WAL-G
    • Indexes
      • Get suggested indexes
      • Create indexes manually
  • App development
    • Use Aidbox with React
    • Aidbox SDK
      • Aidbox JavaScript SDK
      • Apps
      • NodeJs SDK
      • Python SDK
    • Examples
  • Reference
    • FHIR Schema reference
    • Settings reference
      • General
      • FHIR
      • Security & Access Control
      • Modules
      • Database
      • Web Server
      • Observability
      • Zen Project
    • Environment variables
      • Aidbox required environment variables
      • Optional environment variables
      • AidboxDB environment variables
    • System resources reference
      • IAM Module Resources
      • SDC Module Resources
      • Base Module Resources
      • Bulk Module Resources
      • AWF Module Resources
      • Cloud Module Resources
      • HL7v2 Module Resources
      • SQL on FHIR Module Resources
    • Email Providers reference
      • Notification resource reference
      • Mailgun environment variables
      • Postmark environment variables
    • Aidbox Forms reference
      • FHIR SDC API
      • Aidbox SDC API
      • Generating Questionnaire from PDF API
    • Aidbox SQL functions
  • Deprecated
    • Deprecated
      • Zen-related
        • RPC reference
          • aidbox
            • mdm
              • aidbox.mdm/update-mdm-tables
              • aidbox.mdm/match
        • FTR
        • Aidbox configuration project
          • Run Aidbox locally using Aidbox Configuraiton project
          • Aidbox configuration project structure
          • Set up and use configuration projects
          • Enable IGs
          • Repository
          • Seed Import
          • Manage Indexes in Zen Project
          • Seed v2
          • 🎓Migrate to git Aidbox Configuration Projects
          • Aidbox Configuration project reference
            • Zen Configuration
            • Aidbox project RPC reference
            • aidbox.config/config
          • Custom resources using Aidbox Project
          • First-Class Extensions using Zen
          • Zen Indexes
        • US Core IG
          • US Core IG support reference
        • Workflow Engine
          • Task
            • Aidbox Built-in Tasks
            • Task Executor API
            • Task User API
          • Workflow
            • Workflow User API
          • Services
          • Monitoring
        • FHIR conformance Deprecated guides
          • Touchstone FHIR 4.0.1 basic server
          • Touchstone FHIR USCore ClinData
          • How to enable US Core IG
            • Start Aidbox locally with US Core IG enabled
            • Add US Core IG to a running Aidbox instance
          • HL7 FHIR Da Vinci PDex Plan Net IG
        • Terminology Deprecated Tutorials
          • Inferno Test-Suite US Core 3.1.1
        • API constructor (/beta)
        • zen-lang validator
          • Write a custom zen profile
          • Load zen profiles into Aidbox
        • FHIR topic-based subscriptions
          • Set up SubscriptionTopic
          • Tutorial: Subscribe to Topic (/R4B)
          • API Reference
            • Subscription API
        • 🏗️FHIR Terminology Repository
          • FTR Specification
          • Create an FTR instance
            • FTR from CSV
            • FTR from FHIR IG
            • FTR from FTR — Direct Dependency
            • FTR from FTR — Supplement
          • FTR Manifest
          • Load SNOMED CT into Aidbox
          • Load LOINC into Aidbox
          • Load ICD-10-CM into Aidbox
          • Load RxNorm into Aidbox
          • Load US VSAC Package to Aidbox
          • Import via FTR
        • Zen Search Parameters
      • Entity / Attribute
        • Entities & Attributes
        • First-Class Extensions using Attribute
        • Custom Resources using Entity
        • Working with Extensions
        • Aidbox Search Parameters
      • Forms
      • Other
        • Custom Search
        • SearchQuery
        • Subscribe to new Patient resource
        • App Development Deprecated Tutorials
          • Receive logs from your app
            • X-Audit header
          • Working with Aidbox from .NET
          • Patient Encounter notification Application
        • Other Deprecated Tutorials
          • Resource generation with map-to-fhir-bundle-task and subscription triggers
          • APM Aidbox
          • Automatically archive AuditEvent resources in GCP storage guide
          • HL7 v2 pipeline with Patient mapping
          • How to migrate to Apline Linux
          • How to migrate transaction id to bigint
          • How to fix broken dates
          • Configure multi-tenancy
        • AidboxProfile
        • GCP Pub/Sub
Powered by GitBook
On this page
  • Aidbox Form Builder & Renderer Request Interception
  • Enabling Request Interception
  • Common Use Cases
  • Request Tags
  • delete-attachment
  • extract
  • get-assembled-questionnaire
  • get-config
  • get-questionnaire
  • get-response
  • get-fhir-metadata
  • get-fhir-schemas
  • get-theme
  • get-themes
  • import-questionnaire
  • populate
  • save-response
  • submit-response
  • repopulate
  • create-questionnaire
  • save-questionnaire
  • create-sub-questionnaire
  • create-theme
  • save-theme
  • search-choice-options
  • search-questionnaires-by-url
  • search-sub-questionnaires
  • get-sub-questionnaire
  • upload-attachment
  • validate-questionnaire
  • validate-response
  • Sequence Diagram
  • Builder
  • Renderer

Was this helpful?

Edit on GitHub
  1. Modules
  2. Aidbox Forms
  3. Aidbox UI Builder
  4. Embedding

Request Interception

A detailed guide on intercepting requests in Aidbox Form Builder and Renderer.

PreviousEmbeddingNextConfiguration

Last updated 1 month ago

Was this helpful?

Aidbox Form Builder & Renderer Request Interception

Request interception allows you to modify network requests made by Aidbox Form Builder and Aidbox Form Renderer. This is useful for debugging, adding authentication, redirecting requests, or handling custom logic before requests are sent.

Enabling Request Interception

To enable request interception, set the onFetch property on the builder or renderer element. This property should be a function that takes two arguments: the URL and the request options. The function should return a promise that resolves to the response.

<aidbox-form-builder id="aidbox-form-builder" enable-fetch-proxy />

<script>
    const builder = document.getElementById('aidbox-form-builder');
    
    builder.onFetch = async (url, init) => {
        console.log('Intercepted request', url, init);
        return fetch(url, init);
    };
</script>
<aidbox-form-renderer id="aidbox-form-renderer" enable-fetch-proxy />

<script>
    const renderer = document.getElementById('aidbox-form-renderer');
    
    renderer.onFetch = async (url, init) => {
        console.log('Intercepted request', url, init);
        return fetch(url, init);
    };
</script>

The interception function must follow the same signature as the standard function, with the following exceptions:

  1. The function can return null or undefined to bypass the interception and allow the builder to handle the request using the standard fetch.

  2. The (the second argument) may include an additional tag property. This tag is a string representing the name of one of the , allowing you to differentiate between them without relying on the URL or HTTP method, which may be subject to future changes.

Common Use Cases

These examples demonstrate how to use request interception in various scenarios. Most of the examples are also applicable to the Renderer component.

1. Logging Requests

To inspect outgoing requests and responses:

<aidbox-form-renderer id="aidbox-form-renderer" enable-fetch-proxy />

<script>
    const renderer = document.getElementById('aidbox-form-renderer');
    
    renderer.onFetch = async (url, init) => {
        console.log('Request:', url, init);
        const response = await fetch(url, init);
        console.log('Response:', response.status, await response.text());
        return response;
    };
</script>

2. Adding Authorization Headers

To include an authorization token in requests:

<aidbox-form-builder id="aidbox-form-builder" enable-fetch-proxy />

<script>
    const builder = document.getElementById('aidbox-form-builder');
    
    builder.onFetch = async (url, init) => {
        const headers = new Headers(init.headers);
        headers.set('Authorization', `Bearer YOUR_ACCESS_TOKEN`);
        return fetch(url, { ...init, headers });
    };
</script>

3. Redirecting Requests

To change the endpoint of requests dynamically:

<aidbox-form-renderer id="aidbox-form-renderer" enable-fetch-proxy />

<script>
    const renderer = document.getElementById('aidbox-form-renderer');
    
    renderer.onFetch = async (url, init) => {
        const newUrl = url.replace('aidbox-instance.com', 'custom-endpoint.com');
        return fetch(newUrl, init);
    };
</script>

4. Handling Custom Questionnaire Storage

To store and retrieve forms from local storage:

<aidbox-form-builder form-id="local-questionnaire" id="aidbox-form-builder" enable-fetch-proxy />

<script>
    const builder = document.getElementById('aidbox-form-builder');

    builder.onFetch = async (url, init) => {
        if (init.tag === 'get-questionnaire') {
            const storedForm = localStorage.getItem('local-questionnaire') || '{"resourceType": "Questionnaire", "id": "local-questionnaire"}';
            return new Response(storedForm, { status: 200 });
        }
        if (init.tag === 'save-questionnaire') {
            localStorage.setItem('local-questionnaire', init.body);
            return new Response(init.body, { status: 200 });
        }
        return null;
    };
</script>

5. Modifying Extracted Data

To manipulate extraction results before they are processed:

<aidbox-form-builder id="aidbox-form-builder" enable-fetch-proxy />

<script>
    const builder = document.getElementById('aidbox-form-builder');
    
    builder.onFetch = async (url, init) => {
        if (init.tag === 'extract') {
            const response = await fetch(url, init);
            const bundle = await response.clone().json();
            console.log('Extracted Bundle:', bundle);
            return response;
        }
        return null;
    };
</script>

Request Tags

Request tags are used to differentiate between different types of requests. They are passed as a property in the init object and can be used to identify the request type in the interception function. The following tags are available:

Tag
When
Description

During component initialization (if config is referenced)

Loads SDCConfig for themes, localization, etc.

During initialization if config references a theme

Fetches the theme used by builder.

On initialization or after saving a theme

Loads available themes for theme selector.

During builder startup

Fetches CapabilityStatement for autocomplete.

During builder startup

Loads JSON schemas for FHIR resources.

When initializing the form for editing

Loads questionnaire by ID.

After loading questionnaire with sub-questionnaire references

Fetches a fully assembled version.

When opening a sub-questionnaire reference

Loads a sub-questionnaire by canonical URL.

When searching for sub-questionnaires

Lists sub-questionnaires by extension/title.

Before saving a questionnaire

Checks if canonical URL is already in use.

When saving a new questionnaire

Creates a new Questionnaire resource.

When updating an existing questionnaire

Saves changes to the questionnaire.

When saving an outline item as sub-questionnaire

Creates a canonical sub-questionnaire.

When clicking the "Import" button

Imports a new questionnaire JSON.

When clicking "Populate" in debug panel

Prefills fields using subject/context.

When clicking "Extract" in debug panel

Extracts resources from the questionnaire response.

When clicking "Validate Questionnaire" in debug panel

Validates questionnaire resource.

When clicking "Validate Response" in debug panel

Validates questionnaire response resource

When saving a new theme

Creates a new QuestionnaireTheme.

When saving changes to an existing theme

Updates the theme resource.

Tag
When
Description

During component initialization (if config is referenced)

Loads SDCConfig for theming/localization.

During initialization if config references a theme

Fetches the theme used by renderer.

When loading the form

Fetches the questionnaire by ID.

When loading a saved response

Fetches the QuestionnaireResponse resource.

When opening/searching dropdown for choice item

Fetches options from a ValueSet or other source.

When a file is selected in an attachment input

Uploads file and returns file URL.

When an attachment is cleared by the user

Deletes the file from storage.

When auto-saving an in-progress response

Persists progress with in-progress status.

When user clicks "Repopulate"

Refreshes form with updated subject/context.

When user clicks "Submit"

Submits or amends the form.

delete-attachment

Triggered in renderer when the attachment input field is cleared.

Request

DELETE /$sdc-file/<filepath> HTTP/1.1

Where <filepath> is the path of the attachment being deleted.

Response

Response shape is specific to the storage type and is not processed by the frontend.

extract

Triggered when the "Extract" button in the builder debug panel is clicked.

Request

POST /fhir/QuestionnaireResponse/$extract HTTP/1.1
Content-Type: application/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "questionnaireResponse",
        "resource": <questionnaire-response>
    }, {
        "name": "questionnaire",
        "resource": <questionnaire>
    }]
}

Where <questionnaire-response> is the questionnaire response being extracted and <questionnaire> is the questionnaire it is based on.

Response

<bundle>

get-assembled-questionnaire

Triggered after retrieving the current questionnaire to obtain its fully assembled version, if it includes sub-questionnaires.

Request

GET /sdc/Questionnaire?url=<questionnaire-url>&version=<questionnaire-version>-assembled HTTP/1.1

Where <questionnaire-url> represents the canonical URL, and <questionnaire-version> specifies the version of the assembled questionnaire being requested.

Response

<bundle>

get-config

Triggered during the initialization of the builder or renderer to fetch configuration details.

Request

POST /$sdc-config HTTP/1.1
Content-Type: application/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "id",
        "valueString": "<config-id>"
    }]
}

Where <config-id> refers to the ID of the SDCConfig resource included in the JWT token payload of the current authentication session. This parameter is omitted if no configuration is specified.

Response

<config>

get-questionnaire

Triggered during the initialization of the builder or renderer to fetch the current questionnaire.

Request

GET /sdc/Questionnaire/<questionnaire-id> HTTP/1.1

Where <questionnaire-id> is the ID of the questionnaire being requested.

Response

<questionnaire>

get-response

Triggered during the initialization of the renderer to fetch the current user response.

Request

GET /sdc/QuestionnaireResponse/<questionnaire-response-id> HTTP/1.1

Where <questionnaire-response-id> is the ID of the questionnaire response being requested.

Response

<questionnaire-response>

get-fhir-metadata

Triggered during the initialization of the builder to fetch metadata for FHIR resources, which aids in autocompletion.

Request

GET /fhir/metadata HTTP/1.1

Response

<fhir-metadata>

get-fhir-schemas

Triggered during the initialization of the builder to fetch schemas for FHIR resource elements, aiding in autocompletion.

Request

GET /static/fhir_schemas.json HTTP/1.1

Response

<fhir-schemas>

get-theme

Triggered during the initialization of the web component if a theme is referenced in the configuration.

Request

GET /QuestionnaireTheme/<theme-id> HTTP/1.1

Where <theme-id> is the ID of the theme being requested.

Response

<theme>

get-themes

Triggered during the initialization of the builder web component and after saving a theme to list available themes in the theme selector.

Request

GET /QuestionnaireTheme?_sort=.theme-name HTTP/1.1

Response

<bundle>

import-questionnaire

Triggered when the "Import" button is clicked in the questionnaire importer.

Request

POST /sdc/Questionnaire HTTP/1.1
Content-Type: application/json

<questionnaire>

Where <questionnaire> is the questionnaire being imported.

Response

<questionnaire>

populate

Triggered when the "Populate" button is clicked in the builder debug panel.

Request

POST /fhir/Questionnaire/$populate HTTP/1.1
Content-Type: application/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "questionnaire",
        "resource": <questionnaire>
    }, {
        "name": "subject",
        "valueReference": <patient-id>
    }, {
        "name": "local",
        "valueBoolean": true
    }, {
        "name": "context",
        "part": [{
            "name": "name",
            "valueString": "encounter"
        }, {
            "name": "content",
            "valueReference": <encounter-id>
        }, {
            "name": "name",
            "valueString": "author"
        }, {
            "name": "content",
            "valueReference": <patient-id>
        }]
    }]
}

Where <questionnaire> is the questionnaire being populated, <patient-id> is the ID of the patient, and <encounter-id> is the ID of the encounter selected in the builder debug panel.

Response

<parameters>

save-response

Triggered by the auto-save mechanism shortly after the user makes changes in the form.

Request

POST /fhir/QuestionnaireResponse/$save HTTP/1.1
Content-Type: appliation/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "response",
        "resource": <questionnaire-response>
    }]
}

Where <response> is the response being submitted.

Status Value

Since auto-save is only enabled for non-completed forms, the response parameter always has the status in-progress.

Response

<parameters>
  • response: the saved questionnaire response.

  • issues: any validation or processing issues, if available.

submit-response

Triggered when the user submits a response by clicking the submit button. The submit button is displayed when the questionnaire response is either in progress (in-progress) or when the user is amending a completed response.

Request

POST /fhir/QuestionnaireResponse/$submit HTTP/1.1
Content-Type: appliation/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "response",
        "resource": <questionnaire-response>
    }]
}

Where <response> is the response being submitted.

Status Value

The response parameter contains the current status, and the Aidbox backend is responsible for transitioning it to the appropriate new state. Therefore, if you need to, for example, intercept an amending submission, you should check for the condition response.status = 'completed'.

Response

<parameters>
  • response: the processed questionnaire response.

  • issues: any validation or processing issues, if available.

  • outcome: a list of extracted resources when the questionnaire has extraction rules.

repopulate

Triggered when the "Repopulate" button is clicked by the user.

Request

POST /fhir/Questionnaire/$populate HTTP/1.1
Content-Type: application/json

{
    "resourceType": "Parameters",
    "parameter": [{
        "name": "questionnaire",
        "resource": <questionnaire>
    }, {
        "name": "response",
        "resource": <questionnaire-response>
    }, {
        "name": "subject",
        "valueReference": <patient-id>
    }, {
        "name": "local",
        "valueBoolean": true
    }, {
        "name": "context",
        "part": [{
            "name": "name",
            "valueString": "encounter"
        }, {
            "name": "content",
            "valueReference": <encounter-id>
        }]
    }]
}

Response

<parameters>

create-questionnaire

Triggered when the "Save" button is clicked in the builder for a new questionnaire.

Request

POST /sdc/Questionnaire HTTP/1.1
Content-Type: application/json

<questionnaire>

Where <questionnaire> is the new questionnaire being created.

Response

<questionnaire>

save-questionnaire

Triggered when the "Save" button is clicked in the builder.

Request

PUT /sdc/Questionnaire/<questionnaire-id> HTTP/1.1
Content-Type: application/json

<questionnaire>

Where <questionnaire> is the questionnaire being saved.

Response

<questionnaire>

create-sub-questionnaire

Triggered when an outline item is saved as a sub-questionnaire.

Request

POST /sdc/Questionnaire?url=<sub-questionnaire-url>&version=1 HTTP/1.1
Content-Type: application/json

<sub-questionnaire>

Where <sub-questionnaire-url> is the canonical URL of the sub-questionnaire and <sub-questionnaire> is the sub-questionnaire being saved.

Response

<sub-questionnaire>

create-theme

Triggered when the "Save" button is clicked in the theme editor for a new theme.

Request

POST /QuestionnaireTheme HTTP/1.1
Content-Type: application/json

<theme>

Where <theme> is the new theme being created.

Response

<theme>

save-theme

Triggered when the "Save" button is clicked in the theme editor.

Request

PUT /QuestionnaireTheme/<theme-id> HTTP/1.1
Content-Type: application/json

<theme>

Where <theme> is the theme being saved.

Response

<theme>

search-choice-options

Triggered in renderer by dynamic dropdowns (choice items with external value sets or resource lookups) when the user clicks on the dropdown to fetch the options.

Request

GET <url> HTTP/1.1

Where <url> is the URL of the value set or resources associated with the choice item.

Response

search-questionnaires-by-url

Triggered before saving the current questionnaire to check for conflicts with existing questionnaires based on their URL.

Request

GET /sdc/Questionnaire?url=<questionnaire-url> HTTP/1.1

Where <questionnaire-url> is the canonical URL of the questionnaire being checked.

Response

<bundle>

search-sub-questionnaires

Triggered when the user searches for sub-questionnaires in the builder.

Request

GET /sdc/Questionnaire?.extension$contains=%-child&.title$contains=<search-term> HTTP/1.1

Where <search-term> is the term being searched for.

Response

<bundle>

get-sub-questionnaire

Triggered to retrieve a sub-questionnaire when it is referenced in a parent questionnaire.

Request

GET /sdc/Questionnaire?url=<sub-questionnaire-url>&version=<sub-questionnaire-version> HTTP/1.1

Where <sub-questionnaire-url> is the canonical URL of the sub-questionnaire being requested. Parameter version is omitted if no version is specified in the reference.

Response

<bundle>

upload-attachment

Triggered when a file is selected in the attachment input field.

Request

POST /$sdc-file HTTP/1.1 
Content-Type: multipart/form-data; boundary=------------------------boundary12345

--------------------------boundary12345
Content-Disposition: form-data; name="file"; filename="example.txt"
Content-Type: text/plain

<file-content>
--------------------------boundary12345
Content-Disposition: form-data; name="filename"

<file-name>
--------------------------boundary12345--

Where <file-content> is the content of the file being uploaded and <file-name> is the path and name of the file.

Response

{
  "url": "<file-url>"
}

validate-questionnaire

Triggered when the "Validate Questionnaire" button is clicked in the builder debug panel.

Request

POST /Questionnaire/$validate HTTP/1.1
Content-Type: application/json

<questionnaire>

Where <questionnaire> is the questionnaire being validated.

Response

<operation-outcome>

validate-response

Triggered when the "Validate Questionnaire Response" button is clicked in the builder debug panel.

Request

POST /QuestionnaireResponse/$validate HTTP/1.1
Content-Type: application/json

<questionnaire-response>

Where <questionnaire-response> is the response being validated.

Response

<operation-outcome>

Sequence Diagram

Builder

Renderer

Where <bundle> is the of resources extracted from the questionnaire response.

Where <bundle> is the containing zero or one resource.

Where <config> is the resource containing the configuration details.

Where <questionnaire> is the being requested.

Where <questionnaire-response> is the being requested.

Where <fhir-metadata> is the for the FHIR server.

Where <fhir-schemas> is the JSON object containing the for the FHIR resource elements.

Where <theme> is the being requested.

Where <bundle> is the of .

Where <questionnaire> is the that was imported.

Where <parameters> is a resource containing the populated questionnaire response under the response name.

Where <parameters> is a that includes:

Where <parameters> is a that includes:

Where <questionnaire>, <questionnaire-response>, <patient-id>, and <encounter-id> are as described in the request.

Where <parameters> is a resource containing the repopulated questionnaire response under the response name.

Where <questionnaire> is the that was created.

Where <questionnaire> is the that was saved.

Where <sub-questionnaire> is the that was created.

Where <theme> is the being created.

Where <theme> is the being saved.

Response be a plain list or of resources (e.g. ) depending on the source of the options.

Where <bundle> is the of questionnaires with the same URL.

Where <bundle> is the of sub-questionnaires.

Where <bundle> is the containing zero or one resource.

Where <file-url> is the URL of the uploaded file which will further be used to either download or the file.

Where <operation-outcome> is the of the validation.

Where <operation-outcome> is the of the validation.

bundle
bundle
questionnaire
SDCConfig
questionnaire
questionnaire response
metadata
schemas
questionnaire
parameters
parameters
parameters
parameters
questionnaire
questionnaire
questionnaire
bundle
ValueSet
bundle
bundle
bundle
questionnaire
operation outcome
operation outcome
fetch
init object
endpoints
populate
delete
get-config
get-theme
get-themes
get-fhir-metadata
get-fhir-schemas
get-questionnaire
get-assembled-questionnaire
get-sub-questionnaire
search-sub-questionnaires
search-questionnaires-by-url
create-questionnaire
save-questionnaire
create-sub-questionnaire
import-questionnaire
populate
extract
validate-questionnaire
validate-response
create-theme
save-theme
get-config
get-theme
get-questionnaire
get-response
search-choice-options
upload-attachment
delete-attachment
save-response
repopulate
submit-response
bundle
theme
themes
theme
theme