Skip to content

Commit 372f609

Browse files
authored
Merge pull request #177 from mcode/ndpdp-intermediary-integration
Ndpdp intermediary integration
2 parents 20c9549 + 6c71f99 commit 372f609

3 files changed

Lines changed: 41 additions & 20 deletions

File tree

src/components/RequestBox/RequestBox.jsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,13 @@ const RequestBox = props => {
220220
* Send NewRx for new Medication to the Pharmacy Information System (PIMS)
221221
*/
222222
const sendRx = async () => {
223-
console.log('Sending NewRx to: ' + pimsUrl);
224-
console.log('Getting case number ');
223+
// Use intermediary or direct based on toggle
224+
const ncpdpEndpoint = globalState.usePharmacyIntermediary
225+
? globalState.pharmacyIntermediaryUrl
226+
: pimsUrl;
227+
228+
console.log('Sending NewRx to: ' + ncpdpEndpoint);
229+
console.log('Getting case number');
225230
const medication = createMedicationFromMedicationRequest(request);
226231
const body = makeBody(medication);
227232
const standardEtasuUrl = getMedicationSpecificEtasuUrl(
@@ -260,7 +265,7 @@ const RequestBox = props => {
260265
const serializer = new XMLSerializer();
261266

262267
// Sending NewRx to the Pharmacy
263-
fetch(pimsUrl, {
268+
fetch(ncpdpEndpoint, {
264269
method: 'POST',
265270
//mode: 'no-cors',
266271
headers: {

src/util/buildScript.2017071.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ function quantityUnitOfMeasureFromDrugFormCode(dispenseRequest) {
121121
// https://terminology.hl7.org/5.0.0/CodeSystem-v3-orderableDrugForm.html
122122
// Return NCPDP QuantityUnitOfMeasure
123123
if (
124-
dispenseRequest.quantity.system.toLowerCase().endsWith('v3-orderableDrugForm'.toLowerCase())
124+
dispenseRequest?.quantity?.system?.toLowerCase().endsWith('v3-orderableDrugForm'.toLowerCase())
125125
) {
126126
// is a subset of the codes, not a complete list
127127
switch (dispenseRequest.quantity.code.toUpperCase()) {
@@ -253,19 +253,21 @@ function buildNewRxMedication(doc, medicationRequestResource) {
253253
medicationPrescribed.appendChild(drugCoded);
254254

255255
// Medication Quantity
256+
console.log(medicationRequestResource);
256257
const dispenseRequest = medicationRequestResource.dispenseRequest;
257-
var quantity = doc.createElement('Quantity');
258-
xmlAddTextNode(doc, quantity, 'Value', dispenseRequest.quantity.value);
259-
xmlAddTextNode(doc, quantity, 'CodeListQualifier', 38); // Original Quantity
260-
var quantityUnitOfMeasure = doc.createElement('QuantityUnitOfMeasure');
261-
xmlAddTextNode(
262-
doc,
263-
quantityUnitOfMeasure,
264-
'Code',
265-
quantityUnitOfMeasureFromDrugFormCode(dispenseRequest)
266-
);
267-
quantity.appendChild(quantityUnitOfMeasure);
268-
medicationPrescribed.appendChild(quantity);
258+
var quantity = doc.createElement('Quantity');
259+
xmlAddTextNode(doc, quantity, 'Value', dispenseRequest?.quantity?.value ? dispenseRequest?.quantity?.value : '');
260+
xmlAddTextNode(doc, quantity, 'CodeListQualifier', 38); // Original Quantity
261+
var quantityUnitOfMeasure = doc.createElement('QuantityUnitOfMeasure');
262+
xmlAddTextNode(
263+
doc,
264+
quantityUnitOfMeasure,
265+
'Code',
266+
quantityUnitOfMeasureFromDrugFormCode(dispenseRequest ? dispenseRequest : {})
267+
);
268+
quantity.appendChild(quantityUnitOfMeasure);
269+
medicationPrescribed.appendChild(quantity);
270+
269271

270272
// Medication Written Date
271273
var writtenDate = doc.createElement('WrittenDate');
@@ -280,13 +282,17 @@ function buildNewRxMedication(doc, medicationRequestResource) {
280282
doc,
281283
medicationPrescribed,
282284
'NumberOfRefills',
283-
dispenseRequest.numberOfRepeatsAllowed
285+
dispenseRequest?.numberOfRepeatsAllowed ? dispenseRequest?.numberOfRepeatsAllowed : ''
284286
);
285287

288+
286289
// Medication Sig
287-
var sig = doc.createElement('Sig');
288-
xmlAddTextNode(doc, sig, 'SigText', medicationRequestResource.dosageInstruction[0].text);
289-
medicationPrescribed.appendChild(sig);
290+
var dosageInstruction = medicationRequestResource?.dosageInstruction;
291+
var dosageText = dosageInstruction ? dosageInstruction [0]?.text : ''
292+
var sig = doc.createElement('Sig');
293+
xmlAddTextNode(doc, sig, 'SigText', dosageText);
294+
medicationPrescribed.appendChild(sig);
295+
290296

291297
// Medication REMS
292298
// A - Prescriber has checked REMS and the prescriber's actions have been completed.

src/util/data.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ const headerDefinitions = {
1616
type: 'check',
1717
default: env.get('VITE_USE_INTERMEDIARY').asBool()
1818
},
19+
usePharmacyIntermediary: {
20+
type: 'check',
21+
display: 'Use Pharmacy Intermediary (NCPDP NewRx)',
22+
default: env.get('VITE_USE_PHARMACY_INTERMEDIARY').asBool() || false
23+
},
24+
pharmacyIntermediaryUrl: {
25+
type: 'input',
26+
display: 'Pharmacy Intermediary URL (NCPDP Endpoint)',
27+
default: env.get('VITE_PHARMACY_INTERMEDIARY').asString() || 'http://localhost:3003/ncpdp/script'
28+
},
1929
alternativeTherapy: {
2030
display: 'Alternative Therapy Cards Allowed',
2131
type: 'check',

0 commit comments

Comments
 (0)