Projo FHIR Documentation
0.1.0 - ci-build Switzerland flag

Projo FHIR Documentation - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: Projo QuestionnaireResponse ( Experimental )

Official URL: https://projo.evoleen.com/fhir/StructureDefinition/projo-questionnaire-response Version: 0.1.0
Draft as of 2024-01-01 Computable Name: ProjoQuestionnaireResponse

Copyright/Legal: Copyright (c) Projo. Licensed under CC0-1.0 (public domain dedication). FHIR(R) is the registered trademark of HL7 and is used with permission. This IG references WhatsApp(R), a trademark of Meta Platforms, Inc., for descriptive purposes only.

Patient's answers, built conversationally by the sidecar as WhatsApp messages arrive. Created in-progress on the first answer (or pre-populated from initial values), updated per-answer with If-Match optimistic concurrency, and marked completed when the last answer is applied. The CR<->QR link lives on CommunicationRequest.payload[].contentReference — QuestionnaireResponse.basedOn is NOT used because FHIR R4 restricts it to CarePlan ServiceRequest and HAPI rejects others (HAPI-0931).

Documentation-only artifact. Projo's runtime extensions, code systems, identifier systems and search parameter are TypeScript constants and bootstrap-time resources, NOT deployed StructureDefinitions. This StructureDefinition exists to document the contract; the source of truth is src/functions/src/lib/fhir/types.ts and docs/FHIR_EXTENSIONS.md.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... questionnaire Σ 1..1 canonical(Questionnaire) Questionnaire canonical URL
... subject Σ 1..1 Reference(Resource) Patient/Practitioner/RelatedPerson
... authored Σ 1..1 dateTime Creation timestamp
... item C 0..* BackboneElement Nested group hierarchy mirroring Questionnaire
Constraints: qrs-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId 1..1 string Pointer to specific item from Questionnaire

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
QuestionnaireResponse.​status Base required QuestionnaireResponseStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error QuestionnaireResponse If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error QuestionnaireResponse If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice QuestionnaireResponse A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
qrs-1 error QuestionnaireResponse.item Nested item can't be beneath both item and answer (answer.exists() and item.exists()).not()

This structure is derived from QuestionnaireResponse

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... basedOn 0..0 NOT USED — link is on CommunicationRequest.payload
... questionnaire 1..1 canonical(Questionnaire) Questionnaire canonical URL
... status 1..1 code in-progress | completed
... authored 1..1 dateTime Creation timestamp
... item 0..* BackboneElement Nested group hierarchy mirroring Questionnaire

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..1 Identifier Unique id for this set of answers
... partOf Σ 0..* Reference(Observation | Procedure) Part of this action
... questionnaire Σ 1..1 canonical(Questionnaire) Questionnaire canonical URL
... status ?!Σ 1..1 code in-progress | completed
Binding: QuestionnaireResponseStatus (required): Lifecycle status of the questionnaire response.
... subject Σ 1..1 Reference(Resource) Patient/Practitioner/RelatedPerson
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... authored Σ 1..1 dateTime Creation timestamp
... author Σ 0..1 Reference(Device | Practitioner | PractitionerRole | Patient | RelatedPerson | Organization) Person who received and recorded the answers
... source Σ 0..1 Reference(Patient | Practitioner | PractitionerRole | RelatedPerson) The person who answered the questions
... item C 0..* BackboneElement Nested group hierarchy mirroring Questionnaire
Constraints: qrs-1
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId 1..1 string Pointer to specific item from Questionnaire
.... definition 0..1 uri ElementDefinition - details for the item
.... text 0..1 string Name for group or question text
.... answer 0..* BackboneElement The response(s) to the question
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 0..1 Single-valued answer to the question
Binding: QuestionnaireAnswerCodes (example): Code indicating the response provided for a question.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
..... item 0..* See item (QuestionnaireResponse) Nested groups and questions
.... item 0..* See item (QuestionnaireResponse) Nested questionnaire response items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
QuestionnaireResponse.​language Base preferred Common Languages 📍4.0.1 FHIR Std.
QuestionnaireResponse.​status Base required QuestionnaireResponseStatus 📍4.0.1 FHIR Std.
QuestionnaireResponse.​item.answer.value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error QuestionnaireResponse If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error QuestionnaireResponse If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice QuestionnaireResponse A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
qrs-1 error QuestionnaireResponse.item Nested item can't be beneath both item and answer (answer.exists() and item.exists()).not()

This structure is derived from QuestionnaireResponse

Summary

Mandatory: 3 elements
Prohibited: 1 element

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... questionnaire Σ 1..1 canonical(Questionnaire) Questionnaire canonical URL
... subject Σ 1..1 Reference(Resource) Patient/Practitioner/RelatedPerson
... authored Σ 1..1 dateTime Creation timestamp
... item C 0..* BackboneElement Nested group hierarchy mirroring Questionnaire
Constraints: qrs-1
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId 1..1 string Pointer to specific item from Questionnaire

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
QuestionnaireResponse.​status Base required QuestionnaireResponseStatus 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error QuestionnaireResponse If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error QuestionnaireResponse If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice QuestionnaireResponse A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
qrs-1 error QuestionnaireResponse.item Nested item can't be beneath both item and answer (answer.exists() and item.exists()).not()

Differential View

This structure is derived from QuestionnaireResponse

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... basedOn 0..0 NOT USED — link is on CommunicationRequest.payload
... questionnaire 1..1 canonical(Questionnaire) Questionnaire canonical URL
... status 1..1 code in-progress | completed
... authored 1..1 dateTime Creation timestamp
... item 0..* BackboneElement Nested group hierarchy mirroring Questionnaire

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. QuestionnaireResponse 0..* QuestionnaireResponse Conversationally-built patient answers
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..1 Identifier Unique id for this set of answers
... partOf Σ 0..* Reference(Observation | Procedure) Part of this action
... questionnaire Σ 1..1 canonical(Questionnaire) Questionnaire canonical URL
... status ?!Σ 1..1 code in-progress | completed
Binding: QuestionnaireResponseStatus (required): Lifecycle status of the questionnaire response.
... subject Σ 1..1 Reference(Resource) Patient/Practitioner/RelatedPerson
... encounter Σ 0..1 Reference(Encounter) Encounter created as part of
... authored Σ 1..1 dateTime Creation timestamp
... author Σ 0..1 Reference(Device | Practitioner | PractitionerRole | Patient | RelatedPerson | Organization) Person who received and recorded the answers
... source Σ 0..1 Reference(Patient | Practitioner | PractitionerRole | RelatedPerson) The person who answered the questions
... item C 0..* BackboneElement Nested group hierarchy mirroring Questionnaire
Constraints: qrs-1
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... linkId 1..1 string Pointer to specific item from Questionnaire
.... definition 0..1 uri ElementDefinition - details for the item
.... text 0..1 string Name for group or question text
.... answer 0..* BackboneElement The response(s) to the question
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..* Extension Additional content defined by implementations
..... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
..... value[x] 0..1 Single-valued answer to the question
Binding: QuestionnaireAnswerCodes (example): Code indicating the response provided for a question.
...... valueBoolean boolean
...... valueDecimal decimal
...... valueInteger integer
...... valueDate date
...... valueDateTime dateTime
...... valueTime time
...... valueString string
...... valueUri uri
...... valueAttachment Attachment
...... valueCoding Coding
...... valueQuantity Quantity
...... valueReference Reference(Resource)
..... item 0..* See item (QuestionnaireResponse) Nested groups and questions
.... item 0..* See item (QuestionnaireResponse) Nested questionnaire response items

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
QuestionnaireResponse.​language Base preferred Common Languages 📍4.0.1 FHIR Std.
QuestionnaireResponse.​status Base required QuestionnaireResponseStatus 📍4.0.1 FHIR Std.
QuestionnaireResponse.​item.answer.value[x] Base example Questionnaire Answer Codes 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error QuestionnaireResponse If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error QuestionnaireResponse If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error QuestionnaireResponse If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice QuestionnaireResponse A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()
qrs-1 error QuestionnaireResponse.item Nested item can't be beneath both item and answer (answer.exists() and item.exists()).not()

This structure is derived from QuestionnaireResponse

Summary

Mandatory: 3 elements
Prohibited: 1 element

 

Other representations of profile: CSV, Excel, Schematron