Skip to content

Commit

Permalink
refactor(config): add new config system
Browse files Browse the repository at this point in the history
  • Loading branch information
pl-buiquang authored Sep 2, 2024
1 parent a4024b2 commit 56ab532
Show file tree
Hide file tree
Showing 60 changed files with 1,179 additions and 1,046 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ yarn-error.log*
# Cohort360 specific
.env*
!.env.example
.mp4
.mp4
public/config.dev.json
80 changes: 0 additions & 80 deletions docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,88 +5,8 @@ set -e
sed -i "s@{FHIR_URL}@$FHIR_URL@g" /etc/nginx/conf.d/nginx.conf
sed -i "s@{BACK_URL}@$BACK_URL@g" /etc/nginx/conf.d/nginx.conf

# Replace all {MY_ENV_VAR} with the real MY_ENV_VAR defined in CI/CD.
sed -i "s@{VITE_BACK_API_URL}@$VITE_BACK_API_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_REQUEST_API_URL}@$VITE_REQUEST_API_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_FHIR_API_URL}@$VITE_FHIR_API_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_SOCKET_API_URL}@$VITE_SOCKET_API_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_PROVIDER_URL}@$VITE_OIDC_PROVIDER_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_REDIRECT_URI}@$VITE_OIDC_REDIRECT_URI@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_RESPONSE_TYPE}@$VITE_OIDC_RESPONSE_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_CLIENT_ID}@$VITE_OIDC_CLIENT_ID@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_SCOPE}@$VITE_OIDC_SCOPE@g" /app/build/assets/*.js
sed -i "s@{VITE_OIDC_STATE}@$VITE_OIDC_STATE@g" /app/build/assets/*.js
sed -i "s@{VITE_AUTH_API_URL}@$VITE_AUTH_API_URL@g" /app/build/assets/*.js
sed -i "s@{VITE_PERIMETER_SOURCE_TYPE_HIERARCHY}@$VITE_PERIMETER_SOURCE_TYPE_HIERARCHY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_CLAIM_HIERARCHY}@$VITE_VALUE_SET_URL_CLAIM_HIERARCHY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_CONDITION_HIERARCHY}@$VITE_VALUE_SET_URL_CONDITION_HIERARCHY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_CONDITION_STATUS}@$VITE_VALUE_SET_URL_CONDITION_STATUS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_PROCEDURE_HIERARCHY}@$VITE_VALUE_SET_URL_PROCEDURE_HIERARCHY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_DEMOGRAPHIC_GENDER}@$VITE_VALUE_SET_URL_DEMOGRAPHIC_GENDER@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_ADMISSION_MODE}@$VITE_VALUE_SET_URL_ENCOUNTER_ADMISSION_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_ENTRY_MODE}@$VITE_VALUE_SET_URL_ENCOUNTER_ENTRY_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_EXIT_MODE}@$VITE_VALUE_SET_URL_ENCOUNTER_EXIT_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_VISIT_TYPE}@$VITE_VALUE_SET_URL_ENCOUNTER_VISIT_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_SEJOUR_TYPE}@$VITE_VALUE_SET_URL_ENCOUNTER_SEJOUR_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_FILE_STATUS}@$VITE_VALUE_SET_URL_ENCOUNTER_FILE_STATUS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_EXIT_TYPE}@$VITE_VALUE_SET_URL_ENCOUNTER_EXIT_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_DESTINATION}@$VITE_VALUE_SET_URL_ENCOUNTER_DESTINATION@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_PROVENANCE}@$VITE_VALUE_SET_URL_ENCOUNTER_PROVENANCE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_ADMISSION}@$VITE_VALUE_SET_URL_ENCOUNTER_ADMISSION@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ENCOUNTER_STATUS}@$VITE_VALUE_SET_URL_ENCOUNTER_STATUS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MEDICATION_ATC}@$VITE_VALUE_SET_URL_MEDICATION_ATC@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MEDICATION_UCD}@$VITE_VALUE_SET_URL_MEDICATION_UCD@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MEDICATION_PRESCRIPTION_TYPES}@$VITE_VALUE_SET_URL_MEDICATION_PRESCRIPTION_TYPES@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MEDICATION_ADMINISTRATIONS}@$VITE_VALUE_SET_URL_MEDICATION_ADMINISTRATIONS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_IMAGING_MODALITIES}@$VITE_VALUE_SET_URL_IMAGING_MODALITIES@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_IMAGING_STUDY_UID}@$VITE_VALUE_SET_URL_IMAGING_STUDY_UID@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_BIOLOGY_ANABIO}@$VITE_VALUE_SET_URL_BIOLOGY_ANABIO@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_BIOLOGY_LOINC}@$VITE_VALUE_SET_URL_BIOLOGY_LOINC@g" /app/build/assets/*.js
sed -i "s@{VITE_MEDICATION_ATC_ORBIS}@$VITE_MEDICATION_ATC_ORBIS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_PREGNANCY_MODE}@$VITE_VALUE_SET_URL_PREGNANCY_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MATERNAL_RISKS}@$VITE_VALUE_SET_URL_MATERNAL_RISKS@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_RISKSRELATEDTOOBSTETRICHISTORY}@$VITE_VALUE_SET_URL_RISKSRELATEDTOOBSTETRICHISTORY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_RISKSORCOMPLICATIONSOFPREGNANCY}@$VITE_VALUE_SET_URL_RISKSORCOMPLICATIONSOFPREGNANCY@g" /app/build/assets/*.js

sed -i "s@{VITE_VALUE_SET_URL_CHIRURGICAL_GESTURE}@$VITE_VALUE_SET_URL_CHIRURGICAL_GESTURE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_CHILD_BIRTH_MODE}@$VITE_VALUE_SET_URL_CHILD_BIRTH_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MATURATION_REASON}@$VITE_VALUE_SET_URL_MATURATION_REASON@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_MATURATION_MODALITY}@$VITE_VALUE_SET_URL_MATURATION_MODALITY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_IMG_INDICATION}@$VITE_VALUE_SET_URL_IMG_INDICATION@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_LABOR_OR_CESAREAN_ENTRY}@$VITE_VALUE_SET_URL_LABOR_OR_CESAREAN_ENTRY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_PATHOLOGY_DURING_LABOR}@$VITE_VALUE_SET_URL_PATHOLOGY_DURING_LABOR@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_OBSTETRICAL_GESTURE_DURING_LABOR}@$VITE_VALUE_SET_URL_OBSTETRICAL_GESTURE_DURING_LABOR@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_ANALGESIE_TYPE}@$VITE_VALUE_SET_URL_ANALGESIE_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_BIRTH_DELIVERY_WAY}@$VITE_VALUE_SET_URL_BIRTH_DELIVERY_WAY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_INSTRUMENT_TYPE}@$VITE_VALUE_SET_URL_INSTRUMENT_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_C_SECTION_MODALITY}@$VITE_VALUE_SET_URL_C_SECTION_MODALITY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_PRESENTATION_AT_DELIVERY}@$VITE_VALUE_SET_URL_PRESENTATION_AT_DELIVERY@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_CONDITION_PERINEUM}@$VITE_VALUE_SET_URL_CONDITION_PERINEUM@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_EXIT_PLACE_TYPE}@$VITE_VALUE_SET_URL_EXIT_PLACE_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_FEEDING_TYPE}@$VITE_VALUE_SET_URL_FEEDING_TYPE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_EXIT_FEEDING_MODE}@$VITE_VALUE_SET_URL_EXIT_FEEDING_MODE@g" /app/build/assets/*.js
sed -i "s@{VITE_VALUE_SET_URL_EXIT_DIAGNOSTIC}@$VITE_VALUE_SET_URL_EXIT_DIAGNOSTIC@g" /app/build/assets/*.js

sed -i "s@{VITE_MAIL_SUPPORT}@$VITE_MAIL_SUPPORT@g" /app/build/assets/*.js
sed -i "s@{VITE_EXPORT_TABLE_LIMIT}@$VITE_EXPORT_TABLE_LIMIT@g" /app/build/assets/*.js
sed -i "s@{VITE_CODE_DISPLAY_JWT}@$VITE_CODE_DISPLAY_JWT@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_BIOLOGY}@$VITE_ODD_BIOLOGY@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_COMPOSITION}@$VITE_ODD_COMPOSITION@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_PROCEDURE}@$VITE_ODD_PROCEDURE@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_CLAIM}@$VITE_ODD_CLAIM@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_CONDITION}@$VITE_ODD_CONDITION@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_OBSERVATION}@$VITE_ODD_OBSERVATION@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_MEDICATION}@$VITE_ODD_MEDICATION@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_CONTACT}@$VITE_ODD_CONTACT@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_EXPORT}@$VITE_ODD_EXPORT@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_IMAGING}@$VITE_ODD_IMAGING@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_FEASABILITY_REPORT}@$VITE_ODD_FEASABILITY_REPORT@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_QUESTIONNAIRE}@$VITE_ODD_QUESTIONNAIRE@g" /app/build/assets/*.js
sed -i "s@{VITE_JTOOL_USERS}@$VITE_JTOOL_USERS@g" /app/build/assets/*.js
sed -i "s@{VITE_ODD_MAP}@$VITE_ODD_MAP@g" /app/build/assets/*.js

sed -i "s@{VITE_CLARITY_APP_ID}@$VITE_CLARITY_APP_ID@g" /app/build/index.html
sed -i "s@{VITE_USER_TRACKING_BLACKLIST}@$VITE_USER_TRACKING_BLACKLIST@g" /app/build/assets/*.js

# Restart nginx to apply changes
service nginx restart
Expand Down
35 changes: 35 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
"private": true,
"type": "module",
"dependencies": {
"@apollo/client": "^3.7.10",
"@apollo/react-hooks": "^4.0.0",
"@date-io/moment": "^2.16.1",
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
Expand All @@ -17,7 +15,6 @@
"@types/redux-state-sync": "^3.1.5",
"ace-builds": "^1.16.0",
"antlr4": "^4.13.1-patch-1",
"apollo-boost": "^0.4.9",
"axios": "^1.6.0",
"buffer": "^6.0.3",
"client-oauth2": "^4.2.4",
Expand All @@ -31,6 +28,7 @@
"moment": "^2.29.3",
"prop-types": "^15.8.1",
"querystring-es3": "^0.2.1",
"ramda": "^0.30.1",
"react": "^18.2.0",
"react-ace": "^10.1.0",
"react-app-rewired": "^2.2.1",
Expand Down Expand Up @@ -90,6 +88,7 @@
"@types/leaflet": "^1.9.12",
"@types/lodash": "^4.14.191",
"@types/node": "^18.15.7",
"@types/ramda": "^0.30.2",
"@types/react": "^18.2.6",
"@types/react-dom": "^18.2.4",
"@types/react-html-parser": "^2.0.2",
Expand Down
15 changes: 2 additions & 13 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import React from 'react'
import CssBaseline from '@mui/material/CssBaseline'
import { ApolloProvider } from '@apollo/react-hooks'
import { ApolloClient, InMemoryCache } from '@apollo/client'
import { Provider } from 'react-redux'
import { PersistGate } from 'redux-persist/es/integration/react'
import MomentUtils from '@date-io/moment'
Expand All @@ -13,26 +11,17 @@ import AppNavigation from './components/Routes/AppNavigation/AppNavigation'

import { store, persistor } from './state/store'

import { AUTH_API_URL } from './constants'

import 'moment/dist/locale/fr'

const authClient = new ApolloClient({
cache: new InMemoryCache(),
uri: AUTH_API_URL
})

moment.locale('fr')

const App = () => (
<LocalizationProvider dateAdapter={MomentUtils}>
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<ApolloProvider client={authClient}>
<CssBaseline />
<CssBaseline />

<AppNavigation />
</ApolloProvider>
<AppNavigation />
</PersistGate>
</Provider>
</LocalizationProvider>
Expand Down
10 changes: 5 additions & 5 deletions src/components/CohortsTable/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from 'react'
import React, { useContext, useState } from 'react'
import { useNavigate } from 'react-router-dom'

import {
Expand Down Expand Up @@ -46,10 +46,9 @@ import { Cohort, CohortJobStatus } from 'types'

import displayDigit from 'utils/displayDigit'

import { ODD_EXPORT } from '../../constants'

import useStyles from './styles'
import { Direction, Order, OrderBy } from 'types/searchCriterias'
import { AppConfig } from 'config'

type FavStarProps = {
favorite?: boolean
Expand Down Expand Up @@ -89,6 +88,7 @@ const ResearchTable: React.FC<ResearchTableProps> = ({
const dispatch = useAppDispatch()
const navigate = useNavigate()

const appConfig = useContext(AppConfig)
const [dialogOpen, setOpenDialog] = useState(false)
const [selectedCohort, setSelectedCohort] = useState<Cohort | undefined>()
const [selectedExportableCohort, setSelectedExportableCohort] = useState<Cohort | undefined>()
Expand Down Expand Up @@ -257,7 +257,7 @@ const ResearchTable: React.FC<ResearchTableProps> = ({
</TableHead>
<TableBody>
{data?.map((row: Cohort) => {
const canExportThisCohort = !!ODD_EXPORT ? row?.rights?.export_csv_nomi : false
const canExportThisCohort = !!appConfig.features.export.enabled ? row?.rights?.export_csv_nomi : false

return (
<TableRow
Expand Down Expand Up @@ -520,7 +520,7 @@ const ResearchTable: React.FC<ResearchTableProps> = ({

<ModalEditCohort open={selectedCohortState !== null} onClose={onEditCohort} />

{!!ODD_EXPORT && (
{!!appConfig.features.export.enabled && (
<ExportModal
cohortId={selectedExportableCohort?.uuid ?? ''}
open={!!selectedExportableCohort}
Expand Down
8 changes: 4 additions & 4 deletions src/components/CreationCohort/ControlPanel/ControlPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ import {
import useStyle from './styles'

import displayDigit from 'utils/displayDigit'
import { ODD_FEASABILITY_REPORT, SHORT_COHORT_LIMIT } from '../../../constants'
import services from 'services/aphp'
import ValidationDialog from 'components/ui/ValidationDialog'
import { JToolComponentEggWrapper } from 'components/Impersonation/JTool'
import { Egg3 } from 'components/Impersonation/Eggs'
import { WebSocketContext } from 'components/WebSocket/WebSocketProvider'
import { AppConfig } from 'config'

const ControlPanel: React.FC<{
onExecute?: (cohortName: string, cohortDescription: string, globalCount: boolean) => void
Expand All @@ -69,6 +69,7 @@ const ControlPanel: React.FC<{
}> = ({ onExecute, onUndo, onRedo }) => {
const { classes, cx } = useStyle()
const dispatch = useAppDispatch()
const appConfig = useContext(AppConfig)
const [openModal, onSetOpenModal] = useState<'executeCohortConfirmation' | null>(null)
const [oldCount, setOldCount] = useState<CohortCreationCounterType | null>(null)
const [openShareRequestModal, setOpenShareRequestModal] = useState<boolean>(false)
Expand Down Expand Up @@ -101,7 +102,6 @@ const ControlPanel: React.FC<{
snapshotsHistory
} = useAppSelector((state) => state.cohortCreation.request || {})
const { uuid, includePatient, status, jobFailMsg } = count

const [requestShare, setRequestShare] = useState<RequestType | null>({
currentSnapshot,
requestId,
Expand All @@ -112,7 +112,7 @@ const ControlPanel: React.FC<{

const maintenanceIsActive = useAppSelector((state) => state.me?.maintenance?.active ?? false)

const cohortLimit = shortCohortLimit ?? SHORT_COHORT_LIMIT
const cohortLimit = shortCohortLimit ?? appConfig.features.cohort.shortCohortLimit

const accessIsPseudonymize: boolean | null =
selectedPopulation === null
Expand Down Expand Up @@ -264,7 +264,7 @@ const ControlPanel: React.FC<{
<>Créer la cohorte</>
)}
</Button>
{ODD_FEASABILITY_REPORT && (
{appConfig.features.feasabilityReport.enabled && (
<Button
disabled={isLoading || typeof onExecute !== 'function' || maintenanceIsActive || count_outdated}
onClick={handleGenerateReport}
Expand Down
Loading

0 comments on commit 56ab532

Please sign in to comment.