926 lines
44 KiB
JavaScript
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;
|