diff --git a/app/src/components/DataRequirements.tsx b/app/src/components/DataRequirements.tsx
new file mode 100644
index 00000000..e2b899ed
--- /dev/null
+++ b/app/src/components/DataRequirements.tsx
@@ -0,0 +1,174 @@
+import { Button, Center, Collapse, createStyles, em, getBreakpointValue, List, Paper, rem } from '@mantine/core';
+import { useDisclosure } from '@mantine/hooks';
+import { ArrowsMaximize, ArrowsMinimize } from 'tabler-icons-react';
+import { useState } from 'react';
+
+const useStyles = createStyles(theme => ({
+ card: {
+ borderRadius: 12,
+ border: `${rem(2)} solid ${theme.colors.gray[3]}`,
+ width: '1200px',
+ [`@media (max-width: ${em(getBreakpointValue(theme.breakpoints.lg) - 1)})`]: {
+ width: '100%'
+ }
+ }
+}));
+
+interface codeInterface {
+ code: string;
+ system: string;
+}
+
+/**
+ * Component which takes in data requirements and then reformats it in a new div element
+ */
+function DataRequirements({ props }: any) {
+ const [opened, { toggle }] = useDisclosure(false);
+ // const [buttonIcon, setButtonicon] = useState();
+ const { classes } = useStyles();
+
+ const type = props.type;
+ const extensions = props.extension;
+ const dateFilters = props.dateFilter;
+ const codeFilters = props.codeFilter;
+ const codes: codeInterface[] = [];
+ const valueSets = props.codeFilter.filter(function (x: any) {
+ return x?.valueSet !== undefined;
+ });
+
+ codeFilters?.forEach((arr: { code: { code: any; system: any }[] }) => {
+ arr?.code?.forEach((element: { code: any; system: any }) => {
+ let code: codeInterface = { code: element?.code, system: element?.system };
+ codes.push(code);
+ });
+ });
+
+ return (
+ <>
+ {/*
+
+
+
+
+
+ */}
+
+
+
+
+ {/* */}
+
+ {/* Requirements
*/}
+ } onClick={toggle}>
+ Click to Expand
+
+
+ {/* */}
+
+
+
+
+ Type:
+ {type}
+
+
+
+ Extension:
+
+
+
+ {extensions.map((item: any, index: any, index2: any) => (
+ <>
+ {item?.url != undefined && (
+
+ URL:
+ {item.url}{' '}
+
+ )}
+ {item?.valueString != undefined && (
+
+ ValueString:
+ {item.valueString}{' '}
+
+ )}
+
+ >
+ ))}
+
+ {dateFilters?.length > 0 && (
+ <>
+
+ DateFilter(s):
+
+
+ {dateFilters?.map((item: any, index: any, index2: any) => (
+ <>
+
+ Start Date:
+ {new Date(item.valuePeriod.start).getUTCMonth() + 1}/
+ {new Date(item.valuePeriod.start).getUTCDate()}/
+ {new Date(item.valuePeriod.start).getUTCFullYear()}
+
+
+ End Date: {new Date(item.valuePeriod.end).getUTCMonth() + 1}/
+ {new Date(item.valuePeriod.end).getUTCDate()}/
+ {new Date(item.valuePeriod.end).getUTCFullYear()}
+
+ >
+ ))}
+
+ >
+ )}
+
+
+ CodeFilter(s):
+
+ {/* ))} */}
+ {codes.length > 0 && (
+
+
+ Code(s):
+
+
+ {codes?.map((item: any, index: any, index2: any) => (
+ <>
+ {item?.code && (
+
+ Code: {item?.code}
+
+ )}
+ {item?.system && (
+
+ System: {item?.system}
+
+ )}
+
+ >
+ ))}
+
+
+ )}
+ {valueSets.length > 0 && (
+
+
+ Value Set(s):
+
+
+ {valueSets?.map((item: any, index3: any) => (
+
+ {item?.valueSet}
+
+ ))}
+
+
+ )}
+
+
+
+
+
+ >
+ );
+}
+
+export default DataRequirements;
diff --git a/app/src/pages/[resourceType]/[id].tsx b/app/src/pages/[resourceType]/[id].tsx
index 2ba5a9ba..d70aa8b2 100644
--- a/app/src/pages/[resourceType]/[id].tsx
+++ b/app/src/pages/[resourceType]/[id].tsx
@@ -11,6 +11,7 @@ import { AlertCircle, CircleCheck, AbacusOff } from 'tabler-icons-react';
import { useRouter } from 'next/router';
import { modifyResourceToDraft } from '@/util/modifyResourceFields';
import { trpc } from '@/util/trpc';
+import DataReqs from '@/components/DataRequirements';
/**
* Component which displays the JSON/ELM/CQL/narrative/Data Requirements content of an individual resource using
@@ -158,11 +159,14 @@ export default function ResourceIDPage({ jsonData }: InferGetServerSidePropsType
{parse(jsonData.text.div)}
)}
- {dataRequirements?.resourceType === 'Library' && (
+ {dataRequirements?.resourceType === 'Library' && dataRequirements?.dataRequirement != undefined && (
{JSON.stringify(dataRequirements, null, 2)}
+ {dataRequirements?.dataRequirement.map((item: any, index: any) => (
+
+ ))}
)}