From 43be1cb5ed60a96dad4f27cb9dd3075f006dad66 Mon Sep 17 00:00:00 2001 From: BPierrick Date: Mon, 24 Jan 2022 17:27:14 +0100 Subject: [PATCH] feat: plug `getResourceTagValues` to cards --- src/features/conditions/ConditionCard.tsx | 15 +++++++++---- src/features/encounters/EncounterCard.tsx | 16 +++++++++----- src/features/resources/ResourceCard.tsx | 27 +++++++++++++++++++++-- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/features/conditions/ConditionCard.tsx b/src/features/conditions/ConditionCard.tsx index ca5bc29..1c46aca 100644 --- a/src/features/conditions/ConditionCard.tsx +++ b/src/features/conditions/ConditionCard.tsx @@ -8,6 +8,7 @@ import { useTranslation } from "react-i18next"; import DateInfo from "common/components/DateInfo"; import Tag from "common/components/Tag"; import ResourceCardActions from "features/resources/ResourceCardActions"; +import { getResourceTagValues } from "features/resources/utils"; import { TERMINOLOGY_SYSTEM_URL } from "../../constants"; @@ -28,12 +29,12 @@ const ConditionCard = ({ condition }: ConditionCardProps): JSX.Element => { const { t } = useTranslation(); const classes = useStyles(); const { code, meta, resourceType } = condition; - const { codeTag, codeTitle } = useMemo( + const { tagValues, codeTitle } = useMemo( () => ({ - codeTag: `${code?.coding?.[0]?.system}-${code?.coding?.[0]?.code}`, + tagValues: getResourceTagValues(condition), codeTitle: code?.coding?.[0]?.display, }), - [code] + [code, condition] ); const softwareName = useMemo( () => @@ -49,7 +50,13 @@ const ConditionCard = ({ condition }: ConditionCardProps): JSX.Element => { subheader={
{} - {codeTag && } + {tagValues.map((value, index) => ( + + ))} {codeTitle && ( {codeTitle} diff --git a/src/features/encounters/EncounterCard.tsx b/src/features/encounters/EncounterCard.tsx index ca318c9..4a2975a 100644 --- a/src/features/encounters/EncounterCard.tsx +++ b/src/features/encounters/EncounterCard.tsx @@ -8,6 +8,7 @@ import { useTranslation } from "react-i18next"; import DateInfo from "common/components/DateInfo"; import Tag from "common/components/Tag"; import ResourceCardActions from "features/resources/ResourceCardActions"; +import { getResourceTagValues } from "features/resources/utils"; import { TERMINOLOGY_SYSTEM_URL } from "../../constants"; @@ -27,17 +28,14 @@ type EncounterCardProps = { const EncounterCard = ({ encounter }: EncounterCardProps): JSX.Element => { const { t } = useTranslation(); const classes = useStyles(); - const { meta, location, resourceType } = encounter; + const { meta, resourceType } = encounter; const softwareName = useMemo( () => meta?.tag?.find(({ system }) => system === TERMINOLOGY_SYSTEM_URL) ?.display, [meta] ); - const locationName = useMemo( - () => location?.[0]?.location.display, - [location] - ); + const tagValues = useMemo(() => getResourceTagValues(encounter), [encounter]); return ( { subheader={
- {locationName && } + {tagValues.map((tagValue, index) => ( + + ))}
} /> diff --git a/src/features/resources/ResourceCard.tsx b/src/features/resources/ResourceCard.tsx index 6990332..84d046d 100644 --- a/src/features/resources/ResourceCard.tsx +++ b/src/features/resources/ResourceCard.tsx @@ -2,6 +2,7 @@ import React, { useMemo } from "react"; import type { IResourceList } from "@ahryman40k/ts-fhir-types/lib/R4"; import { Card, CardHeader } from "@mui/material"; +import { makeStyles } from "@mui/styles"; import DateInfo from "common/components/DateInfo"; import Tag from "common/components/Tag"; @@ -10,12 +11,23 @@ import DocumentReferenceCard from "features/documentReferences/DocumentReference import EncounterCard from "features/encounters/EncounterCard"; import ResourceCardActions from "./ResourceCardActions"; +import { getResourceTagValues } from "./utils"; + +const useStyles = makeStyles((theme) => ({ + flexContainer: { + display: "flex", + flexDirection: "row", + alignItems: "center", + marginBottom: theme.spacing(2), + }, +})); type ResourceCardProps = { resource: IResourceList; }; const ResourceCard = ({ resource }: ResourceCardProps): JSX.Element => { + const classes = useStyles(); const card: JSX.Element = useMemo(() => { switch (resource.resourceType) { case "Condition": @@ -30,13 +42,24 @@ const ResourceCard = ({ resource }: ResourceCardProps): JSX.Element => { } - subheader={} + subheader={ +
+ + {getResourceTagValues(resource).map((tagValue, index) => ( + + ))} +
+ } />
); } - }, [resource]); + }, [classes.flexContainer, resource]); return card; };