...
As of August 2023, PSI extensively uses conversational chatbots to collect information directly from clients. In some cases we also make use of USSD sessions, for which we run short questionnaires. For chatbots, the flow of those conversations is defined in system like RapidPro, and the answers are stored on a FHIR backend, as a QuestionnaireResponse resource. But in most cases we PSI currently (Aug 2023) don’t have the associated Questionnaire, which means that the metadata is missing. The creates challenges for analytics, and also force to code questionnaires as part of the bot or the USSD application, instead of just using a FHIR questionnaire.
Questionnaire Processor application
Questionnaire Processor is a server-side Node.js application able to process FHIR Questionnaires. The service can be integrated with USSD or chatbot applications to prompt users with questionnaire items and gather their responses. The services validate user input in accordance to the constraints for the related FHIR Question Item, and it return the next question as part of the API response body. At the end of the process you get the FHIR QuestionnaireResponse resource, based on the answer provided.
...
Link: https://drive.google.com/file/d/1WM5nvoVbOon-X0yTX7t5Prz7mt_1DRVP/view?usp=sharing
Request Parameters
Headers
X-api-key
: Your API token set in the.env
file (required).Accept-Language
: Set the desired language for the response. Supported languages:English
,French
,Spanish
andBurundi
.
Body
sessionId
: Unique session id for the interaction (required).userId
: Unique identifier related to the user.Input
: User response to the prompt (optional for first request).showQR
: Return Questionnaire response after each request (optional). The valid values are
orStatus colour Green title true Status colour Red title false questionnaire
: FHIR Questionnaire in JSON format (optional after the initial request).
Example Request
Code Block | ||
---|---|---|
| ||
{ "sessionId": "123456789", "userId": "user123", "Input": null, "showQR": true, "questionnaire": {...} // Your FHIR Questionnaire JSON } |
Response Structure
Status
: Reflects the state of the session (CON
orEND
).Message
: Question item, options, or validation message displayed to the user.QuestionnaireResponse
: Returned ifshowQR
is true or the session reaches the end.
Example Response Utsav Ashish Koju please add an example of a response
Code Block |
---|
Supported FHIR Question Types
Boolean
Choice
Date
Decimal
Display
Integer
Phone
Quantity
Text
URL
...
For Boolean questions, 1 is used for
True
and 2 forFalse
.Skip logic and validations like greater than, less than, or equals to are supported.
The application uses SQLite for session management and Winston for logging.
Use a simple token-based authentication mechanism for enhanced security.
The application doesn’t support nested FHIR questionnaire.
Getting Started:
Environment Configuration:
Rename the
.env.example
file to.env
.Update the
.env
file based on your system configuration.
API Endpoint:
base_url/api/v1/questionnaire
API Documentation: Access detailed API documentation and test endpoints using swagger-ui at
base_url/api/v1/docs
.
...