From e69e8b203988baca0235a765bd9993064fe729fd Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Thu, 9 Feb 2023 12:32:00 -0500 Subject: [PATCH 1/9] initial commit for integration --- .../RemsInterface/RemsInterface.jsx | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 7a58f75a..07eadb9a 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -57,38 +57,29 @@ export default class RemsInterface extends Component { return (
-
{metReq.requirement.name}
+
{metReq.requirementName}
{metReq.completed ? "✅" : "❌"}
-
{metReq.requirement.description}
+
{metReq.requirementDescription}
- { - metReq.childMetRequirements.map(subMetReq => -
-
{subMetReq.requirement.name}
-
{subMetReq.completed ? "✅" : "❌"}
-
{subMetReq.requirement.description}
-
- ) - }
) }); } - + async sendRemsMessage() { - const remsAdminResponse = await axios.post("http://localhost:8090/rems", this.props.specialtyRxBundle, this.getAxiosOptions()); + const remsAdminResponse = await axios.post("http://localhost:8090/etasu/met", this.props.specialtyRxBundle, this.getAxiosOptions()); this.setState({ remsAdminResponse }); console.log(remsAdminResponse) - // Will not send post request to PIS if only for prescriber enrollment - if(this.state.remsAdminResponse?.data?.case_number){ - axios.post("http://localhost:3010/api/doctorOrder/$process-message", remsAdminResponse.data, this.getAxiosOptions()).then((response) => { - this.setState({ response }); - console.log(response); - console.log(response.data); - }); - } + // Will not send post request to PIS if only for patient enrollment + // if(this.state.remsAdminResponse?.data?.case_number){ + // axios.post("http://localhost:3010/api/doctorOrder/$process-message", remsAdminResponse.data, this.getAxiosOptions()).then((response) => { + // this.setState({ response }); + // console.log(response); + // console.log(response.data); + // }); + // } } toggleBundle() { @@ -131,7 +122,7 @@ export default class RemsInterface extends Component { refreshBundle() { this.setState({ spin: true }); - axios.get(`http://localhost:8090/rems/${this.state.remsAdminResponse.data.case_number}`).then((response) => { + axios.get(`http://localhost:8090/etasu/met/${this.state.remsAdminResponse.data.case_number}`).then((response) => { this.setState({ remsAdminResponse: response }); }) } From 23b61514b352ceba6ae7534c8e2b979c446617a4 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Thu, 9 Feb 2023 15:17:27 -0500 Subject: [PATCH 2/9] initial pims integration --- .../RemsInterface/RemsInterface.jsx | 69 ++++++++++++++++--- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 07eadb9a..3c2b235b 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -66,20 +66,67 @@ export default class RemsInterface extends Component { }); } + + getResource(bundle, resourceReference) { + let temp = resourceReference.split("/"); + let _resourceType = temp[0]; + let _id = temp[1]; + + for (let i = 0; i < bundle.entry.length; i++) { + if ((bundle.entry[i].resource.resourceType === _resourceType) + && (bundle.entry[i].resource.id === _id)) { + return bundle.entry[i].resource; + } + } + return null; + } async sendRemsMessage() { const remsAdminResponse = await axios.post("http://localhost:8090/etasu/met", this.props.specialtyRxBundle, this.getAxiosOptions()); - this.setState({ remsAdminResponse }); - console.log(remsAdminResponse) - - // Will not send post request to PIS if only for patient enrollment - // if(this.state.remsAdminResponse?.data?.case_number){ - // axios.post("http://localhost:3010/api/doctorOrder/$process-message", remsAdminResponse.data, this.getAxiosOptions()).then((response) => { - // this.setState({ response }); - // console.log(response); - // console.log(response.data); - // }); - // } + console.log(remsAdminResponse) + + if (remsAdminResponse) { + this.setState({ remsAdminResponse }); + } else { + // error handling + } + + // Will not send post request to PIS if only for patient enrollment + if(this.state.remsAdminResponse?.data?.case_number){ + + // extract params and questionnaire response identifier + let params = this.getResource(this.props.specialtyRxBundle, this.props.specialtyRxBundle.entry[0].resource.focus.parameters.reference); + + // stakeholder and medication references + let prescriptionReference = ""; + let patientReference = ""; + for (let param of params.parameter) { + if (param.name === "prescription") { + prescriptionReference = param.reference; + } + else if (param.name === "source-patient") { + patientReference = param.reference; + } + } + + // obtain drug information from database + let presciption = this.getResource(this.props.specialtyRxBundle, prescriptionReference); + let prescriptionDisplay = presciption.medicationCodeableConcept.coding[0].display.split(" ")[0]; + let patient = this.getResource(this.props.specialtyRxBundle, patientReference); + let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; + + console.log(`http://localhost:5150/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); + + axios.get(`http://localhost:5150/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { + this.setState({ response }); + console.log(response); + console.log(response.data); + }); + } + + // const remsAdminResponse = await axios.post("http://localhost:8090/etasu/met", this.props.specialtyRxBundle, this.getAxiosOptions()); + // this.setState({ remsAdminResponse }); + // console.log(remsAdminResponse) } toggleBundle() { From 8a2158d4214e1b241368b3f7bce9fd63df96d247 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Thu, 9 Feb 2023 15:46:41 -0500 Subject: [PATCH 3/9] added error handling for already submitted reqs --- .../RemsInterface/RemsInterface.jsx | 212 +++++++++--------- 1 file changed, 109 insertions(+), 103 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 3c2b235b..53419799 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -84,12 +84,7 @@ export default class RemsInterface extends Component { async sendRemsMessage() { const remsAdminResponse = await axios.post("http://localhost:8090/etasu/met", this.props.specialtyRxBundle, this.getAxiosOptions()); console.log(remsAdminResponse) - - if (remsAdminResponse) { - this.setState({ remsAdminResponse }); - } else { - // error handling - } + this.setState({ remsAdminResponse }); // Will not send post request to PIS if only for patient enrollment if(this.state.remsAdminResponse?.data?.case_number){ @@ -195,116 +190,127 @@ export default class RemsInterface extends Component { } // Checking if REMS Request (pt enrollment) || Met Requirments (prescriber Form) + let hasRemsResponse = this.state.remsAdminResponse?.data ? true : false let hasRemsCase = this.state.remsAdminResponse?.data?.case_number ? true : false; return (
- {hasRemsCase ? + { + hasRemsResponse ?
-
-

REMS Admin Status

- -
-
- Case Number : {this.state.remsAdminResponse?.data?.case_number || "N/A"} -
-
- Status: {this.state.remsAdminResponse?.data?.status} -
-
- - - - {this.state.remsAdminResponse?.data?.case_number ? - this.setState({ spin: false })} - /> - : "" - } - -
- -
- {this.state.viewResponse ? -
+ {hasRemsCase ? +
+
+

REMS Admin Status

+ +
+
+ Case Number : {this.state.remsAdminResponse?.data?.case_number || "N/A"} +
+
+ Status: {this.state.remsAdminResponse?.data?.status} +
+
+ + + + {this.state.remsAdminResponse?.data?.case_number ? + this.setState({ spin: false })} + /> + : "" + } + +
+ +
+ {this.state.viewResponse ? +
+

+

ETASU

+ {this.unfurlJson(this.state.remsAdminResponse?.data, 0)} +
+ : + ""} + {this.state.viewBundle ?


-

ETASU

- {this.unfurlJson(this.state.remsAdminResponse?.data, 0)} -
- : - ""} - {this.state.viewBundle ?
-

-

Bundle

- {this.renderBundle(this.props.specialtyRxBundle)} -
: ""} - +

Bundle

+ {this.renderBundle(this.props.specialtyRxBundle)} +
: ""} + +
+ +
+

Pharmacy Status

+ +
+
+ ID : {this.state.response?.data?.doctorOrder?._id || "N/A"} +
+
+ Status: {this.state.response?.data?.doctorOrder?.dispenseStatus} +
+
+ + {this.state.response?.data?.doctorOrder?._id ? + this.setState({ spinPis: false })} + /> + : "" + } +
+ +
+ {this.state.viewPisBundle ?
+

+

Bundle

+ {this.renderBundle(this.props.specialtyRxBundle)} +
: ""} +
- -
-

Pharmacy Status

- -
-
- ID : {this.state.response?.data?.doctorOrder?._id || "N/A"} -
-
- Status: {this.state.response?.data?.doctorOrder?.dispenseStatus} -
-
- - {this.state.response?.data?.doctorOrder?._id ? - this.setState({ spinPis: false })} - /> - : "" - } -
- -
- {this.state.viewPisBundle ?
-

-

Bundle

- {this.renderBundle(this.props.specialtyRxBundle)} -
: ""} + : +
+
+

Prescriber Document Status

+ +
+
+ Status: Documents successfully submitted +
+
+ + + {this.state.remsAdminResponse?.data?.case_number ? + this.setState({ spin: false })} + /> + : "" + } +
+ +
+ {this.state.viewBundle ?
+

+

Bundle

+ {this.renderBundle(this.props.specialtyRxBundle)} +
: ""} + +
+ }
:
-
-

Prescriber Document Status

- -
-
- Status: Documents successfully submitted -
-
- - - {this.state.remsAdminResponse?.data?.case_number ? - this.setState({ spin: false })} - /> - : "" - } -
- -
- {this.state.viewBundle ?
-

-

Bundle

- {this.renderBundle(this.props.specialtyRxBundle)} -
: ""} - -
+ No response - form has already been submitted previously....
} +
) } From e3e1f1940f218663c6abbac385e77e9765575d13 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Thu, 9 Feb 2023 17:16:28 -0500 Subject: [PATCH 4/9] changed pims url --- src/components/RemsInterface/RemsInterface.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 53419799..21f796ba 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -110,9 +110,9 @@ export default class RemsInterface extends Component { let patient = this.getResource(this.props.specialtyRxBundle, patientReference); let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; - console.log(`http://localhost:5150/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); + console.log(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); - axios.get(`http://localhost:5150/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { + axios.get(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { this.setState({ response }); console.log(response); console.log(response.data); From 2d560e115ed8b57f2f9390960417f57f94893c28 Mon Sep 17 00:00:00 2001 From: Zach Robin Date: Thu, 9 Feb 2023 14:23:15 -0800 Subject: [PATCH 5/9] updated integration --- .../RemsInterface/RemsInterface.jsx | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 21f796ba..d36972b9 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -110,7 +110,7 @@ export default class RemsInterface extends Component { let patient = this.getResource(this.props.specialtyRxBundle, patientReference); let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; - console.log(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); + // console.log(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); axios.get(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { this.setState({ response }); @@ -157,7 +157,29 @@ export default class RemsInterface extends Component { refreshPisBundle() { this.setState({ spinPis: true }); - axios.get(`http://localhost:3010/api/doctorOrder/${this.state.response.data.doctorOrder._id}`).then((response) => { + + let params = this.getResource(this.props.specialtyRxBundle, this.props.specialtyRxBundle.entry[0].resource.focus.parameters.reference); + + // stakeholder and medication references + let prescriptionReference = ""; + let patientReference = ""; + for (let param of params.parameter) { + if (param.name === "prescription") { + prescriptionReference = param.reference; + } + else if (param.name === "source-patient") { + patientReference = param.reference; + } + } + + // obtain drug information from database + let presciption = this.getResource(this.props.specialtyRxBundle, prescriptionReference); + let prescriptionDisplay = presciption.medicationCodeableConcept.coding[0].display.split(" ")[0]; + let patient = this.getResource(this.props.specialtyRxBundle, patientReference); + let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; + + axios.get(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`) + .then((response) => { this.setState({ response: response }); }) } From f2ce72aae58a81ab674945e52151078026dd9e9a Mon Sep 17 00:00:00 2001 From: Zach Robin Date: Fri, 10 Feb 2023 13:29:47 -0800 Subject: [PATCH 6/9] updated fields for pims endpoint --- src/components/RemsInterface/RemsInterface.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index d36972b9..861e43a2 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -112,7 +112,7 @@ export default class RemsInterface extends Component { // console.log(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`); - axios.get(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { + axios.get(`http://localhost:5051/doctorOrders/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`, remsAdminResponse.data, this.getAxiosOptions()).then((response) => { this.setState({ response }); console.log(response); console.log(response.data); @@ -178,7 +178,7 @@ export default class RemsInterface extends Component { let patient = this.getResource(this.props.specialtyRxBundle, patientReference); let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; - axios.get(`http://localhost:5051/api/getRx/paitent/${patientName}/drug/${prescriptionDisplay}`) + axios.get(`http://localhost:5051/doctorOrders/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`) .then((response) => { this.setState({ response: response }); }) From fdbbac98ee66fc704424c1886b6e480e3b1db798 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 10 Feb 2023 16:48:18 -0500 Subject: [PATCH 7/9] integration changes --- src/components/RemsInterface/RemsInterface.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 861e43a2..723ce749 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -269,14 +269,14 @@ export default class RemsInterface extends Component {
- ID : {this.state.response?.data?.doctorOrder?._id || "N/A"} + ID : {this.state.response?.data?._id || "N/A"}
- Status: {this.state.response?.data?.doctorOrder?.dispenseStatus} + Status: {this.state.response?.data?.dispenseStatus}
- - {this.state.response?.data?.doctorOrder?._id ? + {/* */} + {this.state.response?.data?._id ? Date: Fri, 10 Feb 2023 17:18:07 -0500 Subject: [PATCH 8/9] fix the color header --- src/components/RemsInterface/RemsInterface.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 723ce749..401e769e 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -178,7 +178,7 @@ export default class RemsInterface extends Component { let patient = this.getResource(this.props.specialtyRxBundle, patientReference); let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; - axios.get(`http://localhost:5051/doctorOrders/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`) + axios.get(`http://localhost:5051/ix s/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`) .then((response) => { this.setState({ response: response }); }) @@ -201,7 +201,7 @@ export default class RemsInterface extends Component { } let colorPis = "#f7f7f7" - const statusPis = this.state.response?.data?.doctorOrder?.dispenseStatus; + const statusPis = this.state.response?.data?.dispenseStatus; if (statusPis === "Approved") { colorPis = "#5cb85c" From 0c83ca8d512a653b6a48f196c18c6942b0d1d190 Mon Sep 17 00:00:00 2001 From: Zach Robin Date: Mon, 13 Feb 2023 07:53:59 -0800 Subject: [PATCH 9/9] cat on keyboard --- src/components/RemsInterface/RemsInterface.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/RemsInterface/RemsInterface.jsx b/src/components/RemsInterface/RemsInterface.jsx index 401e769e..4f2129b0 100644 --- a/src/components/RemsInterface/RemsInterface.jsx +++ b/src/components/RemsInterface/RemsInterface.jsx @@ -178,7 +178,7 @@ export default class RemsInterface extends Component { let patient = this.getResource(this.props.specialtyRxBundle, patientReference); let patientName = patient.name[0].given[0] + ' ' + patient.name[0].family; - axios.get(`http://localhost:5051/ix s/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`) + axios.get(`http://localhost:5051/doctorOrders/api/getRx/patient/${patientName}/drug/${prescriptionDisplay}`) .then((response) => { this.setState({ response: response }); })