test-resab/backend/dist/api/antrol-auto/antrolAuto.repository.js
2025-04-27 23:29:32 +07:00

463 lines
21 KiB
JavaScript

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getKodeBagian = exports.getPasienHitUlangAddAntrol = exports.listReadyHitTaskBpjsFisio = exports.listReadyHitTaskBpjs = exports.getPasienFisioReadyHitNow = void 0;
const db_1 = require("./../../db");
const listReadyHitTaskBpjs = (limit, task_id, backdate = false) => __awaiter(void 0, void 0, void 0, function* () {
let filter, selectTaskTime, kondisiTask;
let valueBackDate = "";
if (backdate === true) {
valueBackDate = ` between '2025-04-14' AND now()::date`;
}
else {
valueBackDate = ` = now()::date`;
}
if (new Date().getHours() < 19) {
if (task_id === 1) {
filter = `and last_task = '0' and (assess = '3' or soap = '6')`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 2) {
filter = `and last_task = '1' and (assess = '3' or soap = '6')`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 3) {
filter = `and last_task = '2' and (assess = '3' or soap = '6')`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 4) {
filter = `and last_task = '3' and (assess = '3' or soap = '6')`;
selectTaskTime = `,(emr.input_time) task_time`;
kondisiTask = ` inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 5) {
filter = `and last_task = '4' and soap = '6' `;
selectTaskTime = `,(emr.input_time) task_time`;
kondisiTask = ` inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 3
and emr.status_batal is null`;
}
if (task_id === 6) {
filter = `and last_task = '5' and status_obat is not null `;
selectTaskTime = `,(peresepan_obat.start_tracking) task_time`;
kondisiTask = ` inner join peresepan_obat on
data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id
and peresepan_obat.status_batal is null`;
}
if (task_id === 7) {
filter = `and last_task = '6' and status_obat in ('2','3') `;
selectTaskTime = `,(peresepan_obat.end_tracking) task_time`;
kondisiTask = ` inner join peresepan_obat on
data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id
and peresepan_obat.status_batal is null`;
}
}
else {
if (task_id === 1) {
filter = `and last_task = '0'`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 2) {
filter = `and last_task = '1'`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 3) {
filter = `and last_task = '2'`;
selectTaskTime = `,(case
when rujukan_sep.input_time::date = data_task.tgl_masuk then
case
when rujukan_sep.input_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.input_time
end
else
case
when rujukan_sep.mod_time > emr.input_time then emr.input_time - interval '10 minutes'
else rujukan_sep.mod_time
end
end) task_time`;
kondisiTask = ` inner join rujukan_sep on
data_task.registrasi_id = rujukan_sep.registrasi_id
inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 4) {
filter = `and last_task = '3'`;
selectTaskTime = `,(emr.input_time) task_time`;
kondisiTask = ` inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 6
and emr.status_batal is null`;
}
if (task_id === 5) {
filter = `and last_task = '4'`;
selectTaskTime = `,(emr.input_time) task_time`;
kondisiTask = ` inner join emr on
data_task.registrasi_id = emr.registrasi_id
and emr.form_id = 3
and emr.status_batal is null`;
}
if (task_id === 6) {
filter = `and last_task = '5'`;
selectTaskTime = `,(peresepan_obat.start_tracking) task_time`;
kondisiTask = ` inner join peresepan_obat on data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id and peresepan_obat.status_batal is null`;
}
if (task_id === 7) {
filter = `and last_task = '6'`;
selectTaskTime = `,(peresepan_obat.end_tracking) task_time`;
kondisiTask = ` inner join peresepan_obat on
data_task.registrasi_detail_id = peresepan_obat.registrasi_detail_id
and peresepan_obat.status_batal is null`;
}
}
const today = new Date();
const oneMonthAgo = new Date();
oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1);
const formattedToday = today.toISOString().slice(0, 10);
const formattedOneMonthAgo = oneMonthAgo.toISOString().slice(0, 10);
const startDate = formattedOneMonthAgo;
const endDate = formattedToday;
const queryTask = `WITH data_task as (
select
registrasi.registrasi_id,
pasien.no_mr,
pasien.nama_pasien,
bagian.nama_bagian,
registrasi_detail.registrasi_detail_id,
max(task_bpjs_log.task_id) last_task,
max(emr1.form_id) assess,
max(emr.form_id) soap ,
max(peresepan_obat.status_selesai) status_obat,
registrasi.tgl_masuk::date
from
registrasi
inner join pasien on
registrasi.pasien_id = pasien.pasien_id
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is null
inner join registrasi_urut on
registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id
and registrasi_urut.status_batal is null
inner join bagian on
registrasi_urut.bagian_id = bagian.bagian_id
and bagian.referensi_bagian in (1)
and bagian.bagian_id not in (23,46,221)
left join task_bpjs_log on
registrasi.registrasi_id = task_bpjs_log.registrasi_id
and task_bpjs_log.status_batal is null
left join emr emr1 on
registrasi_detail.registrasi_detail_id = emr1.registrasi_detail_id
and emr1.status_batal is null
and emr1.form_id in ('3')
left join emr on
registrasi_detail.registrasi_detail_id = emr.registrasi_detail_id
and emr.status_batal is null
and emr.form_id in ('6')
left join peresepan_obat on
registrasi_detail.registrasi_detail_id = peresepan_obat.registrasi_detail_id
and peresepan_obat.status_batal is null
left join rujukan_sep on
registrasi.registrasi_id = rujukan_Sep.registrasi_id
where
1 = 1
and registrasi.tgl_masuk::date = now()::date
and response is not null
and (
(response->>'metadata')::json->>'code' = '200'
or (response->>'metadata')::json->>'message' ilike '%Terdapat duplikasi%'
)
and rujukan_sep.sep is not null
group by
registrasi.registrasi_id,
pasien.no_mr,
pasien.nama_pasien,
bagian.nama_bagian,
registrasi_detail.registrasi_detail_id)
select
data_log.*
from
(select
data_task.*
${selectTaskTime}
from
data_task
${kondisiTask}
where
1 = 1
${filter}
) as data_log
where
data_log.task_time is not null
order by random()
limit ${limit};`;
const readyHitTaskNow = yield db_1.prismaDb3.$queryRawUnsafe(queryTask);
return readyHitTaskNow;
});
exports.listReadyHitTaskBpjs = listReadyHitTaskBpjs;
const listReadyHitTaskBpjsFisio = (limit, task_id) => __awaiter(void 0, void 0, void 0, function* () {
let filter = "";
if (task_id === 1) {
filter = "and last_task = '0'";
}
else if (task_id === 2) {
filter = "and last_task = '1'";
}
else if (task_id === 3) {
filter = "and last_task = '2'";
}
else if (task_id === 4) {
filter = "and last_task = '3'";
}
else if (task_id === 5) {
filter = "and last_task = '4'";
}
else if (task_id === 6) {
filter = "and last_task = '5'";
}
else if (task_id === 7) {
filter = "and last_task = '6'";
}
const queryTask = `with data_task as (
select
registrasi.registrasi_id,
registrasi.tgl_masuk::date,
pasien.no_mr,
pasien.nama_pasien,
rujukan_sep.sep,
bagian.nama_bagian,
max(task_bpjs_log.task_id) last_task,
max(emr1.form_id) assess,
max(emr.form_id) soap ,
max(peresepan_obat.status_selesai) status_obat
from
registrasi
inner join pasien on
registrasi.pasien_id = pasien.pasien_id
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is null
inner join registrasi_urut on
registrasi_detail.registrasi_detail_id = registrasi_urut.registrasi_detail_id
and registrasi_urut.status_batal is null
inner join bagian on
registrasi_urut.bagian_id = bagian.bagian_id
and bagian.referensi_bagian in (202)
left join rujukan_sep on
registrasi.registrasi_id = rujukan_Sep.registrasi_id
left join task_bpjs_log on
registrasi.registrasi_id = task_bpjs_log.registrasi_id
and task_bpjs_log.status_batal is null
left join emr emr1 on
registrasi_detail.registrasi_detail_id = emr1.registrasi_detail_id
and emr1.status_batal is null
and emr1.form_id in ('3')
left join emr on
registrasi_detail.registrasi_detail_id = emr.registrasi_detail_id
and emr.status_batal is null
and emr.form_id in ('6')
left join peresepan_obat on
registrasi_detail.registrasi_detail_id = peresepan_obat.registrasi_detail_id
and peresepan_obat.status_batal is null
where
1 = 1
and (registrasi.tgl_masuk::date = now()::date )
and response is not null
group by
registrasi.registrasi_id,
pasien.no_mr,
pasien.nama_pasien,
rujukan_sep.sep,
bagian.nama_bagian)
select
*
from
data_task
where
1 = 1
and sep is not null
${filter}
and nama_bagian not in ('KLINIK ITER', 'LABORATORIUM ', 'ONE DAY CARE (UMUM)')
order by
random()
limit ${limit};`;
const readyHitTaskNow = yield db_1.prismaDb3.$queryRawUnsafe(queryTask);
return readyHitTaskNow;
});
exports.listReadyHitTaskBpjsFisio = listReadyHitTaskBpjsFisio;
const getPasienFisioReadyHitNow = (limit) => __awaiter(void 0, void 0, void 0, function* () {
const readyHitFisio = yield db_1.prismaDb3.$queryRaw `
SELECT
registrasi.registrasi_id,
registrasi.pasien_id,
rujukan_sep.sep,
task_bpjs_log.response,
task_bpjs_log.task_id
from
registrasi
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
inner join bagian on
registrasi_detail.bagian_id = bagian.bagian_id
and bagian.referensi_bagian = '202'
inner join rujukan_sep on
registrasi.registrasi_id = rujukan_sep.registrasi_id
left join task_bpjs_log on
registrasi.registrasi_id = task_bpjs_log.registrasi_id
and task_bpjs_log.task_id = '0'
where
registrasi.status_batal is null
and registrasi.tgl_masuk::date = now()::date
and rujukan_sep.sep is not null
and task_bpjs_log.response is null
limit ${limit};`;
return readyHitFisio;
});
exports.getPasienFisioReadyHitNow = getPasienFisioReadyHitNow;
const getPasienHitUlangAddAntrol = (limit) => __awaiter(void 0, void 0, void 0, function* () {
const rawQuery = yield db_1.prismaDb3.$queryRaw `
select
task_bpjs_log.task_id,
rujukan_sep.sep,
pasien.pasien_id,
registrasi.registrasi_id,
task_bpjs_log.response,
task_bpjs_log.mod_time,
pasien.no_hp
from
task_bpjs_log
inner join rujukan_sep on
task_bpjs_log.registrasi_id = rujukan_sep.registrasi_id
and rujukan_sep.sep is not null
inner join registrasi on
task_bpjs_log.registrasi_id = registrasi.registrasi_id
inner join pasien on
registrasi.pasien_id = pasien.pasien_id
inner join emr on
registrasi.registrasi_id = emr.registrasi_id
and emr.form_id = 6
where
registrasi.tgl_masuk::date = now()::date
and (task_bpjs_log.response->'metadata'->>'message' = 'data nohp belum sesuai.'
or task_bpjs_log.response->'metadata'->>'message' like '%masa berlaku habis%'
or task_bpjs_log.response->'metadata'->>'message' = 'Undefined Error.'
or task_bpjs_log.response->'metadata'->>'message' = 'Rujukan tidak valid')
and task_id = '0'
limit ${limit};`;
return rawQuery;
});
exports.getPasienHitUlangAddAntrol = getPasienHitUlangAddAntrol;
const getKodeBagian = (registrasi_id) => __awaiter(void 0, void 0, void 0, function* () {
const rawQuery = yield db_1.prismaDb3.$queryRaw `
SELECT
mapping_poli_bpjs.kode_poli_bpjs
FROM
registrasi_detail
INNER JOIN bagian ON
registrasi_detail.bagian_id = bagian.bagian_id
INNER JOIN mapping_poli_bpjs ON
mapping_poli_bpjs.bagian_id = bagian.bagian_id
WHERE
registrasi_detail.registrasi_id = ${registrasi_id};`;
return rawQuery;
});
exports.getKodeBagian = getKodeBagian;