From 78cfa233422999b31387a1050d09e7d27fa2f176 Mon Sep 17 00:00:00 2001 From: Patrick LaRocque Date: Wed, 31 Jan 2024 10:00:49 -0500 Subject: [PATCH 1/3] Update the status returned from NewRx and store the PrescriberOrderNumber in the database --- .../database/schemas/doctorOrderSchemas.js | 1 + .../buildScript.v2017071.js | 66 +++++++++++-------- backend/src/routes/doctorOrders.js | 3 +- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/backend/src/database/schemas/doctorOrderSchemas.js b/backend/src/database/schemas/doctorOrderSchemas.js index 37d33db..0f6a0f7 100644 --- a/backend/src/database/schemas/doctorOrderSchemas.js +++ b/backend/src/database/schemas/doctorOrderSchemas.js @@ -1,6 +1,7 @@ import mongoose from 'mongoose'; export const orderSchema = new mongoose.Schema({ caseNumber: String, + prescriberOrderNumber: String, patientName: String, patientFirstName: String, patientLastName: String, diff --git a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js index 903b629..4fe6060 100644 --- a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js +++ b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js @@ -1,39 +1,45 @@ /* NCPDP SCRIPT v2017071 Support */ import { XMLBuilder } from 'fast-xml-parser'; -export default function buildRxStatus(caseNumber, doctorName, drugNames) { + +export default function buildRxStatus(newOrder) { var time = new Date(); var rxStatus = { - RxStatus: [ + Message: [ { - Message: [ + Header: [ { - Header: [ - { - To: doctorName - }, - { - From: 'Pharmacy' // Placeholder: This is dependant on individual pharmacy - }, - { - Message: 'NewRx Request Received For: ' + drugNames - }, - { - RelatesToMessageID: caseNumber // Placeholder: This is dependant on individual pharmacy, using Case Number - }, - { - Time: time - } - ] + To: { + '#text': newOrder.doctorID, + '@@Qualifier': 'C' + } }, { - Body: [ + From: { + '#text': 'Pharmacy', // Placeholder: This is dependant on individual pharmacy + '@@Qualifier': 'P' + } + }, + { + Message: 'NewRx Request Received For: ' + newOrder.drugNames + }, + { + RelatesToMessageID: newOrder.caseNumber // Placeholder: This is dependant on individual pharmacy, using Case Number + }, + { + SentTime: time.toISOString() + }, + { + PrescriberOrderNumber: newOrder.prescriberOrderNumber + } + ] + }, + { + Body: [ + { + Status: [ { - Status: [ - { - Code: '200' // Placeholder: This is dependant on individual pharmacy - } - ] + Code: '000' // Placeholder: This is dependant on individual pharmacy } ] } @@ -41,7 +47,13 @@ export default function buildRxStatus(caseNumber, doctorName, drugNames) { } ] }; - const builder = new XMLBuilder({ oneListGroup: 'true' }); + const options = { + ignoreAttributes: false, + attributeNamePrefix: "@@", + format: true, + oneListGroup: 'true' + }; + const builder = new XMLBuilder(options); var RxStatus = builder.build(rxStatus); return RxStatus; diff --git a/backend/src/routes/doctorOrders.js b/backend/src/routes/doctorOrders.js index 2a33a58..cfc04b7 100644 --- a/backend/src/routes/doctorOrders.js +++ b/backend/src/routes/doctorOrders.js @@ -50,7 +50,7 @@ router.post('/api/addRx', async (req, res) => { console.log('POST DoctorOrder: '); console.log(newOrder); - var RxStatus = buildRxStatus(newOrder.caseNumber, newOrder.doctorName, newOrder.drugNames); + var RxStatus = buildRxStatus(newOrder); console.log('RxStatus:'); console.log(RxStatus); @@ -185,6 +185,7 @@ function parseNCPDPScript(newRx) { // Parsing XML NCPDP SCRIPT from EHR var newOrder = new doctorOrder({ caseNumber: newRx.Message.Header.MessageID.toString(), // Will need to return to this and use actual pt identifier or uuid + prescriberOrderNumber: newRx.Message.Header.PrescriberOrderNumber, patientName: newRx.Message.Body.NewRx.Patient.HumanPatient.Name.FirstName + ' ' + From 58630870efb8f4a474e892eb41a5167358d77842 Mon Sep 17 00:00:00 2001 From: Patrick LaRocque Date: Wed, 31 Jan 2024 10:12:15 -0500 Subject: [PATCH 2/3] run prettier --- backend/src/ncpdpScriptBuilder/buildScript.v2017071.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js index 4fe6060..999e091 100644 --- a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js +++ b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js @@ -1,7 +1,6 @@ /* NCPDP SCRIPT v2017071 Support */ import { XMLBuilder } from 'fast-xml-parser'; - export default function buildRxStatus(newOrder) { var time = new Date(); var rxStatus = { @@ -49,7 +48,7 @@ export default function buildRxStatus(newOrder) { }; const options = { ignoreAttributes: false, - attributeNamePrefix: "@@", + attributeNamePrefix: '@@', format: true, oneListGroup: 'true' }; From bbb8f2f0b37809f778d54bfc5649a59a7007b585 Mon Sep 17 00:00:00 2001 From: Patrick LaRocque Date: Thu, 1 Feb 2024 14:48:42 -0500 Subject: [PATCH 3/3] fix spelling errors --- backend/src/ncpdpScriptBuilder/buildScript.v2017071.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js index 999e091..fc3dc82 100644 --- a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js +++ b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js @@ -15,7 +15,7 @@ export default function buildRxStatus(newOrder) { }, { From: { - '#text': 'Pharmacy', // Placeholder: This is dependant on individual pharmacy + '#text': 'Pharmacy', // Placeholder: This is dependent on individual pharmacy '@@Qualifier': 'P' } }, @@ -23,7 +23,7 @@ export default function buildRxStatus(newOrder) { Message: 'NewRx Request Received For: ' + newOrder.drugNames }, { - RelatesToMessageID: newOrder.caseNumber // Placeholder: This is dependant on individual pharmacy, using Case Number + RelatesToMessageID: newOrder.caseNumber // Placeholder: This is dependent on individual pharmacy, using Case Number }, { SentTime: time.toISOString() @@ -38,7 +38,7 @@ export default function buildRxStatus(newOrder) { { Status: [ { - Code: '000' // Placeholder: This is dependant on individual pharmacy + Code: '000' // Placeholder: This is dependent on individual pharmacy } ] }