Universal API Implementation Guide
1.1.20 - ci-build
Universal API Implementation Guide - Local Development build (v1.1.20) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
A Questionnaire is a structured set of questions designed to gather information about a patient to facilitate their enrollment. Questionnaire represents the definition of the questionnaire form, including what questions are asked, how they're organized and the constraints on the allowed answers. Each product has a questionnaire which includes all possible questions for an Access Solutions, Patient Foundation, and/or Patient Consent enrollment.
The QuestionnaireResponse resource captures the responses to a Questionnaire. Not all questions will need to be answered. QuestionnaireResponses should only be included in an enrollment/patient consent bundle based on the product and what service is being requested. It's the client's responsibility to familiarize themselves with the Questionnaires and include applicable QuestionnaireResponses in the enrollment/patient consent bundle.
Questionnaires are accessed by external partners by requesting Questionnaire definitions from the Genentech FHIR Server. Based on product and version number, Genentech will respond back with questionnaires that are specific for that product.
Link to Questionnaire endpoint: {UAPI_URL}/questionnaire?name=Lucentis&version=2.0
A question is either required or optional to complete the enrollment of a patient. It may be related to the patient, medication or services which the patient is being enrolled for. Some questions in the Questionnaire are applicable only when a specific service(s) is requested in the bundle. To identify these questions, custom “metadata” questions are introduced in each Questionnaire definition. These metadata questions have “required” property set to false. Below is the list of metadata questions:
applied for bipa
applied for starter
applied for copay
applied for appeals
applied for pf
{
"linkId" : "applied-for-pf",
"text" : "Patient Foundation Service Request Applied?",
"type" : "boolean",
"required" : false
},
Questionnaires that must be answered have “required” property set to true. The example below indicates that this Questionnaire (link= "shipment-options") is required to be answered (required=true) when (enableWhen) a Patient Foundation service request ("applied-for-pf") is requested:
{
"linkId": "shipment-options",
"text": "Shipment Options",
"type" : "choice",
"enableWhen" : [
{
"question" : "applied-for-pf",
"operator" : "=",
"answerBoolean" : true
},
],
"enableBehavior" : "any",
"required" : true
},
Some Questionnaires should only be answered when multiple enableWhen criteria are met. The "enableBehavior" property is set to 'any' if any of the enableWhen criteria are met and set to 'all' if all of the enableWhen criteria are met.
In the example below, a QuestionnaireResponse for "linkId": "xolair-other-allergies" should be included in the bundle if a Patient Foundation SR is requested and the QuestionnaireResponse to question "linkId": "xolair-drug-allergies" is "other".
{
"linkId": "xolair-other-allergies",
"text": "Other Allergies",
"type": "string",
"enableWhen": [
{
"question": "applied-for-pf",
"operator": "=",
"answerBoolean": true
},
{
"question": "xolair-drug-allergies",
"operator": "=",
"answerString": "other"
}
],
"enableBehavior": "all",
"required": true
},
In the example below, a QuestionnaireResponse for "linkId": "has-treatment-started" should be included in the bundle if a Copay or Patient Foundation or Starter Service Request is requested.
{
"linkId": "has-treatment-started",
"text": "Has treatment started?",
"type": "choice",
"enableWhen": [
{
"question": "applied-for-copay",
"operator": "=",
"answerBoolean": true
},
{
"question": "applied-for-pf",
"operator": "=",
"answerBoolean": true
},
{
"question": "applied-for-starter",
"operator": "=",
"answerBoolean": true
}
],
"enableBehavior": "any",
"required": true,
The "enableBehavior" property supports only 'any' or 'all' conditions. For handling complex and/or criteria, use the "enableWhenExpression" property within an extension.
In the example below, a QuestionnaireResponse for "linkId": "site-of-treatment-2" should be included in the bundle when a Patient Foundation Request is requested, AND the QuestionnaireResponse to "linkId": "pos" is Hospital Outpatient, OR Infusion Center OR Site of Treatment.
Refer to HL7 site for additional info on enableWhenExpression structure
{
"extension": [
{
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression",
"valueExpression": {
"language": "text/fhirpath",
"expression": "((%resource.repeat(item).where(linkId='applied-for-pf').answer.value = true) and (%resource.repeat(item).where(linkId='pos').answer.value = 'Hospital Outpatient' or %resource.repeat(item).where(linkId='pos').answer.value = 'Infusion Center' or %resource.repeat(item).where(linkId='ship-to').answer.value = 'Site of Treatment'))"
}
}
],
"linkId": "site-of-treatment-2",
"text": "Third-party Site of Treatment",
"type": "reference",
"required": true
}
Most questionnaires allow only a single response. This is indicated with the "repeats" property set to false. If a questionnaire can have multiple responses, the "repeats" property is set to true.
{
"linkId": "susvimo-type-of-procedure",
"text": "Type of Procedure",
"type": "choice",
"enableWhen": [
{
"question": "applied-for-bipa",
"operator": "=",
"answerBoolean": true
}
],
"enableBehavior": "any",
"required": true,
"repeats": true,
"answerOption": [
{
"valueString": "Initial Fill and Implant Procedure"
},
{
"valueString": "Refill Exchange Procedure"
}
]
},
The questionnaireResponse for a multi-select question will include the valueStrings under one linkID:
{
"linkId": "susvimo-type-of-procedure",
"text": "Type of Procedure",
"answer": [
{
"valueString": "Initial Fill and Implant Procedure"
},
{
"valueString": "Refill Exchange Procedure"
}
]
}