"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;