431 lines
17 KiB
JavaScript
431 lines
17 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());
|
|
});
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.jadwalOperasiService = exports.listJadwalOperasiService = exports.pasienBaruService = exports.checkInService = exports.batalAntreanService = exports.sisaAntreanService = exports.daftarPerjanjianService = exports.statusAntreanService = void 0;
|
|
const jknmobile_repository_1 = require("./jknmobile.repository");
|
|
const axiosClient_1 = require("../../../utils/axiosClient");
|
|
const dotenv = __importStar(require("dotenv"));
|
|
const time_1 = require("./../../../middlewares/time");
|
|
dotenv.config();
|
|
const urlPhis = process.env.urlPHIS || "";
|
|
const statusAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const resultqueryStatusAntrean = yield (0, jknmobile_repository_1.statusAntrean)(data);
|
|
if (resultqueryStatusAntrean.length < 1) {
|
|
return false;
|
|
}
|
|
const jumlah_terdaftar = resultqueryStatusAntrean.length;
|
|
let sisa_kuota = resultqueryStatusAntrean[0].kuota - jumlah_terdaftar;
|
|
if (sisa_kuota < 0) {
|
|
sisa_kuota = 0;
|
|
}
|
|
const arr_sudah_soap = {};
|
|
const arr_belum_soap = [];
|
|
resultqueryStatusAntrean.forEach((valresultqueryStatusAntrean) => {
|
|
if (valresultqueryStatusAntrean.emr_id) {
|
|
arr_sudah_soap[valresultqueryStatusAntrean.registrasi_id] =
|
|
valresultqueryStatusAntrean.emr_id;
|
|
}
|
|
else {
|
|
arr_belum_soap.push(valresultqueryStatusAntrean.urutan);
|
|
}
|
|
});
|
|
const terakhir_panggil = Math.min(...arr_belum_soap);
|
|
const jumlah_terlayani = Object.keys(arr_sudah_soap).length;
|
|
const sisa_antrian = jumlah_terdaftar - jumlah_terlayani;
|
|
const dataWillOutput = {
|
|
namapoli: resultqueryStatusAntrean[0].nama_bagian,
|
|
namadokter: resultqueryStatusAntrean[0].dpjp_hfis_nama,
|
|
totalantrean: jumlah_terdaftar,
|
|
sisaantrean: sisa_antrian,
|
|
antreanpanggil: terakhir_panggil.toString(),
|
|
sisakuotajkn: sisa_kuota,
|
|
kuotajkn: resultqueryStatusAntrean[0].kuota,
|
|
sisakuotanonjkn: sisa_kuota,
|
|
kuotanonjkn: resultqueryStatusAntrean[0].kuota,
|
|
keterangan: "",
|
|
};
|
|
return dataWillOutput;
|
|
});
|
|
exports.statusAntreanService = statusAntreanService;
|
|
const daftarPerjanjianService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
if (!data.norm) {
|
|
return {
|
|
message: "Pasien Baru",
|
|
code: 202,
|
|
};
|
|
}
|
|
const checkNasabahBPJS = yield (0, jknmobile_repository_1.checkDataNasabahBPJS)(data.norm);
|
|
if (!checkNasabahBPJS[0].pasien_nasabah_id) {
|
|
const dataNasabah = {
|
|
pasien_id: checkNasabahBPJS[0].pasien_id,
|
|
nasabah_id: process.env.nasabahBPJS,
|
|
no_peserta: data.nomorkartu,
|
|
input_user_id: data.input_user_id,
|
|
};
|
|
const nasabahBPJS = yield (0, jknmobile_repository_1.insertDataNasabahBPJS)(dataNasabah);
|
|
checkNasabahBPJS[0].pasien_nasabah_id = nasabahBPJS.pasien_nasabah_id;
|
|
}
|
|
let pasien_id = checkNasabahBPJS[0].pasien_id;
|
|
let pasien_nasabah_id = checkNasabahBPJS[0].pasien_nasabah_id;
|
|
const checkPendaftaranTerdaftar = yield (0, jknmobile_repository_1.checkRegistrasiTerdaftar)(pasien_id);
|
|
if (checkPendaftaranTerdaftar.length > 0) {
|
|
if (checkPendaftaranTerdaftar[0].kode_poli_bpjs === data.kodepoli) {
|
|
return {
|
|
code: 201,
|
|
message: `Anda sudah terdaftar di Poli ini pada tanggal ${checkPendaftaranTerdaftar[0].tgl_masuk}`,
|
|
};
|
|
}
|
|
else if (checkPendaftaranTerdaftar[0].kode_poli_bpjs !== data.kodepoli &&
|
|
new Date(checkPendaftaranTerdaftar[0].tgl_masuk + " 00:00:00") ===
|
|
new Date(data.tanggalperiksa + " 00:00:00")) {
|
|
return {
|
|
code: 201,
|
|
message: `Anda sudah terdaftar di Poli ${checkPendaftaranTerdaftar[0].nama_bagian} pada tanggal ${checkPendaftaranTerdaftar[0].tgl_masuk}`,
|
|
};
|
|
}
|
|
}
|
|
const dataPendaftaranTerdaftarToday = {
|
|
pasien_id,
|
|
kode_poli_bpjs: data.kodepoli,
|
|
};
|
|
const checkPendaftaranTerdaftarToday = yield (0, jknmobile_repository_1.checkRegistrasiTerdaftarToday)(dataPendaftaranTerdaftarToday);
|
|
if (checkPendaftaranTerdaftarToday.length > 0) {
|
|
const checkEmrPasien = yield (0, jknmobile_repository_1.checkEmrTerdaftar)(data);
|
|
if (checkEmrPasien.length < 1) {
|
|
return {
|
|
code: 201,
|
|
message: "Hari Ini Ada Pelayanan Yang Belum Diselesaikan.",
|
|
};
|
|
}
|
|
}
|
|
const jeniskunjungan = data.jeniskunjungan;
|
|
let responseRujukan = {};
|
|
let responseSKDP = {};
|
|
let collectionData = {};
|
|
let noRujukan = data.nomorreferensi;
|
|
if (jeniskunjungan === 1 || jeniskunjungan === 4) {
|
|
const checkRujukan = yield (0, jknmobile_repository_1.checkRujukanService)(data.nomorreferensi);
|
|
if (!checkRujukan) {
|
|
const urlRujukan = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/CARIRUJUKAN/NORUJUKAN/${data.nomorreferensi}`;
|
|
const method = "GET";
|
|
const headersData = {};
|
|
responseRujukan = yield (0, axiosClient_1.requestAxios)(headersData, urlRujukan, method, null);
|
|
if (responseRujukan.data.metadata.code == "200") {
|
|
const insertRujukan = yield (0, jknmobile_repository_1.insertRujukanService)(responseRujukan.data, data.input_user_id);
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: responseRujukan.data.metadata.message,
|
|
};
|
|
}
|
|
}
|
|
}
|
|
else if (jeniskunjungan === 3) {
|
|
const urlSKDP = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/SURAT-KONTROL/INTERNAL/CARI/${data.nomorreferensi}`;
|
|
const method = "GET";
|
|
const headersData = {};
|
|
responseSKDP = yield (0, axiosClient_1.requestAxios)(headersData, urlSKDP, method, null);
|
|
if (responseSKDP.data.metadata.code == "200") {
|
|
noRujukan = responseSKDP.data.response.sep.provPerujuk.noRujukan;
|
|
const checkRujukan = yield (0, jknmobile_repository_1.checkRujukanService)(noRujukan);
|
|
if (!checkRujukan) {
|
|
const urlRujukan = `${urlPhis}API/BPJS/SIMRS-VCLAIM/V2/CARIRUJUKAN/NORUJUKAN/${noRujukan}`;
|
|
const method = "GET";
|
|
const headersData = {};
|
|
responseRujukan = yield (0, axiosClient_1.requestAxios)(headersData, urlRujukan, method, null);
|
|
if (responseRujukan.data.metadata.code == "200") {
|
|
const insertRujukan = yield (0, jknmobile_repository_1.insertRujukanService)(responseRujukan.data, data.input_user_id);
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: responseRujukan.data.metadata.message,
|
|
};
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: responseSKDP.data.metadata.message,
|
|
};
|
|
}
|
|
}
|
|
const checkHariLibur = yield (0, jknmobile_repository_1.checkHariLiburMerah)(data);
|
|
if (checkHariLibur) {
|
|
return {
|
|
code: 201,
|
|
message: "Hari ini merupakan tanggal merah nasional",
|
|
};
|
|
}
|
|
const checkDokterReady = yield (0, jknmobile_repository_1.checkDokterReadyService)(data);
|
|
let kuota = 0;
|
|
let jumlah_terdaftar = 0;
|
|
let sisaPasien = 0;
|
|
if (checkDokterReady.length > 0) {
|
|
//kuota
|
|
kuota = parseInt(checkDokterReady[0].kuota, 10);
|
|
jumlah_terdaftar = parseInt(checkDokterReady[0].jumlah_terdaftar, 10);
|
|
if (kuota > 0) {
|
|
sisaPasien = kuota - jumlah_terdaftar;
|
|
if (sisaPasien < 1) {
|
|
return {
|
|
code: 201,
|
|
message: "Quota Dokter Tidak Tersedia di SIMRS",
|
|
};
|
|
}
|
|
}
|
|
//cuti
|
|
if (checkDokterReady[0].tgl_akhir_cuti) {
|
|
return {
|
|
code: 201,
|
|
message: "Dokter Sedang Cuti",
|
|
};
|
|
}
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: "Dokter Tidak Tersedia di SIMRS",
|
|
};
|
|
}
|
|
collectionData = {
|
|
data,
|
|
pasien_id,
|
|
pasien_nasabah_id,
|
|
noRujukan,
|
|
};
|
|
const insertPendaftaran = yield (0, jknmobile_repository_1.insertPendaftaranService)(collectionData);
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
data: {
|
|
nomorantrean: insertPendaftaran.urutan,
|
|
angkaantrean: insertPendaftaran.urutan,
|
|
kodebooking: insertPendaftaran.registrasi_id,
|
|
norm: data.norm,
|
|
namapoli: insertPendaftaran.bagian,
|
|
namadokter: insertPendaftaran.dpjp,
|
|
estimasidilayani: insertPendaftaran.estimasidilayani,
|
|
sisakuotajkn: sisaPasien,
|
|
kuotajkn: kuota,
|
|
sisakuotanonjkn: sisaPasien,
|
|
kuotanonjkn: kuota,
|
|
keterangan: "Peserta harap 60 menit lebih awal guna pencatatan administrasi.",
|
|
},
|
|
};
|
|
});
|
|
exports.daftarPerjanjianService = daftarPerjanjianService;
|
|
const sisaAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const sisaAntrean = yield (0, jknmobile_repository_1.sisaDataAntrean)(data);
|
|
if (sisaAntrean) {
|
|
let SPM = process.env.SPM;
|
|
let sisa_antrean = parseInt(sisaAntrean.sisaantrean, 10);
|
|
let waktuTunggu = SPM * (sisa_antrean - 1);
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
data: {
|
|
nomorantrean: sisaAntrean.urutan,
|
|
namapoli: sisaAntrean.nama_bagian,
|
|
namadokter: sisaAntrean.nama_pegawai,
|
|
sisaantrean: sisa_antrean,
|
|
antreanpanggil: sisaAntrean.antreanpanggil
|
|
? sisaAntrean.antreanpanggil
|
|
: "",
|
|
waktutunggu: waktuTunggu,
|
|
keterangan: "",
|
|
},
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: "Data Tidak Ditemukan atau sudah dibatalkan",
|
|
};
|
|
}
|
|
});
|
|
exports.sisaAntreanService = sisaAntreanService;
|
|
const batalAntreanService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const checkRegistrasi = yield (0, jknmobile_repository_1.checkDataRegistrasi)(data);
|
|
if (!checkRegistrasi) {
|
|
return {
|
|
code: 201,
|
|
message: "Data Tidak Ditemukan atau sudah dibatalkan",
|
|
};
|
|
}
|
|
const checkEmrPasien = yield (0, jknmobile_repository_1.checkEmrValidasi)(data);
|
|
if (checkEmrPasien.length > 0) {
|
|
return {
|
|
code: 201,
|
|
message: "Pasien Sudah diisi EMR",
|
|
};
|
|
}
|
|
const batalAntrean = yield (0, jknmobile_repository_1.batalDataAntrean)(data);
|
|
if (batalAntrean) {
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
};
|
|
}
|
|
});
|
|
exports.batalAntreanService = batalAntreanService;
|
|
const checkInService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const checkRegistrasi = yield (0, jknmobile_repository_1.checkDataRegistrasi)(data);
|
|
if (!checkRegistrasi) {
|
|
return {
|
|
code: 201,
|
|
message: "Data Tidak Ditemukan atau sudah dibatalkan",
|
|
};
|
|
}
|
|
const checkIn = yield (0, jknmobile_repository_1.checkInData)(data);
|
|
if (checkIn) {
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
};
|
|
}
|
|
});
|
|
exports.checkInService = checkInService;
|
|
const pasienBaruService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const checkPasienIdData = yield (0, jknmobile_repository_1.checkPasienId)(data.nik);
|
|
if (checkPasienIdData) {
|
|
return {
|
|
code: 200,
|
|
message: "Harap datang ke admisi untuk melengkapi data rekam medis",
|
|
norm: checkPasienIdData.no_mr,
|
|
};
|
|
}
|
|
const pasienBaru = yield (0, jknmobile_repository_1.insertPasienBaru)(data);
|
|
if (pasienBaru) {
|
|
return {
|
|
code: 200,
|
|
message: "Harap datang ke admisi untuk melengkapi data rekam medis",
|
|
norm: pasienBaru.no_mr,
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: "Pasien Baru Gagal",
|
|
};
|
|
}
|
|
});
|
|
exports.pasienBaruService = pasienBaruService;
|
|
const listJadwalOperasiService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const listOperasi = yield (0, jknmobile_repository_1.listJadwalOperasi)(data);
|
|
if (listOperasi.length > 0) {
|
|
let new_result_end = [];
|
|
yield Promise.all(listOperasi.map((element) => __awaiter(void 0, void 0, void 0, function* () {
|
|
let jenisTindakan = [];
|
|
if (element.jenistindakan) {
|
|
let matches = element.jenistindakan.match(/\d+/g);
|
|
yield Promise.all(matches.map((value) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const getNamaTindakanBedah = yield (0, jknmobile_repository_1.getTindakanBedah)(value);
|
|
jenisTindakan.push(getNamaTindakanBedah);
|
|
})));
|
|
jenisTindakan = jenisTindakan.join(", ");
|
|
}
|
|
else {
|
|
jenisTindakan = "-";
|
|
}
|
|
let new_result = {
|
|
kodebooking: element.kodebooking,
|
|
tanggaloperasi: element.tanggaloperasi,
|
|
jenistindakan: jenisTindakan,
|
|
kodepoli: element.kodepoli ? element.kodepoli : "",
|
|
namapoli: element.namapoli ? element.namapoli : "",
|
|
terlaksana: element.terlaksana,
|
|
nopeserta: element.nopeserta,
|
|
lastupdate: new Date((0, time_1.dateNow)()).getTime(),
|
|
};
|
|
new_result_end.push(new_result);
|
|
})));
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
data: new_result_end,
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: "Jadwal Operasi Tidak Ditemukan",
|
|
};
|
|
}
|
|
});
|
|
exports.listJadwalOperasiService = listJadwalOperasiService;
|
|
const jadwalOperasiService = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const jadwalOperasi = yield (0, jknmobile_repository_1.getJadwalOperasi)(data);
|
|
if (jadwalOperasi.length > 0) {
|
|
let new_result_end = [];
|
|
yield Promise.all(jadwalOperasi.map((element) => __awaiter(void 0, void 0, void 0, function* () {
|
|
let jenisTindakan = [];
|
|
if (element.jenistindakan) {
|
|
let matches = element.jenistindakan.match(/\d+/g);
|
|
yield Promise.all(matches.map((value) => __awaiter(void 0, void 0, void 0, function* () {
|
|
const getNamaTindakanBedah = yield (0, jknmobile_repository_1.getTindakanBedah)(value);
|
|
jenisTindakan.push(getNamaTindakanBedah);
|
|
})));
|
|
jenisTindakan = jenisTindakan.join(", ");
|
|
}
|
|
else {
|
|
jenisTindakan = "-";
|
|
}
|
|
let new_result = {
|
|
kodebooking: element.kodebooking,
|
|
tanggaloperasi: element.tanggaloperasi,
|
|
jenistindakan: jenisTindakan,
|
|
kodepoli: element.kodepoli ? element.kodepoli : "",
|
|
namapoli: element.namapoli ? element.namapoli : "",
|
|
terlaksana: element.terlaksana,
|
|
};
|
|
new_result_end.push(new_result);
|
|
})));
|
|
return {
|
|
code: 200,
|
|
message: "OK",
|
|
data: new_result_end,
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
code: 201,
|
|
message: "Jadwal Operasi Tidak Ditemukan",
|
|
};
|
|
}
|
|
});
|
|
exports.jadwalOperasiService = jadwalOperasiService;
|