From d6b08544282a9ce2414e2465ff8c95646d47b02b Mon Sep 17 00:00:00 2001 From: Masimbon3 <108567779+Masimbon3@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:13:39 +0200 Subject: [PATCH] chore(branding): replace HospitalRun with Open Health --- README.md | 4 +- public/index.html | 4 +- .../shared/components/navbar/Navbar.test.tsx | 6 +- src/dashboard/Dashboard.tsx | 81 ++++++++++++++++++- src/shared/components/navbar/Navbar.tsx | 2 +- .../ar/translations/dashboard/index.ts | 12 +++ .../de/translations/dashboard/index.ts | 12 +++ .../enUs/translations/dashboard/index.ts | 12 +++ .../es/translations/dashboard/index.ts | 12 +++ .../fr/translations/dashboard/index.ts | 12 +++ .../id/translations/dashboard/index.ts | 12 +++ .../it/translations/dashboard/index.ts | 12 +++ .../ja/translations/dashboard/index.ts | 12 +++ .../ptBr/translations/dashboard/index.ts | 12 +++ .../ru/translations/dashboard/index.ts | 12 +++ .../tr/translations/dashboard/index.ts | 12 +++ .../zhCN/translations/dashboard/index.ts | 12 +++ src/user/user-slice.ts | 6 +- 18 files changed, 234 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 4a1bee2db..d9d15b8a9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# HospitalRun Frontend +# Open Health Frontend
@@ -9,7 +9,7 @@
-React frontend for [HospitalRun](http://hospitalrun.io/): free software for developing world hospitals. +React frontend for Open Health: free software for healthcare delivery teams. --- diff --git a/public/index.html b/public/index.html index d9d7dd210..42162d788 100644 --- a/public/index.html +++ b/public/index.html @@ -7,7 +7,7 @@ - HospitalRun + Open Health diff --git a/src/__tests__/shared/components/navbar/Navbar.test.tsx b/src/__tests__/shared/components/navbar/Navbar.test.tsx index 0712ed3c4..fa50c33d8 100644 --- a/src/__tests__/shared/components/navbar/Navbar.test.tsx +++ b/src/__tests__/shared/components/navbar/Navbar.test.tsx @@ -89,10 +89,10 @@ describe('Navbar', () => { }) describe('header', () => { - it('should render a HospitalRun Navbar', () => { + it('should render an Open Health Navbar', () => { setup(allPermissions) - expect(screen.getByText(/hospitalrun/i)).toBeInTheDocument() + expect(screen.getByText(/open health/i)).toBeInTheDocument() expect(screen.getByRole('button', { hidden: false })).toBeInTheDocument() }) @@ -101,7 +101,7 @@ describe('Navbar', () => { history.location.pathname = '/enterprise-1701' expect(history.location.pathname).not.toEqual('/') - userEvent.click(screen.getByText(/hospitalrun/i)) + userEvent.click(screen.getByText(/open health/i)) expect(history.location.pathname).toEqual('/') }) diff --git a/src/dashboard/Dashboard.tsx b/src/dashboard/Dashboard.tsx index a03655338..ae7a97084 100644 --- a/src/dashboard/Dashboard.tsx +++ b/src/dashboard/Dashboard.tsx @@ -1,15 +1,92 @@ import React, { useEffect } from 'react' +import { Alert, Card, Col, Container, Row, Spinner } from 'react-bootstrap' +import { useQuery } from 'react-query' import { useUpdateTitle } from '../page-header/title/TitleContext' +import AppointmentRepository from '../shared/db/AppointmentRepository' +import ImagingRepository from '../shared/db/ImagingRepository' +import IncidentRepository from '../shared/db/IncidentRepository' +import LabRepository from '../shared/db/LabRepository' +import MedicationRepository from '../shared/db/MedicationRepository' +import PatientRepository from '../shared/db/PatientRepository' import useTranslator from '../shared/hooks/useTranslator' +type DataDomain = 'patients' | 'appointments' | 'labs' | 'medications' | 'imagings' | 'incidents' + +type DataMetric = { + domain: DataDomain + value: number +} + +const fetchPlatformMetrics = async (): Promise => { + const [patients, appointments, labs, medications, imagings, incidents] = await Promise.all([ + PatientRepository.count(), + AppointmentRepository.count(), + LabRepository.count(), + MedicationRepository.count(), + ImagingRepository.count(), + IncidentRepository.count(), + ]) + + return [ + { domain: 'patients', value: patients }, + { domain: 'appointments', value: appointments }, + { domain: 'labs', value: labs }, + { domain: 'medications', value: medications }, + { domain: 'imagings', value: imagings }, + { domain: 'incidents', value: incidents }, + ] +} + const Dashboard: React.FC = () => { const { t } = useTranslator() const updateTitle = useUpdateTitle() + const { data: metrics = [], isLoading, isError } = useQuery('dashboard-metrics', fetchPlatformMetrics) + useEffect(() => { updateTitle(t('dashboard.label')) - }) - return

Example

+ }, [t, updateTitle]) + + const totalRecords = metrics.reduce((runningTotal, metric) => runningTotal + metric.value, 0) + + return ( + + + +

{t('dashboard.centralHubTitle')}

+

{t('dashboard.centralHubDescription')}

+ +
+ {isError && {t('dashboard.metricsLoadError')}} + {isLoading && } + {!isLoading && !isError && ( + <> + + + + + {t('dashboard.totalRecordsLabel')} +

{totalRecords}

+
+
+ +
+ + {metrics.map((metric) => ( + + + + {t(`dashboard.metrics.${metric.domain}`)} +

{metric.value}

+
+
+ + ))} +
+ + )} +
+ ) } export default Dashboard diff --git a/src/shared/components/navbar/Navbar.tsx b/src/shared/components/navbar/Navbar.tsx index 6096259f2..4c7fdd017 100644 --- a/src/shared/components/navbar/Navbar.tsx +++ b/src/shared/components/navbar/Navbar.tsx @@ -78,7 +78,7 @@ const Navbar = () => { }, { type: 'header', - label: 'HospitalRun', + label: 'Open Health', onClick: () => { navigateTo('/') }, diff --git a/src/shared/locales/ar/translations/dashboard/index.ts b/src/shared/locales/ar/translations/dashboard/index.ts index 75e1d4d0f..bd266a1ca 100644 --- a/src/shared/locales/ar/translations/dashboard/index.ts +++ b/src/shared/locales/ar/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'لوحة القيادة', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/de/translations/dashboard/index.ts b/src/shared/locales/de/translations/dashboard/index.ts index feaad5f3e..eeee1fcca 100644 --- a/src/shared/locales/de/translations/dashboard/index.ts +++ b/src/shared/locales/de/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Dashboard', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/enUs/translations/dashboard/index.ts b/src/shared/locales/enUs/translations/dashboard/index.ts index feaad5f3e..eeee1fcca 100644 --- a/src/shared/locales/enUs/translations/dashboard/index.ts +++ b/src/shared/locales/enUs/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Dashboard', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/es/translations/dashboard/index.ts b/src/shared/locales/es/translations/dashboard/index.ts index 2ef79d635..e7a9096f2 100644 --- a/src/shared/locales/es/translations/dashboard/index.ts +++ b/src/shared/locales/es/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Panel', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/fr/translations/dashboard/index.ts b/src/shared/locales/fr/translations/dashboard/index.ts index 6741623a6..546242050 100644 --- a/src/shared/locales/fr/translations/dashboard/index.ts +++ b/src/shared/locales/fr/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Tableau de bord', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/id/translations/dashboard/index.ts b/src/shared/locales/id/translations/dashboard/index.ts index f0f1d382f..56654029f 100644 --- a/src/shared/locales/id/translations/dashboard/index.ts +++ b/src/shared/locales/id/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Dasbor', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/it/translations/dashboard/index.ts b/src/shared/locales/it/translations/dashboard/index.ts index feaad5f3e..eeee1fcca 100644 --- a/src/shared/locales/it/translations/dashboard/index.ts +++ b/src/shared/locales/it/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Dashboard', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/ja/translations/dashboard/index.ts b/src/shared/locales/ja/translations/dashboard/index.ts index fb15f11b7..a2123216b 100644 --- a/src/shared/locales/ja/translations/dashboard/index.ts +++ b/src/shared/locales/ja/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'ダッシュボード', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/ptBr/translations/dashboard/index.ts b/src/shared/locales/ptBr/translations/dashboard/index.ts index 58656ab06..3be07233c 100644 --- a/src/shared/locales/ptBr/translations/dashboard/index.ts +++ b/src/shared/locales/ptBr/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Painel de controle', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/ru/translations/dashboard/index.ts b/src/shared/locales/ru/translations/dashboard/index.ts index 1c4b9618c..86bcd74ef 100644 --- a/src/shared/locales/ru/translations/dashboard/index.ts +++ b/src/shared/locales/ru/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Панель приборов', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/tr/translations/dashboard/index.ts b/src/shared/locales/tr/translations/dashboard/index.ts index 2ef79d635..e7a9096f2 100644 --- a/src/shared/locales/tr/translations/dashboard/index.ts +++ b/src/shared/locales/tr/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: 'Panel', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/shared/locales/zhCN/translations/dashboard/index.ts b/src/shared/locales/zhCN/translations/dashboard/index.ts index 26862ff74..c4592c7ba 100644 --- a/src/shared/locales/zhCN/translations/dashboard/index.ts +++ b/src/shared/locales/zhCN/translations/dashboard/index.ts @@ -1,5 +1,17 @@ export default { dashboard: { label: '仪表板', + centralHubTitle: 'Digital Health Command Center', + centralHubDescription: 'Centralize your care data across patients, appointments, labs, medications, imaging, and incidents.', + totalRecordsLabel: 'Total clinical records', + metricsLoadError: 'Unable to load centralized healthcare metrics. Please try again.', + metrics: { + patients: 'Patients', + appointments: 'Appointments', + labs: 'Lab requests', + medications: 'Medication requests', + imagings: 'Imaging requests', + incidents: 'Incidents', + }, }, } diff --git a/src/user/user-slice.ts b/src/user/user-slice.ts index 58d04df23..cb217e5ec 100644 --- a/src/user/user-slice.ts +++ b/src/user/user-slice.ts @@ -20,10 +20,10 @@ export interface UserState { const initialState: UserState = { user: { - givenName: 'HospitalRun', + givenName: 'Open Health', familyName: 'Test', - fullName: 'HospitalRun Test', - id: 'test-hospitalrun', + fullName: 'Open Health Test', + id: 'test-open-health', }, permissions: [ Permissions.ReadPatients,