-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(feat): moved in patient functionality from esm-ugandaemr-bed-managem…
…ent-app to kenyaemr-esm-3.x (#318) * initial work on moving in patient functionality to kenyaemr * fix: added form configurations to useConfig
- Loading branch information
1 parent
b6e4e58
commit ff99bb3
Showing
18 changed files
with
1,256 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
...nical-view-app/src/in-patient/encounter-observations/encounter-observations.component.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
import React from 'react'; | ||
import { useTranslation } from 'react-i18next'; | ||
import { SkeletonText } from '@carbon/react'; | ||
import { useConfig } from '@openmrs/esm-framework'; | ||
import { type Observation } from './visit.resource'; | ||
import styles from './styles.scss'; | ||
|
||
interface EncounterObservationsProps { | ||
observations: Array<Observation>; | ||
} | ||
|
||
const EncounterObservations: React.FC<EncounterObservationsProps> = ({ observations }) => { | ||
const { t } = useTranslation(); | ||
const { obsConceptUuidsToHide = [] } = useConfig(); | ||
|
||
function getAnswerFromDisplay(display: string): string { | ||
const colonIndex = display.indexOf(':'); | ||
if (colonIndex === -1) { | ||
return ''; | ||
} else { | ||
return display.substring(colonIndex + 1).trim(); | ||
} | ||
} | ||
|
||
if (!observations) { | ||
return <SkeletonText />; | ||
} | ||
|
||
if (observations) { | ||
const filteredObservations = !!obsConceptUuidsToHide.length | ||
? observations?.filter((obs) => { | ||
return !obsConceptUuidsToHide.includes(obs?.concept?.uuid); | ||
}) | ||
: observations; | ||
return ( | ||
<div className={styles.observation}> | ||
{filteredObservations?.map((obs, index) => { | ||
if (obs.groupMembers) { | ||
return ( | ||
<React.Fragment key={index}> | ||
<span className={styles.parentConcept}>{obs.concept.display}</span> | ||
<span /> | ||
{obs.groupMembers.map((member) => ( | ||
<React.Fragment key={index}> | ||
<span className={styles.childConcept}>{member.concept.display}</span> | ||
<span>{getAnswerFromDisplay(member.display)}</span> | ||
</React.Fragment> | ||
))} | ||
</React.Fragment> | ||
); | ||
} else { | ||
return ( | ||
<React.Fragment key={index}> | ||
<span>{obs.concept.display}</span> | ||
<span>{getAnswerFromDisplay(obs.display)}</span> | ||
</React.Fragment> | ||
); | ||
} | ||
})} | ||
</div> | ||
); | ||
} | ||
|
||
return ( | ||
<div className={styles.observation}> | ||
<p>{t('noObservationsFound', 'No observations found')}</p> | ||
</div> | ||
); | ||
}; | ||
|
||
export default EncounterObservations; |
3 changes: 3 additions & 0 deletions
3
packages/esm-patient-clinical-view-app/src/in-patient/encounter-observations/index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
import EncounterObservations from './encounter-observations.component'; | ||
|
||
export default EncounterObservations; |
22 changes: 22 additions & 0 deletions
22
packages/esm-patient-clinical-view-app/src/in-patient/encounter-observations/styles.scss
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
@use '@carbon/styles/scss/spacing'; | ||
|
||
.observation { | ||
display: grid; | ||
grid-template-columns: 1fr 1fr; | ||
grid-gap: spacing.$spacing-03; | ||
margin-block: spacing.$spacing-05; | ||
margin-inline: 0 spacing.$spacing-05; | ||
} | ||
|
||
.observation > span { | ||
align-self: center; | ||
justify-self: start; | ||
} | ||
|
||
.parentConcept { | ||
font-weight: bold; | ||
} | ||
|
||
.childConcept { | ||
padding-inline-start: 0.8rem; | ||
} |
161 changes: 161 additions & 0 deletions
161
...es/esm-patient-clinical-view-app/src/in-patient/encounter-observations/visit.resource.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
import { OpenmrsResource, Privilege } from '@openmrs/esm-framework'; | ||
|
||
export interface MappedEncounter { | ||
id: string; | ||
datetime: string; | ||
encounterType: string; | ||
editPrivilege: string; | ||
form: OpenmrsResource; | ||
obs: Array<Observation>; | ||
provider: string; | ||
visitUuid: string; | ||
visitType: string; | ||
visitTypeUuid?: string; | ||
visitStartDatetime?: string; | ||
visitStopDatetime?: string; | ||
} | ||
|
||
export interface Encounter { | ||
uuid: string; | ||
diagnoses: Array<Diagnosis>; | ||
encounterDatetime: string; | ||
encounterProviders: Array<EncounterProvider>; | ||
encounterType: { | ||
uuid: string; | ||
display: string; | ||
viewPrivilege: Privilege; | ||
editPrivilege: Privilege; | ||
}; | ||
obs: Array<Observation>; | ||
orders: Array<Order>; | ||
form: OpenmrsResource; | ||
patient: OpenmrsResource; | ||
} | ||
|
||
export interface EncounterProvider { | ||
uuid: string; | ||
display: string; | ||
encounterRole: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
provider: { | ||
uuid: string; | ||
person: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
}; | ||
} | ||
|
||
export interface Observation { | ||
uuid: string; | ||
concept: { | ||
uuid: string; | ||
display: string; | ||
conceptClass: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
}; | ||
display: string; | ||
groupMembers: null | Array<{ | ||
uuid: string; | ||
concept: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
value: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
display: string; | ||
}>; | ||
value: any; | ||
obsDatetime?: string; | ||
} | ||
|
||
export interface Order { | ||
uuid: string; | ||
dateActivated: string; | ||
dateStopped?: Date | null; | ||
dose: number; | ||
dosingInstructions: string | null; | ||
dosingType?: 'org.openmrs.FreeTextDosingInstructions' | 'org.openmrs.SimpleDosingInstructions'; | ||
doseUnits: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
drug: { | ||
uuid: string; | ||
name: string; | ||
strength: string; | ||
display: string; | ||
}; | ||
duration: number; | ||
durationUnits: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
frequency: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
numRefills: number; | ||
orderNumber: string; | ||
orderReason: string | null; | ||
orderReasonNonCoded: string | null; | ||
orderer: { | ||
uuid: string; | ||
person: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
}; | ||
orderType: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
route: { | ||
uuid: string; | ||
display: string; | ||
}; | ||
quantity: number; | ||
quantityUnits: OpenmrsResource; | ||
} | ||
|
||
export interface Note { | ||
concept: OpenmrsResource; | ||
note: string; | ||
provider: { | ||
name: string; | ||
role: string; | ||
}; | ||
time: string; | ||
} | ||
|
||
export interface OrderItem { | ||
order: Order; | ||
provider: { | ||
name: string; | ||
role: string; | ||
}; | ||
} | ||
|
||
export interface Diagnosis { | ||
certainty: string; | ||
display: string; | ||
encounter: OpenmrsResource; | ||
links: Array<any>; | ||
patient: OpenmrsResource; | ||
rank: number; | ||
resourceVersion: string; | ||
uuid: string; | ||
voided: boolean; | ||
diagnosis: { | ||
coded: { | ||
display: string; | ||
links: Array<any>; | ||
}; | ||
}; | ||
} |
Oops, something went wrong.