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

926 lines
44 KiB
JavaScript

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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());
});
};
var _a, _b;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkHariLiburMerah = exports.checkEmrValidasi = exports.checkPasienId = exports.getJadwalOperasi = exports.getTindakanBedah = exports.listJadwalOperasi = exports.insertPasienBaru = exports.checkInData = exports.checkDataRegistrasi = exports.batalDataAntrean = exports.sisaDataAntrean = exports.urutanMaxRajal = exports.insertPendaftaranService = exports.checkDokterReadyService = exports.insertDataNasabahBPJS = exports.checkDataNasabahBPJS = exports.checkRujukanService = exports.insertRujukanService = exports.checkEmrTerdaftar = exports.checkRegistrasiTerdaftarToday = exports.checkRegistrasiTerdaftar = exports.statusAntrean = exports.checkPoliHfis = exports.checkDpjpHfis = void 0;
const db_1 = require("./../../../db");
const database_handler_1 = require("./../../../db/database.handler");
const time_1 = require("./../../../middlewares/time");
const dotenv = __importStar(require("dotenv"));
dotenv.config();
const kelas = parseInt(((_a = process.env.kelas_ruang3) !== null && _a !== void 0 ? _a : ''), 10);
const nasabahBpjs = parseInt(((_b = process.env.nasabahBPJS) !== null && _b !== void 0 ? _b : ''), 10);
const checkDpjpHfis = (kodeDpjp) => __awaiter(void 0, void 0, void 0, function* () {
const dpjp_hfis = yield db_1.prismaDb1.dpjp_hfis.findFirst({
where: {
dpjp_hfis_kode: kodeDpjp,
},
select: {
user_id: true,
},
});
return dpjp_hfis;
});
exports.checkDpjpHfis = checkDpjpHfis;
const checkPoliHfis = (kodePoli) => __awaiter(void 0, void 0, void 0, function* () {
const checkpoli_hfis = `SELECT
bagian.bagian_id
FROM
bagian
INNER JOIN mapping_poli_bpjs ON
bagian.bagian_id = mapping_poli_bpjs.bagian_id
WHERE
mapping_poli_bpjs.kode_poli_bpjs = '${kodePoli}'
AND bagian.flag_eksekutif IS NULL
Limit 1
`;
const poli_hfis = yield db_1.prismaDb1.$queryRawUnsafe(checkpoli_hfis);
return poli_hfis;
});
exports.checkPoliHfis = checkPoliHfis;
const statusAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () {
let referensi_bagian_id_rajal = 1;
let kode_poli_bpjs = data.kodepoli;
let dpjp_hfis_kode = data.kodedokter;
let tgl_periksa = data.tanggalperiksa;
let jam_praktek = data.jampraktek;
let hari = new Date(tgl_periksa).getDay();
const rawQuery = `SELECT
bagian.nama_bagian,
registrasi.registrasi_id,
users.nama_pegawai,
users.user_id,
dpjp_hfis.dpjp_hfis_nama,
jadwal_dokter.kuota,
jadwal_dokter.hari,
registrasi_urut.pegawai_id,
emr.emr_id,
registrasi_urut.urutan
from
registrasi
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_detail.bagian_id = bagian.bagian_id
and bagian.referensi_bagian = ${referensi_bagian_id_rajal}
inner join mapping_poli_bpjs on
bagian.bagian_id = mapping_poli_bpjs.bagian_id
and mapping_poli_bpjs.kode_poli_bpjs = '${kode_poli_bpjs}'
and mapping_poli_bpjs.status_batal is NULL
inner join penanggung_rawat on
registrasi.registrasi_id = penanggung_rawat.registrasi_id
inner join users on
penanggung_rawat.rawat_user_id = users.user_id
inner join dpjp_hfis on
users.user_id = dpjp_hfis.user_id
and dpjp_hfis.dpjp_hfis_kode = '${dpjp_hfis_kode.toString()}'
and dpjp_hfis.status_batal is NULL
inner join jadwal_dokter on
bagian.bagian_id = jadwal_dokter.bagian_id
and registrasi_urut.pegawai_id = jadwal_dokter.pegawai_id
and jadwal_dokter.hari = ${hari}
left outer join emr on
registrasi.registrasi_id = emr.registrasi_id
and emr.form_id = 3
where
registrasi.status_batal is null
and registrasi.tgl_masuk::date = '${tgl_periksa}'`;
const status_antrean = yield db_1.prismaDb1.$queryRawUnsafe(rawQuery);
return status_antrean;
});
exports.statusAntrean = statusAntrean;
const checkRegistrasiTerdaftar = (pasien_id) => __awaiter(void 0, void 0, void 0, function* () {
const checkRegistrasiPasien = `SELECT
registrasi.registrasi_id,
pegawai.nama_pegawai,
registrasi.tgl_masuk::date,
bagian.nama_bagian,
bagian.bagian_id,
mapping_poli_bpjs.kode_poli_bpjs
from
registrasi
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is NULL
inner join penanggung_rawat on
penanggung_rawat.registrasi_id = registrasi.registrasi_id
and penanggung_rawat.status_batal is NULL
inner join pasien_nasabah on
pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id
and pasien_nasabah.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 pegawai on
registrasi_urut.pegawai_id = pegawai.pegawai_id
inner join bagian on
registrasi_detail.bagian_id = bagian.bagian_id
inner join mapping_poli_bpjs on
bagian.bagian_id = mapping_poli_bpjs.bagian_id
and mapping_poli_bpjs.status_batal is NULL
where
registrasi.pasien_id = ${pasien_id}
and registrasi.tgl_masuk::DATE > now()::date
and pasien_nasabah.nasabah_id = '${nasabahBpjs}'
and registrasi.status_batal is null
order by tgl_masuk::date ASC`;
const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkRegistrasiPasien);
return checkRegistrasi;
});
exports.checkRegistrasiTerdaftar = checkRegistrasiTerdaftar;
const checkRegistrasiTerdaftarToday = (data) => __awaiter(void 0, void 0, void 0, function* () {
const checkRegistrasiPasien = `SELECT
registrasi.registrasi_id
from
registrasi
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is NULL
inner join pasien_nasabah on
pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id
and pasien_nasabah.status_batal is NULL
inner join bagian on
registrasi_detail.bagian_id = bagian.bagian_id
and bagian.flag_eksekutif is null
inner join mapping_poli_bpjs on
bagian.bagian_id = mapping_poli_bpjs.bagian_id
and mapping_poli_bpjs.status_batal is NULL
where
registrasi.pasien_id = ${data.pasien_id}
and mapping_poli_bpjs.kode_poli_bpjs = '${data.kode_poli_bpjs}'
and registrasi.tgl_masuk::DATE = now()::date
and pasien_nasabah.nasabah_id = '${nasabahBpjs}'
and registrasi.status_batal is null
order by tgl_masuk::date ASC
Limit 1`;
const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkRegistrasiPasien);
return checkRegistrasi;
});
exports.checkRegistrasiTerdaftarToday = checkRegistrasiTerdaftarToday;
const checkEmrTerdaftar = (data) => __awaiter(void 0, void 0, void 0, function* () {
const checkEmrPasien = `SELECT
registrasi.registrasi_id
from
registrasi
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is NULL
inner join bagian on
registrasi_detail.bagian_id = bagian.bagian_id
and bagian.flag_eksekutif is null
inner join mapping_poli_bpjs on
bagian.bagian_id = mapping_poli_bpjs.bagian_id
and mapping_poli_bpjs.status_batal is NULL
inner join pasien_nasabah on
pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id
and pasien_nasabah.status_batal is NULL
inner join emr on
registrasi.registrasi_id = emr.registrasi_id
and emr.status_batal is NULL
inner join pasien on
registrasi.pasien_id = pasien.pasien_id
where
pasien.no_mr = '${data.norm}'
and mapping_poli_bpjs.kode_poli_bpjs = '${data.kodepoli}'
and registrasi.tgl_masuk::DATE = now()::date
and pasien_nasabah.nasabah_id = '${nasabahBpjs}'
and registrasi.status_batal is null
and emr.form_id = '3'
order by tgl_masuk::date ASC
Limit 1`;
const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkEmrPasien);
return checkRegistrasi;
});
exports.checkEmrTerdaftar = checkEmrTerdaftar;
const checkEmrValidasi = (data) => __awaiter(void 0, void 0, void 0, function* () {
const checkEmrPasien = `SELECT
registrasi.registrasi_id,
emr.form_id
from
registrasi
inner join registrasi_detail on
registrasi.registrasi_id = registrasi_detail.registrasi_id
and registrasi_detail.status_batal is null
inner join bagian on
registrasi_detail.bagian_id = bagian.bagian_id
inner join mapping_poli_bpjs on
bagian.bagian_id = mapping_poli_bpjs.bagian_id
and mapping_poli_bpjs.status_batal is null
inner join pasien_nasabah on
pasien_nasabah.pasien_nasabah_id = registrasi.pasien_nasabah_id
and pasien_nasabah.status_batal is null
inner join emr on
registrasi.registrasi_id = emr.registrasi_id
and emr.status_batal is null
where
registrasi.registrasi_id = ${data.kodebooking}
and registrasi.status_batal is null
order by
tgl_masuk::date asc
limit 1`;
const checkRegistrasi = yield db_1.prismaDb1.$queryRawUnsafe(checkEmrPasien);
return checkRegistrasi;
});
exports.checkEmrValidasi = checkEmrValidasi;
const checkRujukanService = (noRujukan) => __awaiter(void 0, void 0, void 0, function* () {
const rujukan_pasien = yield db_1.prismaDb1.rujukan_pasien.findFirst({
where: {
no_rujukan: noRujukan,
},
select: {
rujukan_pasien_id: true,
},
});
return rujukan_pasien;
});
exports.checkRujukanService = checkRujukanService;
const insertRujukanService = (data, inputUserId) => __awaiter(void 0, void 0, void 0, function* () {
const rujukanPasienId = yield (0, database_handler_1.generateMaxDb1)("max_rujukan_sep_idx", "rujukan_pasien_id");
const insertRujukan = yield db_1.prismaDb1.rujukan_pasien.create({
data: {
rujukan_pasien_id: rujukanPasienId,
input_time: (0, time_1.dateNow)(),
input_user_id: inputUserId,
pasien_id: parseInt(data.response.rujukan.peserta.mr.noMR, 10),
no_peserta: data.response.rujukan.peserta.noKartu,
no_rujukan: data.response.rujukan.noKunjungan,
tgl_rujukan: new Date(data.response.rujukan.tglKunjungan),
kode_provider: data.response.rujukan.provPerujuk.kode,
nama_provider: data.response.rujukan.provPerujuk.nama,
kode_diagnosa: data.response.rujukan.diagnosa.kode,
nama_diagnosa: data.response.rujukan.diagnosa.nama,
faskes: data.response.asalFaskes,
jenis_peserta: data.response.rujukan.peserta.jenisPeserta.keterangan,
prolanis_prb: data.response.rujukan.peserta.informasi.prolanisPRB,
json_data: data,
kode_poli_bpjs: data.response.rujukan.poliRujukan.kode,
},
});
});
exports.insertRujukanService = insertRujukanService;
const checkDataNasabahBPJS = (norm) => __awaiter(void 0, void 0, void 0, function* () {
const noMr = norm.toString().trim().padStart(8, "0");
const checkDataBPJS = `SELECT
pasien_nasabah.pasien_nasabah_id,
pasien.pasien_id
FROM
pasien
LEFT JOIN pasien_nasabah ON
pasien.pasien_id = pasien_nasabah.pasien_id
AND pasien_nasabah.nasabah_id = '${nasabahBpjs}'
AND pasien_nasabah.status_batal is null
WHERE
pasien.no_mr = '${noMr}'
Limit 1
`;
const checkData = yield db_1.prismaDb1.$queryRawUnsafe(checkDataBPJS);
return checkData;
});
exports.checkDataNasabahBPJS = checkDataNasabahBPJS;
const insertDataNasabahBPJS = (data) => __awaiter(void 0, void 0, void 0, function* () {
const insertDataNasabah = yield db_1.prismaDb1.pasien_nasabah.create({
data: {
pasien_nasabah_id: yield (0, database_handler_1.generateMaxDb1)("max_pasien_nasabah_idx", "pasien_nasabah_id"),
input_time: (0, time_1.dateNow)(),
input_user_id: data.input_user_id,
pasien_id: data.pasien_id,
nasabah_id: parseInt(data.nasabah_id, 10),
no_peserta: data.no_peserta,
},
});
return insertDataNasabah;
});
exports.insertDataNasabahBPJS = insertDataNasabahBPJS;
const checkHariLiburMerah = (data) => __awaiter(void 0, void 0, void 0, function* () {
const hari_libur = yield db_1.prismaDb1.tanggal_merah.findFirst({
where: {
tgl_libur: new Date(data.tanggalperiksa),
status_batal: null
},
select: {
tanggal_merah_id: true,
},
});
return hari_libur;
});
exports.checkHariLiburMerah = checkHariLiburMerah;
const checkDokterReadyService = (data) => __awaiter(void 0, void 0, void 0, function* () {
const hari = new Date(data.tanggalperiksa).getDay();
const checkDataDokterReady = `select
pegawai.nama_pegawai,
pegawai.pegawai_id,
dpjp_hfis.dpjp_hfis_kode,
cuti_dokter.keterangan,
cuti_dokter.tanggal_awal::date tgl_awal_cuti,
cuti_dokter.tanggal_akhir::date tgl_akhir_cuti,
jadwal_dokter.kuota,
jadwal_dokter.waktu_mulai,
jadwal_dokter.waktu_selesai,
users.user_id,
bagian.nama_bagian,
(
select
count(registrasi_urut.registrasi_urut_id) as jumlah_terdaftar
from
registrasi_urut
where
registrasi_urut.bagian_id = ${data.bagian_id}
and registrasi_urut.pegawai_id = pegawai.pegawai_id
and registrasi_urut.status_batal is null
and tgl_urut::DATE = '${data.tanggalperiksa}'
) jumlah_terdaftar
from
jadwal_dokter
inner join bagian on
jadwal_dokter.bagian_id = bagian.bagian_id
inner join pegawai on
jadwal_dokter.pegawai_id = pegawai.pegawai_id
inner join users on
pegawai.pegawai_id = users.pegawai_id
left outer join dpjp_hfis on
users.user_id = dpjp_hfis.user_id
and dpjp_hfis.status_batal is null
left outer join cuti_dokter on
cuti_dokter.cuti_user_id = users.user_id
and cuti_dokter.tanggal_awal::date <= '${data.tanggalperiksa}'
and cuti_dokter.tanggal_akhir::date >= '${data.tanggalperiksa}'
where
jadwal_dokter.bagian_id = ${data.bagian_id}
and users.user_id = ${data.dokter_id}
and jadwal_dokter.status_batal is null
and jadwal_dokter.hari = ${hari}
and pegawai.status_batal is null
`;
const checkData = yield db_1.prismaDb1.$queryRawUnsafe(checkDataDokterReady);
return checkData;
});
exports.checkDokterReadyService = checkDokterReadyService;
const insertPendaftaranService = (data) => __awaiter(void 0, void 0, void 0, function* () {
const registrasiId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_idx", "registrasi_id");
const insertRegistrasi = yield db_1.prismaDb1.registrasi.create({
data: {
registrasi_id: registrasiId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
pasien_id: data.pasien_id,
pasien_nasabah_id: data.pasien_nasabah_id,
tgl_masuk: new Date(data.data.tanggalperiksa),
jenis_rawat: "RJ",
prioritas: "Berjalan Sendiri",
flag_online: 1,
},
});
const registrasiDetailId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_detail_idx", "registrasi_detail_id");
const insertRegistrasiDetail = yield db_1.prismaDb1.registrasi_detail.create({
data: {
registrasi_detail_id: registrasiDetailId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_id: registrasiId,
tgl_daftar: new Date(data.data.tanggalperiksa),
bagian_id: data.data.bagian_id,
kelas_id: kelas,
hak_kelas_id: kelas,
},
});
const registrasiUrutId = yield (0, database_handler_1.generateMaxDb1)("max_registrasi_urut_idx", "registrasi_urut_id");
const pegawaiId = yield (0, database_handler_1.selectFieldDb1)("users", "pegawai_id", `where
status_batal is null
and user_id = ${data.data.dokter_id}`);
let antrian_rj, addminute;
const rangeAntrianRJ = process.env.rangeAntrianRJ;
const antrianMax = yield urutanMaxRajal(data.data.bagian_id, pegawaiId, data.data.tanggalperiksa);
if (!antrianMax || antrianMax === "") {
antrian_rj = 1;
addminute = 0;
}
else {
antrian_rj = antrianMax + 1;
addminute = antrian_rj * rangeAntrianRJ - rangeAntrianRJ;
}
const hari = new Date(data.data.tanggalperiksa).getDay();
let jam_mulai = yield (0, database_handler_1.selectFieldDb1)("jadwal_dokter", "waktu_mulai", `where
bagian_id = ${data.data.bagian_id}
and pegawai_id = ${pegawaiId}
and hari = ${hari}
and status_batal is null`);
let jam_selesai = yield (0, database_handler_1.selectFieldDb1)("jadwal_dokter", "waktu_selesai", `where
bagian_id = ${data.data.bagian_id}
and pegawai_id = ${pegawaiId}
and hari = ${hari}
and status_batal is null`);
jam_mulai = yield (0, database_handler_1.timeHandler)(jam_mulai);
jam_selesai = yield (0, database_handler_1.timeHandler)(jam_selesai);
const kontrol = `${data.data.tanggalperiksa} ${jam_mulai}`;
const bataskontrol = `${data.data.tanggalperiksa} ${jam_selesai}`;
const minutesToAdd = addminute;
let time = new Date(kontrol + " UTC");
time.setMinutes(time.getMinutes() + minutesToAdd);
let jamkontrol;
if (new Date(time) >= new Date(bataskontrol + " UTC")) {
jamkontrol = new Date(new Date(bataskontrol + " UTC").getTime() - 3600000); // Mengurangi 1 jam dari batas kontrol
}
else {
jamkontrol = time;
}
const jampelayanan = jamkontrol;
const insertRegistrasiUrut = yield db_1.prismaDb1.registrasi_urut.create({
data: {
registrasi_urut_id: registrasiUrutId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_detail_id: registrasiDetailId,
pegawai_id: pegawaiId,
bagian_id: data.data.bagian_id,
urutan: antrian_rj,
tgl_urut: jampelayanan,
},
});
const penanggungRawatId = yield (0, database_handler_1.generateMaxDb1)("max_penanggung_rawat_idx", "penanggung_rawat_id");
const insertPenanggungRawat = yield db_1.prismaDb1.penanggung_rawat.create({
data: {
penanggung_rawat_id: penanggungRawatId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_id: registrasiId,
rawat_user_id: data.data.dokter_id,
},
});
const diagnosaRawatId = yield (0, database_handler_1.generateMaxDb1)("max_diagnosa_rawat_idx", "diagnosa_rawat_id");
const insertDiagnosaRawat = yield db_1.prismaDb1.diagnosa_rawat.create({
data: {
diagnosa_rawat_id: diagnosaRawatId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_id: registrasiId,
icd_id: 9985,
jenis_diagnosa: 1,
},
});
const rujukanSepId = yield (0, database_handler_1.generateMaxDb1)("max_rujukan_sep_idx", "rujukan_sep_id");
const insertRujukanSep = yield db_1.prismaDb1.rujukan_sep.create({
data: {
rujukan_sep_id: rujukanSepId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_id: registrasiId,
no_rujukan: data.noRujukan,
},
});
const billTempId = yield (0, database_handler_1.generateMaxDb1)("max_bill_temp_idx", "bill_temp_id");
const insertBillTemp = yield db_1.prismaDb1.bill_temp.create({
data: {
bill_temp_id: billTempId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
registrasi_detail_id: registrasiDetailId,
pasien_id: data.pasien_id,
bagian_id: data.data.bagian_id,
nasabah_id: nasabahBpjs,
kelas_ruang_id: kelas,
hak_kelas_ruang_id: kelas,
tgl_bill: new Date(data.data.tanggalperiksa),
},
});
if (data.data.jeniskunjungan === 3) {
const suratKontrolId = yield (0, database_handler_1.generateMaxDb1)("surat_kontrol", "surat_kontrol_id");
const insertSuratKontrol = yield db_1.prismaDb1.surat_kontrol.create({
data: {
surat_kontrol_id: suratKontrolId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.data.input_user_id,
no_surat_kontrol: data.data.nomorreferensi,
registrasi_id_kontrol: registrasiId,
jenis_kontrol: "KONTROL",
},
});
}
const namaDPJP = yield (0, database_handler_1.selectFieldDb1)("users", "nama_pegawai", `where user_id = ${data.data.dokter_id}`);
const namaBagian = yield (0, database_handler_1.selectFieldDb1)("bagian", "nama_bagian", `where bagian_id = ${data.data.bagian_id}`);
const sevenHoursInMilliseconds = 7 * 60 * 60 * 1000;
const adjustedTime = Math.floor(jampelayanan.getTime() - sevenHoursInMilliseconds);
return {
registrasi_id: registrasiId,
registrasi_detail_id: registrasiDetailId,
registrasi_urut_id: registrasiUrutId,
urutan: antrian_rj,
jampelayanan: jampelayanan,
dpjp: namaDPJP,
bagian: namaBagian,
estimasidilayani: adjustedTime,
};
});
exports.insertPendaftaranService = insertPendaftaranService;
const sisaDataAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () {
const registrasiId = parseInt(data.kodebooking, 10);
const sisaAntrean = `select
registrasi_urut.urutan,
bagian.nama_bagian,
pegawai.nama_pegawai,
(
select
count(registrasi_urut.*)
from
registrasi_urut
where
registrasi_urut.bagian_id = bagian.bagian_id
and registrasi_urut.pegawai_id = pegawai.pegawai_id
and registrasi_urut.tgl_urut::date = registrasi.tgl_masuk::date
and registrasi_urut.status_panggil is null
and registrasi_urut.status_batal is null
) sisaantrean,
(
select
registrasi_urut.urutan
from
registrasi_urut
where
registrasi_urut.bagian_id = bagian.bagian_id
and registrasi_urut.pegawai_id = pegawai.pegawai_id
and registrasi_urut.tgl_urut::date = registrasi.tgl_masuk::date
and registrasi_urut.status_panggil is not null
and registrasi_urut.status_batal is null
limit 1
) antreanpanggil
from
registrasi
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_detail.bagian_id = bagian.bagian_id
and bagian.referensi_bagian = '1'
inner join pegawai on
registrasi_urut.pegawai_id = pegawai.pegawai_id
where
registrasi.registrasi_id = ${registrasiId}
and registrasi.status_batal is null`;
const checkData = yield db_1.prismaDb1.$queryRawUnsafe(sisaAntrean);
return checkData[0];
});
exports.sisaDataAntrean = sisaDataAntrean;
const batalDataAntrean = (data) => __awaiter(void 0, void 0, void 0, function* () {
const registrasiId = parseInt(data.kodebooking, 10);
const batalRegistrasi = yield db_1.prismaDb1.registrasi.update({
where: {
registrasi_id: registrasiId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const registrasiDetailId = yield (0, database_handler_1.selectFieldDb1)("registrasi_detail", "registrasi_detail_id", `where registrasi_id = ${registrasiId} and status_batal is null`);
const batalRegistrasiDetail = yield db_1.prismaDb1.registrasi_detail.updateMany({
where: {
registrasi_id: registrasiId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const batalRegistrasiUrut = yield db_1.prismaDb1.registrasi_urut.updateMany({
where: {
registrasi_detail_id: registrasiDetailId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const batalPenanggungRawat = yield db_1.prismaDb1.penanggung_rawat.updateMany({
where: {
registrasi_id: registrasiId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const batalDiagnosaRawat = yield db_1.prismaDb1.diagnosa_rawat.updateMany({
where: {
registrasi_id: registrasiId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const batalRujukanSep = yield db_1.prismaDb1.rujukan_sep.updateMany({
where: {
registrasi_id: registrasiId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
const batalBillTemp = yield db_1.prismaDb1.bill_temp.updateMany({
where: {
registrasi_detail_id: registrasiDetailId,
},
data: {
status_batal: 1,
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
},
});
return true;
});
exports.batalDataAntrean = batalDataAntrean;
const checkDataRegistrasi = (data) => __awaiter(void 0, void 0, void 0, function* () {
const registrasiId = parseInt(data.kodebooking, 10);
const checkRegistrasi = yield db_1.prismaDb1.registrasi.findFirst({
where: {
registrasi_id: registrasiId,
status_batal: null,
},
});
return checkRegistrasi;
});
exports.checkDataRegistrasi = checkDataRegistrasi;
const checkInData = (data) => __awaiter(void 0, void 0, void 0, function* () {
const registrasiId = parseInt(data.kodebooking, 10);
const registrasiDetailId = yield (0, database_handler_1.selectFieldDb1)("registrasi_detail", "registrasi_detail_id", `where registrasi_id = ${registrasiId} and status_batal is null`);
const checkIn = yield db_1.prismaDb1.registrasi_urut.updateMany({
where: {
registrasi_detail_id: registrasiDetailId,
},
data: {
mod_time: (0, time_1.dateNow)(),
mod_user_id: data.input_user_id,
status_check_in: 1,
tgl_check_in: (0, time_1.dateNow)(),
},
});
return checkIn;
});
exports.checkInData = checkInData;
const insertPasienBaru = (data) => __awaiter(void 0, void 0, void 0, function* () {
const pasienId = yield (0, database_handler_1.generateMaxDb1)("max_pasien_idx", "pasien_id");
const noMr = pasienId.toString().padStart(8, "0");
let jenisKelamin;
if (data.jeniskelamin === "L") {
jenisKelamin = "Laki-Laki";
}
else if (data.jeniskelamin === "P") {
jenisKelamin = "Perempuan";
}
const pasienBaru = yield db_1.prismaDb1.pasien.create({
data: {
pasien_id: pasienId,
input_time: (0, time_1.dateNow)(),
input_user_id: data.input_user_id,
no_mr: noMr,
tgl_lahir: new Date(data.tanggallahir + "UTC"),
no_hp: data.nohp,
alamat: data.alamat,
ktp: data.nik,
nama_pasien: data.nama,
jenis_kelamin: jenisKelamin,
},
});
return pasienBaru;
});
exports.insertPasienBaru = insertPasienBaru;
const listJadwalOperasi = (data) => __awaiter(void 0, void 0, void 0, function* () {
const listOperasi = `SELECT
kodebooking,
jenistindakan,
namapoli,
kodepoli,
tanggaloperasi,
nopeserta,
(
case
when laporan_operasi is not null then 1
else 0
end ) as terlaksana
from
(
select
pesan_slot_bedah.pesan_slot_bedah_id as kodebooking,
pesan_slot_bedah.jenis_tindakan_bedah as jenistindakan,
(
case
when bagian.nama_bagian is not null then bagian.nama_bagian
else bagian_ranap.nama_bagian
end
) as namapoli,
(
case
when mapping_poli_bpjs.kode_poli_bpjs is not null then mapping_poli_bpjs.kode_poli_bpjs
else mapping_poli_bpjs_ranap.kode_poli_bpjs
end
) as kodepoli,
pesan_slot_bedah.tgl_rencana_operasi as tanggaloperasi,
pasien_nasabah.no_peserta as nopeserta,
(
select
emr.emr_id
from
emr
where
emr.form_id = 27
and emr.status_batal is null
and emr.registrasi_id = registrasi_detail.registrasi_id
limit 1 ) as laporan_operasi
from
pesan_slot_bedah
left outer join registrasi_detail on
pesan_slot_bedah.registrasi_detail_id = registrasi_detail.registrasi_detail_id
left outer join bagian on
registrasi_detail.bagian_asal_id = bagian.bagian_id
AND bagian.referensi_bagian = 1
left outer join mapping_poli_bpjs on
mapping_poli_bpjs.bagian_id = bagian.bagian_id
left outer join registrasi on
registrasi.registrasi_id = registrasi_detail.registrasi_id
left outer join pasien_nasabah on
registrasi.pasien_nasabah_id = pasien_nasabah.pasien_nasabah_id
and pasien_nasabah.nasabah_id = '${nasabahBpjs}'
left outer join penanggung_rawat on
registrasi.registrasi_id = penanggung_rawat.registrasi_id
left outer join users on
penanggung_rawat.rawat_user_id = users.user_id
left outer join pegawai on
users.pegawai_id = pegawai.pegawai_id
left outer join bagian as bagian_ranap on
pegawai.bagian_id = bagian_ranap.bagian_id
left outer join mapping_poli_bpjs as mapping_poli_bpjs_ranap on
bagian_ranap.bagian_id = mapping_poli_bpjs_ranap.bagian_id
where
registrasi.status_batal is null
and registrasi_detail.status_batal is null
and mapping_poli_bpjs.status_batal is null
and pesan_slot_bedah.status_batal is null
and cast(pesan_slot_bedah.tgl_rencana_operasi as date) between '${data.tanggalawal}' AND '${data.tanggalakhir}' ) as data_operasi`;
const listOperasiResult = yield db_1.prismaDb1.$queryRawUnsafe(listOperasi);
return listOperasiResult;
});
exports.listJadwalOperasi = listJadwalOperasi;
const getTindakanBedah = (jenistindakan) => __awaiter(void 0, void 0, void 0, function* () {
const tindakanBedah = `SELECT
detail_tindakan_bedah.nama_tindakan_bedah
FROM
detail_tindakan_bedah
WHERE
detail_tindakan_bedah.detail_tindakan_bedah_id = ${jenistindakan}`;
const tindakanBedahResult = yield db_1.prismaDb1.$queryRawUnsafe(tindakanBedah);
return tindakanBedahResult[0].nama_tindakan_bedah;
});
exports.getTindakanBedah = getTindakanBedah;
const getJadwalOperasi = (data) => __awaiter(void 0, void 0, void 0, function* () {
const jadwalOperasi = `SELECT
kodebooking,
jenistindakan,
namapoli,
kodepoli,
tanggaloperasi,
nopeserta,
(
case
when laporan_operasi is not null then 1
else 0
end ) as terlaksana
from
(
select
pesan_slot_bedah.pesan_slot_bedah_id as kodebooking,
pesan_slot_bedah.jenis_tindakan_bedah as jenistindakan,
(
case
when bagian.nama_bagian is not null then bagian.nama_bagian
else bagian_ranap.nama_bagian
end
) as namapoli,
(
case
when mapping_poli_bpjs.kode_poli_bpjs is not null then mapping_poli_bpjs.kode_poli_bpjs
else mapping_poli_bpjs_ranap.kode_poli_bpjs
end
) as kodepoli,
pesan_slot_bedah.tgl_rencana_operasi as tanggaloperasi,
pasien_nasabah.no_peserta as nopeserta,
(
select
emr.emr_id
from
emr
where
emr.form_id = 27
and emr.status_batal is null
and emr.registrasi_id = registrasi_detail.registrasi_id
limit 1 ) as laporan_operasi
from
pesan_slot_bedah
left outer join registrasi_detail on
pesan_slot_bedah.registrasi_detail_id = registrasi_detail.registrasi_detail_id
left outer join bagian on
registrasi_detail.bagian_asal_id = bagian.bagian_id
AND bagian.referensi_bagian = 1
left outer join mapping_poli_bpjs on
mapping_poli_bpjs.bagian_id = bagian.bagian_id
left outer join registrasi on
registrasi.registrasi_id = registrasi_detail.registrasi_id
left outer join pasien_nasabah on
registrasi.pasien_nasabah_id = pasien_nasabah.pasien_nasabah_id
and pasien_nasabah.nasabah_id = '${nasabahBpjs}'
left outer join penanggung_rawat on
registrasi.registrasi_id = penanggung_rawat.registrasi_id
left outer join users on
penanggung_rawat.rawat_user_id = users.user_id
left outer join pegawai on
users.pegawai_id = pegawai.pegawai_id
left outer join bagian as bagian_ranap on
pegawai.bagian_id = bagian_ranap.bagian_id
left outer join mapping_poli_bpjs as mapping_poli_bpjs_ranap on
bagian_ranap.bagian_id = mapping_poli_bpjs_ranap.bagian_id
where
registrasi.status_batal is null
and registrasi_detail.status_batal is null
and mapping_poli_bpjs.status_batal is null
and pesan_slot_bedah.status_batal is null
and pasien_nasabah.no_peserta = '${data.nopeserta}' ) as data_operasi`;
const jadwalOperasiResult = yield db_1.prismaDb1.$queryRawUnsafe(jadwalOperasi);
return jadwalOperasiResult;
});
exports.getJadwalOperasi = getJadwalOperasi;
const checkPasienId = (nik) => __awaiter(void 0, void 0, void 0, function* () {
const checkPasienIdData = yield db_1.prismaDb1.pasien.findFirst({
where: {
ktp: nik,
},
select: {
pasien_id: true,
no_mr: true,
},
});
return checkPasienIdData;
});
exports.checkPasienId = checkPasienId;
const urutanMaxRajal = (bagianId, pegawaiId, tglKunjungan) => __awaiter(void 0, void 0, void 0, function* () {
const urutanRajal = `SELECT
MAX(urutan) as antrian_max
FROM
registrasi_urut
WHERE
status_batal IS NULL
AND bagian_id = ${bagianId}
AND pegawai_id = ${pegawaiId}
AND tgl_urut::date = '${tglKunjungan}'`;
const checkData = yield db_1.prismaDb1.$queryRawUnsafe(urutanRajal);
if (checkData[0].antrian_max > 0) {
return checkData[0].antrian_max;
}
else {
return 0;
}
});
exports.urutanMaxRajal = urutanMaxRajal;