Two types of modular questionnaires

XMLWordPrintableJSON

    • Type: Change Request
    • Resolution: Not Persuasive with Modification
    • Priority: High
    • Structured Data Capture (SDC) (FHIR)
    • current
    • FHIR Infrastructure
    • SDC Base Questionnaire
    • Hide

      We don't think it's appropriate/necessary to have two different approaches.  We think a single approach can meet all of the use-cases without imposing too much complexity on implementers.  We'll make clear that using the linkIdPrefix is not mandatory.  I.e. It's acceptable to not bother declaring or using linkIdPrefix if the author is confident that the assembled questionnaire will retain globally unique link ids.  The propagation of extensions is driven by the nature of the extension and there are standard rules that apply there that don't make sense to be different across approaches.

      Show
      We don't think it's appropriate/necessary to have two different approaches.  We think a single approach can meet all of the use-cases without imposing too much complexity on implementers.  We'll make clear that using the linkIdPrefix is not mandatory.  I.e. It's acceptable to not bother declaring or using linkIdPrefix if the author is confident that the assembled questionnaire will retain globally unique link ids.  The propagation of extensions is driven by the nature of the extension and there are standard rules that apply there that don't make sense to be different across approaches.
    • Paul Lynch/Yunwei Wang: 9-0-0
    • Clarification
    • Non-substantive

      From my perspective, it seems that there are two major use case for modularizing questionnaires: sub questionnaire case and reusable questionnaire case (feel free to propose a better naming)

      1. Sub questionnaire case: use an existing standalone questionnaire as a part of a bigger questionnaire.
        For example, I have a questionnaire that captures patient’s information and I would like to use it as a part of an appointment check-in questionnaire because it is required to update patient’s information before any appointment.
      2. Reusable questionnaire case: use small reusable questionnaires to follow the DRY principle.
        For example, there is an Address type that used twice in a patient resource (patient’s own address and contact address). Also address is used in Organization and many other resources.

       

      The current spec https://jira.hl7.org/browse/FHIR-27049 mostly describes sub questionnaire case.

      Some reusable questionnaire case-_relevant features were discarded https://jira.hl7.org/browse/FHIR-27049 https://jira.hl7.org/browse/FHIR-22356?focusedCommentId=173742&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-173742 because they do not fit well into _sub questionnaire case.

       

      My proposal is to treat these two use cases separately and don’t mix it up.

       

      Sub questionnaire case:

      Sub questionnaire case example https://github.com/beda-software/aidbox-sdc/blob/master/tests/sdc/test_assemble.py#L8

      Reuse questionnaire case:

      • parent questionnaire use reuseQuestionnaire extension to define including child questionnaire
      • if reuseQuestionnaire set, itemContext extension is required on item level
      • if reuseQuestionnaire set, linkIdPrefix extension is required on item level
      • linkIds have to be unique across the whole assembled questionnaire however inside child questionnaire linkId will use templating (For example `{{%prefix}}-address`). Since it is a valid string, child questionnaire may work on it’s own.
      • Nothing is propagating from child questionnaire to a parent questionnaire. The parent questionnaire should handle all dependencies on it’s own and provide a valid context and variables to child questionnaire.

      Reusable questionnaire case example https://github.com/beda-software/aidbox-sdc/blob/master/tests/sdc/test_assemble.py#L122

            Assignee:
            Lloyd McKenzie
            Reporter:
            ilyabeda
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: