Code Monkey home page Code Monkey logo

openelis-global-2's Introduction

OpenELIS Global 2

This is the OpenELIS rewrite onto Java Spring, and with all new technology and features. Please see our website for more information.

You can find more information on how to set up OpenELIS at our docs page

CI Status

Maven Build Status

Publish OpenELIS WebApp Docker Image Status

End to End QA Tests Status

Running OpenELIS in Docker

Running docker compose With pre-released docker images

docker-compose up -d

Running docker compose with docker images built directly from the source code

docker-compose -f build.docker-compose.yml up -d --build

Running docker compose With locally compiled/built Artifacts (ie the War file and React code) For Developers

  1. Fork the OpenELIS-Global Repository and clone the forked repo. The username below is the username of your Github profile.

     git clone https://github.com/username/OpenELIS-Global-2.git
    
  2. innitialize and build sub modules

    cd OpenELIS-Global-2
    git submodule update --init --recursive
    cd dataexport
    mvn clean install -DskipTests
    
  3. Build the War file

      cd ..
      mvn clean install -DskipTests
    
  4. Start the containers to mount the locally compiled artifacts

    docker-compose -f dev.docker-compose.yml up -d
    

    Note : For Reflecting Local changes in the Running Containers ;

  • Any Changes to the Front-end React Source Code will be directly Hot Reloaded in the UI

  • For changes to the Back-end Java Source code

    • Run the maven build again to re-build the War file

       mvn clean install -DskipTests
      
    • Recreate the Openelis webapp container

      docker-compose -f dev.docker-compose.yml up -d  --no-deps --force-recreate oe.openelis.org
      

The Instaces can be accesed at

Instance URL credentials (user : password)
Legacy UI https://localhost/api/OpenELIS-Global/   admin: adminADMIN!
New React UI https://localhost/ admin: adminADMIN!

Note: If your browser indicates that the website is not secure after accessing any of these links, simply follow these steps:

  1. Scroll down on the warning page.
  2. Click on the "Advanced" button.
  3. Finally, click on "Proceed to https://localhost" to access the development environment.

Formating the Source code after making changes

  1. After making UI changes to the frontend directory , run the formatter to properly format the Frontend code

    cd frontend
    npm run format
    
  2. After making changes to the backend directory, run the formatter to properly format the Java code

    mvn spotless:apply
    

openelis-global-2's People

Contributors

1satyamjaiswal avatar abertnamanya avatar adityadeshlahre avatar agaba-derrick avatar aggieshami avatar ankit-matth avatar atulyadav745 avatar calebslane avatar caseyi avatar caseynth avatar common-cold avatar dependabot[bot] avatar gitcliff avatar jona42-ui avatar konavivekramakrishna avatar lovelyfin00 avatar manishjha-04 avatar meddhiaka avatar mherman22 avatar mozzy11 avatar muiruri avatar phassoa avatar pkom17 avatar pmanko avatar pr4nj41 avatar rahul6603 avatar rossumg avatar sayed4900 avatar sherrif10 avatar tendomart 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  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  avatar  avatar

openelis-global-2's Issues

Add API pagination to Patient Search Results

When searching Patients , theres UI pagination to limit the number results displayed in the UI.
We should also implement API pagination to limit the number of results being returned by the API in a single call.
This commit c405137 can provide an insight on how pagination has been previously done on workplan search results.

The first step would be to create a new patient paging property ie org.openelisglobal.paging.patients.pageSize:99 in the PagingProperties

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Add run script for running or opening cypress/test

for simplication i just added two script in package.json for running or opening the cypress

// frontend/package.json
    "cy:run": "cypress run --headless --browser chrome",
    "cy:open": "cypress open --browser chrome"

Desired/Expected Result

  • by running the - npm run cy:run
    --headless Displays the browser instead of running headlessly Link
Screenshot 2024-02-26 at 9 24 56 PM
  • by running the npm run cy:open

The "browser" argument can be set to chrome, chromium, edge, electron, firefox to launch a browser detected on your system. Cypress will attempt to automatically find the installed browser for you. (Link)

Screen.Recording.2024-02-26.at.9.36.16.PM.mov

Crosstab installation check causes terminal to get stuck

When I tried to perform an automated installation of OpenELIS, the installation got stuck inside a gitlabrunner shell, because the input is not closed. This is what we can see by the "(END)", which is the way to end the postgres query viewer.

image

After the "(END)" the script does not continue.

The error is caused here. As we use the -L flag, instead of the -o flag for writing the output. You can read about the difference in the psql docs.

-L filename
--log-file=filename
Write all query output into file filename, in addition to the normal output destination.

Not the "in addition"

Add the right hierarchy of Breadcrumbs to pages

Most of the 0e3 pages miss BreadCrumps to link back to the previous parent page .
Add the right hierarchy of Breadcrumps to all the pages ,with the default linking back to the home page .
Example Pages where we have Breadcrumps is the Patient History page with breadcrumbs linking back to the parent Search Patient page and Home Page

see https://oe3.openelis-global.org/PatientResults/2

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Add API pagination to the Dashboard Order Lists

When displaying Order Lists on the Home Darshboard , theres UI pagination to limit the number results displayed in the UI.
We should also implement API pagination to limit the number of results being returned by the API in a single call.
This commit c405137 can provide insight on how pagination has been previously done on workplan search results.

Use the results paging property ie org.openelisglobal.paging.results.pageSize:99 in the PagingProperties

For testing local changes. see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Readme file

Kindly provide set of instruction for OpenElis setup in local system.

Select Component Lacks Placeholder Text for Guiding User Selection

Issue Description

In the Select component implementation, there is no placeholder text to guide the user to make a selection. This can lead to confusion or a less intuitive user experience, especially for new users unfamiliar with the expected actions.

Expected Behaviour

The Select component should display a placeholder text that clearly instructs the user to "Select an option". This placeholder should be visible when no selection has been made, guiding users towards making their first selection.

Steps to Reproduce

1.Navigate to the any page containing the Select component. For example- (https://localhost/WorkPlanByTest?type=test)
2.Observe the default state of the Select component before any interaction. Note the absence of clear, guiding placeholder text.

Validation component should support search Params via the URL

The Validation component only supports search parameters via the form input . see https://openelis28.openelis-global.org/validation?type=routine
It should also also support the following search params passed via the URL for the corresponding pages
ie
Validation ->

  • Routine. : testSectionId=<TestSectionId>
  • Search By Order. : accessionNumber=<accesionNumber>.
  • Search By Test Date : date=<date>
  • Search By Range Of Orders : accessionNumber=<accesionNumber>.

see Example supporting accession number via the URL for Results > By Order
ie. https://openelis28.openelis-global.org/result?type=order&doRange=false&accessionNumber=DEV01230000000000005

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Error while building OpenELIS-Global-2 project.

Hi here,

I'm trying to build and run OpenELIS-Global-2 while following this guide. I am getting the error below when I run sudo mvn clean install dockerfile:build:

[ERROR] Failed to execute goal on project openelisglobal: Could not resolve dependencies for project org.openelisglobal:openelisglobal:war:1.0.0.0: Could not find artifact org.itech:dataexport-api:jar:0.0.0.1

How can I go about resolving this? Looks like the artifact was never published to maven, I also tried installing the dataexport project but failed to proceed with the same error. Thanks in advance for the assistance.

WorkPlan component should support search Params via the URL

The WorkPlan component only supports search parameters via the form input . see https://openelis28.openelis-global.org/WorkPlanByTestSection
It should also also support the following search params passed via the URL for the corresponding pages
ie
WorkPlan ->

  • By Test Type : testId=<TestId>
  • By Panel Type : panelId=<PanelId>
  • By Unit: testSectionId=<TestSectionId>
  • By Priority: priority=<Priority>

see Example supporting accession number via the URL for Results > By Order
ie. https://openelis28.openelis-global.org/result?type=order&doRange=false&accessionNumber=DEV01230000000000005

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Complete the Home DashBoard

The current home dashboard on OpenELIS 3.x (branch 2.8) only displays cards with the Dashboard counts.
see https://openelis28.openelis-global.org/
Complete the dashboard so that the cards are clickable and can display the actual corresponding list of orders

see the Requirements document. https://docs.google.com/document/d/1bH1eGBnn700OGshG-kIFInHPKz0c8XEK

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Add Automation to Merge Conflicts Detection

Problem:
Currently, it's difficult to detect merge conflicts during code review. Authors may not be aware of conflicts until they occur, leading to delays and inefficiencies in the review process.

Proposed Solution:
Implement automation to detect merge conflicts automatically. When a conflict arises, apply a label to the pull request and post a comment notifying the author. The comment should specifically mention the author and advise them to rebase their branch against the base branch to resolve the conflict efficiently.

Refer : #730

FORMAT FOR ISSUE REPORTING- READ THIS FIRST

If you have an issue with OpenELIS Global to report, please open a New Issue and write up your issue with the following information:

  1. Note the section, tab, or page of OpenELIS that is affected by your issue. E.g. Add Order, Manage Test Catalog- Edit Sample Types, Patient Report.

  2. Describe in detail the steps you were completing when you encountered the issue. E.g. I scanned the accession number barcode, then entered the order information. When I tried to add a sample type for Whole Blood, the system returned an error message that stated: SYSTEM ERROR 523. This did not happen when I added other sample types Plasma and Serum.

  3. Include the https:// address on which you encountered the bug. E.g. https://github.com/I-TECH-UW/OpenELIS-Global-2/issues/new

  4. Include screen shots. Attach them by dragging and dropping, selecting or pasting the files.

  5. Indicate the severity of the issue using the following ratings: 1- This issue prevents us from using OpenELIS 2- This issue makes OpenELIS slow, difficult, or confusing but we are able to keep working with it 3- This issue is something we would like to see improved in the future but does not affect our work much

Publish built OpenELIS image on Github Container Registry

We should have a Dockerfile that can be built using the following type of workflow, given a specific context:
https://github.com/B-TECHBW/openhim-mediator-fhir-converter/blob/handlebars/.github/workflows/publish.yml

This script provides published images that can be used in docker-compose files directly, like this: https://github.com/B-TECHBW/openhim-mediator-fhir-converter/pkgs/container/openhim-mediator-fhir-converter

The Dockerfile can be a multi-stage build that calls the various scripts that are usually executed during an install.

@mozzy11 @CalebSLane @caseyi thoughts?

Add DatePicker to `Results > By Test Date` page

Use DatePicker instead of TextInput in Results > By Test Date page -

  • consistency for date input across project (e.g. DatePicker is used in Patient > Add/Modify Patient page)
  • easier for users to input date
  • doesn't allow user to input any random text

Numeric Result Fields should dynamically change color in the new UI

in 2.7 when the result was out of the normal range the field would be highlighted in yellow, when outside the valid range it would be red (and would optionally put up an alert if the configuration was turned on), this validation didn't seem to make it to OpenELIS 3.

See results entry fields on the old UI https://oe3.openelis-global.org/result?type=patient&doRange=false

see results entry fields on 3.x https://oe3.openelis-global.org/api/OpenELIS-Global/PatientResults?accessionNumber=&patientID=5

For testing local changes. see. https://github.com/I-TECH-UW/OpenELIS-Global-2?tab=readme-ov-file#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file

test linked to specific sample types

test in the order tab have been linked to specific sample types. this is creating a problem because one sample type can have many several test that can be performed on it. all the test that should be present on a sample type is not being displayed.
when trying to add a test to a sample type an error code appears.

  • new test panel could not be created.
  • the list of programs in the add other tab could not be modified
  • new test could not be added
  • we need to have test displayed in the add other tab with respect to the departments where the tests will be performed. and not the sample types.
  • the results of new patients were not being saved.

hope the issues can be resolved,
best regards,
Mr ubheeram j
virology dept.
chl,
mauritius

Suggestion of using tailwind instead of raw css and jsx component

Tailwind CSS offers a utility-first approach, streamlining your styling process by providing pre-defined classes for common styles. By leveraging Tailwind, you can write cleaner, more maintainable code without needing to manage complex CSS files. Integrating Tailwind into your project can improve development speed and consistency across components. Consider adopting Tailwind to simplify your styling workflow and enhance code readability

Add translation for the Tags on the validation page

  • Fix translation for the Tags on the validation page
    The labels for Save all tests, save all normals have a typo and no longer translate to French.
    Add French translation to these and investigate more other components missing translations
    see https://oe3.openelis-global.org/validation?type=routine

  • When switching from English to French , some Menu labels miss French translations

For testing local changes. see. https://github.com/I-TECH-UW/OpenELIS-Global-2?tab=readme-ov-file#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file

Missing method getStartTime

I am trying to setup a dev environment using eclipse 2023-03 and OpenELIS 2.6.3.2 tag. It throws error of missing function getStartTime() in DataExportServiceImpl class. Anything I am getting wrong

Results component should support search Params via the URL

The Results component only supports search parameters via the form input . see https://openelis28.openelis-global.org/result?type=unit&doRange=false
It should also also support the following search params passed via the URL for the corresponding pages
ie
Results ->

  • By Unit. : testSectionId=<TestSectionId>
  • By Patient. : patientID=<PatientID>
  • By Order : accessionNumber=<accesionNumber>. (already implemented)
  • By Range or Oder Numbers : accessionNumber=<accesionNumber>
  • By Test Date : collectionDate=<date>&recievedDate=<date>&selectedTest=<TestId>&selectedAnalysisStatus=<StatusId>&selectedSampleStatus=<SampleStatusId>

see Example supporting accession number via the URL for Results > By Order
ie. https://openelis28.openelis-global.org/result?type=order&doRange=false&accessionNumber=DEV01230000000000005

For testing local changes . see. https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Airport Health Laboratory issues - LIMS

Dear Sir/Madam,

                                                                Subject: LIMS - Gap in number labels
  1. Since the start of LIMS use in AHL, there have been multiple instances when, printing barcodes labels to be used on sample tubes, there were gaps between end number of one batch start umber of the following batch of barcode labels.

  2. The gaps were between 10 to 15 numbers skipped. As replacement, AHL staff had to manually write on blank labels to ensure continuity of sample numbering.

  3. On Monday 11/01/2021, the gap had suddenly increased to 1200. The existing stock of barcode labels ends on 10515 when displaying a Print Preview of barcodes to be printed through LIMS, the next immediate batch of barcode labels started with 11725

  4. The importance of continuity in the numbering of samples for AHL lies in the fact that the last barcode number used for the day's shift corresponds to the total number of samples processed since the start of AHL operations

Regards,

AHL Team

Add missing translation in the new React FrontEnd

You need to replace hardcoded labels with translations using react-intl
With in an Element Context do

const intl = useIntl();
{intl.formatMessage({ id: "message.code" })}

Outside an elemnt Context , do
<FormattedMessage id="message.code" />
Before you add a new Message in the message source files. , ensure the message doesn't exist already

An example in the CreatePatient component, most of the field labels are hard coded. ie. "Unique Health ID number"

Another component where translations are needed is the Search Patient Form

The above is just an example and you can look through other components.

Fix Responsiveness of Modify Order Page

Issue Description:
The Modify Order page currently lacks responsiveness (on max-width <1056px), making it difficult for users to interact with the page across various devices and screen sizes. To enhance user experience and ensure usability, we need to address the responsiveness issues on this page.

To See issue visit: https://localhost/SampleEdit?type=readwrite
Current Behaviour
befi
Expected Behaviour
After1

Provide config for setup_OpenELIS.py in file

It would be very convenient to provide all the settings that are needed in a settings file (e.g. yml). So when we execute setup_OpenELIS.py, we dont need to do it interactivley.

Proposal (settings.yml):

server:
    ip: "127.0.0.1"
    port: "8443"

security:
    keystore:
        password: "abcde12345"

Add UI-validation to the new Add order page in the new Front end

The new Add Order Form can be submitted when some Mandatory values are missing . This leads to failure because of the backend validation.

Madatory fields are

Add Patient Page
  • Patient National Id
  • Patient Birth Date
  • Patient Gender
Add Sample Page
  • Atleast one sample
Add Order Page
  • Lab Number
  • SIte Name
  • Requester's Last Name: 
  • Requester's First Name: 

Steps to Reproduce

  1. When you go to Add order https://openelis28.openelis-global.org/AddOrder
    2 Click Next until you find Submit
  2. Click Submit.The form will submit but shows a Failre Notification

The Form shouldn't be submitted if any of the above fields is missing.

To reproduce localy see https://github.com/I-TECH-UW/OpenELIS-Global-2/tree/2.8#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file-and-local-frontend-source-files

Fix Patient ID Validation Notification Popups

On loading an existing patient, ID Validation Notifications pop up by default.
But that doesn't make sense for an existing patient.
The Patient ID notifications should only pop up when a new Patient Is Being Created with an Existing IDs which are already in use.
For an existing Patient , The notifications should popup only when the IDs are being changed to Existing IDs which are already in use.

For testing local changes. see. https://github.com/I-TECH-UW/OpenELIS-Global-2?tab=readme-ov-file#running-docker-containers-with-locally-compiled-artifacts-ie-the-war-file

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.