diff --git a/app/src/components/DataRequirements.tsx b/app/src/components/DataRequirements.tsx index 926cf3d8..98f3b621 100644 --- a/app/src/components/DataRequirements.tsx +++ b/app/src/components/DataRequirements.tsx @@ -1,6 +1,6 @@ import { Accordion, Center, createStyles, em, getBreakpointValue, List, Paper, rem } from '@mantine/core'; -interface codeInterface { +interface CodeInterface { code: string | undefined; system: string | undefined; } @@ -22,15 +22,15 @@ const useStyles = createStyles(theme => ({ */ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.DataRequirement) { const { classes } = useStyles(); - const codes: codeInterface[] = []; + const codes: CodeInterface[] = []; - const valueSets = codeFilter?.filter(function (x: fhir4.DataRequirementCodeFilter) { - return x?.valueSet !== undefined; + const codeFiltersWithVS = codeFilter?.filter(cf => { + return cf?.valueSet !== undefined; }); - codeFilter?.forEach((arr: fhir4.DataRequirementCodeFilter) => { - arr?.code?.forEach((element: fhir4.Coding) => { - const code: codeInterface = { code: element?.code, system: element?.system }; + codeFilter?.forEach(cf => { + cf?.code?.forEach(c => { + const code: CodeInterface = { code: c.code, system: c.system }; codes.push(code); }); }); @@ -41,7 +41,6 @@ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.Dat - {' '}

{type}

@@ -53,18 +52,16 @@ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.Dat
- {extension?.map((item: any, index: any, index2: any) => ( + {extension?.map(e => ( <> - {item?.url != undefined && ( - - URL: - {item.url}{' '} - - )} - {item?.valueString != undefined && ( - + + URL: + {e.url} + + {e?.valueString && ( + ValueString: - {item.valueString}{' '} + {e.valueString} )}
@@ -77,14 +74,14 @@ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.Dat DateFilter(s):
- {dateFilter?.map((item: fhir4.DataRequirementDateFilter, index: any, index2: any) => ( + {dateFilter?.map(data => ( <> - + Start Date: - {item?.valuePeriod?.start}
+ {data?.valuePeriod?.start}
- - End Date: {item?.valuePeriod?.end}
+ + End Date: {data?.valuePeriod?.end}
))} @@ -101,16 +98,16 @@ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.Dat Code(s):
- {codes?.map((item: any, index: any, index2: any) => ( + {codes.map(codeInterface => ( <> - {item?.code && ( - - Code: {item?.code}
+ {codeInterface.code && ( + + Code: {codeInterface?.code}
)} - {item?.system && ( - - System: {item?.system}
+ {codeInterface.system && ( + + System: {codeInterface?.system}
)}
@@ -119,15 +116,15 @@ function DataRequirements({ type, extension, dateFilter, codeFilter }: fhir4.Dat
)} - {valueSets && valueSets.length > 0 && ( + {codeFiltersWithVS && codeFiltersWithVS.length > 0 && ( Value Set(s): - {valueSets?.map((item: any, index3: any) => ( - - {item?.valueSet}
+ {codeFiltersWithVS.map(c => ( + + {c.valueSet}
))}
diff --git a/app/src/pages/[resourceType]/[id].tsx b/app/src/pages/[resourceType]/[id].tsx index b7f1f966..7169804f 100644 --- a/app/src/pages/[resourceType]/[id].tsx +++ b/app/src/pages/[resourceType]/[id].tsx @@ -1,5 +1,5 @@ import { Prism } from '@mantine/prism'; -import { Button, Center, Divider, Group, SegmentedControl, Space, Stack, Tabs, Text } from '@mantine/core'; +import { Button, Center, Divider, Group, SegmentedControl, ScrollArea, Space, Stack, Tabs, Text } from '@mantine/core'; import { notifications } from '@mantine/notifications'; import React, { useEffect, useMemo, useState } from 'react'; import { GetServerSideProps, InferGetServerSidePropsType } from 'next'; @@ -21,6 +21,7 @@ import DataReqs from '@/components/DataRequirements'; export default function ResourceIDPage({ jsonData }: InferGetServerSidePropsType) { const resourceType = jsonData.resourceType; const [dataReqsView, setDataReqsView] = useState('raw'); + const [height, setWindowHeight] = useState(0); const decodedCql = useMemo(() => { return decode('text/cql', jsonData); @@ -41,6 +42,15 @@ export default function ResourceIDPage({ jsonData }: InferGetServerSidePropsType /* eslint-enable @typescript-eslint/no-explicit-any */ }, []); + useEffect(() => { + const handleResize = () => { + setWindowHeight(window.innerHeight); + }; + handleResize(); + window.addEventListener('resize', handleResize); + return window.removeEventListener('resize', handleResize); + }, []); + const { data: dataRequirements, refetch, @@ -162,34 +172,43 @@ export default function ResourceIDPage({ jsonData }: InferGetServerSidePropsType )} {dataRequirements?.resourceType === 'Library' && dataRequirements?.dataRequirement && ( -
- {dataRequirements?.dataRequirement.length > 0 && ( - - )} -
+ {dataRequirements?.dataRequirement.length > 0 && ( + <> + + + {' '} + Number of Requirements: {dataRequirements?.dataRequirement.length} + +
+ +
+ + + )} {dataReqsView === 'raw' && ( {JSON.stringify(dataRequirements, null, 2)} )} - {dataReqsView === 'readable' && - dataRequirements?.dataRequirement.map((item: fhir4.DataRequirement, index: any) => ( - - ))} + + {dataReqsView === 'formatted' && + dataRequirements?.dataRequirement.map(data => ( + + ))} +
)}