diff --git a/src/components/editTestCase/groupCoverage/QdmGroupCoverage.tsx b/src/components/editTestCase/groupCoverage/QdmGroupCoverage.tsx index 2cd2080dc..ee138ca54 100644 --- a/src/components/editTestCase/groupCoverage/QdmGroupCoverage.tsx +++ b/src/components/editTestCase/groupCoverage/QdmGroupCoverage.tsx @@ -6,7 +6,6 @@ import _, { isEmpty } from "lodash"; import { MappedCql, Population, - SelectedPopulationResult, getFirstPopulation, getPopulationAbbreviation, } from "../../../util/GroupCoverageHelpers"; @@ -21,7 +20,7 @@ interface Props { measureGroups: Group[]; } -type PopulationResult = Record; +type PopulationResult = Record; const populationCriteriaLabel = "Population Criteria"; @@ -39,7 +38,7 @@ const QdmGroupCoverage = ({ const [ selectedPopulationDefinitionResults, setSelectedPopulationDefinitionResults, - ] = useState(); + ] = useState(); useEffect(() => { if (!isEmpty(testCaseGroups)) { @@ -79,14 +78,14 @@ const QdmGroupCoverage = ({ ); const selectedPopulationDefinition = selectedGroup?.populations?.find( (pop) => pop.id === population.id - )?.definition; + )?.name; const result = populationResults && Object.entries(populationResults).find( ([key]) => key === _.camelCase(selectedPopulationDefinition) ); setSelectedPopulationDefinitionResults( - result?.[1].text ? result[1] : undefined + result?.[1] ? result[1] : undefined ); } }; @@ -212,7 +211,7 @@ const QdmGroupCoverage = ({ > {selectedPopulationDefinitionResults ? parse( - `
${selectedPopulationDefinitionResults?.text}
` + `
${selectedPopulationDefinitionResults}
` ) : "No results available"} diff --git a/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.test.tsx b/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.test.tsx index e4b0f968a..4e823ca57 100644 --- a/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.test.tsx +++ b/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.test.tsx @@ -241,7 +241,7 @@ describe("CalculationResults with new tabbed highlighting layout on", () => { expect(screen.getByText("Population Criteria 2")).toBeInTheDocument(); }); expect(screen.getByTestId("IP-highlighting")).toHaveTextContent( - `define "Initial Population": ["Encounter, Performed": "Emergency Department Visit"] //Encounter union ["Encounter, Performed": "Closed Head and Facial Trauma"] //Encounter union ["Encounter, Performed": "Dementia"]` + `define "Denominator": "Initial Population"` ); }); }); diff --git a/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.tsx b/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.tsx index 2d39d3c5e..5e06866e3 100644 --- a/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.tsx +++ b/src/components/editTestCase/qdm/RightPanel/calculationResults/CalculationResults.tsx @@ -28,7 +28,7 @@ const CalculationResults = ({ {!isEmpty(testCaseGroups) && ( )} diff --git a/src/util/GroupCoverageHelpers.ts b/src/util/GroupCoverageHelpers.ts index 09ffd9dab..b4483c724 100644 --- a/src/util/GroupCoverageHelpers.ts +++ b/src/util/GroupCoverageHelpers.ts @@ -1,9 +1,5 @@ import { CqlAntlr } from "@madie/cql-antlr-parser/dist/src"; -import { - PopulationType, - PopulationExpectedValue, - GroupPopulation, -} from "@madie/madie-models"; +import { PopulationType, PopulationExpectedValue } from "@madie/madie-models"; import _ from "lodash"; export interface Population { @@ -12,16 +8,10 @@ export interface Population { criteriaReference?: string; name: PopulationType; } - -export interface SelectedPopulationResult { - criteriaReference: string; - text: string; -} - export interface MappedCql { [groupId: string]: { populationDefinitions: { - [populationName: string]: SelectedPopulationResult; + [populationName: string]: string; }; }; } @@ -56,32 +46,26 @@ export const getFirstPopulation = (group) => { }; }; -export const mapCql = ( - measureCql: string, - groupPopulations: GroupPopulation[] -): MappedCql => { - if (measureCql && groupPopulations) { +export const mapCql = (measureCql: string, measureGroups): MappedCql => { + if (measureCql && measureGroups) { const definitions = new CqlAntlr(measureCql).parse().expressionDefinitions; - - return groupPopulations.reduce((output, { groupId, populationValues }) => { - output[groupId] = { - populationDefinitions: populationValues?.reduce( - (populationDefinition, { name, criteriaReference }) => { - const matchingDefinition: any = definitions?.find( - (def) => _.camelCase(def?.name?.slice(1, -1)) === name - ); - - populationDefinition[name] = { - criteriaReference: criteriaReference || null, - text: matchingDefinition?.text || null, - }; - - return populationDefinition; - }, - {} - ), - }; - return output; + return measureGroups.reduce((acc, group) => { + const populationDetails = group.populations.reduce( + (output, population) => { + const matchingDefinition: any = definitions?.find( + (def) => + _.camelCase(def?.name?.slice(1, -1)) === + _.camelCase(population.definition) + ); + if (matchingDefinition) { + output[population.name] = matchingDefinition.text; + } + return output; + }, + {} + ); + acc[group.id] = { populationDefinitions: populationDetails }; + return acc; }, {}); } };