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 Interview, Questionnaire

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.questionnaire 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.questionnaire 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 Interview, Questionnaire

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)

Attributes #

ResponseOptionSet #

Field NameType
dbidInteger
createdDateTime
modifiedDateTime
statusString
nameString
code_systemString
codeString
typeString
use_in_shxBoolean

ResponseOption #

Field NameType
dbidInteger
createdDateTime
modifiedDateTime
statusString
nameString
codeString
code_descriptionString
valueString
response_option_setResponseOptionSet
orderingInteger

Question #

Field NameType
idUUID
dbidInteger
createdDateTime
modifiedDateTime
statusString
nameString
response_option_setResponseOptionSet
acknowledge_onlyBoolean
show_prologueBoolean
code_systemString
codeString

Questionnaire #

Field NameType
idUUID
dbidInteger
createdDateTime
modifiedDateTime
statusString
nameString
expected_completion_timeFloat
can_originate_in_chartingBoolean
use_case_in_chartingString
scoring_function_nameString
scoring_code_systemString
scoring_codeString
code_systemString
codeString
search_tagsString
questionsQuestion
use_in_shxBoolean
carry_forwardString

QuestionnaireQuestionMap #

Field NameType
dbidInteger
createdDateTime
modifiedDateTime
statusString
questionnaireQuestionnaire
questionQuestion

Interview #

Field NameType
idUUID
dbidInteger
deletedBoolean
committerCanvasUser
entered_in_errorCanvasUser
statusString
nameString
language_idInteger
use_case_in_chartingString
patientPatient
note_idInteger
appointment_idInteger
questionnairesQuestionnaire
progress_statusString
createdDateTime
modifiedDateTime

InterviewQuestionResponse #

Field NameType
dbidInteger
createdDateTime
modifiedDateTime
statusString
interviewInterview
questionnaireQuestionnaire
questionQuestion
response_optionResponseOption
response_option_valueString
questionnaire_stateString
interview_stateString
commentString