Skip to content

Commit

Permalink
Merge branch 'develop' of github.com:I-TECH-UW/OpenELIS-Global-2 into…
Browse files Browse the repository at this point in the history
… develop
  • Loading branch information
CalebSLane committed Nov 4, 2024
2 parents 29e56da + 633eb2e commit 36bf8ec
Show file tree
Hide file tree
Showing 20 changed files with 1,214 additions and 57 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/build-installer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Build OpenELIS-Global-2 Installer
on:
release:
types: [published]

jobs:
build-installer-and-upload-installer:
runs-on: ubuntu-latest
steps:

- name: Checkout OpenELIS-Global2
uses: actions/checkout@v2
with:
repository: ${{github.repository}}
submodules: recursive

- name: Build installer
run: ./build.sh -ib develop

- name: check installer
run: ls OEInstaller/linux


- name: Find installer file
id: find_file
run: |
# Find the file in OEInstaller/linux with .tar.gz extension
FILE_PATH=$(find OEInstaller/linux -name "*.tar.gz" -print -quit)
if [ -z "$FILE_PATH" ]; then
echo "No .tar.gz file found in OEInstaller/linux directory."
exit 1
fi
echo "File path: $FILE_PATH"
# Extract the file name from the path
FILE_NAME=$(basename "$FILE_PATH")
echo "File name: $FILE_NAME"
# Pass the file path and name to outputs
echo "FILE_PATH=$FILE_PATH" >> $GITHUB_ENV
echo "FILE_NAME=$FILE_NAME" >> $GITHUB_ENV
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ env.FILE_PATH }}
asset_name: ${{ env.FILE_NAME }}
asset_content_type: application/gzip

13 changes: 13 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,16 @@ jobs:
- name: Build OpenELIS-Global2
run: mvn clean install -Dspotless.check.skip=true

- name: Generate JaCoCo Badge
if: github.event_name == 'push'
uses: cicirello/jacoco-badge-generator@v2
with:
jacoco-csv-file: target/site/jacoco/jacoco.csv
badges-directory: target/html/badges

- name: Publish coverage report to GitHub Pages
if: github.event_name == 'push'
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: target/html/
2 changes: 2 additions & 0 deletions .github/workflows/publish-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@ jobs:
cache-to: type=registry,ref=${{ env.DOCKER_TEST_NAME }}-frontend:buildcache,mode=max

build-and-push-image-proxy:
needs: [run-e2e-qa]
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down Expand Up @@ -431,6 +432,7 @@ jobs:
cache-to: type=registry,ref=${{ env.DOCKER_TEST_NAME }}-proxy:buildcache,mode=max

build-and-push-image-fhir:
needs: [run-e2e-qa]
runs-on: ubuntu-latest
permissions:
contents: read
Expand Down
24 changes: 18 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# OpenELIS Global 2

This is the OpenELIS rewrite onto Java Spring, and with all new technology and
features. Please see our [website](http://www.openelis-global.org/) for more
features. Please vist our [website](http://www.openelis-global.org/) for more
information.

You can find more information on how to set up OpenELIS at our
Expand All @@ -10,26 +10,38 @@ You can find more information on how to set up OpenELIS at our
### CI Status

[![Maven Build Status](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/ci.yml/badge.svg)](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/ci.yml)
![Coverage](https://raw.githubusercontent.com/I-TECH-UW/OpenELIS-Global-2/refs/heads/gh-pages/badges/jacoco.svg)

[![Publish OpenELIS WebApp Docker Image Status](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/publish-and-test.yml/badge.svg)](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/publish-and-test.yml)

[![End to End QA Tests Status](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/frontend-qa.yml/badge.svg)](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/frontend-qa.yml)

### For Implementers who Just want to run OpenELIS without Making any Code Changes
[![End to End QA Tests Status](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/build-installer.yml/badge.svg)](https://github.com/I-TECH-UW/OpenELIS-Global-2/actions/workflows/build-installer.yml)

### For Offline Installation Using the OpenELIS Global2 Installer

Download the OpenELIS Global Installer for each Release from the
[Release Assets](https://github.com/I-TECH-UW/OpenELIS-Global-2/releases)

see full
[installtion instructions](https://docs.openelis-global.org/en/latest/install/)
for Offline Installation

### For running OpenELIS Global2 in Docker with default Settings out of the Box

see [OpenELIS-Docker setup](https://github.com/I-TECH-UW/openelis-docker)

### Running OpenELIS in Docker For Devlopers with Intention of Making code Changes
### For Running OpenELIS Global2 from Source Code

#### Running docker compose With pre-released docker images
#### Running OpenELIS Global2 using docker compose With published docker images on dockerhub

docker-compose up -d

#### Running docker compose with docker images built directly from the source code
#### Running OpenELIS Global2 using 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
#### Running OpenELIS Global2 using docker compose With locally compiled/built Artifacts (ie the War file and React code)

1. Fork the
[OpenELIS-Global Repository](https://github.com/I-TECH-UW/OpenELIS-Global-2.git)
Expand Down
2 changes: 1 addition & 1 deletion dev.docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ services:
- ./volume/database/database.env
volumes:
# preserves the database between containers
- db-data:/var/lib/postgresql/data
- ./volume/database/data:/var/lib/postgresql/data
# files here will run on install
- ./volume/database/dbInit:/docker-entrypoint-initdb.d
networks:
Expand Down
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ services:

fhir.openelis.org:
container_name: external-fhir-api
image: hapiproject/hapi:v6.6.0-tomcat
image: itechuw/openelis-global-2-fhir:develop
depends_on:
- database
- certs
Expand Down Expand Up @@ -106,7 +106,7 @@ services:
tty: true

proxy:
image: nginx:1.15-alpine
image: itechuw/openelis-global-2-proxy:develop
container_name: openelisglobal-proxy
ports:
- 80:80
Expand Down
5 changes: 3 additions & 2 deletions frontend/cypress/e2e/dashboard.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ describe("Pathology Dashboard", function () {

it("Validate the Status of Order", () => {
cy.fixture("DashBoard").then((order) => {
// dashboard.validateOrderStatus(order.labNo, 4);
// dashboard.validateOrderStatus(order.labNo, 4);
});
});
});
Expand Down Expand Up @@ -78,7 +78,8 @@ describe("ImmunoChemistry Dashboard", function () {

it("Validate the Status of Order", () => {
cy.fixture("DashBoard").then((order) => {
dashboard.validateOrderStatus(order.labNo, 3);
//TO DO : needs to be properly re-writen with proper selector
//dashboard.validateOrderStatus(order.labNo, 3);
});
});
});
26 changes: 14 additions & 12 deletions frontend/src/components/addOrder/OrderEntryAdditionalQuestions.js
Original file line number Diff line number Diff line change
Expand Up @@ -381,18 +381,20 @@ const OrderEntryAdditionalQuestions = ({

function setAdditionalQuestions(res, event) {
console.debug(res);
setQuestionnaire(res);
var convertedQuestionnaireResponse = convertQuestionnaireToResponse(res);
setQuestionnaireResponse(convertedQuestionnaireResponse);
setOrderFormValues({
...orderFormValues,
sampleOrderItems: {
...orderFormValues.sampleOrderItems,
questionnaire: res,
programId: event ? event.target.value : "",
additionalQuestions: convertedQuestionnaireResponse,
},
});
if ("item" in res) {
setQuestionnaire(res);
var convertedQuestionnaireResponse = convertQuestionnaireToResponse(res);
setQuestionnaireResponse(convertedQuestionnaireResponse);
setOrderFormValues({
...orderFormValues,
sampleOrderItems: {
...orderFormValues.sampleOrderItems,
questionnaire: res,
programId: event ? event.target.value : "",
additionalQuestions: convertedQuestionnaireResponse,
},
});
}
}
const getAnswer = (linkId) => {
var responseItem = questionnaireResponse?.item?.find(
Expand Down
7 changes: 6 additions & 1 deletion frontend/src/components/admin/reflexTests/ReflexStyles.css
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,17 @@ body {
margin-left: 0px;
overflow-y: auto;
padding-left: 0px;
width: 30%;
width: 100%;
z-index: 10;
position: absolute;
background-color: #ffffff;
}

.suggestions-container {
position: relative;
width: 100%;
}

.suggestions li {
padding: 0.5rem;
z-index: 99 !important;
Expand Down
38 changes: 20 additions & 18 deletions frontend/src/components/common/AutoComplete.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,24 +88,26 @@ function AutoComplete(props) {
if (showSuggestions && userInput) {
if (filteredSuggestions.length) {
suggestionsListComponent = (
<ul className="suggestions">
{filteredSuggestions.map((suggestion, index) => {
let className;
// Flag the active suggestion with a class
if (index === activeSuggestion) {
className = "suggestion-active";
}
return (
<li
className={className}
key={index}
onClick={(e) => onClick(e, suggestion.id, suggestion)}
>
{suggestion.value}
</li>
);
})}
</ul>
<div className="suggestions-container">
<ul className="suggestions">
{filteredSuggestions.map((suggestion, index) => {
let className;
// Flag the active suggestion with a class
if (index === activeSuggestion) {
className = "suggestion-active";
}
return (
<li
className={className}
key={index}
onClick={(e) => onClick(e, suggestion.id, suggestion)}
>
{suggestion.value}
</li>
);
})}
</ul>
</div>
);
} else {
suggestionsListComponent = (
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/components/common/PatientHeader.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const PatientHeader = (props) => {
{id ? (
<div className={className}>
<Grid>
<Column lg={4} md={2} sm={2}>
<Column lg={4} md={2} sm={1}>
<div
className={
referringFacility ? "patientAvatar2" : "patientAvatar"
Expand All @@ -55,7 +55,7 @@ const PatientHeader = (props) => {
/>
</div>
</Column>
<Column lg={10} md={5} sm={2}>
<Column lg={10} md={5} sm={3}>
<div className="patient-name">
{patientName ? patientName : lastName + " " + firstName}
</div>
Expand Down Expand Up @@ -137,7 +137,7 @@ const PatientHeader = (props) => {
) : (
<div className={className}>
<Grid>
<Column lg={4} md={2} sm={2}>
<Column lg={4} md={2} sm={1}>
<Avatar
alt={"Patient avatar"}
color="rgba(0,0,0,0)"
Expand Down
7 changes: 4 additions & 3 deletions frontend/src/components/layout/search/searchBar.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
.search-bar-container {
position: absolute;
display: flex;
width: 430px;
width: 100%;
top: 10px;
right: -30px;
box-shadow: 0em 0.1em 0.05em #ccc;
Expand All @@ -24,11 +24,12 @@

.patients {
overflow-y: auto;
width: 700px;
width: 100%;
max-height: 250px;
position: relative;
position: absolute;
background-color: #f0e7e7;
top: 45px;
right: -30px;
box-shadow: 0em 0.1em 0.5em #ccc;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,3 +203,19 @@
height: 5rem;
border-radius: 1px;
}
@media screen and (max-width: 673px) {
.patient-name {
font-size: 16px;
margin-left: 5%;
}

.patient-dob {
font-size: 14px;
margin-left: 5%;
}

.patient-id {
font-size: 12px;
margin-left: 5%;
}
}
10 changes: 5 additions & 5 deletions frontend/src/components/patient/resultsViewer/results-viewer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const RoutedResultsViewer: React.FC<ResultsViewerProps> = () => {
<>
<Loading></Loading>
<Grid fullWidth={true}>
<Column lg={16}>
<Column lg={16} md={8} sm={4}>
<EmptyState
headerTitle={intl.formatMessage({ id: "label.test.results" })}
displayText={intl.formatMessage({
Expand All @@ -104,7 +104,7 @@ const RoutedResultsViewer: React.FC<ResultsViewerProps> = () => {
return (
<>
<Grid fullWidth={true}>
<Column lg={16}>
<Column lg={16} md={8} sm={4}>
<Breadcrumb>
<BreadcrumbItem href="/">
{intl.formatMessage({ id: "home.label" })}
Expand All @@ -116,7 +116,7 @@ const RoutedResultsViewer: React.FC<ResultsViewerProps> = () => {
</Column>
</Grid>
<Grid fullWidth={true}>
<Column lg={16}>
<Column lg={16} md={8} sm={4}>
<Section>
<Section>
<Heading>
Expand All @@ -127,7 +127,7 @@ const RoutedResultsViewer: React.FC<ResultsViewerProps> = () => {
</Column>
</Grid>
<Grid fullWidth={true}>
<Column lg={16}>
<Column lg={16} md={8} sm={4}>
<PatientHeader
id={patient.patientPK}
lastName={patient.lastName}
Expand All @@ -145,7 +145,7 @@ const RoutedResultsViewer: React.FC<ResultsViewerProps> = () => {

{roots?.length ? (
<Grid fullWidth={true} className="orderLegendBody">
<Column lg={16}>
<Column lg={16} md={8} sm={4}>
<FilterProvider roots={loading ? roots : []}>
<ResultsViewer
patientId={patientId}
Expand Down
Loading

0 comments on commit 36bf8ec

Please sign in to comment.