From e39cf14c8e62bbea6450cb62ae39aa5c79278883 Mon Sep 17 00:00:00 2001 From: Chukwudumebi Onwuli <37223065+deeonwuli@users.noreply.github.com> Date: Tue, 20 Aug 2024 12:39:44 +0100 Subject: [PATCH] feat: update incident status attribute in alerts --- src/data/repositories/AlertD2Repository.ts | 9 +++++++-- src/data/repositories/consts/DiseaseOutbreakConstants.ts | 1 + src/data/repositories/test/AlertTestRepository.ts | 2 +- src/domain/repositories/AlertRepository.ts | 4 +++- src/domain/usecases/MapDiseaseOutbreakToAlertsUseCase.ts | 6 ++++-- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/data/repositories/AlertD2Repository.ts b/src/data/repositories/AlertD2Repository.ts index 3cd85930..75d772f7 100644 --- a/src/data/repositories/AlertD2Repository.ts +++ b/src/data/repositories/AlertD2Repository.ts @@ -2,6 +2,7 @@ import { D2Api } from "@eyeseetea/d2-api/2.36"; import { apiToFuture, FutureData } from "../api-futures"; import { RTSL_ZEBRA_ALERTS_NATIONAL_DISEASE_OUTBREAK_EVENT_ID_TEA_ID, + RTSL_ZEBRA_ALERTS_NATIONAL_INCIDENT_STATUS_TEA_ID, RTSL_ZEBRA_ALERTS_PROGRAM_ID, RTSL_ZEBRA_ORG_UNIT_ID, } from "./consts/DiseaseOutbreakConstants"; @@ -17,8 +18,8 @@ import { export class AlertD2Repository implements AlertRepository { constructor(private api: D2Api) {} - updateEventIdInAlerts(alertOptions: AlertOptions): FutureData { - const { eventId, filter } = alertOptions; + updateAlerts(alertOptions: AlertOptions): FutureData { + const { eventId, filter, incidentStatus } = alertOptions; return this.getTrackedEntitiesByTEACode(filter).flatMap(response => { const alertsToMap = response.map(trackedEntity => ({ @@ -28,6 +29,10 @@ export class AlertD2Repository implements AlertRepository { attribute: RTSL_ZEBRA_ALERTS_NATIONAL_DISEASE_OUTBREAK_EVENT_ID_TEA_ID, value: eventId, }, + { + attribute: RTSL_ZEBRA_ALERTS_NATIONAL_INCIDENT_STATUS_TEA_ID, + value: incidentStatus, + }, ], })); diff --git a/src/data/repositories/consts/DiseaseOutbreakConstants.ts b/src/data/repositories/consts/DiseaseOutbreakConstants.ts index e7d560d2..0cd63c4e 100644 --- a/src/data/repositories/consts/DiseaseOutbreakConstants.ts +++ b/src/data/repositories/consts/DiseaseOutbreakConstants.ts @@ -13,6 +13,7 @@ export const RTSL_ZEBRA_ALERTS_PROGRAM_ID = "MQtbs8UkBxy"; export const RTSL_ZEBRA_ALERTS_NATIONAL_DISEASE_OUTBREAK_EVENT_ID_TEA_ID = "Pq1drzz2HJk"; export const RTSL_ZEBRA_ALERTS_DISEASE_TEA_ID = "agsVaIpit4S"; export const RTSL_ZEBRA_ALERTS_EVENT_TYPE_TEA_ID = "ydsfY6zyvt7"; +export const RTSL_ZEBRA_ALERTS_NATIONAL_INCIDENT_STATUS_TEA_ID = "IpGLuK0W5y2"; export const hazardTypeCodeMap: Record = { "Biological:Human": "BIOLOGICAL_HUMAN", diff --git a/src/data/repositories/test/AlertTestRepository.ts b/src/data/repositories/test/AlertTestRepository.ts index 70dfb7a4..fbd2cfeb 100644 --- a/src/data/repositories/test/AlertTestRepository.ts +++ b/src/data/repositories/test/AlertTestRepository.ts @@ -3,7 +3,7 @@ import { AlertOptions, AlertRepository } from "../../../domain/repositories/Aler import { FutureData } from "../../api-futures"; export class AlertTestRepository implements AlertRepository { - updateEventIdInAlerts(_alertOptions: AlertOptions): FutureData { + updateAlerts(_alertOptions: AlertOptions): FutureData { return Future.success(undefined); } } diff --git a/src/domain/repositories/AlertRepository.ts b/src/domain/repositories/AlertRepository.ts index 752976ae..fbc80a1e 100644 --- a/src/domain/repositories/AlertRepository.ts +++ b/src/domain/repositories/AlertRepository.ts @@ -1,11 +1,13 @@ import { FutureData } from "../../data/api-futures"; +import { IncidentStatusType } from "../entities/disease-outbreak-event/DiseaseOutbreakEvent"; import { Id } from "../entities/Ref"; export interface AlertRepository { - updateEventIdInAlerts(alertOptions: AlertOptions): FutureData; + updateAlerts(alertOptions: AlertOptions): FutureData; } export type AlertOptions = { eventId: Id; filter: { id: Id; value: string }; + incidentStatus: IncidentStatusType; }; diff --git a/src/domain/usecases/MapDiseaseOutbreakToAlertsUseCase.ts b/src/domain/usecases/MapDiseaseOutbreakToAlertsUseCase.ts index ab34c1d5..2428a5c9 100644 --- a/src/domain/usecases/MapDiseaseOutbreakToAlertsUseCase.ts +++ b/src/domain/usecases/MapDiseaseOutbreakToAlertsUseCase.ts @@ -24,7 +24,8 @@ export class MapDiseaseOutbreakToAlertsUseCase { diseaseOutbreakEventId: Id, diseaseOutbreakEventData: DiseaseOutbreakEventData ): FutureData { - const { dataSourceCode, hazardType, suspectedDiseaseCode } = diseaseOutbreakEventData; + const { dataSourceCode, hazardType, incidentStatus, suspectedDiseaseCode } = + diseaseOutbreakEventData; const hazardTypeCode = hazardTypeCodeMap[hazardType]; if (!diseaseOutbreakEventId) @@ -35,9 +36,10 @@ export class MapDiseaseOutbreakToAlertsUseCase { ? { id: RTSL_ZEBRA_ALERTS_DISEASE_TEA_ID, value: suspectedDiseaseCode } : { id: RTSL_ZEBRA_ALERTS_EVENT_TYPE_TEA_ID, value: hazardTypeCode }; - return this.alertRepository.updateEventIdInAlerts({ + return this.alertRepository.updateAlerts({ eventId: diseaseOutbreakEventId, filter: filter, + incidentStatus: incidentStatus, }); } }