Questionnaire
Introduction #
The Questionnaire
model represents a structured set of questions intended to guide the collection of answers from end-users.
The Interview
model represents answers to a structured set of questions represented by a Questionnaire
.
Basic usage #
To get a questionnaire or interview by identifier, use the get
method on the Questionnaire
or Interview
model managers:
from canvas_sdk.v1.data.questionnaire import Questionnaire
from canvas_sdk.v1.data.interview import Interview
questionnaire = Questionnaire.objects.get(id="b80b1cdc-2e6a-4aca-90cc-ebc02e683f35")
interview = Interview.objects.get(id="75df6d7f-d58d-443b-9fa0-ce43b4d7b2a0")
If you have a patient object, the interviews for a patient can be accessed with the interviews
attribute on a Patient
object:
from canvas_sdk.v1.data.patient import Patient
patient = Patient.objects.get(id="1eed3ea2a8d546a1b681a2a45de1d790")
interviews = patient.interviews.all()
If you have a patient ID, you can get the interviews for the patient with the for_patient
method on the Interview
model manager:
from canvas_sdk.v1.data.interview import Interview
patient_id = "1eed3ea2a8d546a1b681a2a45de1d790"
interviews = Interview.objects.for_patient(patient_id)
Questionnaire questions #
The questions for a questionnaire can be accessed with the questions
attribute on an Questionnaire
object:
from canvas_sdk.v1.data.questionnaire import Questionnaire
from logger import log
questionnaire = Questionnaire.objects.get(id="b80b1cdc-2e6a-4aca-90cc-ebc02e683f35")
for question in questionnaire.questions.all():
log.info(f"system: {question.code_system}")
log.info(f"code: {question.code}")
log.info(f"name: {question.name}")
Interview responses #
The interview responses for an interview can be accessed with the interview_responses
attribute on an Interview
object:
from canvas_sdk.v1.data.interview import Interview
from logger import log
interview = Interview.objects.get(id="75df6d7f-d58d-443b-9fa0-ce43b4d7b2a0")
for interview_response in interview.interview_responses.all():
log.info(f"response option: {interview_response.response_option_value}")
Filtering #
Questionnaires and interviews can be filtered by any attribute that exists on the models.
Filtering for questionnaires and interviews is done with the filter
method on the Questionnaire
and Interview
model managers.
By attribute #
Specify an attribute with filter
to filter by that attribute:
from canvas_sdk.v1.data.questionnaire import Questionnaire
from canvas_sdk.v1.data.interview import Interview
questionnaires = Questionnaire.objects.filter(name="Tobacco")
interviews = Interview.objects.filter(progress_status="F")
By ValueSet #
Filtering by ValueSet works a little differently. The find
method on the model manager is used to perform ValueSet
filtering:
from canvas_sdk.v1.data.questionnaire import Questionnaire
from canvas_sdk.value_set.v2022.assessment import TobaccoUseScreening
questionnaires = Questionnaire.objects.find(TobaccoUseScreening)