Skip to content
This repository has been archived by the owner on Oct 7, 2023. It is now read-only.

Commit

Permalink
feat: add chart source and remove duplicated criteria
Browse files Browse the repository at this point in the history
  • Loading branch information
rwietter committed Jul 5, 2023
1 parent 5286b46 commit 3d747dd
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
5 changes: 4 additions & 1 deletion domains/dashboard/components/Chart/Chart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ const Chart: FC<Props> = (props) => {
<span>{props.subtitle}</span>
</Tooltip>
</p>
{props.children}
<div className='max-h-[500px]'>{props.children}</div>
<div>
<p className='text-slate-500 text-sm'>Fonte: saude.rs.gov</p>
</div>
</div>
);
};
Expand Down
22 changes: 20 additions & 2 deletions domains/dashboard/features/ClinicalTests/ClinicalTests.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,38 @@ import { options, colors } from './options';
import { Chart } from '@/domains/dashboard/components';
import { type PatientsByDiagnosisCriteria } from '@/domains/dashboard/types';
import { calculatePercentages } from '@/domains/dashboard/lib';
import { data } from 'autoprefixer';

interface ComponentProps {
countPatientsByDiagnosisCriteria: PatientsByDiagnosisCriteria[];
}

type DataItem = PatientsByDiagnosisCriteria;

const mergeDuplicatedObjects = (criterias: DataItem[]): DataItem[] => {
const mergedData = criterias.reduce((acc: Record<string, DataItem>, item) => {
const criteria = item.criteria.toLowerCase();
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
if (acc[criteria]) {
acc[criteria].count += item.count;
} else {
acc[criteria] = { criteria: item.criteria, count: item.count };
}
return acc;
}, {});

return Object.values(mergedData);
};

const ClinicalTests: FC<ComponentProps> = ({ countPatientsByDiagnosisCriteria }) => {
if (countPatientsByDiagnosisCriteria.length <= 0) return null;

const data = countPatientsByDiagnosisCriteria.map((item) => ({
const patientsByDiagnosisCriteria = countPatientsByDiagnosisCriteria.map((item) => ({
criteria: item.criteria,
count: item.count,
}));

const data = mergeDuplicatedObjects(patientsByDiagnosisCriteria);

const percentages = calculatePercentages(data.map(({ count }) => count));

const dataset = {
Expand Down

0 comments on commit 3d747dd

Please sign in to comment.