From de127914aa337223d7e29ca86005cde12d9b3c6c Mon Sep 17 00:00:00 2001 From: oscarbakker Date: Tue, 17 Dec 2024 15:34:59 +0100 Subject: [PATCH 1/3] Add disclaimer when hulpmiddel wmo is both in actueel and non actueel --- src/client/pages/ZorgDetail/ZorgDetail.tsx | 7 +- .../services/wmo/wmo-config-and-types.ts | 1 + src/server/services/wmo/wmo.test.ts | 74 ++++++++++++++++++- src/server/services/wmo/wmo.ts | 30 ++++++++ 4 files changed, 110 insertions(+), 2 deletions(-) diff --git a/src/client/pages/ZorgDetail/ZorgDetail.tsx b/src/client/pages/ZorgDetail/ZorgDetail.tsx index 1fb7c2233e..0eb635a0df 100644 --- a/src/client/pages/ZorgDetail/ZorgDetail.tsx +++ b/src/client/pages/ZorgDetail/ZorgDetail.tsx @@ -4,7 +4,7 @@ import { useParams } from 'react-router-dom'; import { WMOVoorzieningFrontend } from '../../../server/services/wmo/wmo-config-and-types'; import { AppRoutes } from '../../../universal/config/routes'; import { isError, isLoading } from '../../../universal/helpers/api'; -import { ThemaIcon } from '../../components'; +import { ErrorAlert, ThemaIcon } from '../../components'; import { Datalist } from '../../components/Datalist/Datalist'; import DocumentListV2 from '../../components/DocumentList/DocumentListV2'; import { ThemaTitles } from '../../config/thema'; @@ -28,6 +28,11 @@ function WMODetailContent({ voorziening }: WMODetailContentProps) { <> {!!rows.length && ( + {voorziening?.disclaimer && ( + + {voorziening.disclaimer} + + )} {voorziening?.documents.length > 0 && ( { `); }); }); + + describe('getDisclaimer', () => { + const baseAanvraag: ZorgnedAanvraagTransformed = { + titel: 'Test Voorziening', + isActueel: true, + datumEindeGeldigheid: null, + datumIngangGeldigheid: null, + datumAanvraag: '2024-01-01', + datumBesluit: '2024-01-01', + datumBeginLevering: '2024-01-01', + datumEindeLevering: '2024-01-01', + datumToewijzing: '2024-01-01', + datumOpdrachtLevering: '2024-01-01', + leverancier: 'Test Leverancier', + leveringsVorm: 'Test LeveringsVorm', + productsoortCode: 'Test ProductSoortCode', + productIdentificatie: 'Test ProductIdentificatie', + resultaat: 'toegewezen', + betrokkenen: [], + documenten: [], + id: 'test-id', + }; + + const baseAanvragen = [baseAanvraag]; + + it('should return undefined when no matching conditions', () => { + const result = getDisclaimer(baseAanvraag, baseAanvragen); + expect(result).toBeUndefined(); + }); + + it('should return disclaimer for actuele voorziening with matching eerdere voorziening', () => { + const aanvraag = { + ...baseAanvraag, + isActueel: true, + }; + + const aanvragen = [ + aanvraag, + { + ...baseAanvraag, + isActueel: false, + datumEindeGeldigheid: '1-11-2024', + }, + ]; + + const result = getDisclaimer(aanvraag, aanvragen); + expect(result).toBe( + 'Dit hulpmiddel staat per ongeluk ook bij "Eerdere en afgewezen voorzieningen". Daar vindt u het originele besluit met de juiste datums.' + ); + }); + + it('should return disclaimer for eerdere voorziening with matching actuele voorziening', () => { + const aanvraag = { + ...baseAanvraag, + isActueel: false, + }; + + const aanvragen = [ + aanvraag, + { + ...baseAanvraag, + isActueel: true, + datumIngangGeldigheid: '31-10-2024', + }, + ]; + + const result = getDisclaimer(aanvraag, aanvragen); + expect(result).toBe( + 'Door een fout staat dit hulpmiddel ten onrechte bij Eerdere en afgewezen voorzieningen. Kijk bij "Huidige voorzieningen" of in de brief bovenaan.' + ); + }); + }); }); diff --git a/src/server/services/wmo/wmo.ts b/src/server/services/wmo/wmo.ts index e56f52ae5a..9d25431f8f 100644 --- a/src/server/services/wmo/wmo.ts +++ b/src/server/services/wmo/wmo.ts @@ -127,6 +127,9 @@ function transformVoorzieningenForFrontend( status: getLatestStatus(lineItems), statusDate: getLatestStatusDate(lineItems), statusDateFormatted: getLatestStatusDate(lineItems, true), + ...(getDisclaimer(aanvraag, aanvragen) && { + disclaimer: getDisclaimer(aanvraag, aanvragen), + }), }; voorzieningenFrontend.push(voorzieningFrontend); @@ -138,6 +141,33 @@ function transformVoorzieningenForFrontend( return voorzieningenFrontend; } +export function getDisclaimer( + aanvraag: ZorgnedAanvraagTransformed, + aanvragen: ZorgnedAanvraagTransformed[] +): string | undefined { + const matchActueleVoorziening = aanvragen.find( + (regeling) => regeling.titel === aanvraag.titel && regeling.isActueel + ); + + const matchEerdereVoorziening = aanvragen.find( + (regeling) => regeling.titel === aanvraag.titel && !regeling.isActueel + ); + + if ( + aanvraag.isActueel && + matchEerdereVoorziening?.datumEindeGeldigheid === '1-11-2024' + ) { + return 'Dit hulpmiddel staat per ongeluk ook bij "Eerdere en afgewezen voorzieningen". Daar vindt u het originele besluit met de juiste datums.'; + } else if ( + !aanvraag.isActueel && + matchActueleVoorziening?.datumIngangGeldigheid === '31-10-2024' + ) { + return 'Door een fout staat dit hulpmiddel ten onrechte bij Eerdere en afgewezen voorzieningen. Kijk bij "Huidige voorzieningen" of in de brief bovenaan.'; + } + + return undefined; +} + export async function fetchWmo( requestID: RequestID, authProfileAndToken: AuthProfileAndToken From ca0d7af05ba9c7880435019410bc14b5b73e0d30 Mon Sep 17 00:00:00 2001 From: oscarbakker Date: Wed, 18 Dec 2024 18:28:06 +0100 Subject: [PATCH 2/3] Disclaimer fixes --- mocks/fixtures/zorgned-jzd-aanvragen.json | 130 +++++++++++++++ .../wmo/__snapshots__/wmo.test.ts.snap | 150 ++++++++++++++++++ src/server/services/wmo/wmo.test.ts | 23 +-- src/server/services/wmo/wmo.ts | 39 +++-- .../zorgned-service.test.ts.snap | 58 +++++++ 5 files changed, 374 insertions(+), 26 deletions(-) diff --git a/mocks/fixtures/zorgned-jzd-aanvragen.json b/mocks/fixtures/zorgned-jzd-aanvragen.json index dfb77793f8..c4cff38658 100644 --- a/mocks/fixtures/zorgned-jzd-aanvragen.json +++ b/mocks/fixtures/zorgned-jzd-aanvragen.json @@ -5752,6 +5752,136 @@ } ] }, + { + "identificatie": "2717112", + "regeling": { + "identificatie": "WMO", + "omschrijving": "WMO" + }, + "hulpvraag": { + "datumRegistratie": "2024-08-29" + }, + "datumAanmelding": "2024-08-29", + "datumAanvraag": "2024-08-29", + "beschikking": { + "beschikkingNummer": 300989920, + "datumAfgifte": "2024-08-29", + "beschikteProducten": [ + { + "identificatie": "1213392", + "product": { + "identificatie": "07A09", + "productCode": "07A09", + "productsoortCode": "DBS", + "omschrijving": "PGB: dagbesteding samenwerken" + }, + "productCategorie": { + "code": "07", + "omschrijving": "Dagbesteding" + }, + "resultaat": "toegewezen1", + "toegewezenProduct": { + "datumEindeGeldigheid": "2024-10-31", + "actueel": false, + "omvang": { + "volume": 1, + "eenheid": { + "code": "82", + "omschrijving": "Stuks (output)" + }, + "frequentie": { + "code": "4", + "omschrijving": "Per maand" + }, + "omschrijving": "1 stuks (output) per maand" + }, + "leveringsvorm": "pgb", + "leverancier": { + "identificatie": "73731545", + "agbcode": "73731545", + "omschrijving": "Carehouse - Leveo Care (afgewezen)" + }, + "toewijzingen": [], + "betrokkenen": ["123123123123"] + } + } + ] + }, + "documenten": [ + { + "documentidentificatie": "B2814508", + "omschrijving": "Besluit: Naam in Inkijk-API", + "omschrijvingclientportaal": "Besluit: Naam in Inkijk-API", + "datumDefinitief": "2024-08-29T16:48:11.997" + } + ] + }, + { + "identificatie": "2717111", + "regeling": { + "identificatie": "WMO", + "omschrijving": "WMO" + }, + "hulpvraag": { + "datumRegistratie": "2024-08-29" + }, + "datumAanmelding": "2024-08-29", + "datumAanvraag": "2024-08-29", + "beschikking": { + "beschikkingNummer": 300989920, + "datumAfgifte": "2024-08-29", + "beschikteProducten": [ + { + "identificatie": "1213392", + "product": { + "identificatie": "07A09", + "productCode": "07A09", + "productsoortCode": "DBS", + "omschrijving": "PGB: dagbesteding samenwerken" + }, + "productCategorie": { + "code": "07", + "omschrijving": "Dagbesteding" + }, + "resultaat": "toegewezen", + "toegewezenProduct": { + "datumIngangGeldigheid": "2024-11-01", + "datumEindeGeldigheid": "2025-10-31", + "datumCheck": "2026-08-18", + "actueel": true, + "omvang": { + "volume": 1, + "eenheid": { + "code": "82", + "omschrijving": "Stuks (output)" + }, + "frequentie": { + "code": "4", + "omschrijving": "Per maand" + }, + "omschrijving": "1 stuks (output) per maand" + }, + "leveringsvorm": "pgb", + "leverancier": { + "identificatie": "73731545", + "agbcode": "73731545", + "omschrijving": "Carehouse - Leveo Care (huidig)" + }, + "toewijzingen": [], + "betrokkenen": ["123123123123"] + } + } + ] + }, + "documenten": [ + { + "documentidentificatie": "B2814508", + "omschrijving": "Besluit: Naam in Inkijk-API", + "omschrijvingclientportaal": "Besluit: Naam in Inkijk-API", + "datumDefinitief": "2024-08-29T16:48:11.997" + } + ] + }, { "identificatie": "2701419", "regeling": { diff --git a/src/server/services/wmo/__snapshots__/wmo.test.ts.snap b/src/server/services/wmo/__snapshots__/wmo.test.ts.snap index a2765f7576..cc92cbec7f 100644 --- a/src/server/services/wmo/__snapshots__/wmo.test.ts.snap +++ b/src/server/services/wmo/__snapshots__/wmo.test.ts.snap @@ -164,6 +164,81 @@ exports[`Transform api items > fetchWmo 1`] = ` "supplier": "HVO Querido", "title": "Logeeropvang Respijt", }, + { + "dateDecision": "2024-08-29T16:48:11.997", + "dateDecisionFormatted": "29 augustus 2024", + "decision": "Toegewezen", + "documents": [ + { + "datePublished": "2024-08-29T16:48:11.997", + "id": "B2814508", + "title": "Besluit: Naam in Inkijk-API", + "url": "http://bff-api-host/api/v1/services/wmo/document/123-123-123-123", + }, + ], + "id": "3271828893", + "isActual": true, + "itemTypeCode": "DBS", + "link": { + "title": "Meer informatie", + "to": "/zorg-en-ondersteuning/voorziening/3271828893", + }, + "status": "Besluit genomen", + "statusDate": "2024-08-29T16:48:11.997", + "statusDateFormatted": "29 augustus 2024", + "steps": [ + { + "datePublished": "", + "description": "

Uw aanvraag is ontvangen.

", + "documents": [], + "id": "status-step-0", + "isActive": false, + "isChecked": true, + "isVisible": true, + "status": "Aanvraag ontvangen", + }, + { + "datePublished": "2024-08-29", + "description": "

Uw aanvraag is in behandeling.

", + "documents": [], + "id": "status-step-1", + "isActive": false, + "isChecked": true, + "isVisible": true, + "status": "In behandeling", + }, + { + "datePublished": "2024-08-29T16:48:11.997", + "description": "

U krijgt PGB: dagbesteding samenwerken per 01 november 2024.

+

In de brief leest u meer over dit besluit. De brief staat bovenaan deze pagina.

+ ", + "documents": [], + "id": "status-step-3", + "isActive": true, + "isChecked": true, + "isVisible": true, + "status": "Besluit genomen", + }, + { + "datePublished": "", + "description": "

+ Uw recht op PGB: dagbesteding samenwerken stopt op 31 oktober 2025. +

+ +

Wilt u verlenging aanvragen, dan moet u dat 8 weken voor 31 oktober 2025 doen.

+

Kijk in uw besluit of op amsterdam.nl/pgb voor meer informatie.

+ ", + "documents": [], + "id": "status-step-4", + "isActive": false, + "isChecked": false, + "isVisible": true, + "status": "Einde recht", + }, + ], + "supplier": "Carehouse - Leveo Care (huidig)", + "title": "PGB: dagbesteding samenwerken", + }, { "dateDecision": "2024-08-29T16:48:11.997", "dateDecisionFormatted": "29 augustus 2024", @@ -239,6 +314,81 @@ exports[`Transform api items > fetchWmo 1`] = ` "supplier": "Carehouse - Leveo Care", "title": "PGB: dagbesteding meewerken (toegewezen)", }, + { + "dateDecision": "2024-08-29T16:48:11.997", + "dateDecisionFormatted": "29 augustus 2024", + "decision": "Toegewezen1", + "documents": [ + { + "datePublished": "2024-08-29T16:48:11.997", + "id": "B2814508", + "title": "Besluit: Naam in Inkijk-API", + "url": "http://bff-api-host/api/v1/services/wmo/document/123-123-123-123", + }, + ], + "id": "759557662", + "isActual": true, + "itemTypeCode": "DBS", + "link": { + "title": "Meer informatie", + "to": "/zorg-en-ondersteuning/voorziening/759557662", + }, + "status": "Besluit genomen", + "statusDate": "2024-08-29T16:48:11.997", + "statusDateFormatted": "29 augustus 2024", + "steps": [ + { + "datePublished": "", + "description": "

Uw aanvraag is ontvangen.

", + "documents": [], + "id": "status-step-0", + "isActive": false, + "isChecked": true, + "isVisible": true, + "status": "Aanvraag ontvangen", + }, + { + "datePublished": "2024-08-29", + "description": "

Uw aanvraag is in behandeling.

", + "documents": [], + "id": "status-step-1", + "isActive": false, + "isChecked": true, + "isVisible": true, + "status": "In behandeling", + }, + { + "datePublished": "2024-08-29T16:48:11.997", + "description": "

U krijgt geen PGB: dagbesteding samenwerken.

+

In de brief leest u meer over dit besluit. De brief staat bovenaan deze pagina.

+ ", + "documents": [], + "id": "status-step-3", + "isActive": false, + "isChecked": true, + "isVisible": true, + "status": "Besluit genomen", + }, + { + "datePublished": "", + "description": "

+ Uw recht op PGB: dagbesteding samenwerken stopt op 31 oktober 2024. +

+ +

Wilt u verlenging aanvragen, dan moet u dat 8 weken voor 31 oktober 2024 doen.

+

Kijk in uw besluit of op amsterdam.nl/pgb voor meer informatie.

+ ", + "documents": [], + "id": "status-step-4", + "isActive": false, + "isChecked": false, + "isVisible": true, + "status": "Einde recht", + }, + ], + "supplier": "Carehouse - Leveo Care (afgewezen)", + "title": "PGB: dagbesteding samenwerken", + }, { "dateDecision": "2024-08-26T11:40:46.087", "dateDecisionFormatted": "26 augustus 2024", diff --git a/src/server/services/wmo/wmo.test.ts b/src/server/services/wmo/wmo.test.ts index de818d9d9d..7ffb519aa7 100644 --- a/src/server/services/wmo/wmo.test.ts +++ b/src/server/services/wmo/wmo.test.ts @@ -132,45 +132,46 @@ describe('Transform api items', () => { expect(result).toBeUndefined(); }); - it('should return disclaimer for actuele voorziening with matching eerdere voorziening', () => { + it('hasActueelMatch', () => { const aanvraag = { ...baseAanvraag, - isActueel: true, + datumEindeGeldigheid: '2024-10-31', + isActueel: false, }; const aanvragen = [ aanvraag, { ...baseAanvraag, - isActueel: false, - datumEindeGeldigheid: '1-11-2024', + datumIngangGeldigheid: '2024-11-01', }, ]; const result = getDisclaimer(aanvraag, aanvragen); expect(result).toBe( - 'Dit hulpmiddel staat per ongeluk ook bij "Eerdere en afgewezen voorzieningen". Daar vindt u het originele besluit met de juiste datums.' + 'Door een fout staat dit hulpmiddel ten onrechte bij Eerdere en afgewezen voorzieningen. Kijk bij "Huidige voorzieningen" of in de brief bovenaan.' ); }); - it('should return disclaimer for eerdere voorziening with matching actuele voorziening', () => { + it('hasNietActueelMatch', () => { const aanvraag = { ...baseAanvraag, - isActueel: false, + datumIngangGeldigheid: '2024-11-01', + isActueel: true, }; const aanvragen = [ aanvraag, { ...baseAanvraag, - isActueel: true, - datumIngangGeldigheid: '31-10-2024', + datumEindeGeldigheid: '2024-10-31', + isActueel: false, }, ]; const result = getDisclaimer(aanvraag, aanvragen); - expect(result).toBe( - 'Door een fout staat dit hulpmiddel ten onrechte bij Eerdere en afgewezen voorzieningen. Kijk bij "Huidige voorzieningen" of in de brief bovenaan.' + expect(result).toMatch( + 'Dit hulpmiddel staat per ongeluk ook bij "Eerdere en afgewezen voorzieningen". Daar vindt u het originele besluit met de juiste datums.' ); }); }); diff --git a/src/server/services/wmo/wmo.ts b/src/server/services/wmo/wmo.ts index 9d25431f8f..af9f8b3e49 100644 --- a/src/server/services/wmo/wmo.ts +++ b/src/server/services/wmo/wmo.ts @@ -142,26 +142,35 @@ function transformVoorzieningenForFrontend( } export function getDisclaimer( - aanvraag: ZorgnedAanvraagTransformed, + detailAanvraag: ZorgnedAanvraagTransformed, aanvragen: ZorgnedAanvraagTransformed[] ): string | undefined { - const matchActueleVoorziening = aanvragen.find( - (regeling) => regeling.titel === aanvraag.titel && regeling.isActueel - ); + const datumEindeGeldigheid = '2024-10-31'; + const datumIngangGeldigheid = '2024-11-01'; + + const hasNietActueelMatch = + detailAanvraag.isActueel && + detailAanvraag.datumIngangGeldigheid === datumIngangGeldigheid && + aanvragen.some( + (aanvraag) => + aanvraag.datumEindeGeldigheid === datumEindeGeldigheid && + aanvraag.titel === detailAanvraag.titel && + !aanvraag.isActueel + ); - const matchEerdereVoorziening = aanvragen.find( - (regeling) => regeling.titel === aanvraag.titel && !regeling.isActueel - ); + const hasActueelMatch = + !detailAanvraag.isActueel && + detailAanvraag.datumEindeGeldigheid === datumEindeGeldigheid && + aanvragen.some( + (aanvraag) => + aanvraag.datumIngangGeldigheid === datumIngangGeldigheid && + aanvraag.titel === detailAanvraag.titel && + aanvraag.isActueel + ); - if ( - aanvraag.isActueel && - matchEerdereVoorziening?.datumEindeGeldigheid === '1-11-2024' - ) { + if (hasNietActueelMatch) { return 'Dit hulpmiddel staat per ongeluk ook bij "Eerdere en afgewezen voorzieningen". Daar vindt u het originele besluit met de juiste datums.'; - } else if ( - !aanvraag.isActueel && - matchActueleVoorziening?.datumIngangGeldigheid === '31-10-2024' - ) { + } else if (hasActueelMatch) { return 'Door een fout staat dit hulpmiddel ten onrechte bij Eerdere en afgewezen voorzieningen. Kijk bij "Huidige voorzieningen" of in de brief bovenaan.'; } diff --git a/src/server/services/zorgned/__snapshots__/zorgned-service.test.ts.snap b/src/server/services/zorgned/__snapshots__/zorgned-service.test.ts.snap index acb1444c36..f8e575e76d 100644 --- a/src/server/services/zorgned/__snapshots__/zorgned-service.test.ts.snap +++ b/src/server/services/zorgned/__snapshots__/zorgned-service.test.ts.snap @@ -2,6 +2,35 @@ exports[`zorgned-service > transformZorgnedAanvragen 1`] = ` [ + { + "betrokkenen": [ + "123123123123", + ], + "datumAanvraag": "2024-08-29", + "datumBeginLevering": null, + "datumBesluit": "2024-08-29", + "datumEindeGeldigheid": "2025-10-31", + "datumEindeLevering": null, + "datumIngangGeldigheid": "2024-11-01", + "datumOpdrachtLevering": null, + "datumToewijzing": null, + "documenten": [ + { + "datePublished": "2024-08-29T16:48:11.997", + "id": "B2814508", + "title": "Besluit: Naam in Inkijk-API", + "url": "", + }, + ], + "id": "3271828893", + "isActueel": true, + "leverancier": "Carehouse - Leveo Care (huidig)", + "leveringsVorm": "PGB", + "productIdentificatie": "07A09", + "productsoortCode": "DBS", + "resultaat": "toegewezen", + "titel": "PGB: dagbesteding samenwerken", + }, { "betrokkenen": [ "123123123", @@ -1735,5 +1764,34 @@ exports[`zorgned-service > transformZorgnedAanvragen 1`] = ` "resultaat": "afgewezen", "titel": "dagbesteding meewerken", }, + { + "betrokkenen": [ + "123123123123", + ], + "datumAanvraag": "2024-08-29", + "datumBeginLevering": null, + "datumBesluit": "2024-08-29", + "datumEindeGeldigheid": "2024-10-31", + "datumEindeLevering": null, + "datumIngangGeldigheid": null, + "datumOpdrachtLevering": null, + "datumToewijzing": null, + "documenten": [ + { + "datePublished": "2024-08-29T16:48:11.997", + "id": "B2814508", + "title": "Besluit: Naam in Inkijk-API", + "url": "", + }, + ], + "id": "759557662", + "isActueel": false, + "leverancier": "Carehouse - Leveo Care (afgewezen)", + "leveringsVorm": "PGB", + "productIdentificatie": "07A09", + "productsoortCode": "DBS", + "resultaat": "toegewezen1", + "titel": "PGB: dagbesteding samenwerken", + }, ] `; From 5495647dbdc4289d95df78bb46e39023f2c5d68b Mon Sep 17 00:00:00 2001 From: oscarbakker Date: Wed, 18 Dec 2024 18:30:54 +0100 Subject: [PATCH 3/3] Change title to let op --- src/client/pages/ZorgDetail/ZorgDetail.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/client/pages/ZorgDetail/ZorgDetail.tsx b/src/client/pages/ZorgDetail/ZorgDetail.tsx index 0eb635a0df..2f0bafaf9b 100644 --- a/src/client/pages/ZorgDetail/ZorgDetail.tsx +++ b/src/client/pages/ZorgDetail/ZorgDetail.tsx @@ -29,7 +29,11 @@ function WMODetailContent({ voorziening }: WMODetailContentProps) { {!!rows.length && ( {voorziening?.disclaimer && ( - + {voorziening.disclaimer} )}