diff --git a/anni/src/database/helpers/contraction-utils.ts b/anni/src/database/helpers/contraction-utils.ts index 6f6644e5..a79a37cf 100644 --- a/anni/src/database/helpers/contraction-utils.ts +++ b/anni/src/database/helpers/contraction-utils.ts @@ -93,12 +93,37 @@ function contractByLookupkey( }); } +function contractRedundantExternalData( + drugsWithGuidelines: Array, +): Array { + return drugsWithGuidelines.map(({ drug, guidelines }) => { + return { + drug, + guidelines: guidelines.map((guideline) => { + const informationMap = new Map(); + guideline.externalData.forEach((externalData) => { + const key = externalDataInformationKey(externalData); + if (!informationMap.has(key)) { + informationMap.set(key, externalData); + } + }); + return { + ...guideline, + externalData: Array.from(informationMap.values()), + }; + }), + }; + }); +} + export function contractGuidelines( drugsWithGuidelines: Array, source: string, ): Array { - return contractByPhenotypeAndInformation( - contractByLookupkey(drugsWithGuidelines), - source, + return contractRedundantExternalData( + contractByPhenotypeAndInformation( + contractByLookupkey(drugsWithGuidelines), + source, + ), ); }