Aidbox SDC API
Custom SDC operations supported by Aidbox Forms.
Generate a link to a QuestionnaireResponse - $generate-link
This operation generates a link to a web page to be used to continue answering a specified QuestionnaireResponse .
URLs
POST [base]/QuestionnaireResponse/[id]/$generate-link
Parameters
NOTE: All parameters wrapped with Parameters object
resourceType: Parameters
parameter:
- name: [var-name]
value: [var-value]
allow-amend
Whether the generated link will allow amending and re-submitting the form.
name: allow-amend
value:
Boolean: true
allow-repopulate
Whether the generated link will allow re-populating the form.
NOTE: Repopulate will be working only with forms that contain populate behavior
name: allow-repopulate
value:
Boolean: true
redirect-on-submit
A URL where the user will be redirected to after successfully submitting the form.
name: redirect-on-submit
value:
String: https://example.com/submit-hook?questionnaire=123
redirect-on-save
A URL where the user will be redirected to after hitting Save button.
By default Save button is not visible - form autosaved after every keystroke. But sometimes it's usefull to close form in a partially-filled state
name: redirect-on-save
value:
String: https://example.com/submit-hook?questionnaire=123
expiration
Link expiration period (days)
name: expiration
value:
Integer: 30
By default thir parameter = 7 days
theme
Form theme.
name: theme
value:
String: hs-theme
read-only
Show form in a read-only mode
name: read-only
value:
Boolean: true
app-name
Application name that will be used in Audit logging when returned link was used.
Audit logging should be enabled.
- name: app-name
value
String: my-app
Usage Example
POST [base]/QuestionnaireResponse/[id]/$generate-link
content-type: text/yaml
resourceType: Parameters
parameter:
- name: allow-amend
value:
Boolean: true
- name: redirect-on-submit
value:
String: https://example.com/submit-hook?questionnaire=123
Aidbox uses HS256 to sign JWT token by default. To use RS256 you need to set
BOX_SECURITY_AUTH_KEYS_PRIVATE and BOX_SECURITY_AUTH_KEYS_PUBLIC environment variables.
Save a QuestionnaireResponse - $save
This operation validates the structure of a QuestionnaireResponse and saves it. It performs basic structural validation, but does not validate against the associated Questionnaire definition.
The operation validates only FHIR structure of QuestionnaireResponse and have associated Questionnaire. Operation doesn't validate for example — required fields like $submit operation
URLs
POST [base]/fhir/QuestionnaireResponse/$save
Parameters
NOTE: All parameters wrapped with Parameters object
resourceType: Parameters
parameter:
- name: response
resource:
# QuestionnaireResponse resource here
The operation takes a single input parameter named "response" containing a QuestionnaireResponse resource wrapped in a Parameters resource.
Output Parameters
The operation returns:
- response: The saved QuestionnaireResponse resource
- issues: Any validation issues encountered (if applicable)
Usage Example
POST [base]/fhir/QuestionnaireResponse/$save
content-type: text/yaml
resourceType: Parameters
parameter:
- name: response
resource:
resourceType: QuestionnaireResponse
questionnaire: Questionnaire/patient-registration
status: in-progress
item:
- linkId: name
text: Patient Name
item:
- linkId: name.given
text: Given Name
answer:
- valueString: John
- linkId: name.family
text: Family Name
answer:
- valueString: Smith
Submit a QuestionnaireResponse - $submit
This operation validates and submits a QuestionnaireResponse, marking it as "completed" or "amended". It performs comprehensive validation against the associated Questionnaire definition. If validation fails, it returns only the "issues" parameter without the "response" parameter and does not save the QuestionnaireResponse.
URLs
POST [base]/fhir/QuestionnaireResponse/$submit
Parameters
NOTE: All parameters wrapped with Parameters object
resourceType: Parameters
parameter:
- name: response
resource:
# QuestionnaireResponse resource here
The operation takes a single input parameter named "response" containing a QuestionnaireResponse resource wrapped in a Parameters resource.
Output Parameters
The operation returns:
- response: The submitted QuestionnaireResponse resource with status updated to "completed"
- issues: Any validation issues encountered (if applicable)
Usage Example
POST [base]/fhir/QuestionnaireResponse/$submit
content-type: text/yaml
resourceType: Parameters
parameter:
- name: response
resource:
resourceType: QuestionnaireResponse
questionnaire: Questionnaire/patient-registration
status: in-progress
item:
- linkId: name
text: Patient Name
item:
- linkId: name.given
text: Given Name
answer:
- valueString: John
- linkId: name.family
text: Family Name
answer:
- valueString: Smith
- linkId: birthDate
text: Date of Birth
answer:
- valueDate: '1970-01-01'
- linkId: gender
text: Gender
answer:
- valueCoding:
system: http://hl7.org/fhir/administrative-gender
code: male
display: Male
Notify a Patient - $notify-patient
This operation sends an email notification to a patient (or to a provided email) with a generated form link for a QuestionnaireResponse. It sends a single email per request.
If email is not provided in a context, the operation tries to resolve the patient email from QuestionnaireResponse.subject -> Patient.telecom.where(system = 'email').
URLs
POST [base]/fhir/QuestionnaireResponse/$notify-patient
Parameters
NOTE: All parameters wrapped with Parameters object
resourceType: Parameters
parameter:
- name: provider
valueString: smtp-provider # required. One of: smtp-provider, postmark-provider, mailgun-provider, sendgrid-provider
- name: response
valueReference:
reference: QuestionnaireResponse/qr1 # required
- name: email
valueString: joe@mail.com # optional
- name: template
valueReference:
reference: NotificationTemplate/my-template # optional
- name: context
part:
- name: any-other-field
valueString: foo # optional, passed to email template payload
The operation takes:
- provider (required): Email provider name. Must be one of
smtp-provider,postmark-provider,mailgun-provider,sendgrid-provider. - response (required): QuestionnaireResponse reference.
- email (optional): Direct recipient email. If missing, patient email from
QuestionnaireResponse.subjectis used. - template (optional): NotificationTemplate reference. If not provided, the default template
sdc-form-link-emailis used. - context (optional): Custom payload fields for template rendering. All fields are passed to the email template payload along with the generated
link
System takes by default preexisted NotificationTemplate, that looks like this.
resourceType: NotificationTemplate
id: sdc-form-link-email
subject: New form available
template: 'A new form is ready for you. Open: {{link}}'
It's possible to create other templates see docs
Output Parameters
The operation returns Parameters that includes:
- response: QuestionnaireResponse reference
- email: Resolved recipient email
- status:
"sent"or"failed" - message: Error message if status is
"failed"
Usage Example
POST [base]/fhir/QuestionnaireResponse/$notify-patient
content-type: text/yaml
resourceType: Parameters
parameter:
- name: provider
valueString: smtp-provider
- name: response
valueReference:
reference: QuestionnaireResponse/qr-direct
- name: email
valueString: direct@mail.com
- name: context
part:
- name: foo
valueString: bar
Last updated: