We have a system where citizens download Questionnaire from a server, fill it in and submit a QuestionnaireResponse back into the server, storing it there. In our case, these are simple questions about how you're feeling and symptoms. A health worker can then access the QuestionnaireResponse. The health workers don't want the answers, but a score which has been calculated based on the answers.
Some vendors (non-FHIR) allow creating a form and a scoring system at the same time. If we wanted to support this within FHIR, I'm assuming we would have to embed the scoring information inside the Questionnaire (or potentially a separate resource, but that would give some redundance perhaps).
Is this best solved with extensions to the Questionnaire-resource, another resource or some other mechanism? And what'd be the best way (architectureally) to implement the actual scoring. Would it best be a separate application which subscribes to the QuestionnaireResponses, downloads the Questionnaire, extracts the scoring system, evaluates and then writes the score back into the QuestionnareResponse?
Are there other standards we should be looking to for help on this?
And for those especially interested, here's a really simplified Questionnaire resource. Typically it'd have more questions of course. Right now we've put the score into the 'code', which doesn't seem like a good idea.
{
"resourceType":"Questionnaire",
"id":"1140",
"meta":{
"versionId":"11",
"lastUpdated":"2016-06-14T13:01:47.000+00:00"
},
"text":{
"status":"generated",
"div":"<div><!-- Snipped for Brevity --></div>"
},
"status":"published",
"date":"2016",
"group":{
"linkId":"group1",
"title":"HelsaMi Hjertesvikt",
"concept":[
{
"system":"unknown",
"code":"unknown",
"display":"Hjertesvikt"
}
],
"group":[
{
"linkId":"group2",
"question":[
{
"linkId":"Feeling",
"text":"How do you feel today?",
"type":"choice",
"option":[
{
"system":"unknown",
"code":"3",
"display":"Good"
},
{
"system":"unknown",
"code":"2",
"display":"Medium"
},
{
"system":"unknown",
"code":"1",
"display":"Bad"
}
]
}
]
}
]
}
}
Would an extension for example look like this (embedded in to each option):
"extension": [{
"url": "http://example.com/scoring",
"valueInteger": 10
}
]