GithubHelp home page GithubHelp logo

femr / femr Goto Github PK

View Code? Open in Web Editor NEW
51.0 51.0 208.0 1.31 GB

A simple and fast EMR system used in low resource settings.

Home Page: http://www.teamfemr.org

License: Other

Java 59.38% HTML 19.42% Scala 0.09% CSS 3.42% JavaScript 14.12% Shell 0.21% Dockerfile 0.07% Python 3.30%

femr's Introduction

FEMR - Fast Electronic Medical Records

Build Status

Scala CI

Description

fEMR is a fast EMR solution for remote clinics who depend on speed and ease of use rather than complex features. Check out Team fEMR's website for more information and a live demo.

Community

  1. Slack
  2. JIRA
  3. Team FEMR

tEMR Community

  1. JIRA

Dependencies

Contributing

For more information on contributing, please see the CONTRIBUTING.md file. For details regarding installation and deployment, continue reading.

CI

This repo uses Github Actions workflows for continuous integration, which can be found under the Actions tab in Github (https://github.com/CPSECapstone/zzs-femr/actions?query=workflow%3A%22Scala+CI%22). The Scala CI workflow runs 'sbt test' whenever code is pushed or a pull request is made to the main branch.

Setting up weekly backup reminder

  • It is very important for the administrator to backup local data to the remote database.
  • A cronjob can be set up before a kit is deployed to automatically display a message once a week.
  1. In the command line, type crontab -e
  2. A text editor should appear.
  3. Add the following line to this file: 0 11 * * 5 /util/WeeklyReminder.sh
  4. This will display a reminder pop up at 11:00AM every Friday.

Warnings

  • fEMR is not HIPAA compliant (... yet).
  • fEMR is not meant to diagnose, treat, cure or prevent disease.
  • fEMR may attempt to establish a secure remote connection when internet access becomes available. This behavior is configurable and turned off by default.

Questions?

Email: [email protected]

Running the application using Docker

  1. Make sure you have Docker installed and running on your machine.
  2. Clone the FEMR/femr repo: git clone https://github.com/FEMR/femr.git
  3. Checkout the super-femr branch: git checkout super-femr.
  4. Cd into the femr directory: cd femr
  5. Run docker-compose up to start the app.
  6. If step 5 successfully finishes, then the app will be available at http://localhost:9000/

Setting up the project with IntelliJ on macOS

Step 1: Download and Install the following Software and Dependencies

Step 2: Clone the repo and checkout super-femr branch

  • git clone https://github.com/FEMR/femr.git
  • git checkout super-femr

Step 3: Setting up the DB

  1. Make sure your MySQL server is running on your machine.
  2. Open the MySQL Workbench.
  3. Select the db icon to create a new schema and call it femr_db.
screenshot

Image

  1. Under the Administration tab, select User and Priviliges. Then Add account and add Login name and Password of your preference. Save the login and password because you will need it in the later steps.
    • For this example, the username is testing and password is password.
screenshot

Image

  1. Then go to the Schema Privileges tab, select Add Entry... for the user you created in the previous step, and select the femr_db schema.
screenshot

Image

Image

  1. Give all of the rights, except the GRANT OPTION.
screenshot

Image

Step 4: Configuring IntelliJ

  1. Open IntelliJ IDEA Ultimate. Then open the femr project with super-femr branch checked out.

  2. In IntelliJ IDEA Ultimate and go to Preferences -> Plugins -> click Marketplace -> Then download Scala and Play Framework. Then restart the IDE.

  3. Inside femr/conf folder, create a new file named application.dev.conf.

  4. Copy the following settings inside and save it. Note that db.default.username and db.default.password values must match the account and password from the Step 3.3. For this example, my username is testing and password is password.

include "application.conf"
settings.researchOnly=0
db.default.url="jdbc:mysql://127.0.0.1:3306/femr_db?characterEncoding=UTF-8&useSSL=false"
db.default.username="testing"
db.default.password="password"
photos.defaultProfilePhoto="./public/img/defaultProfile.png"
csv.path="./Upload/CSV"
  1. Go to Run -> Edit Configurations -> click on the + sign -> Play 2 App.
    • If Play 2 App doesn't appear, try restarting the IDE.
screenshot

Image

  1. Then, click on Edit Environment Variables -> add the following two environment variables: user.dir and config.file (make sure to change the value based on where the two are stored on your local machine). Then click apply and ok.
    • config.file is the path for application.dev.conf.
    • user.dir is the path for the project.
screenshot

Image

  1. Go to File -> Project structure -> Under the Project tab -> Select Project SDK and set it to 1.8.
    • You can download 1.8 directly from IntelliJ. If so, choose 1.8 Amazon Correto.
screenshot

Image

  1. Change the language level to 8.
screenshot

Image

  1. On the rightmost side of IntelliJ, if there is a vertical line containing sbt. Click on the sbt tab and then click the refresh symbol.
    • If there isn’t sbt on the right, remove the .idea folder from the root directory of the project. In the command line, traverse to the root directory and do: rm -r .idea. Then redo step 2 and then continue. If still does not work try removing the project and recloning it again.
screenshot

Image

  1. After that runs, click on the Play button to run the configuration. If everything was set up correctly, the website should open up on another window. Select “Apply this script now”.
screenshot

Image

Troubleshooting

  1. Try deleting the .idea folder and rerunning sbt
  2. Confirm you have the absolute path in your environment variables
  3. Try to re-apply the plugins Scala and Play Framework
  4. Otherwise, try cloning the femr github and going through the steps once more.
  5. Try invalidating Intellij IDEA cache.

femr's People

Contributors

aiden-jacobs avatar ajsclyn avatar akrebs1202 avatar amney14 avatar andrefarah avatar aserhan avatar b6025 avatar codeitandloadit1 avatar cohen-carlisle avatar connor-addison-h avatar davidpalombo avatar delasteve avatar djump13 avatar elenarfowler avatar emichaux avatar har150n avatar hmaziz avatar jasonbarba19 avatar jerelldr avatar joonhlee100 avatar kdunlap avatar mhayes2772 avatar njr44 avatar noah1013 avatar ntreese avatar oshorab avatar seanhershey avatar siriwans avatar thebear1616 avatar zanni022 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

femr's Issues

Ability to edit vitals

A physician should be able to edit the vitals on the Medical page. Both the old vitals (taken by the nurse in Triage) and the new replacements should be recorded.

Update User

Users should be able to update their profile

User Creation

Add ability for administrators to add users to the system

User Roles

Add ability for administrators to assign roles to users.

Submitting patient age as a decimal causes an error

When submitting a new patient if a decimal is entered in the age field an Execution exception error occurs. Also entering 0 or negative numbers are acceptable values, they probably shouldn't be. Age should probably have a maximum limit of 123 years (the oldest recorded human was 122 years old.)

Triage Page - Firefox vs. Chrome

Can someone confirm whether or not the difference in the page layout is a result of my browser settings. I've tried disabling all Firefox add-ons but it doesn't resolve the issue.

triage_firefox_chrome

Populate a detailed encounter search

When a user clicks an encounter on the search page it will bring the user to a detailed encounter page.

There is no information about the encounter here yet.

A physician should also have quick access to this information about a patient from the medical page.

prereq: #236

Recognizable Errors

After validation, errors should be red or have some kind of indicator rather than just a placeholder on the input element.

Pregnancy Input

Right now pregnancy is stored as an integer value representing the number of weeks. A nurse should be able to say that a patient is pregnant and optionally enter the number of weeks.

Create new patient triage record

Triage should be able to enter vitals and statistics for the patient

  • Respiratory/Breathing Rate
  • Blood Pressure
  • Temperature (F)
  • Height (inches)
  • Weight (lbs)

Eliminate duplicate code in view

Right now each view has an index and a populated version of the index. Each of which are two different files with the same HTML markup. One file (populated) accepts a viewModel then populates relevant fields, the other file (not populated) leaves relevant fields empty.

This is bad.

Create Evolutions for medical data

A doctor cannot submit HPI and Treatment information yet because a table does not exist for the data. Update the database model to reflect the changes.

Consider patients with the same name

When searching for a patient that has the same name as another patient, errors happen.

The error page should display the different patients and let a user pick which one.

Patient Informational PDF

Be able to create a PDF with patient history information so the patient can bring this with them in the next visit.

Add validation to user creation

Validate input on form in business layer.

  • First name is not blank
  • Last name is not blank
  • Email is not blank and is a proper format
  • Password has a min length of 8 characters
  • Display friendly errors next to field
  • Repopulate fields

Add create new encounter

From the search page, a user should be able to create a new encounter for the patient they are viewing.

Calculate BMI

BMI should be calculated when a patient has their height/weight recorded.

HIPAA Compliance

Figure out a way for software to be HIPAA compliant in remote clients for research in the US.

  • Automatic logoff (Issue #21)
  • Removal of patient identifiers (Issue #31)

Fix roles

Right now we have Admin, Physician, Pharmacist, and Researcher. We need to add a Nurse.

Test a landing page for Medical and Pharmacy

Unlike the Triage page, the Medical and Pharmacy pages serve no purpose when they aren't populated. It might be better to have a "Search for a patient now!" type landing page for both pages.

Remove patient identifiers in research tab

Remove the 18 specific identifiers listed in the Privacy Rule and determine there is no other information that may identify the individual. The identifiers are:

  • names
  • geographic subdivisions smaller than a state
  • all elements of dates (except year) related to an individual (including dates of admission, discharge, birth, death and, for individuals over 89 years old, the year of birth must not be used)
  • telephone numbers
  • FAX numbers
  • electronic mail addresses
  • Social Security numbers
  • medical record numbers
  • health plan beneficiary numbers
  • account numbers
  • certificate/license numbers
  • vehical identifiers and serial numbers including license plates
  • device identifiers and serial numbers
  • web URLs
  • internet protocol addresses
  • biometric identifiers (including finger and voice prints)
  • full face photos and comparable images
  • any unique identifying number, characteristic or code

Relates to issue #4

Create new patient record

Users can create a new patient record in the system.

For age, two fields should be present. Age and birthdate. If user enters year, system will default to Jan 1, (current year - age)

  • First name
  • Last name
  • Age
  • Sex
  • Street address
  • City
  • State
  • Zip

Age Input

Age is currently being input as an integer by default. It should be input as a date with the option of using an integer for age.

The patient table should store the date so we can always calculate the current age.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.