Server-side reconciliation based on Form Submission #2653
Replies: 2 comments 1 reply
-
Cool this looks reasonable. Can we scope this not assume that the linked resources are a Task? Maybe there's a way to include in the Q and QR something that indicates the resource type to search within? Also, I'm assuming that this would not try to do any business logic beyond the link to tasks, like: Some thoughts on the edge cases you mentioned:
Hah, I guess there's a pattern to my thinking here, if we get into trouble we give up and flag for manual review, which feels like a reasonable approach in all of these scenarios where there is not (that I cant see) a deterministic way to guarantee we make the correct decision |
Beta Was this translation helpful? Give feedback.
-
Here is a sample Questionnaire and QR for the Out of service {
"resourceType": "Questionnaire",
"language": "nb-NO",
"status": "draft",
"publisher": "NHN",
"meta": {
"profile": [
"http://ehelse.no/fhir/StructureDefinition/sdf-Questionnaire"
],
"tag": [
{
"system": "urn:ietf:bcp:47",
"code": "nb-NO",
"display": "Bokmål"
}
],
"security": [
{
"code": "3",
"display": "Helsehjelp (Full)",
"system": "urn:oid:2.16.578.1.12.4.1.1.7618"
}
]
},
"contact": [
{
"name": "http://www.nhn.no"
}
],
"subjectType": [
"Patient"
],
"extension": [
{
"url": "http://helsenorge.no/fhir/StructureDefinition/sdf-sidebar",
"valueCoding": {
"system": "http://helsenorge.no/fhir/ValueSet/sdf-sidebar",
"code": "1"
}
},
{
"url": "http://helsenorge.no/fhir/StructureDefinition/sdf-information-message",
"valueCoding": {
"system": "http://helsenorge.no/fhir/ValueSet/sdf-information-message",
"code": "1"
}
},
{
"url": "http://helsenorge.no/fhir/StructureDefintion/sdf-itemControl-visibility",
"valueCodeableConcept": {
"coding": [
{
"system": "http://helsenorge.no/fhir/CodeSystem/AttachmentRenderOptions",
"code": "hide-help",
"display": "Hide help texts"
},
{
"system": "http://helsenorge.no/fhir/CodeSystem/AttachmentRenderOptions",
"code": "hide-sublabel",
"display": "Hide sublabel texts"
}
]
}
}
],
"id": "01dddee0-1c10-47ac-8b75-5fbea790a15a",
"item": [
{
"linkId": "3ec7e49b-b60f-4e67-f5ed-bd7d18cf3943",
"type": "string",
"text": "ZEIR ID",
"required": false
},
{
"linkId": "7a27ab63-6a6f-499d-8a70-a356cf23da38",
"type": "date",
"text": "Date of Service",
"extension": [
{
"url": "http://ehelse.no/fhir/StructureDefinition/sdf-maxvalue",
"valueString": "today()"
}
],
"required": false
},
{
"linkId": "d9c2e3e3-8415-44bd-8317-f573586a4943",
"type": "choice",
"text": "Which vaccinations were provided?",
"required": false,
"answerOption": [
{
"valueCoding": {
"id": "3869a41b-6978-4c43-979f-54ef77cfa83e",
"code": "001",
"system": "http://snomed.info/sct",
"display": "OPV"
}
},
{
"valueCoding": {
"id": "3e7d846b-b278-4bbf-c4f4-d13f083ebe5d",
"code": "002",
"system": "http://snomed.info/sct",
"display": "BCG"
}
},
{
"valueCoding": {
"id": "5746775c-bc71-4e11-85fd-ede99915671f",
"code": "003",
"system": "http://snomed.info/sct",
"display": "OPV 1"
}
},
{
"valueCoding": {
"id": "0ef61589-f051-4548-87e9-da54ef0d583d",
"code": "004",
"system": "http://snomed.info/sct",
"display": "Penta 1"
}
},
{
"valueCoding": {
"id": "803a834f-9f98-4842-9f02-473df681bb57",
"code": "005",
"system": "http://snomed.info/sct",
"display": "PCV 1"
}
},
{
"valueCoding": {
"id": "d8e53818-51ca-4d0c-8f03-a27e47d30271",
"code": "006",
"system": "http://snomed.info/sct",
"display": "Rota 1"
}
},
{
"valueCoding": {
"id": "5b2e0a9f-3bcd-4c56-cdf8-89bfa656ecbb",
"code": "007",
"system": "http://snomed.info/sct",
"display": "OPV 2"
}
},
{
"valueCoding": {
"id": "e75d4a12-836f-4aad-c46e-bdff4050b4fb",
"code": "008",
"system": "http://snomed.info/sct",
"display": "Penta 2"
}
},
{
"valueCoding": {
"id": "22e5c76e-1fee-4055-84d3-7dcce6cdc256",
"code": "009",
"system": "http://snomed.info/sct",
"display": "PCV 2"
}
},
{
"valueCoding": {
"id": "04ee6c59-90a2-4f70-b081-b1c7f23f074e",
"code": "010",
"system": "http://snomed.info/sct",
"display": "Rota 2"
}
},
{
"valueCoding": {
"id": "60ecaadd-8db1-4518-beb7-36105f9862db",
"code": "011",
"system": "http://snomed.info/sct",
"display": "OPV 3"
}
},
{
"valueCoding": {
"id": "d6530433-e4a7-4d72-8aef-8295957fbaeb",
"code": "012",
"system": "http://snomed.info/sct",
"display": "PCV 3"
}
},
{
"valueCoding": {
"id": "f4792b9f-f54c-4104-8011-9e3b7d8ad6ac",
"code": "013",
"system": "http://snomed.info/sct",
"display": "Penta 3"
}
},
{
"valueCoding": {
"id": "4449a8b2-b523-4326-9d38-7debb176bfe7",
"code": "014",
"system": "http://snomed.info/sct",
"display": "IPV"
}
},
{
"valueCoding": {
"id": "1c159f21-7370-4ea1-85f9-bc3bd8486a4f",
"code": "015",
"system": "http://snomed.info/sct",
"display": "MR 1"
}
}
],
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
"valueCodeableConcept": {
"coding": [
{
"system": "http://hl7.org/fhir/ValueSet/questionnaire-item-control",
"code": "check-box"
}
]
}
}
]
}
]
} Here is a sample QR for the Out of service {
"resourceType": "QuestionnaireResponse",
"id": "6fbf1a75-0220-4ca4-9fd4-d9ea7c570b64",
"questionnaire": "Questionnaire/OutOfService",
"status": "completed",
"subject": {
"reference": "Patient/b298f30a-5434-4ab6-a88e-10a15d3e74e7"
},
"authored": "2023-09-14T10:32:58+03:00",
"item": [
{
"linkId": "3ec7e49b-b60f-4e67-f5ed-bd7d18cf3943",
"text": "ZEIR ID",
"answer": [
{
"valueString": "987239487"
}
]
},
{
"linkId": "7a27ab63-6a6f-499d-8a70-a356cf23da38",
"text": "Date of Service",
"answer": [
{
"valueDate": "2023-10-13"
}
]
},
{
"linkId": "d9c2e3e3-8415-44bd-8317-f573586a4943",
"text": "Which vaccinations were provided?",
"answer": [
{
"valueCoding": {
"code": "001",
"display": "OPV",
"system": "http://snomed.info/sct"
}
},
{
"valueCoding": {
"code": "002",
"display": "BCG",
"system": "http://snomed.info/sct"
}
}
]
}
]
} QR {
"resourceType": "QuestionnaireResponse",
"id": "6fbf1a75-0220-4ca4-9fd4-d9ea7c570b64",
"questionnaire": "Questionnaire/OutOfService",
"status": "completed",
"subject": {
"reference": "Patient/b298f30a-5434-4ab6-a88e-10a15d3e74e7"
},
"authored": "2023-09-14T10:32:58+03:00",
"item": [
{
"linkId": "3ec7e49b-b60f-4e67-f5ed-bd7d18cf3943",
"text": "ZEIR ID",
"answer": [
{
"valueString": "987239487"
}
]
},
{
"linkId": "7a27ab63-6a6f-499d-8a70-a356cf23da38",
"text": "Date of Service",
"answer": [
{
"valueDate": "2023-10-13"
}
]
},
{
"linkId": "d9c2e3e3-8415-44bd-8317-f573586a4943",
"text": "Which vaccinations were provided?",
"answer": [
{
"valueCoding": {
"code": "001",
"display": "OPV",
"system": "http://snomed.info/sct"
}
},
{
"valueCoding": {
"code": "002",
"display": "BCG",
"system": "http://snomed.info/sct"
}
}
]
}
]
} |
Beta Was this translation helpful? Give feedback.
-
Background
An out-of-catchment health facility refers to a case where a child seeks immunization services at a facility other than the one where they were registered(aka home facility). The old ZEIR app supported a form where the following details would be provided:
The “Record out of catchment vaccination” form was attached to the drawer menu, as shown in the screenshot below. The next screenshot shows the details captured on the form.
Once the details were submitted and the app synced, the system would update the vaccinations to the respective child profile on the server side based on the provided ZEIR ID. The vaccination details would show up the next time the child profile was opened at the child's home facility. This would require the home facility device to sync down new details before the additional vaccinations given show. Please reference the constraints on the Out of Area data dictionary here.
Happy Path
Assumptions
Current approach to vaccine schedule generation
Proposed solution
Form Submission
Sample Questionnaire
Sample QR for Child
Sample QR for Adult
Serverside reconciliation
Happy Path
https://$hapi_url/Patient/ID/$everything
Reason Code
Status
Completion date
Edgecase to think about
Beta Was this translation helpful? Give feedback.
All reactions