From 3a8fa17805f69e1689e6fce3bde9f7dc5016b140 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Mon, 22 Sep 2025 16:21:46 -0400 Subject: [PATCH 1/6] update jon snow --- REMS.code-workspace | 6 +++--- TestEnvironmentSetup.md | 4 ++-- TestEnvironmentUsage.md | 8 ++++---- Verify-REMS-Integration-Prototype-Works.md | 10 +++++----- tests/useCase1/uc1.spec.ts | 12 ++++++------ 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/REMS.code-workspace b/REMS.code-workspace index 4f35191..7bc3ba6 100644 --- a/REMS.code-workspace +++ b/REMS.code-workspace @@ -275,7 +275,7 @@ "janedoe", "jdbc", "jimpims", - "jonsnow", + "johnsnow", "jpaserver", "jsrsasign", "jwks", @@ -465,8 +465,8 @@ "webAuthnPolicyPasswordlessRpId", "webAuthnPolicyPasswordlessSignatureAlgorithms", "webAuthnPolicyPasswordlessUserVerificationRequirement", - "Westeros", - "Winterfell", + "MA", + "Boston", "Wiseman", "zoneinfo" ], diff --git a/TestEnvironmentSetup.md b/TestEnvironmentSetup.md index a1207ce..2a3fa6c 100644 --- a/TestEnvironmentSetup.md +++ b/TestEnvironmentSetup.md @@ -34,7 +34,7 @@ The notes here describe one method for launching the Request Generator and REMS ![](./test-environment-images/meld_import_resource.png) - Navigate to the folder that the test-ehr is downloaded to and choose the fhirResourcesToLoad folder - Individually select and upload each FHIR resource - - Note: you can skip the rems_smith* files if you only want the Jon Snow Patient + - Note: you can skip the rems_smith* files if you only want the John Snow Patient ![](./test-environment-images/meld_import_resource_done.png) 1. Register the REMS SMART on FHIR application - Navigate to the 'Apps' section of MELD @@ -83,7 +83,7 @@ The notes here describe one method for launching the Request Generator and REMS ![](./test-environment-images/meld_login.png) - Select 'Authorize' to give the app permission to access the FHIR data within your MELD Sandbox ![](./test-environment-images/request_generator_permissions.png) - - Continue using Request Generator as normal with patient Jon Snow + - Continue using Request Generator as normal with patient John Snow 1. Launch the SMART on FHIR App - From within the Request Generator, after a patient is selected, click on 'LAUNCH SMART ON FHIR APP' ![](./test-environment-images/request_generator.png) diff --git a/TestEnvironmentUsage.md b/TestEnvironmentUsage.md index 633df7a..2964317 100644 --- a/TestEnvironmentUsage.md +++ b/TestEnvironmentUsage.md @@ -18,19 +18,19 @@ After registering an app, we get a client id, which is the client id of the SMAR The SMART app must be made aware of the client id in order to launch correctly. In the case of the REMS SMART app, registration is handled at the time of launch if the app doesn’t already know which client id to use, which should make the process seamless. When launching an app, you are connecting it to Meld’s EHR system. -The data can be uploaded manually using the data manager as described in the [Test Environment Usage Document](TestEnvironmentSetup.md). Our default patient, Jon Snow, and all of his related resources should be loaded +The data can be uploaded manually using the data manager as described in the [Test Environment Usage Document](TestEnvironmentSetup.md). Our default patient, John Snow, and all of his related resources should be loaded ![](./test-environment-images/meld_patients.png) -For most purposes, Jon Snow will work just fine as our default patient. +For most purposes, John Snow will work just fine as our default patient. ![](./test-environment-images/meld_personas.png) -When launching any app, Meld will ask you to select a persona. Jon Snow’s resources all reference Rita Abrams, so ideally pick her as the practitioner when launching the REMS SMART app or request generator. +When launching any app, Meld will ask you to select a persona. John Snow’s resources all reference Rita Abrams, so ideally pick her as the practitioner when launching the REMS SMART app or request generator. ![](./test-environment-images/meld_patients_launch.png) -After selecting a practitioner, you can select a patient. Selecting Jon Snow will properly allow the REMS SMART on FHIR app to function. If you are launching the Request Generator, you can launch without a patient. +After selecting a practitioner, you can select a patient. Selecting John Snow will properly allow the REMS SMART on FHIR app to function. If you are launching the Request Generator, you can launch without a patient. ![](./test-environment-images/registration.png) diff --git a/Verify-REMS-Integration-Prototype-Works.md b/Verify-REMS-Integration-Prototype-Works.md index e688ce1..5f93bd3 100644 --- a/Verify-REMS-Integration-Prototype-Works.md +++ b/Verify-REMS-Integration-Prototype-Works.md @@ -3,9 +3,9 @@ 1. Access the EHR gateway at . Click Launch with the default FHIR Server Endpoint, Client ID, and Scope values. 2. You'll be redirected to . Authenticate with `alice` as the username and password. You'll then be redirected back to the EHR UI at to play the role of a prescriber. 3. Click **Select a Patient** in the middle of the page. -4. Locate **Jon Snow** in the list of patients and click the "Select a medication request" dropdown. +4. Locate **John Snow** in the list of patients and click the "Select a medication request" dropdown. 5. Locate **Turalio 200 MG Oral Capsule (Medication request: 2183126)**. -6. Click **Select** to assign Jon Snow as the medication request recipient. +6. Click **Select** to assign John Snow as the medication request recipient. 7. Click **Send Rx to Pharmacy** to dispatch the prescription. 8. Click **Sign Order**, which demonstrates the case where an EHR has CDS Hooks natively. 9. Await the arrival of two **CDS cards**. @@ -14,17 +14,17 @@ 12. Complete and submit the questionnaire via **Submit REMS Bundle**. - 12a. For demonstrating an asynchronous workflow, partially complete the questionnaire and click **Save to EHR**. - 12b. Visit the Patient Portal at as the patient. - - 12c. Login with **JonSnow** as the username and **jon** for the password. + - 12c. Login with **JohnSnow** as the username and **john** for the password. - 12d. Select the saved Questionnaire, complete it, and click **Save to EHR**. - 12e. Return to the EHR UI at , select the latest saved questionnaire from the second - dropdown next to Jon Snow's name, and continue as the prescriber. + dropdown next to John Snow's name, and continue as the prescriber. - 12f. Click **Launch SMART on FHIR App** and fill out the remainder of the questionnaire, including the prescriber signature, then click **Submit REMS Bundle**. 13. A new UI will appear with REMS Admin Status and Medication Status. 14. Visit the Pharmacy Information Management System at to play the role of a pharmacist. 15. Click **Doctor Orders** in the top navigation. 16. View the Doctor Order that was sent to the pharmacist from the prescriber and use the **Verify ETASU** button to get a status update of the REMS requirements submitted. -17. Return to the EHR UI at and play the role of the prescriber again. Select patient Jon Snow +17. Return to the EHR UI at and play the role of the prescriber again. Select patient John Snow from the patient select UI and click **Launch SMART on FHIR App**, which will open the SMART on FHIR App in its own view and demonstrate the case where an EHR does not have CDS Hooks implemented natively. 18. From the medications dropdown select **Turalio 200 MG Oral Capsule**, which should populate the screen with cards diff --git a/tests/useCase1/uc1.spec.ts b/tests/useCase1/uc1.spec.ts index abaca5e..8867a69 100644 --- a/tests/useCase1/uc1.spec.ts +++ b/tests/useCase1/uc1.spec.ts @@ -12,7 +12,7 @@ import { testUtilFillOutForm } from "../util/fillOutForm"; import { testUtilKeycloakLogin } from "../util/keycloakLogin"; /* Ideally these would be sourced from the testing environment, but constants are fine too. */ -const patientName = "Jon Snow"; +const patientName = "John Snow"; const medication = "Turalio"; // test.slow(); @@ -46,7 +46,7 @@ test("UC1: content appears in SMART on FHIR, fill out patient enroll form", asyn await searchField.fill(patientName); await page.getByRole('option', { name: patientName }).click(); - // 3. Find **Jon Snow** in the list of patients and click the first dropdown menu next to his name. + // 3. Find **John Snow** in the list of patients and click the first dropdown menu next to his name. await expect(page.getByText("ID").first()).toBeVisible(); await page.getByRole('button', { name: 'Request New Medication' }).click(); @@ -134,11 +134,11 @@ test("UC1: content appears in SMART on FHIR, fill out patient enroll form", asyn /* - 12a. Alternatively fill out only some of the questionnaire for an asynchronous workflow and hit **Save to EHR**. - 12b. Visit the Patient Portal at and lay the role of the patient. - - 12c. Login to the Patient Portal, use **JonSnow** for the username and **jon** for the password. + - 12c. Login to the Patient Portal, use **JohnSnow** for the username and **john** for the password. - 12d. Select the saved Questionnaire and fill out the rest of the questionnaire as well as the patient signature in the questionnaire and hit **Save to EHR** again. - 12e. Go back to the EHR UI at and select the latest saved questionnaire from the second - dropdown next to Jon Snow's name and continue in the role of the prescriber. + dropdown next to John Snow's name and continue in the role of the prescriber. - 12f. Click **Relaunch DTR** and fill out the remainder of the questionnaire, including the prescriber signature, then click **Submit REMS Bundle**. */ @@ -184,7 +184,7 @@ test("UC1: content appears in SMART on FHIR, fill out patient enroll form", asyn * label the table columns, so the alternative is something fragile to changes in the order of cells. */ await expect(pharmacyMedCard.getByText("Pending")).toBeVisible(); - /* 17. Go Back to the EHR UI at and play the role of the prescriber again, select patient Jon Snow + /* 17. Go Back to the EHR UI at and play the role of the prescriber again, select patient John Snow from the patient select UI.*/ // Back to CRD App on :3000 @@ -196,7 +196,7 @@ test("UC1: content appears in SMART on FHIR, fill out patient enroll form", asyn await searchField2.fill(patientName); await page.getByRole('option', { name: patientName }).click(); - // Find **Jon Snow** in the list of patients and click the first dropdown menu next to his name. + // Find **John Snow** in the list of patients and click the first dropdown menu next to his name. await expect(page.getByText("ID").first()).toBeVisible(); await page.getByRole('button', { name: 'Request New Medication' }).click(); From b53933efc058be3e270b372235969066e4088e5a Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Tue, 23 Sep 2025 14:57:27 -0400 Subject: [PATCH 2/6] update reademe with password change --- Verify-REMS-Integration-Prototype-Works.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Verify-REMS-Integration-Prototype-Works.md b/Verify-REMS-Integration-Prototype-Works.md index 5f93bd3..e1ce779 100644 --- a/Verify-REMS-Integration-Prototype-Works.md +++ b/Verify-REMS-Integration-Prototype-Works.md @@ -14,7 +14,7 @@ 12. Complete and submit the questionnaire via **Submit REMS Bundle**. - 12a. For demonstrating an asynchronous workflow, partially complete the questionnaire and click **Save to EHR**. - 12b. Visit the Patient Portal at as the patient. - - 12c. Login with **JohnSnow** as the username and **john** for the password. + - 12c. Login with **johnsnow** as the username and **johnsnow** for the password. - 12d. Select the saved Questionnaire, complete it, and click **Save to EHR**. - 12e. Return to the EHR UI at , select the latest saved questionnaire from the second dropdown next to John Snow's name, and continue as the prescriber. From e7e32b6712065dfc5f6a5944b3652254babdf45f Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Tue, 23 Sep 2025 14:59:05 -0400 Subject: [PATCH 3/6] update readme instructions --- Verify-REMS-Integration-Prototype-Works.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Verify-REMS-Integration-Prototype-Works.md b/Verify-REMS-Integration-Prototype-Works.md index e1ce779..b9d61c9 100644 --- a/Verify-REMS-Integration-Prototype-Works.md +++ b/Verify-REMS-Integration-Prototype-Works.md @@ -14,7 +14,7 @@ 12. Complete and submit the questionnaire via **Submit REMS Bundle**. - 12a. For demonstrating an asynchronous workflow, partially complete the questionnaire and click **Save to EHR**. - 12b. Visit the Patient Portal at as the patient. - - 12c. Login with **johnsnow** as the username and **johnsnow** for the password. + - 12c. Login with **johnsnow** as the username and **john** for the password. - 12d. Select the saved Questionnaire, complete it, and click **Save to EHR**. - 12e. Return to the EHR UI at , select the latest saved questionnaire from the second dropdown next to John Snow's name, and continue as the prescriber. From 8d3112763146a7d961bbb290ebeda46e753ec76f Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Fri, 14 Nov 2025 13:19:46 -0500 Subject: [PATCH 4/6] update env variable doc reference --- EnvironmentVariables.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/EnvironmentVariables.md b/EnvironmentVariables.md index ed2a85f..f82d286 100644 --- a/EnvironmentVariables.md +++ b/EnvironmentVariables.md @@ -46,6 +46,10 @@ - `VSAC_API_KEY` - `WHITELIST` - `SERVER_NAME` + - `VITE_REALM` + - `VITE_AUTH` + - `VITE_CLIENT` + - `VITE_SCOPE_ID` - mcode/rems-smart-on-fhir @@ -122,6 +126,12 @@ - `VITE_USER` - `VITE_USE_INTERMEDIARY` - `VITE_INTERMEDIARY` + - `HTTPS` + - `HTTPS_CERT_PATH` + - `HTTPS_KEY_PATH` + - `VITE_HOOK_TO_SEND` + - `VITE_URL_FILTER` + - `VITE_DISABLE_MEDICATION_STATUS` - mcode/pims - backend/env.json @@ -137,6 +147,7 @@ - `MONGO_USERNAME` - `USE_HTTPS` - `USE_INTERMEDIARY` + - `REMS_ADMIN_NCPDP` - frontend/.env - `PORT` - `REACT_APP_PIMS_BACKEND_PORT` @@ -162,6 +173,12 @@ - `VITE_CLIENT` - `REMS_ADMIN_HOOK_PATH` - `REMS_ADMIN_FHIR_PATH` + - `SMART_ENDPOINT` + - `FRONTEND_VITE_AUTH` + - `VITE_SCOPE_ID` + - `DIRECTORY_API_PATH` + - `DIRECTORY_SPL_PATH` + - `NCPDP_SCRIPT_FORWARD_URL` ## Repositories that use environment variables @@ -193,6 +210,11 @@ - `HTTPS_CERT_PATH` - `HTTPS_KEY_PATH` - `USE_HTTPS` + - frontend/src/views/Login.tsx + - `VITE_REALM` + - `VITE_AUTH` + - `VITE_CLIENT` + - `VITE_SCOPE_ID` - mcode/test-ehr @@ -231,6 +253,9 @@ - `VITE_CLIENT_SCOPES` - `VITE_SMART_LAUNCH_URL` - `VITE_URL_FILTER` + - `VITE_HOOK_TO_SEND` + - `VITE_URL_FILTER` + - `VITE_DISABLE_MEDICATION_STATUS` - src/util/auth.js - `VITE_AUTH` - `VITE_CLIENT` @@ -274,6 +299,7 @@ - frontend/src/App.tsx - `REACT_APP_PIMS_BACKEND_PORT` - `REACT_APP_PIMS_BACKEND_URL` + - `REMS_ADMIN_NCPDP` - mcode/rems-smart-on-fhir - src/views/Patient/MedReqDropDown/MedReqDropDown.tsx @@ -311,6 +337,12 @@ - `WHITELIST` - `REMS_ADMIN_HOOK_PATH` - `REMS_ADMIN_FHIR_PATH` + - `SMART_ENDPOINT` + - `FRONTEND_VITE_AUTH` + - `VITE_SCOPE_ID` + - `DIRECTORY_API_PATH` + - `DIRECTORY_SPL_PATH` + - `NCPDP_SCRIPT_FORWARD_URL` - src/server.ts - `HTTPS_CERT_PATH` - `HTTPS_KEY_PATH` From 098c0c228e306f01d333083b52132b7c545f705d Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Tue, 13 Jan 2026 09:47:13 -0500 Subject: [PATCH 5/6] docker config for ncpdp in rems admin --- docker-compose-dev.yml | 4 ++-- docker-compose-local-build.yml | 2 ++ docker-compose.yml | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index e220f3f..56d9d4a 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -120,6 +120,7 @@ services: VSAC_API_KEY: ${VSAC_API_KEY} MONGO_URL: mongodb://rems-user:pass@pims_remsadmin_mongo:27017 SERVER_NAME: 'CodeX REMS Administrator Prototype #1' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' volumes: - rems_dev_rems-admin-sync:/rems-admin:nocopy # nocopy is important - rems_dev_rems-admin-nodeModules:/rems-admin/node_modules @@ -149,6 +150,7 @@ services: FRONTEND_PORT: 9095 AUTH_SERVER_URI: 'http://localhost:8095' RESOURCE_SERVER: 'http://localhost:8095/' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' volumes: - rems_dev_rems-admin2-sync:/rems-admin2:nocopy # nocopy is important - rems_dev_rems-admin2-nodeModules:/rems-admin2/node_modules @@ -157,7 +159,6 @@ services: pims_remsadmin_mongo: condition: service_healthy - pims: build: context: ../pims @@ -181,7 +182,6 @@ services: pims_remsadmin_mongo: condition: service_healthy - rems-intermediary: build: context: '../rems-intermediary' diff --git a/docker-compose-local-build.yml b/docker-compose-local-build.yml index 55bd330..ffe5e69 100644 --- a/docker-compose-local-build.yml +++ b/docker-compose-local-build.yml @@ -97,6 +97,7 @@ services: VSAC_API_KEY: ${VSAC_API_KEY} MONGO_URL: mongodb://rems-user:pass@pims_remsadmin_mongo:27017 SERVER_NAME: 'CodeX REMS Administrator Prototype #1' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' depends_on: pims_remsadmin_mongo: condition: service_healthy @@ -121,6 +122,7 @@ services: FRONTEND_PORT: 9095 AUTH_SERVER_URI: 'http://localhost:8095' RESOURCE_SERVER: 'http://localhost:8095/' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' depends_on: pims_remsadmin_mongo: condition: service_healthy diff --git a/docker-compose.yml b/docker-compose.yml index 9a317a3..b38e394 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -67,6 +67,7 @@ services: VSAC_API_KEY: ${VSAC_API_KEY} MONGO_URL: mongodb://rems-user:pass@pims_remsadmin_mongo:27017 SERVER_NAME: 'CodeX REMS Administrator Prototype #1' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' depends_on: pims_remsadmin_mongo: condition: service_healthy @@ -86,6 +87,7 @@ services: FRONTEND_PORT: 9095 AUTH_SERVER_URI: 'http://localhost:8095' RESOURCE_SERVER: 'http://localhost:8095/' + DOCKERED_EHR_CONTAINER_NAME: 'test-ehr' depends_on: pims_remsadmin_mongo: condition: service_healthy From 117c54faf0a007dacebcbb188d9b232565179587 Mon Sep 17 00:00:00 2001 From: Sahil Malhotra Date: Wed, 14 Jan 2026 08:48:22 -0500 Subject: [PATCH 6/6] ncpdp config --- docker-compose-dev.yml | 2 +- docker-compose-local-build.yml | 2 +- docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 56d9d4a..9e04c3b 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -170,7 +170,7 @@ services: environment: REMS_ADMIN_FHIR_URL: http://rems-administrator:8090/4_0_0 MONGO_URL: mongodb://pims_remsadmin_mongo:27017/pims - EHR_RXFILL_URL: http://host.docker.internal:8080/test-ehr/ncpdp/script + EHR_RXFILL_URL: http://test-ehr:8080/test-ehr/ncpdp/script INTERMEDIARY_FHIR_URL: http://rems-intermediary:3003/4_0_0 REMS_ADMIN_NCPDP: http://rems-administrator:8090/ncpdp/script volumes: diff --git a/docker-compose-local-build.yml b/docker-compose-local-build.yml index ffe5e69..0b45397 100644 --- a/docker-compose-local-build.yml +++ b/docker-compose-local-build.yml @@ -137,7 +137,7 @@ services: environment: REMS_ADMIN_FHIR_URL: http://rems-administrator:8090/4_0_0 MONGO_URL: mongodb://pims_remsadmin_mongo:27017/pims - EHR_RXFILL_URL: http://host.docker.internal:8080/test-ehr/ncpdp/script + EHR_RXFILL_URL: http://test-ehr:8080/test-ehr/ncpdp/script INTERMEDIARY_FHIR_URL: http://rems-intermediary:3003/4_0_0 REMS_ADMIN_NCPDP: http://rems-administrator:8090/ncpdp/script depends_on: diff --git a/docker-compose.yml b/docker-compose.yml index b38e394..ec9d79d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -119,7 +119,7 @@ services: environment: REMS_ADMIN_FHIR_URL: http://rems-administrator:8090/4_0_0 MONGO_URL: mongodb://pims_remsadmin_mongo:27017/pims - EHR_RXFILL_URL: http://host.docker.internal:8080/test-ehr/ncpdp/script + EHR_RXFILL_URL: http://test-ehr:8080/test-ehr/ncpdp/script INTERMEDIARY_FHIR_URL: http://rems-intermediary:3003/4_0_0 ports: - "5050:5050"