diff --git a/src/components/RequestBox/RequestBox.jsx b/src/components/RequestBox/RequestBox.jsx index c402427..7fbd0b5 100644 --- a/src/components/RequestBox/RequestBox.jsx +++ b/src/components/RequestBox/RequestBox.jsx @@ -220,8 +220,13 @@ const RequestBox = props => { * Send NewRx for new Medication to the Pharmacy Information System (PIMS) */ const sendRx = async () => { - console.log('Sending NewRx to: ' + pimsUrl); - console.log('Getting case number '); + // Use intermediary or direct based on toggle + const ncpdpEndpoint = globalState.usePharmacyIntermediary + ? globalState.pharmacyIntermediaryUrl + : pimsUrl; + + console.log('Sending NewRx to: ' + ncpdpEndpoint); + console.log('Getting case number'); const medication = createMedicationFromMedicationRequest(request); const body = makeBody(medication); const standardEtasuUrl = getMedicationSpecificEtasuUrl( @@ -260,7 +265,7 @@ const RequestBox = props => { const serializer = new XMLSerializer(); // Sending NewRx to the Pharmacy - fetch(pimsUrl, { + fetch(ncpdpEndpoint, { method: 'POST', //mode: 'no-cors', headers: { diff --git a/src/util/buildScript.2017071.js b/src/util/buildScript.2017071.js index 1ff52a9..e14ccef 100644 --- a/src/util/buildScript.2017071.js +++ b/src/util/buildScript.2017071.js @@ -121,7 +121,7 @@ function quantityUnitOfMeasureFromDrugFormCode(dispenseRequest) { // https://terminology.hl7.org/5.0.0/CodeSystem-v3-orderableDrugForm.html // Return NCPDP QuantityUnitOfMeasure if ( - dispenseRequest.quantity.system.toLowerCase().endsWith('v3-orderableDrugForm'.toLowerCase()) + dispenseRequest?.quantity?.system?.toLowerCase().endsWith('v3-orderableDrugForm'.toLowerCase()) ) { // is a subset of the codes, not a complete list switch (dispenseRequest.quantity.code.toUpperCase()) { @@ -253,19 +253,21 @@ function buildNewRxMedication(doc, medicationRequestResource) { medicationPrescribed.appendChild(drugCoded); // Medication Quantity + console.log(medicationRequestResource); const dispenseRequest = medicationRequestResource.dispenseRequest; - var quantity = doc.createElement('Quantity'); - xmlAddTextNode(doc, quantity, 'Value', dispenseRequest.quantity.value); - xmlAddTextNode(doc, quantity, 'CodeListQualifier', 38); // Original Quantity - var quantityUnitOfMeasure = doc.createElement('QuantityUnitOfMeasure'); - xmlAddTextNode( - doc, - quantityUnitOfMeasure, - 'Code', - quantityUnitOfMeasureFromDrugFormCode(dispenseRequest) - ); - quantity.appendChild(quantityUnitOfMeasure); - medicationPrescribed.appendChild(quantity); + var quantity = doc.createElement('Quantity'); + xmlAddTextNode(doc, quantity, 'Value', dispenseRequest?.quantity?.value ? dispenseRequest?.quantity?.value : ''); + xmlAddTextNode(doc, quantity, 'CodeListQualifier', 38); // Original Quantity + var quantityUnitOfMeasure = doc.createElement('QuantityUnitOfMeasure'); + xmlAddTextNode( + doc, + quantityUnitOfMeasure, + 'Code', + quantityUnitOfMeasureFromDrugFormCode(dispenseRequest ? dispenseRequest : {}) + ); + quantity.appendChild(quantityUnitOfMeasure); + medicationPrescribed.appendChild(quantity); + // Medication Written Date var writtenDate = doc.createElement('WrittenDate'); @@ -280,13 +282,17 @@ function buildNewRxMedication(doc, medicationRequestResource) { doc, medicationPrescribed, 'NumberOfRefills', - dispenseRequest.numberOfRepeatsAllowed + dispenseRequest?.numberOfRepeatsAllowed ? dispenseRequest?.numberOfRepeatsAllowed : '' ); + // Medication Sig - var sig = doc.createElement('Sig'); - xmlAddTextNode(doc, sig, 'SigText', medicationRequestResource.dosageInstruction[0].text); - medicationPrescribed.appendChild(sig); + var dosageInstruction = medicationRequestResource?.dosageInstruction; + var dosageText = dosageInstruction ? dosageInstruction [0]?.text : '' + var sig = doc.createElement('Sig'); + xmlAddTextNode(doc, sig, 'SigText', dosageText); + medicationPrescribed.appendChild(sig); + // Medication REMS // A - Prescriber has checked REMS and the prescriber's actions have been completed. diff --git a/src/util/data.js b/src/util/data.js index 4de36ab..3204719 100644 --- a/src/util/data.js +++ b/src/util/data.js @@ -16,6 +16,16 @@ const headerDefinitions = { type: 'check', default: env.get('VITE_USE_INTERMEDIARY').asBool() }, + usePharmacyIntermediary: { + type: 'check', + display: 'Use Pharmacy Intermediary (NCPDP NewRx)', + default: env.get('VITE_USE_PHARMACY_INTERMEDIARY').asBool() || false + }, + pharmacyIntermediaryUrl: { + type: 'input', + display: 'Pharmacy Intermediary URL (NCPDP Endpoint)', + default: env.get('VITE_PHARMACY_INTERMEDIARY').asString() || 'http://localhost:3003/ncpdp/script' + }, alternativeTherapy: { display: 'Alternative Therapy Cards Allowed', type: 'check',