diff --git a/.docker-sync/daemon.log b/.docker-sync/daemon.log
deleted file mode 100644
index 88972f6..0000000
--- a/.docker-sync/daemon.log
+++ /dev/null
@@ -1,4 +0,0 @@
-objc[62277]: +[NSPlaceholderMutableString initialize] may have been in progress in another thread when fork() was called.
-objc[62277]: +[NSPlaceholderMutableString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
-objc[71443]: +[NSPlaceholderMutableString initialize] may have been in progress in another thread when fork() was called.
-objc[71443]: +[NSPlaceholderMutableString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
diff --git a/.docker-sync/daemon.pid b/.docker-sync/daemon.pid
deleted file mode 100644
index 85b8bfd..0000000
--- a/.docker-sync/daemon.pid
+++ /dev/null
@@ -1 +0,0 @@
-71443
diff --git a/.env b/.env
index 5976abe..fb5aaa0 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,2 @@
-VSAC_API_KEY=f6486e93-5f75-481c-a5c1-b6395d7a217d
-COMPOSE_PROJECT_NAME=rems_demo
+VSAC_API_KEY=changeMe
+COMPOSE_PROJECT_NAME=rems_dev
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..94b4532
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,20 @@
+## Describe your changes
+
+Please include a summary of the changes and the related issue/task. Please also include relevant motivation and context. List any dependencies that are required for this change, including links to other pull requests/branches in other repositories if applicable.
+
+## Issue ticket number and Jira link
+
+Please include the Jira Ticket Number and Link for this issue/task.
+
+## Checklist before requesting a review
+- [ ] I have performed a self-review of my code
+- [ ] Ensure the target / base branch for any feature PR is set to `dev` not main (the only exception to this is releases from `dev` and hotfix branches)
+
+## Checklist for conducting a review
+- [ ] Review the code changes and make sure they all make sense and are necessary. 
+- [ ] Pull the PR branch locally and test by running through workflow and making sure everything works as it is supposed to. 
+
+## Workflow 
+
+Owner of the Pull Request will be responsible for merge after all requirements are met, including approval from at least one reviewer. Additional changes made after a review will dismiss any approvals and require re-review of the additional updates. Auto merging can be enabled below if additional changes are likely not to be needed. The bot will auto assign reviewers to your Pull Request for you.
+
diff --git a/.gitignore b/.gitignore
index 48ddec5..e1ddc5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-.env
 .env.local
 /playwright-report/
 /playwright/.cache/
 /test-results/
 node_modules/
+.docker-sync/
diff --git a/DeveloperSetupGuide.md b/DeveloperSetupGuide.md
index 9edc682..9a00193 100644
--- a/DeveloperSetupGuide.md
+++ b/DeveloperSetupGuide.md
@@ -1,30 +1,38 @@
-# Docker Developer Setup Guide 
->Follow this guide if you would  like to use [Docker](https://docs.docker.com/get-started/overview/) for running REMS Integration Prototype for Local Development.
+# Docker Developer Setup Guide
 
+Follow this guide if you would like to use [Docker](https://docs.docker.com/get-started/overview/) for running REMS (Risk Evaluation and Mitigation Strategies) Integration Prototype for Local Development.
 
 ## Table of Contents
 
+- [Docker Developer Setup Guide](#docker-developer-setup-guide)
+  - [Table of Contents](#table-of-contents)
   - [Purpose of this guide](#purpose-of-this-guide)
     - [Expected Functionality](#expected-functionality)
   - [Prerequisites](#prerequisites)
-    - [Setting Environment Variables & System Path](#setting-environment-variables-and-system-path)
+    - [Minimum system requirements:](#minimum-system-requirements)
+    - [Obtain Value Set Authority Center (VSAC) API key](#obtain-value-set-authority-center-vsac-api-key)
+    - [Setting Environment Variables and System Path](#setting-environment-variables-and-system-path)
   - [Install core tools](#install-core-tools)
+    - [Install Docker Desktop](#install-docker-desktop)
+    - [Install Visual Studio Code and Extensions](#install-visual-studio-code-and-extensions)
+    - [Install Ruby](#install-ruby)
+    - [Install docker-sync](#install-docker-sync)
   - [Clone REMS repositories](#clone-rems-repositories)
-  - [VS Code & VSAC](#open-rems-as-vs-code-workspace)
+  - [Open REMS as VS Code workspace](#open-rems-as-vs-code-workspace)
     - [Pre-configured settings in the VS Code workspace](#pre-configured-settings-in-the-vs-code-workspace)
-    - [Add VSAC credentials](#add-vsac-credentials-to-your-development-environment)
-  - [Run the Run REMS Integration Prototype](#run-rems-integration-prototype)
+    - [Add VSAC credentials to your development environment](#add-vsac-credentials-to-your-development-environment)
+  - [Run REMS Integration Prototype](#run-rems-integration-prototype)
     - [Start application using docker-sync](#start-application-using-docker-sync)
     - [Debugging docker-sync application](#debugging-docker-sync-application)
-    - [Stop docker-sync & Cleaning](#stop-docker-sync-application-and-remove-all-containersvolumesimages)
-    - [Rebuilding Images & Containers](#rebuilding-images-and-containers)
+    - [Stop docker-sync application and remove all containers/volumes/images](#stop-docker-sync-application-and-remove-all-containersvolumesimages)
+    - [Rebuilding Images and Containers](#rebuilding-images-and-containers)
     - [Useful docker-sync commands](#useful-docker-sync-commands)
-  - [Verify the REMS prototype is working](#verify-the-rems-integration-prototype-is-working)
+- [Verify the REMS Integration Prototype is working](#verify-the-rems-integration-prototype-is-working)
   - [Running with SSL](#running-with-ssl)
 
 ## Purpose of this guide
 
-This document details the installation process for the dockerized version of the **REMS Integration Prototype**
+This document details the installation process for the Dockerized version of the **REMS Integration Prototype**
 workflow for Local Development. Be aware that each component has its own README where you will find
 more detailed documentation. This document **is not designed to replace those individual READMEs**.
 
@@ -32,26 +40,23 @@ This document is designed to take you through the entire set up process for the
 
 This guide will take you through the development environment setup for each of the following REMS components:
 
-
-1. [test-ehr](https://github.com/HL7-DaVinci/test-ehr)
+1. [test-ehr](https://github.com/mcode/test-ehr)
 2. [request-generator](https://github.com/mcode/request-generator)
 3. [rems-admin](https://github.com/mcode/rems-admin.git)
-4. [pims (Pharmacy Information Managment System)](https://github.com/mcode/pharmacy-information-system)
-5. [rems-smart-on-fhir](https://github.com/mcode/rems-smart-on-fhir)
-6. [Keycloak](https://www.keycloak.org/)
+4. [rems-setup](https://github.com/mcode/rems-setup.git)
+5. [pims (Pharmacy Information Management System)](https://github.com/mcode/pims)
+6. [rems-smart-on-fhir](https://github.com/mcode/rems-smart-on-fhir)
 
 ### Expected Functionality
 
-1. File Synchronization between local host system and docker container
+1. File Synchronization between local host system and Docker containers
 2. Automatic Server Reloading whenever source file is changed
 3. Automatic Dependency Installation whenever package.json, package-lock.json, or build.gradle are changed
 4. Automatic Data Loader in test-ehr whenever the fhirResourcesToLoad directory is changed
 
-
-
 ## Prerequisites
 
-Your computer must have these minimum requirements:
+### Minimum system requirements:
 
 - x86_64 (64-bit) or equivalent processor
   - Follow these instructions to verify your machine's compliance:
@@ -62,60 +67,71 @@ Your computer must have these minimum requirements:
 - [Chrome browser](https://www.google.com/chrome/)
 - [Git installed](https://www.atlassian.com/git/tutorials/install-git)
 
-Obtain [Value Set Authority Center (VSAC)](https://vsac.nlm.nih.gov/) API key
-
-1. [Click here](https://www.nlm.nih.gov/research/umls/index.html) to read about UMLS
-2. Click 'request a license' under 'Get Started'
-3. If you already have a key you can click 'Visit Your Profile' in the right hand side-bar. The API key will be listed
-   under your username.
-4. If you do not have a key, click 'Generate an API Key'
-5. Sign in using one of the providers (Login.gov recommended)
-6. Agree to terms of service
-7. Fill out request form for VSAC API Key - you'll need to provide some basic information for the NIH to get your
-   account approved
-8. Generating the key is an automated process, you should be approved via e-mail fairly quickly. If not, use the contact
-   information in the first link to reach out to the office (this is not managed by our team / system).
-9. Once approved, loop back to step 2
+### Obtain [Value Set Authority Center (VSAC)](https://vsac.nlm.nih.gov/) API key
+
+1. [Click here](https://www.nlm.nih.gov/research/umls/index.html) to read about UMLS.
+2. Click 'Request a license' under 'Get Started'.
+3. If you already have a key you can click 'Visit Your Profile' under 'UTS Profile' in the right hand side-bar. The API key will be listed under your username.
+4. If you do not have a key, click 'Generate an API Key'.
+5. Sign in using one of the providers (Login.gov recommended).
+6. Agree to terms of service.
+7. Fill out request form for VSAC API Key - you'll need to provide some basic information for the NIH to get your account approved.
+8. Generating the key is an automated process, you should be approved via e-mail fairly quickly. If not, use the contact information in the first link to reach out to the office (this is not managed by our team / system).
+9. Once approved, loop back to steps 1-3.
 
 ### Setting Environment Variables and System Path
 
-How you set environment and path variables may vary depending on your operating system and terminal used. For instance,
-for zsh on MacOS you typically need to modify .zshrc instead of .bash_profile. To figure out how to set environment
-variables for your system, consult the guides below or google
+The following instructions are for Mac and Linux.
+
+You can see a list of your pre-existing environment variables on your machine by running `env` in your Terminal. To add to `env`:
+
+1. `cd ~/`
+2. Open your `.zshrc` (Mac) or `.bash_profile` (Linux) and add the following line at the very bottom:
+
+   ```bash
+   export VSAC_API_KEY=vsac_api_key
+   ```
+
+3. Save `.bash_profile` and complete the update to `env`:
+
+   ```bash
+   source .bash_profile
+   ```
+
+How you set environment and path variables may vary depending on your operating system and terminal used. For instance, for zsh on MacOS you typically need to modify .zshrc instead of .bash_profile. To figure out how to set environment variables for your system, consult the guides below or google
 `how to permanently set environment/path variables on [insert operating system] [insert terminal type]`.
 
-    For more information on how to set environment variables consult these following guides:
+For more information on how to set environment variables consult these following guides:
 
-    - https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/
-    - https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html
-    - https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables
+- https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/
+- https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html
+- https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables
 
 ## Install core tools
 
-#### Install Docker Desktop
+### Install Docker Desktop
 
 1. Download the **stable** version of **[Docker Desktop](https://www.docker.com/products/docker-desktop)** and follow
    the steps in the installer. Make sure you install version 18.03 or later.
 2. Once the installation is complete, verify that **Docker Desktop is running.**
 3. Configure Docker to have access to enough resources. To do this, open Docker Desktop and select Settings > Resources.
 
-> **Note: The Defaults for CPU/Memory at 2GB are too low to run the entire REMS workflow.**
+> **Note: The defaults for CPU/Memory at 2GB are too low to run the entire REMS workflow.**
 >
 > If not enough resources are provided, you may notice containers unexpectedly crashing and stopping. Exact requirements
 > for these resource values will depend on your machine. That said, as a baseline starting point, the system runs
 > relatively smoothly at 15GB memory and 6 CPU Processors on MITRE issued Mac Devices.
 
-#### Install Visual Studio Code and Extensions
+### Install Visual Studio Code and Extensions
 
-The recommended IDE for this set up is Visual Studio Code
+We recommend Visual Studio Code for local development.
 
 1. Install Visual Studio Code - <https://code.visualstudio.com>
 2. Install Extensions - The workspace should automatically recommend extensions to install when opening the workspace
 
-#### Install Ruby
+### Install Ruby
 
-Note: The default ruby that comes with Mac may not install the right package version for docker-sync. It is recommended
-to install ruby with a package manager, this guide uses [rbenv](https://github.com/rbenv/rbenv).
+Note: The default ruby that comes with Mac may not install the right package version for docker-sync. We recommend installing ruby with a package manager, such as [rbenv](https://github.com/rbenv/rbenv).
 
 1. Install rbenv
 
@@ -155,7 +171,7 @@ to install ruby with a package manager, this guide uses [rbenv](https://github.c
    /usr/bin/ruby # Incorrect, using system default ruby. Path not set correctly, reference step 2
    ```
 
-#### Install Docker-sync
+### Install docker-sync
 
 1. Download and Install docker-sync using the following command:
 
@@ -175,7 +191,7 @@ to install ruby with a package manager, this guide uses [rbenv](https://github.c
    0.1.1  # Incorrect, make sure you have ruby installed and are not using the default system ruby
    ```
 
-   Note: The versioning is important, system default ruby sometimes installs version 0.1.1 if -v tag is not set. The
+   Note: The versioning is important, as the system default Ruby sometimes installs version 0.1.1 if the -v tag is not set. The
    0.1.1 release will not work for the rest of this guide.
 
 ## Clone REMS repositories
@@ -185,7 +201,7 @@ to install ruby with a package manager, this guide uses [rbenv](https://github.c
    down the line.
 
    ```bash
-   mkdir <REMSroot>
+   mkdir <rems-root>
    ```
 
    `<rems-root>` will be the base directory into which all the other components will be installed. For example, test-ehr will
@@ -205,7 +221,7 @@ to install ruby with a package manager, this guide uses [rbenv](https://github.c
    git clone https://github.com/mcode/pims.git pims
    git clone https://github.com/mcode/rems-smart-on-fhir.git rems-smart-on-fhir
    git clone https://github.com/mcode/rems-setup.git rems-setup
-   
+
    # Update the Submodules
    cd rems-admin
    git submodule update --init
@@ -218,7 +234,7 @@ to install ruby with a package manager, this guide uses [rbenv](https://github.c
 
 ## Open REMS as VS Code workspace
 
-The REMS repository contains the **REMS.code-workspace** file. This will open the above project structure as a
+This repository contains the **REMS.code-workspace** file. This will open the above project structure as a
 multi-root VS Code workspace.
 
 To open this workspace, select `File > Open Workspace from File...` and select
@@ -226,9 +242,6 @@ To open this workspace, select `File > Open Workspace from File...` and select
 
 ### Pre-configured settings in the VS Code workspace
 
-In this workspace configuration, the CDS-Library embedded within CRD is opened as a separate root for an easier
-development experience.
-
 The [**Debugger Tab**](https://code.visualstudio.com/docs/editor/debugging) has various debugging configurations and can
 be used to easily debug any errors that come up during development. Simply start one of the debuggers and set a
 breakpoint anywhere in the code base.
@@ -256,10 +269,10 @@ following--you will need to change the values for user name, password, etc. base
 At this point, you should have credentials to access VSAC. If not, please refer to [Prerequisites](#prerequisites) for
 how to create these credentials and return here after you have confirmed you can access VSAC.
 
-Create a local copy of the file `REMS/.env` and rename that copy to `REMS/.env.local` to reflect your credentials:
+Create a local copy of the file `rems-setup/.env` and rename that copy to `rems-setup/.env.local` to reflect your credentials:
 
 ```bash
-# In file: REMS/.env.local
+# In file: rems-setup/.env.local
 
 VSAC_API_KEY = <the key you got from the VSAC web site>
 COMPOSE_PROJECT_NAME = <name of Docker Compose project>
@@ -299,7 +312,7 @@ rems_dev_test-ehr               | > Task :loadData
 rems_dev_test-ehr               | BUILD SUCCESSFUL
 ```
 
-> **Note for Apple Mac developers:** Additional `docker-compose` environment variables need to be set. You can prefix
+> **Note for Apple Mac developers:** Additional `docker compose` environment variables need to be set. You can prefix
 > each command with these, or set them in your environment (as above):
 >
 > ```bashrc
@@ -308,7 +321,7 @@ rems_dev_test-ehr               | BUILD SUCCESSFUL
 > DOCKER_DEFAULT_PLATFORM=linux/arm64
 > ```
 >
-> **NOTE 2**: On M1 macs, docker-sync (as of 16 Aug 2023) pulls the wrong unison image. You will need to edit the docker-sync gem file directly (grep for "AMD64" and replace it with "ARM64"). Hopefully this gets resolved soon.
+> **NOTE 2**: On M1 Macs, docker-sync (as of 16 Aug 2023) pulls the wrong unison image. You will need to edit the docker-sync gem file directly (grep for "AMD64" and replace it with "ARM64"). Hopefully this gets resolved soon.
 
 ### Debugging docker-sync application
 
@@ -320,7 +333,7 @@ To debug the application hosted by docker-sync:
 1. Select the Debugger Tab on the left side panel of VS Code
 2. From the drop down menu next to Run and Debug select **Debug All REMS Applications (Docker) (workspace)**.
 
-   This is a compound debugger that combines all the other docker debuggers for all servers and applications in this
+   This is a compound debugger that combines all the other Docker debuggers for all servers and applications in this
    workspace.
 
 3. When finished debugging, simply hit the disconnect button to close out all debug sessions
@@ -335,7 +348,7 @@ To debug the application hosted by docker-sync:
 ### Stop docker-sync application and remove all containers/volumes/images
 
 ```bash
-docker-sync-stack clean # This is the equivalent of running docker-sync clean followed by docker-compose down
+docker-sync-stack clean # This is the equivalent of running docker-sync clean followed by docker compose down
 
 docker image prune -a # Remove unused images
 
@@ -345,15 +358,15 @@ docker volume prune # Remove unused volumes
 ### Rebuilding Images and Containers
 
 ```bash
-docker-compose -f docker-compose-dev.yml up --build --force-recreate  [<service_name1> <service_name2> ...]
+docker compose -f docker-compose-dev.yml up --build --force-recreate  [<service_name1> <service_name2> ...]
 ```
 
 or, if you need to rebuild first:
 
 ```bash
-docker-compose -f docker-compose-dev.yml build --no-cache --pull [<service_name1> <service_name2> ...]
+docker compose -f docker-compose-dev.yml build --no-cache --pull [<service_name1> <service_name2> ...]
 
-docker-compose -f docker-compose-dev.yml up --force-recreate  [<service_name1> <service_name2> ...]
+docker compose -f docker-compose-dev.yml up --force-recreate  [<service_name1> <service_name2> ...]
 ```
 
 After rebuilding images and containers, start docker-sync normally.
@@ -369,57 +382,9 @@ docker-sync-stack start # If this command fails to run, running a second time us
 
 Reference: <https://docker-sync.readthedocs.io/en/latest/getting-started/commands.html>
 
-## Verify the REMS Integration Prototype is working
-
-### The fun part: Generate a test request
-
-1. Go to the EHR UI at <http://localhost:3000> and play the role of a prescriber.
-2. Click **Patient Select** button in upper left.
-3. Find **Jon Snow** in the list of patients and click the first dropdown menu next to his name.
-4. Select **2183126 (MedicationRequest) Turalio 200 MG Oral Capsule** in the dropdown menu.
-5. Click anywhere in the row to select Jon Snow.
-6. Click **Send Rx to PIMS** at the bottom of the page to send a prescription to the Pharmacist.
-7. Click **Submit to REMS-Admin** at the bottom of the page, which demonstrates the case where an EHR has CDS Hooks
-   implemented natively.
-8. After several seconds you should receive a response in the form of two **CDS cards**:
-9. Select **Patient Enrollment Form** on the returned CDS card with summary **Drug Has REMS: Documentation Required**.
-10. If you are asked for login credentials, use **alice** for username and **alice** for password.
-11. A webpage should open in a new tab, and after a few seconds, a questionnaire should appear.
-12. Fill out the questionnaire and hit **Submit REMS Bundle**.
-    - 12a. Alternatively fill out only some of the questionnaire for an asynchronous workflow and hit **Save to EHR**.
-    - 12b. Visit the Patient Portal at <http://localhost:3000/patient-portal> and lay the role of the patient.
-    - 12c. Login to the Patient Portal, use **JonSnow** for the username and **jon** 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 <http://localhost:3000> and select the latest saved questionnaire from the second
-      dropdown next to Jon 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**.
-13. A new UI will appear with REMS Admin Status and Pharmacy Status.
-14. Go to <http://localhost:5050> and play the role of a pharmacist.
-15. Click **Doctor Orders** in the top hand navigation menu on the screen
-16. See 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. Go Back to the EHR UI at <http://localhost:3000> and play the role of the prescriber again, select patient Jon 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
-    similar to those seen in step 7.
-19. Use the **Check ETASU** and **Check Pharmacy** buttons to get status updates on the prescription and REMS request
-20. Use the links for the **Prescriber Enrollment Form** and **Prescriber Knowledge Assessment** Questionnaires and
-    repeat steps 9-12 to submit those ETASU requirements and see how the ETASU status changes in both the Pharmacist UI
-    and Prescriber UI.
-21. Once all the REMS ETASU are met, go back to <http://localhost:5050> and play the role of the Pharmacist, using the
-    **Verify Order** button to move the prescription over to the **Verified Orders** Tab. Click on the **Verified
-    Orders** Tab and from there use the **Mark as Picked Up** button to move the prescription over to the **Picked Up
-    Orders** Tab.
-22. Go back to the SMART on FHIR App launched in step 17 and play the role of the prescriber using the **Check
-    Pharmacy** button to see the status change of the prescription.
-23. Lastly, repeat step 20 to open the **Patient Status Update Form** in the returned cards to submit follow
-    up/monitoring requests on an as need basis. These forms can be submitted as many times as need be in the prototype
-    and will show up as separate ETASU elements each time.
-
-Congratulations! the REMS prototype is fully installed and ready for you to use!
+# Verify the REMS Integration Prototype is working
+
+See [this guide](Verify-REMS-Integration-Prototype-Works.md) to generate a test request.
 
 ## Running with SSL
 
diff --git a/EndToEndSetupGuide.md b/EndToEndSetupGuide.md
index a2091bd..885965c 100644
--- a/EndToEndSetupGuide.md
+++ b/EndToEndSetupGuide.md
@@ -1,26 +1,44 @@
 # Local Developer Setup Guide (No Docker)
->Follow this guide if you would like to start each application locally **without** using Docker. Each must be launched in a sperate terminal window.
+
+Follow this guide if you would like to start each application locally **without** using Docker. Each must be launched in a separate terminal window.
+
+## Table of Contents
+
+- [Local Developer Setup Guide (No Docker)](#local-developer-setup-guide-no-docker)
+  - [Table of Contents](#table-of-contents)
+  - [Prerequisites](#prerequisites)
+  - [Clone each repository](#clone-each-repository)
+  - [Install nvm (Node Version Manager)](#install-nvm-node-version-manager)
+  - [Utilities](#utilities)
+    - [keycloak](#keycloak)
+    - [mongodb](#mongodb)
+  - [Test Applications](#test-applications)
+    - [test-ehr](#test-ehr)
+    - [request-generator](#request-generator)
+  - [Core Applications](#core-applications)
+    - [rems-admin](#rems-admin)
+    - [pims](#pims)
+    - [rems-smart-on-fhir](#rems-smart-on-fhir)
+- [Verify the REMS Integration Prototype is working](#verify-the-rems-integration-prototype-is-working)
 
 ## Prerequisites
+
 - Java, gradle
-	- test-ehr
-- node
-	- rems-admin, pims, rems-smart-on-fhir, request-generator
+  - test-ehr
+- Node
+  - rems-admin, pims, rems-smart-on-fhir, request-generator
+- [nvm (Node Version Manager)](https://github.com/nvm-sh/nvm) (optional)
 - git
-	- On Windows 'Git Bash' was used for the command line interface
+  - On Windows 'Git Bash' was used for the command line interface
 
-## Installation Order
-1. Clone each Repo
-2. Start Utility Applications
-3. Start Test and Core Applications
+## Clone each repository
 
-## Clone Repos
 1. Create a root directory for the REMS development work (we will call this `<rems-root>` for the remainder of this setup
    guide). While this step is not required, having a common root for the REMS Integration Prototype components will make things a lot easier
    down the line.
 
    ```bash
-   mkdir <REMSroot>
+   mkdir <rems-root>
    ```
 
    `<rems-root>` will be the base directory into which all the other components will be installed. For example, test-ehr will
@@ -29,187 +47,208 @@
    Note: If you are using a different project structure from the above description, you will need to change the
    corresponding repo paths in docker-compose-dev.yml, docker-sync.yml, and docker-compose.yml
 
-2. Now clone the REMS Integration Prototype component repositories from Github:
+2. Now clone the REMS Integration Prototype component repositories from GitHub:
 
    ```bash
    cd <rems-root>
 
-   git clone https://github.com/mcode/test-ehr.git test-ehr
-   git clone https://github.com/mcode/request-generator.git request-generator
-   git clone https://github.com/mcode/rems-admin.git rems-admin
-   git clone https://github.com/mcode/pims.git pims
-   git clone https://github.com/mcode/rems-smart-on-fhir.git rems-smart-on-fhir
-   git clone https://github.com/mcode/rems-setup.git rems-setup
+   git clone https://github.com/mcode/test-ehr.git
+   git clone https://github.com/mcode/request-generator.git
+   git clone https://github.com/mcode/rems-admin.git
+   git clone https://github.com/mcode/pims.git
+   git clone https://github.com/mcode/rems-smart-on-fhir.git
+   git clone https://github.com/mcode/rems-setup.git
+   ```
 
-   # Update the Submodules
-   cd rems-admin
-   git submodule update --init
+## Install nvm (Node Version Manager)
 
-   cd ..
+- Using nvm makes switching Node versions easier. Install [nvm](https://github.com/nvm-sh/nvm) since request-generator fails to run without node 14 compared to the other repos.
 
-   cd rems-smart-on-fhir
-   git submodule update --init
-   ```
+  ```bash
+  nvm install 20 # example of a default version
+  nvm install 14 # another option
+  ```
 
 ## Utilities
 
 ### keycloak
+
 - Setup and run KeyCloak
-	- Download KeyCloak 22.0.1 from [www.github.com/keycloak/keycloak/releases/tag/22.0.1](https://github.com/keycloak/keycloak/releases/tag/22.0.1)
-		```bash 
-		# Extract the downloaded file
-		tar -xvf keycloak-22.0.1.tar.gz # Mac & Linux 
-		unzip <package.zip # Windows
 
-		# Navigate into directory
-		cd keycloak-22.0.1
-		
-		# Start Keycloak
-		KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin ./bin/kc.sh start-dev --http-port=8180 --import-realm --hostname=localhost
+  - Download KeyCloak 22.0.1 from [www.github.com/keycloak/keycloak/releases/tag/22.0.1](https://github.com/keycloak/keycloak/releases/tag/22.0.1)
 
-		# Place realm file in proper folder
-		mkdir data/import
+    ```bash
+    # Extract the downloaded file
+    tar -xvf keycloak-22.0.1.tar.gz # Mac & Linux
+    unzip <package.zip # Windows
 
-		cp <test-ehr_location>/src/main/resources/ClientFhirServerRealm.json data/import/
-		```
+    # Navigate into directory
+    cd keycloak-22.0.1
 
-	- Log in as admin user (optional)
-		- Launch the admin page in a web browser [localhost:8180/admin/](http://localhost:8180/admin/)
-		- Select link for [Administration Console](http://localhost:8180/auth/admin/)
-		- Log in as admin/admin
+    # Start Keycloak
+    KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin ./bin/kc.sh start-dev --http-port=8180 --import-realm --hostname=localhost
+
+    # Place realm file in proper folder
+    mkdir data/import
+
+    cp <test-ehr_location>/src/main/resources/ClientFhirServerRealm.json data/import/
+    ```
+
+  - Log in as admin user (optional)
+    - Launch the admin page in a web browser [localhost:8180/admin/](http://localhost:8180/admin/)
+    - Select link for [Administration Console](http://localhost:8180/auth/admin/)
+    - Log in as admin/admin
 
 ### mongodb
+
 - Setup and Run MongoDB
-	- Download the latest version for your OS from [www.mongodb.com/try/download/community](https://www.mongodb.com/try/download/community)
-		```bash 
-		# Extract the downloaded package
-		tar -xvf <package.tgz> # Mac & Linux 
-		unzip <package.zip # Windows
 
-		# Navigate into directory
-		cd <package>
+  - Download the latest version for your OS from [www.mongodb.com/try/download/community](https://www.mongodb.com/try/download/community)
+
+    ```bash
+    # Extract the downloaded package
+    tar -xvf <package.tgz> # Mac & Linux
+    unzip <package.zip # Windows
 
-		# Create folder for database
-		mkdir db
+    # Navigate into directory
+    cd <package>
+
+    # Create folder for database
+    mkdir db
+
+    # Run mongo
+    ./bin/mongod --dbpath db
+    ```
 
-		# Run mongo
-		./bin/mongod --dbpath db
-		```
 - Setup Mongo Shell `mongosh` to initialize the database
-	- Download latest version for your OS from [www.mongodb.com/try/download/shell](https://www.mongodb.com/try/download/shell)
-		```bash 
-		# Extract the package
-		tar -xvf <package.tgz> # Mac & Linux 
-		unzip <package.zip # Windows
-		
-		# Navigate into directory
-		cd <package>
-
-		# Initialize the database
-		# NOTE: Database must already be running
-		./bin/mongosh mongodb://localhost:27017 <REMS_PATH>/mongo-init.js
-		```
-	- Alternate Install Instructions: [www.mongodb.com/docs/mongodb-shell/install/#std-label-mdb-shell-install](https://www.mongodb.com/docs/mongodb-shell/install/#std-label-mdb-shell-install)
-	
+
+  - Download latest version for your OS from [www.mongodb.com/try/download/shell](https://www.mongodb.com/try/download/shell)
+
+    ```bash
+    # Extract the package
+    tar -xvf <package.tgz> # Mac & Linux
+    unzip <package.zip # Windows
+
+    # Navigate into directory
+    cd <package>
+
+    # Initialize the database
+    # NOTE: Database must already be running
+    ./bin/mongosh mongodb://localhost:27017 <REMS_PATH>/mongo-init.js
+    ```
+
+  - Alternate Install Instructions: [www.mongodb.com/docs/mongodb-shell/install/#std-label-mdb-shell-install](https://www.mongodb.com/docs/mongodb-shell/install/#std-label-mdb-shell-install)
+
 - Restart mongo
-	- Stop the application
-	- Start as above
-		```bash
-		./bin/mongod --dbpath db
-		```
-	- Applications should now be able to connect
+  - Stop the application
+  - Start as above
+    ```bash
+    ./bin/mongod --dbpath db
+    ```
+  - Applications should now be able to connect
 
 ## Test Applications
 
 ### test-ehr
 
-- Navigate into directory already cloned from GitHub [www.github.com/mcode/test-ehr](https://www.github.com/mcode/test-ehr)
-	```bash
-	cd test-ehr
-	
-	# Run
-	gradle bootRun
-	```
-	
-	```bash
-	# Load Data (in separate window, also in repo folder)
-	gradle loadData
-	```
+- Terminal window 1
+
+  ```bash
+  # Navigate into directory already cloned from GitHub
+  cd test-ehr
+
+  # Run
+  gradle bootRun
+  ```
+
+- Terminal window 2 (in the same directory)
+
+  ```bash
+  # Load Data
+  gradle loadData
+  ```
 
 ### request-generator
 
-- Navigate into directory already cloned from GitHub [www.github.com/mcode/request-generator](https://www.github.com/mcode/request-generator)
-	```bash
-	cd request-generator
+```bash
+# Navigate into directory already cloned from GitHub
+cd request-generator
+
+# Install dependencies
+npm install
 
-	# Setup
-	npm install
+# Use the correct version of Node
+nvm use 14
 
-	# Run
-	npm start
-	```
+# Start the application
+npm start
+```
 
 ## Core Applications
 
 ### rems-admin
-- Navigate into directory already cloned from GitHub [www.github.com/mcode/rems-admin](https://www.github.com/mcode/rems-admin)
-- Update env.json
-	- Add your VSAC key to env.json as the default value for `VSAC_API_KEY`
-	```bash
-	cd rems-admin
-	
-	# Submodule Initialization
-	git submodule update --init
-	
-	# Setup
-	`npm install`
-
-	# Run
-	npm start
-	```
+
+```bash
+# Navigate into directory already cloned from GitHub
+cd rems-admin
+
+# Create a .env.local and set the VSAC_API_KEY variable to your VSAC key.
+echo "VSAC_API_KEY=<your VSAC API key>" > .env.local
+
+# Initialize Git submodules (REMS CDS Hooks)
+git submodule update --init
+
+# Install dependencies
+npm install
+
+# Start the application
+npm start
+```
 
 ### pims
-- Navigate into directory already cloned from GitHub [www.github.com/mcode/pims](https://www.github.com/mcode/pims)
-	```bash 
-	cd pims
-	```
-	
-	Backend
-	```bash 
-	# Navigate to the backend directory
-	cd backend
-
-	# Setup
-	npm install
-
-	#Run
-	npm start
-	```
-		
-	Frontend
-	```bash 
-	# Navigate to the frontend directory
-	cd frontend
-	
-	# Setup
-	npm install
-
-	# Run
-	PORT=5050 npm start
-	```
+
+Terminal window 1: Backend
+
+```bash
+# Navigate to the backend directory
+cd pims/backend
+
+# Install dependencies
+npm install
+
+# Start the application
+npm start
+```
+
+Terminal window 2: Frontend
+
+```bash
+# Navigate to the frontend directory
+cd pims/backend
+
+# Install dependencies
+npm install
+
+# Start the application
+npm start
+```
 
 ### rems-smart-on-fhir
-- Navigate into directory already cloned from GitHub [https://www.github.com/mcode/rems-smart-on-fhir](https://www.github.com/mcode/rems-smart-on-fhir)
-	```bash 
-	# Navigate into directory already cloned from GitHub
-	cd rems-smart-on-fhir
 
-	# Submodule Initialization
-	git submodule update --init
+```bash
+# Navigate into directory already cloned from GitHub
+cd rems-smart-on-fhir
+
+# Initialize Git submodules (REMS CDS Hooks)
+git submodule update --init
+
+# Install dependencies
+npm install
+
+# Start the application
+npm start
+```
 
-	# Setup
-	npm install
+# Verify the REMS Integration Prototype is working
 
-	# Run
-	PORT=4040 npm start
-	```
\ No newline at end of file
+See [this guide](Verify-REMS-Integration-Prototype-Works.md) to generate a test request.
diff --git a/EnvironmentVariables.md b/EnvironmentVariables.md
index dd5e486..0dfdcb2 100644
--- a/EnvironmentVariables.md
+++ b/EnvironmentVariables.md
@@ -1,126 +1,170 @@
 # Repositories and environment variables
 
-## Repositories that define environment variables with default values
+## Repositories that define environment variables (via `.env` or Docker Compose `environment`)
 
 <!-- cSpell: off -->
 
 - mcode/rems-setup
+
   - .env
-    - `VSAC_API_KEY`: `#Replace_me_with_your_api_key`
-    - `COMPOSE_PROJECT_NAME`: `rems_dev`
-  - docker-compose.yml
-    - keycloak
-      - `KEYCLOAK_USER`: `admin`
-      - `KEYCLOAK_PASSWORD`: `admin`
-      - `DB_VENDOR`: `h2`
-    - test-ehr
-      - `oauth_token`: `http://host.docker.internal:8180/auth/realms/ClientFhirServer/protocol/openid-connect/token`
-    - request-generator
-      - `REACT_APP_REMS_CONFIG`: `true`
-    - rems-administrator
-      - `VSAC_API_KEY`: taken from host machine's value
-      - `MONGO_URL`: `mongodb://rems-user:pass@pims_remsadmin_mongo:27017`
-    - pims_remsadmin_mongo
-      - `MONGO_INITDB_ROOT_USERNAME`: `rems-admin-pims-root`
-      - `MONGO_INITDB_ROOT_PASSWORD`: `rems-admin-pims-password`
-    - pims
-      - `REMS_ADMIN_BASE`: `http://rems-administrator:8090`
-      - `MONGO_URL`: `mongodb://pims_remsadmin_mongo:27017/pims`
-  - docker-compose-dev.yml
+    - `VSAC_API_KEY`
+    - `COMPOSE_PROJECT_NAME`
+  - docker-compose.yml, docker-compose-dev.yml, docker-compose-local-build.yml
     - keycloak
-      - `KEYCLOAK_USER`: `admin`
-      - `KEYCLOAK_PASSWORD`: `admin`
-      - `DB_VENDOR`: `h2`
+      - `KEYCLOAK_ADMIN`
+      - `KEYCLOAK_ADMIN_PASSWORD`
+      - `DB_VENDOR`
     - test-ehr
-      - `oauth_token`: `http://host.docker.internal:8180/auth/realms/ClientFhirServer/protocol/openid-connect/token`
+      - `oauth_token`
     - request-generator
-      - `REACT_APP_REMS_CONFIG`: `true`
+      - `REACT_APP_EHR_SERVER_TO_BE_SENT_TO_REMS_ADMIN_FOR_PREFETCH`
     - rems-administrator
-      - `MONGO_URL`: `mongodb://rems-user:pass@pims_remsadmin_mongo:27017`
+      - `MONGO_URL`
     - pims_remsadmin_mongo
-      - `MONGO_INITDB_ROOT_USERNAME`: `rems-admin-pims-root`
-      - `MONGO_INITDB_ROOT_PASSWORD`: `rems-admin-pims-password`
+      - `MONGO_INITDB_ROOT_USERNAME`
+      - `MONGO_INITDB_ROOT_PASSWORD`
     - pims
-      - `REMS_ADMIN_BASE`: `http://rems-administrator:8090`
-      - `MONGO_URL`: `mongodb://pims_remsadmin_mongo:27017/pims`
+      - `REMS_ADMIN_BASE`
+      - `MONGO_URL`
 
 - mcode/rems-admin
-  - .env.example
-    - `VSAC_API_KEY`: no default value
-  - src/.env
-    - `MONGO_URL` : `mongodb://rems-user:pass@127.0.0.1:27017`
-    - `MONGO_DB_NAME` : `remsadmin`
-    - `WHITELIST` : `http://localhost, http://localhost:3005`
-    - `LOGGING_LEVEL` : `debug`
-    - `PORT` : `8090`
-    - `RESOURCE_SERVER` : `http://localhost:8090`
-    - `AUTH_SERVER_URI` : `http://localhost:8090`
-    - `VSAC_API_KEY` : `changeMe`
-    - `SMART_ENDPOINT` : `http://localhost:4040/launch`
-    - `HTTPS_KEY_PATH` : `server.key`
-    - `HTTPS_CERT_PATH` : `server.cert`
-    - `USE_HTTPS` : `false`
+
+  - .env
+    - `AUTH_SERVER_URI`
+    - `HTTPS_CERT_PATH`
+    - `HTTPS_KEY_PATH`
+    - `LOGGING_LEVEL`
+    - `MONGO_DB_NAME`
+    - `MONGO_URL`
+    - `PORT`
+    - `RESOURCE_SERVER`
+    - `SMART_ENDPOINT`
+    - `USE_HTTPS`
+    - `VSAC_API_KEY`
+    - `WHITELIST`
 
 - mcode/rems-smart-on-fhir
+
   - .env
-    - `REACT_APP_REMS_ADMIN_SERVER_BASE`: `http://localhost:8090`
-    - `REACT_APP_REMS_HOOKS_PATH`: `/cds-services/rems-order-sign`
-    - `REACT_APP_PHARMACY_SERVER_BASE`: `http://localhost:5051`
-    - `REACT_APP_ETASU_STATUS_ENABLED`: `true`
-    - `REACT_APP_PHARMACY_STATUS_ENABLED`: `true`
-    - `REACT_APP_SEND_RX_ENABLED` = `true`
-    - `REACT_APP_SEND_FHIR_AUTH_ENABLED` = `false`
-    - `PORT`: `4040`
-    - `REACT_APP_CLIENT_ID`: `app-login`
-    - `REACT_APP_CLIENT_SCOPES`: `launch openid profile user/Patient.read patient/Patient.read user/Practitioner.read`
-    - `REACT_APP_DEVELOPER_MODE`: `true`
-    - `GENERATE_SOURCEMAP`: `false`
-    - `BROWSER`: `none`
+    - `BROWSER`
+    - `GENERATE_SOURCEMAP`
+    - `PORT`
+    - `REACT_APP_CLIENT_ID`
+    - `REACT_APP_DEFAULT_ISS`
+    - `REACT_APP_CLIENT_SCOPES`
+    - `REACT_APP_DEVELOPER_MODE`
+    - `REACT_APP_ETASU_STATUS_ENABLED`
+    - `REACT_APP_PHARMACY_SERVER_BASE`
+    - `REACT_APP_PHARMACY_STATUS_ENABLED`
+    - `REACT_APP_REMS_ADMIN_SERVER_BASE`
+    - `REACT_APP_REMS_HOOKS_PATH`
+    - `REACT_APP_SEND_FHIR_AUTH_ENABLED`
+    - `REACT_APP_SEND_RX_ENABLED`
 
 - mcode/test-ehr
+
   - src/main/resources/application.yml
-    - `auth_base`: `http://localhost:8180/auth/realms/ClientFhirServer/protocol/openid-connect`
-    - `ehr_base`: `http://localhost:8080/test-ehr`
-    - `client_id`: `app-token`
-    - `client_secret`: no default value
-    - `realm`: `ClientFhirServer`
-    - `use_oauth`: `false`
-    - `oauth_token`: `${auth_base}/token`
-    - `oauth_authorize`: `${auth_base}/auth`
-    - `proxy_authorize`: `${ehr_base}/auth`
-    - `proxy_token`: `${ehr_base}/token`
-    - `redirect_post_launch`: `${ehr_base}/_services/smart/Launch`
-    - `redirect_post_token`: `${ehr_base}/token`
-    - `introspection_url`: `${auth_base}/token/introspect`
-    - `redirect_base`: `${ehr_base}/_auth/`
-  - Dockerfile.keycloak
-    - `KEYCLOAK_IMPORT`: `/resources/ClientFhirServerRealm.json`
+    - `auth_base`
+    - `ehr_base`
+    - `client_id`
+    - `client_secret`
+    - `realm`
+    - `use_oauth`
+    - `oauth_token`
+    - `oauth_authorize`
+    - `proxy_authorize`
+    - `proxy_token`
+    - `redirect_post_launch`
+    - `redirect_post_token`
+    - `introspection_url`
+    - `redirect_base`
 
-## Repositories that use environment variables
+- mcode/request-generator
+
+  - .env
+    - `HTTPS`
+    - `HTTPS_CERT_PATH`
+    - `HTTPS_KEY_PATH`
+    - `REACT_APP_ALT_DRUG`
+    - `REACT_APP_AUTH`
+    - `REACT_APP_CDS_SERVICE`
+    - `REACT_APP_CLIENT`
+    - `REACT_APP_CLIENT_SCOPES`
+    - `REACT_APP_DEFAULT_USER`
+    - `REACT_APP_EHR_BASE`
+    - `REACT_APP_EHR_LINK`
+    - `REACT_APP_EHR_SERVER`
+    - `REACT_APP_EHR_SERVER_TO_BE_SENT_TO_REMS_ADMIN_FOR_PREFETCH`
+    - `REACT_APP_GENERATE_JWT`
+    - `REACT_APP_GH_PAGES`
+    - `REACT_APP_HOMEPAGE`
+    - `REACT_APP_LAUNCH_URL`
+    - `REACT_APP_ORDER_SELECT`
+    - `REACT_APP_ORDER_SIGN`
+    - `REACT_APP_PASSWORD`
+    - `REACT_APP_PATIENT_FHIR_QUERY`
+    - `REACT_APP_PATIENT_VIEW`
+    - `REACT_APP_PIMS_SERVER`
+    - `REACT_APP_PUBLIC_KEYS`
+    - `REACT_APP_REALM`
+    - `REACT_APP_RESPONSE_EXPIRATION_DAYS`
+    - `REACT_APP_SERVER`
+    - `REACT_APP_SMART_LAUNCH_URL`
+    - `REACT_APP_URL`
+    - `REACT_APP_URL_FILTER`
+    - `REACT_APP_USER`
+
+- mcode/pims
+  - backend/env.json
+    - `ALLOWED_ORIGIN`
+    - `AUTH_SOURCE`
+    - `BACKEND_PORT`
+    - `HTTPS_CERT_PATH`
+    - `HTTPS_KEY_PATH`
+    - `MONGO_PASSWORD`
+    - `MONGO_URL`
+    - `MONGO_USERNAME`
+    - `REMS_ADMIN_BASE`
+    - `USE_HTTPS`
+  - frontend/.env
+    - `PORT`
+    - `REACT_APP_PIMS_BACKEND_PORT`
+  - pm2.config.js
+    - `NODE_ENV`
 
+## Repositories that use environment variables
 
 - mcode/rems-setup
+
   - docker-compose-dev.yml
     - rems-administrator
       - `VSAC_API_KEY`
   - docker-compose.yml
     - rems-administrator
       - `VSAC_API_KEY`
+  - playwright.config.ts
+    - `CI`
 
 - mcode/rems-admin
+
   - src/config.ts
-    - `WHITELIST`
+    - `AUTH_SERVER_URI`
+    - `LOGGING_LEVEL`
+    - `MONGO_DB_NAME`
+    - `MONGO_URL`
     - `PORT`
+    - `RESOURCE_SERVER`
     - `SERVER_PORT`
     - `SMART_ENDPOINT`
     - `VSAC_API_KEY`
-    - `MONGO_URL`
-    - `MONGO_DB_NAME`
-    - `RESOURCE_SERVER`
-    - `LOGGING_LEVEL`
-    - `AUTH_SERVER_URI`
+    - `WHITELIST`
+  - src/server.ts
+    - `HTTPS_CERT_PATH`
+    - `HTTPS_KEY_PATH`
+    - `USE_HTTPS`
 
 - mcode/test-ehr
+
   - src/main/java/ca/uhn/fhir/jpa/starter/EnvironmentHelper.java
     - `elasticsearch.required_index_status`
     - `elasticsearch.schema_management_strategy`
@@ -143,67 +187,88 @@
     - `redirect_base`
 
 - mcode/request-generator
+
   - src/registerServiceWorker.js
     - `NODE_ENV`
     - `PUBLIC_URL`
   - src/containers/RequestBuilder.js
-    - `REACT_APP_EHR_BASE`
-    - `REACT_APP_EHR_SERVER`
-  - src/util/auth.js
-    - `REACT_APP_AUTH`
-    - `REACT_APP_REALM`
-    - `REACT_APP_USER`
-    - `REACT_APP_PASSWORD`
+    - `REACT_APP_ALT_DRUG`
+    - `REACT_APP_CDS_SERVICE`
     - `REACT_APP_CLIENT`
-    - `REACT_APP_PUBLIC_KEYS`
-  - src/util/data.js
+    - `REACT_APP_CLIENT_SCOPES`
+    - `REACT_APP_DEFAULT_USER`
+    - `REACT_APP_EHR_BASE`
     - `REACT_APP_EHR_SERVER`
     - `REACT_APP_EHR_SERVER_TO_BE_SENT_TO_REMS_ADMIN_FOR_PREFETCH`
-    - `REACT_APP_CDS_SERVICE`
+    - `REACT_APP_GENERATE_JWT`
+    - `REACT_APP_LAUNCH_URL`
     - `REACT_APP_ORDER_SELECT`
     - `REACT_APP_ORDER_SIGN`
+    - `REACT_APP_PATIENT_FHIR_QUERY`
+    - `REACT_APP_PATIENT_VIEW`
+    - `REACT_APP_PIMS_SERVER`
+    - `REACT_APP_RESPONSE_EXPIRATION_DAYS`
+    - `REACT_APP_CLIENT_SCOPES`
+    - `REACT_APP_SMART_LAUNCH_URL`
+    - `REACT_APP_URL_FILTER`
+  - src/util/auth.js
     - `REACT_APP_AUTH`
-    - `REACT_APP_ALTERNATIVE_THERAPY`
-    - `LAUNCH_URL`
-    - `FORM_EXPIRATION_DAYS`
-    - `PIMS_URL`
-  - src/util/fhir.js
+    - `REACT_APP_CLIENT`
+    - `REACT_APP_PASSWORD`
+    - `REACT_APP_PUBLIC_KEYS`
+    - `REACT_APP_REALM`
+    - `REACT_APP_USER`
+  - src/components/SMARTBox/EHRLaunchBox.js
+    - `REACT_APP_EHR_LINK`
+  - src/components/App.js
+    - `REACT_APP_GH_PAGES`
+  - src/components/Auth/Login.jsx
     - `REACT_APP_AUTH`
+    - `REACT_APP_CLIENT`
     - `REACT_APP_REALM`
+  - src/components/Dashboard/DashboardElement.jsx
+    - `REACT_APP_LAUNCH_URL`
+  - src/containers/Launch.jsx
     - `REACT_APP_CLIENT`
+    - `REACT_APP_CLIENT_SCOPES`
+  - src/containers/PatientPortal.jsx
+    - `REACT_APP_EHR_BASE`
 
 - mcode/pims
-  - src/backend/server.js
-    - `BACKEND_PORT`
+
+  - backend/src/server.ts
     - `ALLOWED_ORIGIN`
-    - `MONGO_HOSTNAME`
     - `AUTH_SOURCE`
-    - `MONGO_USERNAME`
+    - `BACKEND_PORT`
+    - `HTTPS_CERT_PATH`
+    - `HTTPS_KEY_PATH`
     - `MONGO_PASSWORD`
-  - src/backend/server.ts
-    - `PORT`
-    - `ALLOWED_ORIGIN`
-    - `MONGO_HOSTNAME`
-    - `AUTH_SOURCE`
     - `MONGO_USERNAME`
-    - `MONGO_PASSWORD`
-  - src/backend/routes/doctorOrders.js
+    - `USE_HTTPS`
+  - backend/src/routes/doctorOrders.js
     - `REMS_ADMIN_BASE`
   - frontend/src/App.tsx
-    - `REACT_APP_PIMS_BACKEND_URL`
     - `REACT_APP_PIMS_BACKEND_PORT`
+    - `REACT_APP_PIMS_BACKEND_URL`
 
 - mcode/rems-smart-on-fhir
   - src/views/Patient/MedReqDropDown/MedReqDropDown.tsx
-    - `REACT_APP_REMS_ADMIN_SERVER_BASE`
-    - `REACT_APP_SEND_RX_ENABLED`
+    - `REACT_APP_ETASU_STATUS_ENABLED`
+    - `REACT_APP_PHARMACY_STATUS_ENABLED`
     - `REACT_APP_SEND_FHIR_AUTH_ENABLED`
-  - src/views/Patient/MedReqDropDown/etasuStatus/EtasuStatus.tsx
-    - `REACT_APP_REMS_ADMIN_SERVER_BASE`
+    - `REACT_APP_SEND_RX_ENABLED`
+  - src/views/Patient/MedReqDropDown/rxSend/rxSend.ts
+    - `REACT_APP_PHARMACY_SERVER_BASE`
   - src/views/Patient/MedReqDropDown/pharmacyStatus/PharmacyStatus.tsx
     - `REACT_APP_REMS_ADMIN_SERVER_BASE`
-  - src/index.tsx
-    - `REACT_APP_CLIENT_ID`
+  - src/views/Patient/PatientView.tsx
+    - `REACT_APP_REMS_ADMIN_SERVER_BASE`
+    - `REACT_APP_REMS_HOOKS_PATH`
+  - src/views/Smart/Launch.tsx
     - `REACT_APP_CLIENT_SCOPES`
+    - `REACT_APP_DEFAULT_CLIENT_ID`
+    - `REACT_APP_DEFAULT_ISS`
   - src/views/Questionnaire/SmartApp.tsx
     - `REACT_APP_DEVELOPER_MODE`
+  - src/views/Questionnaire/elm/buildPopulatedResourceBundle.ts
+    - `REACT_APP_EPIC_SUPPORTED_QUERIES`
diff --git a/PrototypeRepositoriesAndCapabilities.md b/PrototypeRepositoriesAndCapabilities.md
index c0410be..5846633 100644
--- a/PrototypeRepositoriesAndCapabilities.md
+++ b/PrototypeRepositoriesAndCapabilities.md
@@ -1,6 +1,6 @@
 # Prototype Repositories and Capabilities
 
-## (As of April 27, 2023. Prototype version 0.9)
+## (As of January 2, 2024. Prototype version 0.14)
 
 ![](./prototype-images/layout.png)
 
@@ -9,10 +9,11 @@
 ### Repositories
 
 - mcode/rems-admin
+
   - REMS Administrator `(4)`
     - Node/TypeScript
     - `(1.1)(3)` CDS Hooks (server) end points
-    - `(1.4)` FHIR Server to support DTR
+    - `(1.4)` FHIR Server to support REMS SMART on FHIR App
       - Contains Questionnaire, Library (w/ CQL), ValueSets
       - Retrieves and caches ValueSets from VSAC
     - `(5)` Interface to check status of REMS
@@ -20,21 +21,24 @@
   - Docker scripts to launch the entire stack
 
 - mcode/test-ehr
+
   - Test EHR `(2)`
     - Java HAPI FHIR Server
     - Contains test patient data
-    - Supports launching DTR SMART on FHIR app
+    - Supports launching REMS SMART on FHIR app
 
 - mcode/request-generator
+
   - Request Generator `(2)`
     - Node/JavaScript
     - Web Application mimicking the EHR frontend
     - Requests
       - `(1.1)(3)` Generates CDS Hooks order-sign (client) that is sent to the REMS Admin
-      - `(1.2)(3)` Handles CARDS returned from REMS Admin to launch DTR
+      - `(1.2)(3)` Handles CARDS returned from REMS Admin to launch REMS SMART on FHIR App
       - Sends Rx to PIMS using NCPDP Script NewRx
 
 - mcode/pims
+
   - Pharmacy Information System `(6)`
     - Node/TypeScript
     - Receives Rx from Request Generator
@@ -45,6 +49,7 @@
   - Stores data in MongoDB
 
 - mcode/rems-smart-on-fhir
+
   - REMS SMART on FHIR Application
     - SMART on FHIR application to generate CDS Hooks interaction with REMS Admin for any EHR that does not support CDS Hooks
       - Node/TypeScript
@@ -58,6 +63,7 @@
 ### Other Components
 
 - KeyCloak
+
   - Authentication of users
   - Docker config hosted in mcode/test-ehr
 
diff --git a/README.md b/README.md
index 5937cd8..bdf1af6 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ This repository contains all of the Docker, setup scripts, and documentation for
 
 ### Prototype Organization Overview
 
->For information on the project and how to get involved visit our [CodeX Confluence Page](https://confluence.hl7.org/display/COD/Risk+Evaluation+and+Mitigation+Strategies+%28REMS%29+Integration) 
+> For information on the project and how to get involved visit our [CodeX Confluence Page](https://confluence.hl7.org/display/COD/Risk+Evaluation+and+Mitigation+Strategies+%28REMS%29+Integration)
 
 [Prototype Repositories and Capabilities](PrototypeRepositoriesAndCapabilities.md)
 
@@ -18,6 +18,13 @@ You can find complete end-to-end full-stack set up guides for the REMS Proof of
 
 [Docker Developer Setup Guide](DeveloperSetupGuide.md) - Follow this guide if you would like to use [Docker](https://docs.docker.com/get-started/overview/) for running REMS Integration Prototype for Local Development.
 
-[Local Developer Setup Guide (No Docker)](EndToEndSetupGuide.md) - Follow this guide if you would like to start each application locally **without** using Docker for devlopment.
+[Local Developer Setup Guide (No Docker)](EndToEndSetupGuide.md) - Follow this guide if you would like to start each application locally **without** using Docker for development.
 
-For information on how to launch each application in the prototype workflow with SSL enabled see out [HTTPS / SSL Setup Guide](https://github.com/mcode/rems-setup/blob/main/SSLSetupGuide.md).
\ No newline at end of file
+[HTTPS / SSL Setup Guide](SSLSetupGuide.md) - Follow this guide to launch each application in the prototype workflow with SSL enabled.
+
+## Running end-to-end tests
+
+We use Playwright for end-to-end testing, which automates running the full prototype environment.
+
+1. Install dependencies: `npm install`
+2. Run all tests: `npm playwright test` or with the `-ui` flag to view them in the Chromium browser.
diff --git a/REMS.code-workspace b/REMS.code-workspace
index b307733..69e633b 100644
--- a/REMS.code-workspace
+++ b/REMS.code-workspace
@@ -1,141 +1,134 @@
 {
-	"folders": [
-		{
-			"path": "../request-generator"
-		},
-		{
-			"path": "."
-		},
-		{
-			"path": "../pims"
-		},
-		{
-			"path": "../rems-admin"
-		},
-		{
-			"path": "../rems-info"
-		},
-		{
-			"path": "../rems-smart-on-fhir"
-		},
-		{
-			"path": "../test-ehr"
-		},
-		{
-			"path": "../cql-to-fhir-library"
-		}
-	],
-	"launch": {
-		"version": "0.2.0",
-		"configurations": [
-			{
-				"postDebugTask": "Terminate All Tasks",
-				"name": "Post Debug Task - Terminate Chrome (This is not a Debugger)",
-				"request": "launch",
-				"type": "node"
-			},
-		],
-		"compounds": [
-			{
-			  "name": "Debug All REMS Applications (Docker)",
-			  "stopAll": true,
-			  "preLaunchTask": "Launch Chrome in Debug Mode",
-			  "configurations": [
-				  "Debug Test-EHR (Local + Docker)", 
-				  "Debug Request-Generator (Attach Docker)", 
-			// ToDo: Add in PIMS Debugging in Docker
-			// ToDo: Add in REMS Debugging in Docker
-			// ToDo: Add in rems-smart-on-fhir Debuggin in Docker
-				  "Post Debug Task - Terminate Chrome (This is not a Debugger)"
-				],
-			}
-		  ]
-	},
-	"tasks": {
-		"version": "2.0.0",
-		"tasks": [
-			{
-				"type": "shell",
-				"label": "Launch Chrome in Debug Mode",
-				"linux": {
-					"command": "google-chrome http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
-				},
-				"osx": {
-					"command": "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
-				},
-				"windows": {
-					"command": "for /f \"usebackq tokens=1,2,3,4,5\" %a in (`reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ /s /f \\chrome.exe ^| findstr Application`) do set CHROMEPATH=%c%d%e & set CHROMEPATH=%CHROMEPATH:ProgramFiles=Program Files% & \"%CHROMEPATH%\" http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
-				},
-				"presentation": {
-					"close": true,
-				},
-				"isBackground": true,
-				"problemMatcher": [
-					{
-					  "pattern": [
-						{
-						  "regexp": ".",
-						  "file": 1,
-						  "location": 2,
-						  "message": 3
-						}
-					  ],
-					  "background": {
-						"activeOnStart": true,
-						"beginsPattern": ".",
-						"endsPattern": ".",
-					  }
-					}
-				  ]
-			},{
-				"label": "Terminate All Tasks",
-				"command": "echo ${input:terminate}",
-				"type": "shell",
-				"problemMatcher": []
-			  }
-		],
-		"inputs": [
-			{
-			  "id": "terminate",
-			  "type": "command",
-			  "command": "workbench.action.tasks.terminate",
-			  "args": "terminateAll"
-			}
-		  ]
-	},
-	"settings": {
-		"debug.onTaskErrors": "debugAnyway",
-		"cSpell.words": [
-			"BUILDKIT",
-			"Codeable",
-			"davinci",
-			"deidentify",
-			"DRLS",
-			"drlsroot",
-			"ehrserver",
-			"ETASU",
-			"glyphicon",
-			"INITDB",
-			"Keycloak",
-			"mcode",
-			"NCPDP",
-			"PIMS",
-			"Turalio",
-			"UMLS",
-			"VLCS"
-		]
-	},
-	"extensions": {
-		"recommendations": [
-			"ms-azuretools.vscode-docker",
-			"vscjava.vscode-java-debug",
-			"cqframework.cql",
-			"mitre-health.vscode-language-fsh",
-			"redhat.java",
-			"mongodb.mongodb-vscode",
-			"VisualStudioExptTeam.vscodeintellicode",
-			"streetsidesoftware.code-spell-checker"
-		]
-	},
-
+  "folders": [
+    {
+      "path": "../request-generator"
+    },
+    {
+      "path": "."
+    },
+    {
+      "path": "../pims"
+    },
+    {
+      "path": "../rems-admin"
+    },
+    {
+      "path": "../rems-smart-on-fhir"
+    },
+    {
+      "path": "../test-ehr"
+    }
+  ],
+  "launch": {
+    "version": "0.2.0",
+    "configurations": [
+      {
+        "postDebugTask": "Terminate All Tasks",
+        "name": "Post Debug Task - Terminate Chrome (This is not a Debugger)",
+        "request": "launch",
+        "type": "node"
+      }
+    ],
+    "compounds": [
+      {
+        "name": "Debug All REMS Applications (Docker)",
+        "stopAll": true,
+        "preLaunchTask": "Launch Chrome in Debug Mode",
+        "configurations": [
+          "Debug Test-EHR (Local + Docker)",
+          "Debug Request-Generator (Attach Docker)",
+          // ToDo: Add in PIMS Debugging in Docker
+          // ToDo: Add in REMS Debugging in Docker
+          // ToDo: Add in rems-smart-on-fhir Debugging in Docker
+          "Post Debug Task - Terminate Chrome (This is not a Debugger)"
+        ]
+      }
+    ]
+  },
+  "tasks": {
+    "version": "2.0.0",
+    "tasks": [
+      {
+        "type": "shell",
+        "label": "Launch Chrome in Debug Mode",
+        "linux": {
+          "command": "google-chrome http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
+        },
+        "osx": {
+          "command": "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
+        },
+        "windows": {
+          "command": "for /f \"usebackq tokens=1,2,3,4,5\" %a in (`reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ /s /f \\chrome.exe ^| findstr Application`) do set CHROMEPATH=%c%d%e & set CHROMEPATH=%CHROMEPATH:ProgramFiles=Program Files% & \"%CHROMEPATH%\" http://localhost:3000 http://localhost:5050 http://localhost:3005/register --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug"
+        },
+        "presentation": {
+          "close": true
+        },
+        "isBackground": true,
+        "problemMatcher": [
+          {
+            "pattern": [
+              {
+                "regexp": ".",
+                "file": 1,
+                "location": 2,
+                "message": 3
+              }
+            ],
+            "background": {
+              "activeOnStart": true,
+              "beginsPattern": ".",
+              "endsPattern": "."
+            }
+          }
+        ]
+      },
+      {
+        "label": "Terminate All Tasks",
+        "command": "echo ${input:terminate}",
+        "type": "shell",
+        "problemMatcher": []
+      }
+    ],
+    "inputs": [
+      {
+        "id": "terminate",
+        "type": "command",
+        "command": "workbench.action.tasks.terminate",
+        "args": "terminateAll"
+      }
+    ]
+  },
+  "settings": {
+    "debug.onTaskErrors": "debugAnyway",
+    "cSpell.words": [
+      "BUILDKIT",
+      "Codeable",
+      "davinci",
+      "deidentify",
+      "DRLS",
+      "ehrserver",
+      "ETASU",
+      "glyphicon",
+      "INITDB",
+      "Keycloak",
+      "mcode",
+      "NCPDP",
+      "PIMS",
+      "Turalio",
+      "UMLS",
+      "VLCS"
+    ]
+  },
+  "extensions": {
+    "recommendations": [
+      "ms-azuretools.vscode-docker",
+      "vscjava.vscode-java-debug",
+      "cqframework.cql",
+      "mitre-health.vscode-language-fsh",
+      "redhat.java",
+      "mongodb.mongodb-vscode",
+      "VisualStudioExptTeam.vscodeintellicode",
+      "streetsidesoftware.code-spell-checker"
+    ]
+  }
 }
diff --git a/SSLSetupGuide.md b/SSLSetupGuide.md
index 8e30bfb..6cac473 100644
--- a/SSLSetupGuide.md
+++ b/SSLSetupGuide.md
@@ -22,7 +22,7 @@ keytool -genkeypair -alias localhost -keyalg RSA -keysize 2048 -validity 365 -ke
 docker run --volume=/tmp/certs:/certs -p 8543:8543 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin codexrems/keycloak:REMSvCurrent start --import-realm --http-enabled=false --hostname=localhost --https-key-store-file=/certs/server.keystore --https-key-store-password=secret --https-port=8543
 ```
 
-### Docker-compose
+### Docker Compose
 
 ```docker-compose
 keycloak:
diff --git a/SimpleSetupGuide.md b/SimpleSetupGuide.md
index 892aeb9..db1c9c9 100644
--- a/SimpleSetupGuide.md
+++ b/SimpleSetupGuide.md
@@ -1,13 +1,22 @@
-# REMS Local Demo Setup Guide
-
-## Guide Contents
-
-- [Purpose](#purpose-of-this-guide)
-- [Components](#components)
-- [Quick Setup](#quick-setup)
-- [Cleanup and Useful Options](#cleanup-and-useful-options)
-  - [Setting Environment Variables](#setting-environment-variables)
-  - [Configurable install](#docker-compose-without-porter)
+# Local Demo Setup Guide
+
+## Table of Contents
+
+- [Local Demo Setup Guide](#local-demo-setup-guide)
+  - [Table of Contents](#table-of-contents)
+  - [Purpose of this guide](#purpose-of-this-guide)
+  - [Components](#components)
+  - [Quick Setup](#quick-setup)
+    - [1. System Requirements](#1-system-requirements)
+    - [2. Obtain Value Set Authority Center (VSAC) API key](#2-obtain-value-set-authority-center-vsac-api-key)
+    - [3. Run](#3-run)
+    - [4. Verify everything is working](#4-verify-everything-is-working)
+  - [Cleanup and Useful Options](#cleanup-and-useful-options)
+    - [Remove the Docker Compose containers to free up resources](#remove-the-docker-compose-containers-to-free-up-resources)
+    - [Cleanup Docker resources](#cleanup-docker-resources)
+    - [Updating Docker Compose application images](#updating-docker-compose-application-images)
+    - [Setting Environment Variables](#setting-environment-variables)
+    - [Running with SSL](#running-with-ssl)
 
 ## Purpose of this guide
 
@@ -23,211 +32,71 @@ _Note:_ If you are looking to just have more control or configuration options wi
 
 ## Components
 
-The following DRLS components will be deployed in Docker locally:
+The following REMS components will be deployed in Docker locally:
 
-1. [Coverage Requirements Discovery (CRD)](https://github.com/mcode/CRD)
-2. [(Test) EHR FHIR Service](https://github.com/HL7-DaVinci/test-ehr)
-3. [Documents, Templates, and Rules (DTR) SMART on FHIR app](https://github.com/mcode/dtr)
-4. [Clinical Decision Support (CDS) Library](https://github.com/mcode/CDS-Library)
-5. [Request Generator](https://github.com/mcode/request-generator)
-6. [rems-admin](https://github.com/mcode/rems-admin)
-7. [Pharmacy Information System](https://github.com/mcode/pharmacy-information-system)
-8. [Keycloak](https://www.keycloak.org/)
+1. [test-ehr](https://github.com/mcode/test-ehr)
+2. [request-generator](https://github.com/mcode/request-generator)
+3. [rems-admin](https://github.com/mcode/rems-admin.git)
+4. [rems-setup](https://github.com/mcode/rems-setup.git)
+5. [pims (Pharmacy Information Management System)](https://github.com/mcode/pims)
+6. [rems-smart-on-fhir](https://github.com/mcode/rems-smart-on-fhir)
 
 ## Quick Setup
 
-### 1. Verify or Install Prerequisites
-
-#### System Requirements
-
-Your computer must have these minimum requirements:
+### 1. System Requirements
 
-- x86_64 (64-bit) or equivalent processor
-- At least 12 GB of RAM
-- At least 256 GB of storage
-- Internet access
-- [Chrome browser](https://www.google.com/chrome/)
-- [Docker Desktop](https://www.docker.com/products/docker-desktop)
-  - Make sure you install Docker Desktop version 18.03 or later.
-  - After installing ensure it is running using their setup guide.
-  - For resources, the system requires more than the default:
-    - Click the settings cog and go to resources.
-    - Allocate 8GB+ of RAM (16GB is ideal), and 4+ CPUs.
+See [this section](DeveloperSetupGuide.md/#minimum-system-requirements) from the developer setup guide for more information.
 
 ### 2. Obtain [Value Set Authority Center (VSAC)](https://vsac.nlm.nih.gov/) API key
 
-1. [Click here](https://www.nlm.nih.gov/research/umls/index.html) to read about UMLS
-2. Click 'request a license' under 'Get Started'
-3. If you already have a key you can click 'Visit Your Profile' in the right hand side-bar. The API key will be listed
-   under your username.
-4. If you do not have a key, click 'Generate an API Key'
-5. Sign in using one of the providers (Login.gov recommended)
-6. Generating the key is an automated process, you should be approved via e-mail fairly quickly. If not, use the contact
-   information in the first link to reach out to the office (this is not managed by our team / system).
-7. Once approved, loop back to step 2
+See [this section](DeveloperSetupGuide.md/#obtain-value-set-authority-center-vsac-api-key) from the developer setup guide for more information.
 
 ### 3. Run
 
-- [Install git](https://www.atlassian.com/git/tutorials/install-git)
-- Use git to clone or download and extract the zip of the
-  [rems-setup repository](https://github.com/mcode/rems-setup.git)
-- In your terminal navigate to the rems-setup repo folder.
-- Set up your local environment with your VSAC credentials (see
-  [setting environment variables section](#setting-environment-variables) for help)
-
-  > At this point, you should have credentials to access VSAC. If not, please refer to [Prerequisites](#prerequisites)
-  > for how to create these credentials and return here after you have confirmed you can access VSAC. To download the
-  > full ValueSets, your VSAC account will need to be added to the CMS-DRLS author group on <https://vsac.nlm.nih.gov/>.
-  > You will need to request membership access from an admin. Please reach out to Sahil Malhotra at
-  > <smalhotra@mitre.org> in order to request access to the CMS-DRLS author group. If this is not configured, you will
-  > get
-  > `org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found`
-  > errors.
-
-  > While this step is optional, we **highly recommend** that you do it so that DRLS will have the ability to
-  > dynamically load value sets from VSAC.
-
-  You can see a list of your pre-existing environment variables on your machine by running `env` in your Terminal. To
-  add to `env`:
-
-  1. Set "VSAC_API_KEY" in the .env file in the rems-setup Repository
-
-     or
-
-  2. `cd ~/`
-  3. Open `.bash_profile` and add the following lines at the very bottom:
-
-     ```bash
-     export VSAC_API_KEY=vsac_api_key
-     ```
-
-  4. Save `.bash_profile` and complete the update to `env`:
-
-     ```bash
-     source .bash_profile
-     ```
+1. [Install git](https://www.atlassian.com/git/tutorials/install-git).
+2. Use git to clone or download and extract the zip of the [rems-setup repository](https://github.com/mcode/rems-setup.git).
+3. In your terminal, navigate to the rems-setup directory.
 
-  > Be aware that if you have chosen to skip this step, you will be required to manually provide your VSAC credentials
-  > at <http://localhost:8090/data> and hit **Reload Data** every time you want DRLS to use new or updated value sets.
+   ```bash
+   cd rems-setup
+   ```
 
-  Note: How you set environment and path variables may vary depending on your operating system and terminal used. See
-  [setting environment variables section](#setting-environment-variables) for more information.
+4. Set up your local environment with your VSAC credentials (`VSAC_API_KEY`) and Docker Compose project name (`COMPOSE_PROJECT_NAME`). See the [setting environment variables section](#setting-environment-variables) for more information.
 
-- Add Compose Project Name to environment
+5. Start Docker Compose application
 
-  You can see a list of your pre-existing environment variables on your machine by running `env` in your Terminal. To
-  add to `env`:
+   ```bash
+   cd rems-setup # Need to execute commands in directory with corresponding docker-compose.yml file located in the REMS repository
+   docker compose up
+   ```
 
-  1. Set "COMPOSE_PROJECT_NAME" as "rems_prod" in the .env file in the rems-setup Repository
+   Note, if you are using an M1/M2 mac, you'll need to prepend `docker compose` commands with
+   `COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64`.
 
-     or
-
-  1. `cd ~/`
-  1. Open `.bash_profile` and add the following lines at the very bottom:
-
-     ```bash
-     export COMPOSE_PROJECT_NAME=rems_prod
-     ```
-
-  1. Save `.bash_profile` and complete the update to `env`:
-
-     ```bash
-     source .bash_profile
-     ```
-
-  Note: How you set environment and path variables may vary depending on your operating system and terminal used. See
-  [setting environment variables section](#setting-environment-variables) for more information.
-
-  Note: The compose project name is to disambiguate between different set ups on the same machine and can be set to any
-  identifier. If you are following both options mentioned in this guide, it is recommended to change the compose project
-  name for each so that they differ.
-
-- Start docker compose application
-
-  ```bash
-      cd rems-setup # Need to execute commands in directory with corresponding docker-compose.yml file located in the REMS repository
-      docker-compose up
-  ```
-
-  Note, if you are using an M1/M2 mac, you'll need to prepend `docker-compose` commands with
-  `COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64`.
-
-  ```bash
-      cd rems-setup # Need to execute commands in directory with corresponding docker-compose.yml file located in the REMS repository
-      COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64 docker-compose up
-  ```
+   ```bash
+   cd rems-setup # Need to execute commands in directory with corresponding docker-compose.yml file located in the REMS repository
+   COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 DOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up
+   ```
 
 ### 4. Verify everything is working
 
-#### The fun part: Generate a test request
-
-1. Go to the EHR UI at <http://localhost:3000> and play the role of a prescriber.
-2. Click **Patient Select** button in upper left.
-3. Find **Jon Snow** in the list of patients and click the first dropdown menu next to his name.
-4. Select **2183126 (MedicationRequest) Turalio 200 MG Oral Capsule** in the dropdown menu.
-5. Click anywhere in the row to select Jon Snow.
-6. Click **Send Rx to PIMS** at the bottom of the page to send a prescription to the Pharmacist.
-7. Click **Submit to REMS-Admin** at the bottom of the page, which demonstrates the case where an EHR has CDS Hooks
-   implemented natively.
-8. After several seconds you should receive a response in the form of two **CDS cards**:
-9. Select **Patient Enrollment Form** on the returned CDS card with summary **Drug Has REMS: Documentation Required**.
-10. If you are asked for login credentials, use **alice** for username and **alice** for password.
-11. A webpage should open in a new tab, and after a few seconds, a questionnaire should appear.
-12. Fill out the questionnaire and hit **Submit REMS Bundle**.
-    - 12a. Alternatively fill out only some of the questionnaire for an asynchronous workflow and hit **Save to EHR**.
-    - 12b. Visit the Patient Portal at <http://localhost:3000/patient-portal> and lay the role of the patient.
-    - 12c. Login to the Patient Portal, use **JonSnow** for the username and **jon** 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 <http://localhost:3000> and select the latest saved questionnaire from the second
-      dropdown next to Jon 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**.
-13. A new UI will appear with REMS Admin Status and Pharmacy Status.
-14. Go to <http://localhost:5050> and play the role of a pharmacist.
-    <!-- 15. Click on **Log in as Admin** in the top right of the page -->
-    <!-- 16. Sign in with the pre-configured user Suzy:
-    	* Email: spharmichael@example.com
-    	* Password: suzy -->
-15. Click **Doctor Orders** in the top hand navigation menu on the screen
-16. See 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. Go Back to the EHR UI at <http://localhost:3000> and play the role of the prescriber again, select patient Jon 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
-    similar to those seen in step 7.
-19. Use the **Check ETASU** and **Check Pharmacy** buttons to get status updates on the prescription and REMS request
-20. Use the links for the **Prescriber Enrollment Form** and **Prescriber Knowledge Assessment** Questionnaires and
-    repeat steps 9-12 to submit those ETASU requirements and see how the ETASU status changes in both the Pharmacist UI
-    and Prescriber UI.
-21. Once all the REMS ETASU are met, go back to <http://localhost:5050> and play the role of the Pharmacist, using the
-    **Verify Order** button to move the prescription over to the **Verified Orders** Tab. Click on the **Verified
-    Orders** Tab and from there use the **Mark as Picked Up** button to move the prescription over to the **Picked Up
-    Orders** Tab.
-22. Go back to the SMART on FHIR App launched in step 17 and play the role of the prescriber using the **Check
-    Pharmacy** button to see the status change of the prescription.
-23. Lastly, repeat step 20 to open the **Patient Status Update Form** in the returned cards to submit follow
-    up/monitoring requests on an as need basis. These forms can be submitted as many times as need be in the prototype
-    and will show up as separate ETASU elements each time.
-
-Congratulations! The REMS Integration Prototype is fully installed and ready for you to use!
+See [this guide](Verify-REMS-Integration-Prototype-Works.md) to generate a test request.
 
 ## Cleanup and Useful Options
 
-### Uninstall the docker-compose application
+### Remove the Docker Compose containers to free up resources
 
 ```bash
-docker-compose down # Removes application servers
+docker compose down
 ```
 
-or if on M1/M2 mac use
+or if on M1/M2 Mac use
 
 ```bash
-docker-compose -f docker-compose-m1.yml down # Removes application servers
+docker compose -f docker-compose-m1.yml down
 ```
 
-### Cleanup docker resources
+### Cleanup Docker resources
 
 To remove all images, volumes, and artifacts set up during the install, run the following commands
 
@@ -237,11 +106,11 @@ docker volume prune
 docker network prune
 ```
 
-### Updating docker-compose application images
+### Updating Docker Compose application images
 
 ```bash
-docker-compose build --no-cache --pull [<service_name1> <service_name2> ...]
-docker-compose --force-recreate  [<service_name1> <service_name2> ...]
+docker compose build --no-cache --pull [<service_name1> <service_name2> ...]
+docker compose --force-recreate  [<service_name1> <service_name2> ...]
 # Options:
 #   --force-recreate                        Recreate containers even if their configuration and image haven't changed.
 #   --build                                 Build images before starting containers.
@@ -252,27 +121,16 @@ docker-compose --force-recreate  [<service_name1> <service_name2> ...]
 
 ### Setting Environment Variables
 
-How you set environment and path variables may vary depending on your operating system and terminal used. For instance,
-for zsh on MacOS you typically need to modify .zshrc instead of .bash_profile. To figure out how to set environment
-variables for your system, consult the guides below or google
-`how to permanently set environment/path variables on [insert operating system] [insert terminal type]`.
-
-    For more information on how to set environment variables consult these following guides:
-
-    - https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/
-    - https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html
-    - https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables
+See [this section](DeveloperSetupGuide.md/#setting-environment-variables-and-system-path) from the developer setup guide for more information.
 
-    > At this point, you should have credentials to access VSAC. If not, please refer to step 2 of [quick setup](#quick-setup) for how to create these credentials and return here after you have confirmed you can access VSAC. If this is not configured, you will get `org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found` errors.
+> At this point, you should have credentials to access VSAC. If not, please refer to step 2 of [quick setup](#quick-setup) for how to create these credentials and return here after you have confirmed you can access VSAC. If this is not configured, you will get `org.hl7.davinci.endpoint.vsac.errors.VSACValueSetNotFoundException: ValueSet 2.16.840.1.113762.1.4.1219.62 Not Found` errors.
 
-    > While this step is optional, we **highly recommend** that you do it so that DRLS will have the ability to dynamically load value sets from VSAC.
+> While this step is optional, we **highly recommend** that you do it so that REMS will have the ability to dynamically load value sets from VSAC.
 
-Set `VSAC_API_KEY` in your terminal environment to the API key obtained from your
-[UMLS profile page](https://uts.nlm.nih.gov/uts/edit-profile) - for more info on getting your VSAC key see
-[step 2 of quick setup section](#quick-setup). For setting up your environment, see the
-[Setting Environment Variables](#setting-environment-variables) section.
+> Be aware that if you have chosen to skip this step, you will be required to manually provide your VSAC credentials
+> at <http://localhost:8090/data> and hit **Reload Data** every time you want REMS to use new or updated value sets.
 
-Bash example: ```bash export VSAC_API_KEY=vsac_api_key ````
+Note: How you set environment and path variables may vary depending on your operating system and terminal used.
 
 ### Running with SSL
 
diff --git a/Verify-REMS-Integration-Prototype-Works.md b/Verify-REMS-Integration-Prototype-Works.md
new file mode 100644
index 0000000..0c037c9
--- /dev/null
+++ b/Verify-REMS-Integration-Prototype-Works.md
@@ -0,0 +1,39 @@
+# How to generate a test request
+
+1. Access the EHR UI at <http://localhost:3000>. You'll be redirected to <http://localhost:8180>. Authenticate with `alice` as the username and password. You'll then be redirected back to <http://localhost:3000> to play the role of a prescriber.
+2. Click **Select a Patient** in upper left.
+3. Locate **Jon Snow** in the list of patients and click the "Select a medication request" dropdown.
+4. Locate **Turalio 200 MG Oral Capsule (Medication request: 2183126)**.
+5. Click **Select** to assign Jon Snow as the medication request recipient.
+6. Click **Send Rx to Pharmacy** to dispatch the prescription.
+7. Click **Sign Order**, which demonstrates the case where an EHR has CDS Hooks natively.
+8. Await the arrival of two **CDS cards**.
+9. Click **Patient Enrollment Form** on the returned CDS card titled **Turalio REMS Patient Requirements**.
+10. A questionnaire will appear at <http://localhost:4040> in a new tab.
+11. Complete and submit the questionnaire via **Submit REMS Bundle**.
+    - 11a. For demonstrating an asynchronous workflow, partially complete the questionnaire and click **Save to EHR**.
+    - 11b. Visit the Patient Portal at <http://localhost:3000/#/patient-portal> as the patient.
+    - 11c. Login with **JonSnow** as the username and **jon** for the password.
+    - 11d. Select the saved Questionnaire, complete it, and click **Save to EHR**.
+    - 11e. Return to the EHR UI at <http://localhost:3000>, select the latest saved questionnaire from the second
+      dropdown next to Jon Snow's name, and continue as the prescriber.
+    - 11f. Click **Launch SMART on FHIR App** and fill out the remainder of the questionnaire, including the prescriber signature, then click **Submit REMS Bundle**.
+12. A new UI will appear with REMS Admin Status and Pharmacy Status.
+13. Visit the Pharmacy Information Management System at <http://localhost:5050> to play the role of a pharmacist.
+14. Click **Doctor Orders** in the top navigation.
+15. 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.
+16. Return to the EHR UI at <http://localhost:3000> and play the role of the prescriber again. Select patient Jon 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.
+17. From the medications dropdown select **Turalio 200 MG Oral Capsule**, which should populate the screen with cards
+    similar to those seen in step 7.
+18. Click **Check ETASU** and **Check Pharmacy** buttons to get status updates on the prescription and REMS request.
+19. Use the **Prescriber Enrollment Form** and **Prescriber Knowledge Assessment** links and
+    repeat steps 9-11 to submit those ETASU requirements and see how the ETASU status changes in both the pharmacist UI
+    and prescriber UI.
+20. Once all the REMS ETASU are met, return to <http://localhost:5050> as the pharmacist, and click **Verify Order** to move the prescription over to the **Verified Orders** tab. Click on the **Verified Orders** tab and click **Mark as Picked Up** to move the prescription over to the **Picked Up Orders** tab.
+21. Return to the SMART on FHIR App launched in step 16, assume the prescriber role, and click **Check Pharmacy** to view the prescription status.
+22. Repeat step 19 to submit followup/monitoring requests via the **Patient Status Update Form**, on an as need basis. These forms can be submitted multiple times in the prototype, with each submission appearing as a distinct ETASU element.
+
+Congratulations! The REMS Integration prototype is fully installed and ready for you to use!
diff --git a/docker-compose-local-build.yml b/docker-compose-local-build.yml
index 9033787..43c838b 100644
--- a/docker-compose-local-build.yml
+++ b/docker-compose-local-build.yml
@@ -23,7 +23,6 @@ services:
       - "8081:8081"
     build:
       context: ../test-ehr
-      # dockerfile: Dockerfile.dev
     environment:
       - oauth_token=http://host.docker.internal:8180/realms/ClientFhirServer/protocol/openid-connect/token
     extra_hosts:
@@ -44,7 +43,6 @@ services:
   request-generator:
     build:
       context: ../request-generator
-      # dockerfile: Dockerfile.dev
     container_name: rems_dev_request-generator
     environment:
       - REACT_APP_EHR_SERVER_TO_BE_SENT_TO_REMS_ADMIN_FOR_PREFETCH=http://host.docker.internal:8080/test-ehr/r4
@@ -57,7 +55,6 @@ services:
   rems-smart-on-fhir:
     build:
       context: ../rems-smart-on-fhir
-      # dockerfile: Dockerfile.dev
     container_name: rems_dev_rems-smart-on-fhir
     ports:
       - "4040:4040"
@@ -66,7 +63,6 @@ services:
   rems-administrator:
     build:
       context: '../rems-admin'
-      # dockerfile: Dockerfile.dev
     container_name: rems_dev_rems-administrator
     ports:
       - "8090:8090"
@@ -78,7 +74,6 @@ services:
   pims:
     build:
       context: ../pims
-      # dockerfile: Dockerfile.dev
     container_name: rems_dev_pims
     ports:
       - "5050:5050"
diff --git a/prototype-images/layout.png b/prototype-images/layout.png
new file mode 100644
index 0000000..1d39a5c
Binary files /dev/null and b/prototype-images/layout.png differ
diff --git a/setup-images/ClosingLaunchChromeTask.png b/setup-images/ClosingLaunchChromeTask.png
new file mode 100644
index 0000000..ce0cb60
Binary files /dev/null and b/setup-images/ClosingLaunchChromeTask.png differ
