463 lines
21 KiB
JavaScript
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;
|