From 50995ed82f92bbe71fc6bc4273644e0d3e8a25f7 Mon Sep 17 00:00:00 2001 From: kantush Date: Mon, 2 Oct 2023 14:51:13 +0300 Subject: [PATCH 1/5] add Validation During RDE for the sytem Not Allow Providers to fill Adult Return b4 initial --- programs/patient-program-config.json | 17 +++++++++------ programs/scope-builder.service.js | 32 +++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/programs/patient-program-config.json b/programs/patient-program-config.json index 07b4a5140..3a41c0619 100755 --- a/programs/patient-program-config.json +++ b/programs/patient-program-config.json @@ -1452,9 +1452,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" } }, { @@ -1588,15 +1589,16 @@ { "uuid": "02e3ce61-fa24-445e-a1f0-6e3299142966", "message": "Patient must have prior clinical encounter.", - "allowedIf": "!isFirstPMTCTVisit && !isEnrolledInViremiaPMTCT && programLocation === intendedVisitLocationUuid", + "allowedIf": "!isFirstPMTCTVisit && !isEnrolledInViremiaPMTCT && programLocation === intendedVisitLocationUuid ", "name": "PMTCT Antenatal Return Visit", "encounterTypes": [ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" } }, { @@ -1748,9 +1750,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" } }, { diff --git a/programs/scope-builder.service.js b/programs/scope-builder.service.js index bf5bfaa3f..1e0cbe227 100755 --- a/programs/scope-builder.service.js +++ b/programs/scope-builder.service.js @@ -15,7 +15,8 @@ function buildScope(dataDictionary) { qualifiesMedicationRefillVisit: false, lastCovidScreeningDate: '', retroSpective: false, - screenedForCovidToday: false + screenedForCovidToday: false, + isAdultReturnVisitBeforeInitialVisit: false }; let isStandardDcVisit = false; @@ -120,6 +121,15 @@ function buildScope(dataDictionary) { scope.retroSpective = dataDictionary.retroSpective; } + if (dataDictionary.retroSpective === 'true') { + const isAdultEncounterDateB4InitialEncounterDate = checkRetrospectiveInitialEncounterDate( + dataDictionary.patientEncounters + ); + if (isAdultEncounterDateB4InitialEncounterDate) { + scope.isAdultReturnVisitBeforeInitialVisit = true; + } + } + if (dataDictionary.isPatientTransferredOut) { scope['isPatientTransferredOut'] = dataDictionary.isPatientTransferredOut; } @@ -173,6 +183,26 @@ function conditionalDCVisits(patient) { } } +function checkRetrospectiveInitialEncounterDate(patientEncounters) { + const adultInitial = '8d5b27bc-c2cc-11de-8d13-0010c6dffd0f'; + const adultReturn = '8d5b2be0-c2cc-11de-8d13-0010c6dffd0f'; + return patientEncounters.map((encounter) => { + const encounterType = encounter?.encounterType?.uuid; + const encounterDate = encounter?.encounterDatetime; + if (encounterType === adultInitial) { + const adultReturnEncounter = patientEncounters.find((encounter) => { + const encounterType = encounter?.encounterType?.uuid; + return encounterType === adultReturn; + }); + if (encounterDate > adultReturnEncounter?.encounterDatetime) { + return true; + } else { + return false; + } + } + }); +} + function buildPatientScopeMembers(scope, patient) { scope.age = patient.person.age; scope.gender = patient.person.gender; From b62afabfea567b8c8e60ee8d84ab38a5a3e82851 Mon Sep 17 00:00:00 2001 From: kantush Date: Thu, 5 Oct 2023 18:29:30 +0300 Subject: [PATCH 2/5] Add requested changes --- programs/patient-program-config.json | 38 ++++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/programs/patient-program-config.json b/programs/patient-program-config.json index 3a41c0619..bc0a11a87 100755 --- a/programs/patient-program-config.json +++ b/programs/patient-program-config.json @@ -222,9 +222,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -1455,7 +1456,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -1598,7 +1599,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -1753,7 +1754,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "Oops! You cannot schedule an Adult return visit for a date that comes before the initial visit" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -2317,9 +2318,10 @@ { "uuid": "f091b833-9e1a-4eef-8364-fc289095a832", "display": "PEPRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -2560,7 +2562,12 @@ }, { "uuid": "ddd96f1c-524f-4caa-81a6-1a6f9789a4bc", - "display": "PREPRETURN" + "display": "PREPRETURN", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", + "errors": { + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + } }, { "uuid": "df55584c-1350-11df-a1f1-0026b9348838", @@ -2725,9 +2732,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -3098,9 +3106,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday && age > 24", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { @@ -4606,9 +4615,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday && age > 24", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { From 96058a9d7922fc3516211526c2b7b034b46226b3 Mon Sep 17 00:00:00 2001 From: kantush Date: Fri, 6 Oct 2023 09:13:55 +0300 Subject: [PATCH 3/5] Add validation to other program visit --- programs/patient-program-config.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/programs/patient-program-config.json b/programs/patient-program-config.json index bc0a11a87..fc004c6ad 100755 --- a/programs/patient-program-config.json +++ b/programs/patient-program-config.json @@ -1372,9 +1372,10 @@ { "uuid": "8d5b2be0-c2cc-11de-8d13-0010c6dffd0f", "display": "ADULTRETURN", - "allowedIf": "screenedForCovidToday", + "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { - "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form" + "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" } }, { From c6347268ded9b0bd457a067e6b9d1915655c1040 Mon Sep 17 00:00:00 2001 From: kantush Date: Fri, 6 Oct 2023 12:42:20 +0300 Subject: [PATCH 4/5] Modify error msg --- programs/patient-program-config.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/programs/patient-program-config.json b/programs/patient-program-config.json index fc004c6ad..622a4076c 100755 --- a/programs/patient-program-config.json +++ b/programs/patient-program-config.json @@ -225,7 +225,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -1375,7 +1375,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -1457,7 +1457,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -1600,7 +1600,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -1755,7 +1755,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -2322,7 +2322,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -2567,7 +2567,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -2736,7 +2736,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -3110,7 +3110,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { @@ -4619,7 +4619,7 @@ "allowedIf": "screenedForCovidToday && !isAdultReturnVisit", "errors": { "covidError": "To access clinical forms kindly fill Covid 19 Assessment Form", - "isAdultReturnVisitBeforeInitialVisit": "You cannot fill an adult return visit form for a date earlier than the initial visit!" + "isAdultReturnVisitBeforeInitialVisit": "You cannot fill a return visit form for a date earlier than the initial visit!" } }, { From 53de350aded3e1a6453642f67fb6f561f3f4808e Mon Sep 17 00:00:00 2001 From: kantush Date: Fri, 6 Oct 2023 13:14:27 +0300 Subject: [PATCH 5/5] Fix linter issues --- programs/scope-builder.service.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/programs/scope-builder.service.js b/programs/scope-builder.service.js index 6d20cce0e..a099a1aaa 100755 --- a/programs/scope-builder.service.js +++ b/programs/scope-builder.service.js @@ -16,8 +16,9 @@ function buildScope(dataDictionary) { lastCovidScreeningDate: '', retroSpective: false, screenedForCovidToday: false, - isAdultReturnVisitBeforeInitialVisit: false + isAdultReturnVisitBeforeInitialVisit: false, isViremicHighVL: false + }; let isStandardDcVisit = false; // Restrict to Pilot locations