From 0d965ae80a09cdfd0f273a4b2438239b20d64d98 Mon Sep 17 00:00:00 2001 From: Omar Zubaidi <66521244+OmarZubaidi@users.noreply.github.com> Date: Fri, 13 Oct 2023 10:45:05 +0100 Subject: [PATCH 1/3] Remove the word 'Intake' --- packages/app/src/components/SelectSlot.tsx | 4 +- packages/app/src/hooks/useClients.tsx | 6 +-- packages/app/src/index.tsx | 6 +-- .../store/{IntakeActions.tsx => Actions.tsx} | 44 +++++++++---------- .../store/{IntakeContext.tsx => Context.tsx} | 20 ++++----- packages/app/src/store/index.ts | 4 +- packages/app/src/store/types.ts | 4 +- 7 files changed, 44 insertions(+), 44 deletions(-) rename packages/app/src/store/{IntakeActions.tsx => Actions.tsx} (78%) rename packages/app/src/store/{IntakeContext.tsx => Context.tsx} (83%) diff --git a/packages/app/src/components/SelectSlot.tsx b/packages/app/src/components/SelectSlot.tsx index 1042a367..ff90041f 100644 --- a/packages/app/src/components/SelectSlot.tsx +++ b/packages/app/src/components/SelectSlot.tsx @@ -2,7 +2,7 @@ import { Button, Grid, Typography, styled, useTheme } from '@mui/material'; import { DateTime } from 'luxon'; import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; -import { IntakeDataContext, updateAppointmentSlot } from '../store'; +import { DataContext, updateAppointmentSlot } from '../store'; const AppointmentSlotButton = styled(Button)({ borderRadius: '8px', @@ -15,7 +15,7 @@ interface SelectSlotProps { } export function SelectSlot({ slots, timezone }: SelectSlotProps): JSX.Element { - const { state, dispatch } = useContext(IntakeDataContext); + const { state, dispatch } = useContext(DataContext); const theme = useTheme(); const { t } = useTranslation(); const selectedSlot = state.appointmentSlot; diff --git a/packages/app/src/hooks/useClients.tsx b/packages/app/src/hooks/useClients.tsx index 863add60..a54567bc 100644 --- a/packages/app/src/hooks/useClients.tsx +++ b/packages/app/src/hooks/useClients.tsx @@ -1,13 +1,13 @@ import { FhirClient, ZambdaClient } from '@zapehr/sdk'; import { useContext } from 'react'; -import { IntakeDataContext } from '../store'; +import { DataContext } from '../store'; export function useFhirClient(): FhirClient | null { - const { state } = useContext(IntakeDataContext); + const { state } = useContext(DataContext); return state.fhirClient || null; } export function useZambdaClient(): ZambdaClient | null { - const { state } = useContext(IntakeDataContext); + const { state } = useContext(DataContext); return state.zambdaClient || null; } diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index af23642c..c4f0bf74 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -4,7 +4,7 @@ import { createRoot } from 'react-dom/client'; import App from './App'; import './index.css'; import './lib/i18n'; -import { IntakeDataProvider } from './store'; +import { DataProvider } from './store'; const root = createRoot(document.getElementById('root') as HTMLElement); root.render( @@ -16,9 +16,9 @@ root.render( domain="https://zapehr-dev.us.auth0.com" redirectUri={window.location.origin} > - + - + ); diff --git a/packages/app/src/store/IntakeActions.tsx b/packages/app/src/store/Actions.tsx similarity index 78% rename from packages/app/src/store/IntakeActions.tsx rename to packages/app/src/store/Actions.tsx index fb921ebc..ca7aeec1 100644 --- a/packages/app/src/store/IntakeActions.tsx +++ b/packages/app/src/store/Actions.tsx @@ -1,9 +1,9 @@ import { FhirClient, ZambdaClient } from '@zapehr/sdk'; import { Location, Patient, Slot } from 'fhir/r4'; import { Dispatch } from 'react'; -import { IntakeAction, PatientInfo } from './types'; +import { Action, PatientInfo } from './types'; -export const setFhirClient = (token: string, dispatch: Dispatch): void => { +export const setFhirClient = (token: string, dispatch: Dispatch): void => { const fhirClient = new FhirClient({ accessToken: token, apiUrl: import.meta.env.VITE_FHIR_API_URL, @@ -14,7 +14,7 @@ export const setFhirClient = (token: string, dispatch: Dispatch): }); }; -export const setZambdaClient = (token: string | undefined, dispatch: Dispatch): void => { +export const setZambdaClient = (token: string | undefined, dispatch: Dispatch): void => { const zambdaClient = new ZambdaClient({ accessToken: token, apiUrl: import.meta.env.VITE_PROJECT_API_URL, @@ -25,14 +25,14 @@ export const setZambdaClient = (token: string | undefined, dispatch: Dispatch): void => { +export const updateAdditionalInformation = (additionalInfo: string, dispatch: Dispatch): void => { dispatch({ additionalInformation: additionalInfo, type: 'UPDATE_ADDITIONAL_INFORMATION', }); }; -export const updateAppointmentId = (appointment: { id: string }, dispatch: Dispatch): void => { +export const updateAppointmentId = (appointment: { id: string }, dispatch: Dispatch): void => { dispatch({ appointmentId: appointment.id, type: 'UPDATE_APPOINTMENT_ID', @@ -40,119 +40,119 @@ export const updateAppointmentId = (appointment: { id: string }, dispatch: Dispa }; // TODO Shouldn't this be a slot? -export const updateAppointmentSlot = (appointmentSlot: string, dispatch: Dispatch): void => { +export const updateAppointmentSlot = (appointmentSlot: string, dispatch: Dispatch): void => { dispatch({ appointmentSlot: appointmentSlot, type: 'UPDATE_APPOINTMENT_SLOT', }); }; -export const updateCancellationReason = (cancellationReason: string, dispatch: Dispatch): void => { +export const updateCancellationReason = (cancellationReason: string, dispatch: Dispatch): void => { dispatch({ cancellationReason: cancellationReason, type: 'UPDATE_CANCELLATION_REASON', }); }; -export const updateConsentFormId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateConsentFormId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ consentFormId: id, type: 'UPDATE_CONSENT_FORM_ID', }); }; -export const updateConsentFormSignerId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateConsentFormSignerId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ consentFormSignerId: id, type: 'UPDATE_CONSENT_FORM_SIGNER_ID', }); }; -export const updateCoverageId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateCoverageId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ coverageId: id, type: 'UPDATE_COVERAGE_ID', }); }; -export const updateLocationId = (location: { id: string }, dispatch: Dispatch): void => { +export const updateLocationId = (location: { id: string }, dispatch: Dispatch): void => { dispatch({ locationId: location.id, type: 'UPDATE_LOCATION_ID', }); }; -export const updateLocations = (locations: Location[], dispatch: Dispatch): void => { +export const updateLocations = (locations: Location[], dispatch: Dispatch): void => { dispatch({ locations: locations, type: 'UPDATE_LOCATIONS', }); }; -export const updatePatient = (patient: PatientInfo | undefined, dispatch: Dispatch): void => { +export const updatePatient = (patient: PatientInfo | undefined, dispatch: Dispatch): void => { dispatch({ patient: patient, type: 'UPDATE_PATIENT', }); }; -export const updatePatients = (patients: Patient[], dispatch: Dispatch): void => { +export const updatePatients = (patients: Patient[], dispatch: Dispatch): void => { dispatch({ patients: patients, type: 'UPDATE_PATIENTS', }); }; -export const updatePhoneNumber = (phoneNumber: string, dispatch: Dispatch): void => { +export const updatePhoneNumber = (phoneNumber: string, dispatch: Dispatch): void => { dispatch({ phoneNumber: phoneNumber, type: 'UPDATE_PHONE_NUMBER', }); }; -export const updateRelatedPersonId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateRelatedPersonId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ relatedPersonId: id, type: 'UPDATE_RELATED_PERSON_ID', }); }; -export const updateResponsiblePartyId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateResponsiblePartyId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ responsiblePartyId: id, type: 'UPDATE_RESPONSIBLE_PARTY_ID', }); }; -export const updateSelectedAppointmentSlotId = ({ id }: { id: string }, dispatch: Dispatch): void => { +export const updateSelectedAppointmentSlotId = ({ id }: { id: string }, dispatch: Dispatch): void => { dispatch({ selectedApptSlotId: id, type: 'UPDATE_SELECTED_APPOINTMENT_SLOT_ID', }); }; -export const updateSelectedLocation = (location: Location, dispatch: Dispatch): void => { +export const updateSelectedLocation = (location: Location, dispatch: Dispatch): void => { dispatch({ location: location, type: 'UPDATE_SELECTED_LOCATION', }); }; -export const updateSlots = (slots: Slot[], dispatch: Dispatch): void => { +export const updateSlots = (slots: Slot[], dispatch: Dispatch): void => { dispatch({ slots: slots, type: 'UPDATE_SLOTS', }); }; -export const updateSubmittedInsuranceType = ({ type }: { type: string }, dispatch: Dispatch): void => { +export const updateSubmittedInsuranceType = ({ type }: { type: string }, dispatch: Dispatch): void => { dispatch({ submittedInsuranceType: type, type: 'UPDATE_SUBMITTED_INSURANCE_TYPE', }); }; -export const updateTimezone = (timezone: string, dispatch: Dispatch): void => { +export const updateTimezone = (timezone: string, dispatch: Dispatch): void => { dispatch({ timezone: timezone, type: 'UPDATE_TIMEZONE', diff --git a/packages/app/src/store/IntakeContext.tsx b/packages/app/src/store/Context.tsx similarity index 83% rename from packages/app/src/store/IntakeContext.tsx rename to packages/app/src/store/Context.tsx index 039ed272..ac2c65dc 100644 --- a/packages/app/src/store/IntakeContext.tsx +++ b/packages/app/src/store/Context.tsx @@ -1,14 +1,14 @@ import { Dispatch, FC, ReactNode, SetStateAction, createContext, useContext, useReducer, useState } from 'react'; import { Outlet } from 'react-router-dom'; -import { IntakeAction, IntakeState } from './types'; +import { Action, State } from './types'; const initialState = {}; const PatientContext = createContext(undefined); -type IntakeDataContextProps = { - dispatch: Dispatch; - state: IntakeState; +type DataContextProps = { + dispatch: Dispatch; + state: State; }; type PatientContextProps = { @@ -42,9 +42,9 @@ export const PatientProvider: FC = () => { ); }; -export const IntakeDataContext = createContext({ dispatch: () => null, state: initialState }); +export const DataContext = createContext({ dispatch: () => null, state: initialState }); -const intakeDataReducer = (state: IntakeState, action: IntakeAction): IntakeState => { +const DataReducer = (state: State, action: Action): State => { switch (action.type) { case 'SET_FHIR_CLIENT': return { ...state, fhirClient: action.fhirClient }; @@ -93,12 +93,12 @@ const intakeDataReducer = (state: IntakeState, action: IntakeAction): IntakeStat } }; -interface IntakeDataProviderProps { +interface DataProviderProps { children: ReactNode; } -export const IntakeDataProvider: FC = ({ children }) => { - const [state, dispatch] = useReducer(intakeDataReducer, initialState); +export const DataProvider: FC = ({ children }) => { + const [state, dispatch] = useReducer(DataReducer, initialState); - return {children}; + return {children}; }; diff --git a/packages/app/src/store/index.ts b/packages/app/src/store/index.ts index f8d23506..8091982a 100644 --- a/packages/app/src/store/index.ts +++ b/packages/app/src/store/index.ts @@ -1,2 +1,2 @@ -export * from './IntakeActions'; -export * from './IntakeContext'; +export * from './Actions'; +export * from './Context'; diff --git a/packages/app/src/store/types.ts b/packages/app/src/store/types.ts index e07355c2..27c258c2 100644 --- a/packages/app/src/store/types.ts +++ b/packages/app/src/store/types.ts @@ -71,7 +71,7 @@ export type PatientInfo = { sex: PatientSex | undefined; }; -export type IntakeAction = +export type Action = | { type: 'SET_FHIR_CLIENT'; fhirClient: FhirClient } | { type: 'SET_ZAMBDA_CLIENT'; zambdaClient: ZambdaClient } | { type: 'UPDATE_ADDITIONAL_INFORMATION'; additionalInformation: string } @@ -94,7 +94,7 @@ export type IntakeAction = | { type: 'UPDATE_SUBMITTED_INSURANCE_TYPE'; submittedInsuranceType: string } | { type: 'UPDATE_TIMEZONE'; timezone: string }; -export type IntakeState = { +export type State = { additionalInformation?: string; appointmentId?: string; appointmentSlot?: string; From 44a7de7d8312509facbe6f7eabaf2acdb3a52013 Mon Sep 17 00:00:00 2001 From: Omar Zubaidi <66521244+OmarZubaidi@users.noreply.github.com> Date: Fri, 13 Oct 2023 11:15:28 +0100 Subject: [PATCH 2/3] Add hooks folder index.ts --- packages/app/src/hooks/index.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/app/src/hooks/index.ts diff --git a/packages/app/src/hooks/index.ts b/packages/app/src/hooks/index.ts new file mode 100644 index 00000000..5480a71b --- /dev/null +++ b/packages/app/src/hooks/index.ts @@ -0,0 +1 @@ +export * from './useClients'; From 5363050543cb10657a19284de4168a08fe2063eb Mon Sep 17 00:00:00 2001 From: Omar Zubaidi <66521244+OmarZubaidi@users.noreply.github.com> Date: Fri, 13 Oct 2023 12:18:32 +0100 Subject: [PATCH 3/3] Add logo --- packages/app/index.html | 4 ++-- packages/app/public/logo.png | Bin 0 -> 29271 bytes packages/app/public/manifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 packages/app/public/logo.png diff --git a/packages/app/index.html b/packages/app/index.html index d2dfeeb6..2ad7dc0a 100644 --- a/packages/app/index.html +++ b/packages/app/index.html @@ -2,7 +2,7 @@ - + - + ottEHR diff --git a/packages/app/public/logo.png b/packages/app/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..abb4cdc9ef6a263977765efe6ffbd8ac24a8db52 GIT binary patch literal 29271 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 KMNUMnLSTYW5CX3N literal 0 HcmV?d00001 diff --git a/packages/app/public/manifest.json b/packages/app/public/manifest.json index 1c19a463..3e5c2273 100644 --- a/packages/app/public/manifest.json +++ b/packages/app/public/manifest.json @@ -3,7 +3,7 @@ "name": "ottEHR", "icons": [ { - "src": "favicon.png", + "src": "logo.png", "sizes": "250x250", "type": "image/png" }