Skip to content

Commit 3a8e362

Browse files
authored
Merge pull request #11 from Alfred-Mutai/POC-745
Poc 745
2 parents 8ed6457 + 43cea83 commit 3a8e362

File tree

4 files changed

+95
-3
lines changed

4 files changed

+95
-3
lines changed

app/facility-mappings/registers.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var db = require('../../etl-db');
2+
3+
var defs = {
4+
getPrEPRegisterData: (params) => {
5+
return new Promise((resolve, reject) => {
6+
let queryParts = {};
7+
let sql =
8+
'SELECT l.name as location_name, fps.encounter_id, pi.identifier AS PrEP_Number, pi2.identifier AS National_ID, pi3.identifier AS NUPI, fps.encounter_datetime AS Date_Of_Visit, EXTRACT(YEAR FROM fps.encounter_datetime) - EXTRACT(YEAR FROM fps.birthdate) - CASE WHEN (EXTRACT(MONTH FROM fps.encounter_datetime) < EXTRACT(MONTH FROM fps.birthdate)) OR (EXTRACT(MONTH FROM fps.encounter_datetime) = EXTRACT(MONTH FROM fps.birthdate) AND EXTRACT(DAY FROM fps.encounter_datetime) < EXTRACT(DAY FROM fps.birthdate)) THEN 1 ELSE 0 END Age, fps.gender AS Sex, fps.population_type, NULL AS client_prep_status, NULL AS prep_method, CASE WHEN COALESCE(fps.hiv_rapid_test_result) = 664 THEN "N" WHEN COALESCE(fps.hiv_rapid_test_result) = 703 THEN "P" END AS HIV_result, NULL AS with_STI, COALESCE(fps.initiation_reason, fps.discontinued_reason) AS remarks FROM etl.flat_prep_summary_v1_1 fps LEFT JOIN amrs.location l ON l.location_id = fps.location_id LEFT JOIN amrs.patient_identifier pi ON fps.person_id = pi.patient_id AND pi.identifier_type = 44 LEFT JOIN amrs.patient_identifier pi2 ON fps.person_id = pi2.patient_id AND pi2.identifier_type = 5 LEFT JOIN amrs.patient_identifier pi3 ON fps.person_id = pi3.patient_id AND pi3.identifier_type = 45 WHERE DATE(fps.encounter_datetime)= "2024-01-02" AND fps.location_id in (1,13,14)';
9+
queryParts = {
10+
sql: sql
11+
};
12+
return db.queryServer(queryParts, function (result) {
13+
result.sql = sql;
14+
resolve(result.result);
15+
});
16+
});
17+
}
18+
};
19+
20+
module.exports = defs;

app/routes/registers.route.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
var authorizer = require('../../authorization/etl-authorizer');
2+
var privileges = authorizer.getAllPrivileges();
3+
var facilitymappings = require('../facility-mappings/registers');
4+
5+
const routes = [
6+
{
7+
method: 'GET',
8+
path: '/etl/prepregisterdata',
9+
config: {
10+
plugins: {},
11+
handler: function (request, reply) {
12+
facilitymappings
13+
.getPrEPRegisterData(request.query)
14+
.then((result) => {
15+
reply(result);
16+
})
17+
.catch((error) => {
18+
reply(error);
19+
});
20+
},
21+
description: 'List of facilities with MFL code',
22+
notes: 'Returns facilities list',
23+
tags: ['api'],
24+
validate: {
25+
options: {
26+
allowUnknown: true
27+
},
28+
params: {}
29+
}
30+
}
31+
}
32+
];
33+
34+
exports.routes = (server) => server.route(routes);

programs/patient-program-config.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@
6060
"0904172d-0b6a-40df-b8a2-b3653d16dc45",
6161
"a8e7c30d-6d2f-401c-bb52-d4433689a36b",
6262
"f7793d42-11ac-4cfd-9b35-e0a21a7a7c31",
63-
"c4246ff0-b081-460c-bcc5-b0678012659e"
63+
"c4246ff0-b081-460c-bcc5-b0678012659e",
64+
"52aeb285-fb18-455b-893e-3e53ccc77ceb",
65+
"d2552058-d7bd-47c6-aed1-480a4308027a"
6466
],
6567
"visitTypes": [
6668
{

programs/scope-builder.service.js

+38-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,25 @@ function buildScope(dataDictionary) {
6161
'0900831e-1352-11df-a1f1-0026b9348838',
6262
'8f5694dc-cba7-47b5-a97c-677cfb9a8d7c',
6363
'0900b74e-1352-11df-a1f1-0026b9348838',
64-
'cb4a90fd-28b8-4c01-b15c-242ff5e5e731'
64+
'cb4a90fd-28b8-4c01-b15c-242ff5e5e731',
65+
'49fa8ba9-06f4-4072-afe7-fd3e51ed4482',
66+
'8c7ec4f7-270c-45e9-a4f9-8589242d50d5',
67+
'96d2964e-8cec-4eca-ad05-a9c1fb29a045',
68+
'2b1d2083-b4df-4e5c-96fe-af88122ef75b',
69+
'0db6a78c-6b64-420c-bc30-ac403417c237',
70+
'2c89c870-560d-4521-90f9-b62f56939595',
71+
'ce8089a9-d105-4d79-8a0a-d4a389d691b4',
72+
'3db5339b-491c-4e80-8c55-7ef21d7141e6',
73+
'a580930d-9a57-48ec-aa3e-c170802f45b0',
74+
'6b9bebc0-bea7-4c90-8dc8-4c14f33c96de',
75+
'090089ea-1352-11df-a1f1-0026b9348838',
76+
'e93d79ea-13c8-4f0c-a757-0858a7f387eb',
77+
'19874e26-f614-47bb-99c7-a3756bfe3c64',
78+
'b8135ddf-e02c-4098-b4ce-17880a9ddb0f',
79+
'09004e76-1352-11df-a1f1-0026b9348838',
80+
'e907044b-4170-49e1-98e8-93258596bb23',
81+
'0900b000-1352-11df-a1f1-0026b9348838',
82+
'b4f7483a-00b8-4ff4-be70-dfefc85c60fa'
6583
].includes(dataDictionary.intendedVisitLocationUuid);
6684
if (dataDictionary.patient) {
6785
buildPatientScopeMembers(scope, dataDictionary.patient);
@@ -157,7 +175,25 @@ function buildScope(dataDictionary) {
157175
'0900831e-1352-11df-a1f1-0026b9348838',
158176
'8f5694dc-cba7-47b5-a97c-677cfb9a8d7c',
159177
'0900b74e-1352-11df-a1f1-0026b9348838',
160-
'cb4a90fd-28b8-4c01-b15c-242ff5e5e731'
178+
'cb4a90fd-28b8-4c01-b15c-242ff5e5e731',
179+
'49fa8ba9-06f4-4072-afe7-fd3e51ed4482',
180+
'8c7ec4f7-270c-45e9-a4f9-8589242d50d5',
181+
'96d2964e-8cec-4eca-ad05-a9c1fb29a045',
182+
'2b1d2083-b4df-4e5c-96fe-af88122ef75b',
183+
'0db6a78c-6b64-420c-bc30-ac403417c237',
184+
'2c89c870-560d-4521-90f9-b62f56939595',
185+
'ce8089a9-d105-4d79-8a0a-d4a389d691b4',
186+
'3db5339b-491c-4e80-8c55-7ef21d7141e6',
187+
'a580930d-9a57-48ec-aa3e-c170802f45b0',
188+
'6b9bebc0-bea7-4c90-8dc8-4c14f33c96de',
189+
'090089ea-1352-11df-a1f1-0026b9348838',
190+
'e93d79ea-13c8-4f0c-a757-0858a7f387eb',
191+
'19874e26-f614-47bb-99c7-a3756bfe3c64',
192+
'b8135ddf-e02c-4098-b4ce-17880a9ddb0f',
193+
'09004e76-1352-11df-a1f1-0026b9348838',
194+
'e907044b-4170-49e1-98e8-93258596bb23',
195+
'0900b000-1352-11df-a1f1-0026b9348838',
196+
'b4f7483a-00b8-4ff4-be70-dfefc85c60fa'
161197
].includes(dataDictionary.intendedVisitLocationUuid);
162198
}
163199

0 commit comments

Comments
 (0)