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..fc3dc82 100644 --- a/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js +++ b/backend/src/ncpdpScriptBuilder/buildScript.v2017071.js @@ -1,39 +1,44 @@ /* 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' + } + }, + { + From: { + '#text': 'Pharmacy', // Placeholder: This is dependent on individual pharmacy + '@@Qualifier': 'P' + } + }, + { + Message: 'NewRx Request Received For: ' + newOrder.drugNames + }, + { + RelatesToMessageID: newOrder.caseNumber // Placeholder: This is dependent on individual pharmacy, using Case Number + }, + { + SentTime: time.toISOString() }, { - Body: [ + PrescriberOrderNumber: newOrder.prescriberOrderNumber + } + ] + }, + { + Body: [ + { + Status: [ { - Status: [ - { - Code: '200' // Placeholder: This is dependant on individual pharmacy - } - ] + Code: '000' // Placeholder: This is dependent on individual pharmacy } ] } @@ -41,7 +46,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 + ' ' +