Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
pl-buiquang committed Sep 2, 2024
1 parent 56ab532 commit 7497f9a
Show file tree
Hide file tree
Showing 45 changed files with 1,026 additions and 672 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ yarn-error.log*
.env*
!.env.example
.mp4
public/config.dev.json
public/config.dev.json
public/config.oss.json
28 changes: 17 additions & 11 deletions src/components/CreationCohort/DataList_Criteria.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const criteriaList: () => CriteriaItemType[] = () => {
const ODD_BIOLOGY = getConfig().features.observation.enabled
const ODD_IMAGING = getConfig().features.imaging.enabled
const ODD_MEDICATION = getConfig().features.medication.enabled
const ODD_CLAIM = getConfig().features.claim.enabled
return [
{
id: CriteriaType.REQUEST,
Expand Down Expand Up @@ -110,17 +111,22 @@ const criteriaList: () => CriteriaItemType[] = () => {
encounterStatus: services.cohortCreation.fetchEncounterStatus
}
},
{
id: CriteriaType.CLAIM,
title: CriteriaTypeLabels.CLAIM,
color: '#0063AF',
fontWeight: 'normal',
components: GhmForm,
fetch: {
ghmData: services.cohortCreation.fetchGhmData,
encounterStatus: services.cohortCreation.fetchEncounterStatus
}
}
...(ODD_CLAIM
? [
{
id: CriteriaType.CLAIM,
title: CriteriaTypeLabels.CLAIM,
color: '#0063AF',
fontWeight: 'normal',
components: GhmForm,
fetch: {
ghmData: services.cohortCreation.fetchGhmData,
encounterStatus: services.cohortCreation.fetchEncounterStatus
},
disabled: !ODD_CLAIM
}
]
: [])
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ export const defaultBiology: Omit<ObservationDataType, 'id'> = {

const Index = (props: CriteriaDrawerComponentProps) => {
const { criteriaData, selectedCriteria, onChangeSelectedCriteria, goBack } = props
const config = useContext(AppConfig)
const appConfig = useContext(AppConfig)
const { classes } = useStyles()
const [selectedTab, setSelectedTab] = useState<'form' | 'hierarchy' | 'search'>(
selectedCriteria ? 'form' : 'hierarchy'
selectedCriteria || !appConfig.core.fhir.valueSetExploration ? 'form' : 'hierarchy'
)
const [defaultCriteria, setDefaultCriteria] = useState<ObservationDataType>(
(selectedCriteria as ObservationDataType) || defaultBiology
Expand Down Expand Up @@ -83,8 +83,8 @@ const Index = (props: CriteriaDrawerComponentProps) => {
value={selectedTab}
onChange={(e, tab) => setSelectedTab(tab)}
>
<Tab label={config.labels.exploration} value="hierarchy" />
<Tab label="Recherche" value="search" />
{appConfig.core.fhir.valueSetExploration && <Tab label={appConfig.labels.exploration} value="hierarchy" />}
{appConfig.core.fhir.valueSetExploration && <Tab label="Recherche" value="search" />}
<Tab label="Formulaire" value="form" />
</Tabs>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'
import React, { useContext, useEffect, useState } from 'react'
import { Tab, Tabs } from '@mui/material'

import useStyles from './styles'
Expand All @@ -13,6 +13,7 @@ import { EXPLORATION } from '../../../../../../../..//constants'
import { CriteriaDrawerComponentProps } from 'types'
import { CcamDataType, Comparators, CriteriaType } from 'types/requestCriterias'
import { Hierarchy } from 'types/hierarchy'
import { AppConfig } from 'config'

export const defaultProcedure: Omit<CcamDataType, 'id'> = {
type: CriteriaType.PROCEDURE,
Expand All @@ -32,7 +33,10 @@ export const defaultProcedure: Omit<CcamDataType, 'id'> = {

const Index = (props: CriteriaDrawerComponentProps) => {
const { criteriaData, selectedCriteria, onChangeSelectedCriteria, goBack } = props
const [selectedTab, setSelectedTab] = useState<'form' | 'hierarchy'>(selectedCriteria ? 'form' : 'hierarchy')
const appConfig = useContext(AppConfig)
const [selectedTab, setSelectedTab] = useState<'form' | 'hierarchy'>(
selectedCriteria || !appConfig.core.fhir.valueSetExploration ? 'form' : 'hierarchy'
)
const [defaultCriteria, setDefaultCriteria] = useState<CcamDataType>(
(selectedCriteria as CcamDataType) || defaultProcedure
)
Expand Down Expand Up @@ -81,7 +85,7 @@ const Index = (props: CriteriaDrawerComponentProps) => {
value={selectedTab}
onChange={(e, tab) => setSelectedTab(tab)}
>
<Tab label={EXPLORATION} value="hierarchy" />
{appConfig.core.fhir.valueSetExploration && <Tab label={EXPLORATION} value="hierarchy" />}
<Tab label="Formulaire" value="form" />
</Tabs>

Expand Down
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 {
Alert,
Expand Down Expand Up @@ -31,6 +31,7 @@ import { BlockWrapper } from 'components/ui/Layout'
import OccurenceInput from 'components/ui/Inputs/Occurences'
import { SourceType } from 'types/scope'
import { Hierarchy } from 'types/hierarchy'
import { AppConfig } from 'config'

type Cim10FormProps = {
isOpen: boolean
Expand All @@ -50,7 +51,7 @@ enum Error {

const Cim10Form: React.FC<Cim10FormProps> = (props) => {
const { isOpen, isEdition, criteriaData, selectedCriteria, onChangeValue, onChangeSelectedCriteria, goBack } = props

const appConfig = useContext(AppConfig)
const { classes } = useStyles()
const dispatch = useAppDispatch()
const initialState: HierarchyTree | null = useAppSelector((state) => state.syncHierarchyTable)
Expand Down Expand Up @@ -205,17 +206,19 @@ const Cim10Form: React.FC<Cim10FormProps> = (props) => {
onChangeValue('code', value)
}}
/>
<Autocomplete
multiple
id="criteria-cim10-type-autocomplete"
className={classes.inputItem}
options={criteriaData.data.diagnosticTypes || []}
getOptionLabel={(option) => option.label}
isOptionEqualToValue={(option, value) => option.id === value.id}
value={defaultValuesType}
onChange={(e, value) => onChangeValue('diagnosticType', value)}
renderInput={(params) => <TextField {...params} label="Type de diagnostic" />}
/>
{appConfig.core.fhir.extraSearchParams && (
<Autocomplete
multiple
id="criteria-cim10-type-autocomplete"
className={classes.inputItem}
options={criteriaData.data.diagnosticTypes || []}
getOptionLabel={(option) => option.label}
isOptionEqualToValue={(option, value) => option.id === value.id}
value={defaultValuesType}
onChange={(e, value) => onChangeValue('diagnosticType', value)}
renderInput={(params) => <TextField {...params} label="Type de diagnostic" />}
/>
)}
<Autocomplete
multiple
options={criteriaData.data.encounterStatus || []}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'
import React, { useContext, useEffect, useState } from 'react'
import { Tab, Tabs } from '@mui/material'

import Cim10Form from './components/Form/Cim10Form'
Expand All @@ -12,6 +12,7 @@ import { EXPLORATION } from '../../../../../../../../constants'
import { CriteriaDrawerComponentProps } from 'types'
import { Cim10DataType, Comparators, CriteriaType } from 'types/requestCriterias'
import { Hierarchy } from 'types/hierarchy'
import { AppConfig } from 'config'

export const defaultCondition: Omit<Cim10DataType, 'id'> = {
type: CriteriaType.CONDITION,
Expand All @@ -31,7 +32,10 @@ export const defaultCondition: Omit<Cim10DataType, 'id'> = {

const Index = (props: CriteriaDrawerComponentProps) => {
const { criteriaData, selectedCriteria, onChangeSelectedCriteria, goBack } = props
const [selectedTab, setSelectedTab] = useState<'form' | 'hierarchy'>(selectedCriteria ? 'form' : 'hierarchy')
const appConfig = useContext(AppConfig)
const [selectedTab, setSelectedTab] = useState<'form' | 'hierarchy'>(
selectedCriteria || !appConfig.core.fhir.valueSetExploration ? 'form' : 'hierarchy'
)
const [defaultCriteria, setDefaultCriteria] = useState<Cim10DataType>(
(selectedCriteria as Cim10DataType) || defaultCondition
)
Expand Down Expand Up @@ -80,7 +84,7 @@ const Index = (props: CriteriaDrawerComponentProps) => {
value={selectedTab}
onChange={(e, tab) => setSelectedTab(tab)}
>
<Tab label={EXPLORATION} value="hierarchy" />
{appConfig.core.fhir.valueSetExploration && <Tab label={EXPLORATION} value="hierarchy" />}
<Tab label="Formulaire" value="form" />
</Tabs>

Expand Down
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 {
Alert,
Expand Down Expand Up @@ -26,6 +26,7 @@ import { CriteriaDataKey, DemographicDataType, CriteriaType } from 'types/reques
import { BlockWrapper } from 'components/ui/Layout'
import { CriteriaDrawerComponentProps, CriteriaItemDataCache } from 'types'
import { CriteriaLabel } from 'components/ui/CriteriaLabel'
import { AppConfig } from 'config'

enum Error {
INCOHERENT_AGE_ERROR,
Expand Down Expand Up @@ -61,6 +62,7 @@ const DemographicForm = (props: CriteriaDrawerComponentProps) => {
const [isInclusive, setIsInclusive] = useState<boolean>(
selectedCriteria?.isInclusive === undefined ? true : selectedCriteria?.isInclusive
)
const appConfig = useContext(AppConfig)

const selectedPopulation = useAppSelector((state) => state.cohortCreation.request.selectedPopulation || [])

Expand Down Expand Up @@ -183,24 +185,26 @@ const DemographicForm = (props: CriteriaDrawerComponentProps) => {
</BlockWrapper>
)}

<BlockWrapper margin="1em">
<CriteriaLabel
label={
vitalStatus &&
vitalStatus.length === 1 &&
vitalStatus.find((status: LabelObject) => status.label === VitalStatusLabel.DECEASED)
? VitalStatusOptionsLabel.deceasedAge
: VitalStatusOptionsLabel.age
}
/>
<DurationRange
value={age}
active={!birthdates[0] || !birthdates[1]}
onChange={(value) => setAge(value)}
onError={(isError) => setError(isError ? Error.INCOHERENT_AGE_ERROR : Error.NO_ERROR)}
deidentified={deidentified}
/>
</BlockWrapper>
{appConfig.core.fhir.extraSearchParams && (
<BlockWrapper margin="1em">
<CriteriaLabel
label={
vitalStatus &&
vitalStatus.length === 1 &&
vitalStatus.find((status: LabelObject) => status.label === VitalStatusLabel.DECEASED)
? VitalStatusOptionsLabel.deceasedAge
: VitalStatusOptionsLabel.age
}
/>
<DurationRange
value={age}
active={!birthdates[0] || !birthdates[1]}
onChange={(value) => setAge(value)}
onError={(isError) => setError(isError ? Error.INCOHERENT_AGE_ERROR : Error.NO_ERROR)}
deidentified={deidentified}
/>
</BlockWrapper>
)}
{!deidentified &&
vitalStatus &&
(vitalStatus.length === 0 ||
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'
import React, { useContext, useEffect, useState } from 'react'
import _ from 'lodash'

import {
Expand Down Expand Up @@ -38,6 +38,7 @@ import SearchInput from 'components/ui/Searchbar/SearchInput'
import { BlockWrapper } from 'components/ui/Layout'
import OccurenceInput from 'components/ui/Inputs/Occurences'
import { SourceType } from 'types/scope'
import { AppConfig } from 'config'

const defaultComposition: Omit<DocumentDataType, 'id'> = {
type: CriteriaType.DOCUMENTS,
Expand All @@ -64,7 +65,7 @@ enum Error {

const DocumentsForm: React.FC<CriteriaDrawerComponentProps> = (props) => {
const { criteriaData, selectedCriteria, onChangeSelectedCriteria, goBack } = props

const appConfig = useContext(AppConfig)
const { classes } = useStyles()
const [defaultValues, setDefaultValues] = useState<DocumentDataType>(
(selectedCriteria as DocumentDataType) || defaultComposition
Expand Down Expand Up @@ -272,16 +273,18 @@ const DocumentsForm: React.FC<CriteriaDrawerComponentProps> = (props) => {
}}
/>

<FormControl variant="outlined" className={classes.inputItem}>
<Autocomplete
disableCloseOnSelect
multiple
onChange={(e, value) => _onChangeValue('docStatuses', value)}
options={docStatuses}
value={defaultValues.docStatuses || undefined}
renderInput={(params) => <TextField {...params} placeholder="Statut de documents" />}
/>
</FormControl>
{appConfig.core.fhir.extraSearchParams && (
<FormControl variant="outlined" className={classes.inputItem}>
<Autocomplete
disableCloseOnSelect
multiple
onChange={(e, value) => _onChangeValue('docStatuses', value)}
options={docStatuses}
value={defaultValues.docStatuses || undefined}
renderInput={(params) => <TextField {...params} placeholder="Statut de documents" />}
/>
</FormControl>
)}

<FormControl variant="outlined" className={classes.inputItem}>
<Autocomplete
Expand Down
Loading

0 comments on commit 7497f9a

Please sign in to comment.