Sending support information for a hospital/clinic (Node.js)
In this use case, the user contacts the doctor/clinic/hospital support with or without reference to a particular appointment via a specific channel like phone, email or chat
Code snippets
BPP receives protocol status
/*
Example Request JSON:
{
"context": {
"domain": "nic2004:85121",
"country": "IND",
"city": "std:080",
"action": "support",
"core_version": "0.9.2",
"bap_id": "https://mock_bap.com/",
"bap_uri": "https://mock_bap.com/beckn/",
"transaction_id": "1239890342",
"message_id": "123793824",
"timestamp": "2021-03-23T10:00:40.065Z"
},
"message": {
"ref_id": "order_1"
}
}
*/
router.post('/healthcare_consultation/support', support);
function support({ headers, body }, res) {
try {
const message = _.get(body, "message");
const context = _.get(body, "context");
if (!context) {
return res.status(400).send(httpResponse("NACK", "Missing Context"));
}
if (!message) {
return res.status(400).send(httpResponse("NACK", "Missing Message"));
}
// ... Returns the ack immediately and continue the processing after validation
res.status(200).send(httpResponse("ACK"));
processSupport(headers, body)
} catch (error) {
res.status(500).send(httpResponse("NACK", error));
}
};
BPP processes the status
function processSupport(requestHeaders, supportRequestBody) {
// Execute business logic here
let supportResponse = {}
generateResponse(requestHeaders, supportResponse)
}
BPP generates response
async function generateResponse(requestHeaders, rawResponse){
/*
Example Request JSON :
{
"context": {
"domain": "nic2004:85121",
"country": "IND",
"city": "std:080",
"action": "on_support",
"core_version": "0.9.2",
"bap_id": "https://mock_bap.com/",
"bap_uri": "https://mock_bap.com/beckn/",
"transaction_id": "1239890342",
"message_id": "123793824",
"timestamp": "2021-03-23T10:00:40.065Z"
},
"message": {
"phone": "+919898989898",
"email": "[email protected]",
"uri": "http://support.bpp.com?order_id=1"
}
}
*/
//The below code generates the above example JSON.
let onSupportResponseBody = {}
//call protocol on_support
await callOnSupport(requestHeaders, onSupportResponseBody);
}
BPP calls protocol on_support
async function callOnSupport(requestHeaders, onSupportResponseBody) {
// Take the subscriber Id from the header and calls the registry to get the url. If already cached it need not to call again
const uri = await lookup(requestHeaders);
// Construct Header
const headers = constructAuthHeader(); // Auth Header with digital Signature
return axios({ url: `${uri}/healthcare_consultation/on_support`, method: "POST", headers, data: onSupportResponseBody })
}