"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAdmissionIdByEncounterId = exports.getJobCondition = exports.updateDataEmrDetailConditionSatSet = exports.updateDataEmrDetailObservationSatSet = exports.insertDataEmrDetailConditionSatSet = exports.insertDataEmrDetailObservationSatSet = exports.getEmrDetailConditionSatSet = exports.getEmrDetailObservationSatSet = exports.updateStatusEmrDetail = exports.getJobObservation = exports.insertDataEncounterSatSet = exports.updateDataEncounterSatSet = exports.getEncounterSatSet = exports.updateStatusRegistrasi = exports.getJobEncounter = void 0; const db_1 = require("./../../../db"); const database_handler_1 = require("./../../../db/database.handler"); const time_1 = require("./../../../middlewares/time"); const getJobEncounter = (limit) => __awaiter(void 0, void 0, void 0, function* () { const getEncounter = `select registrasi.registrasi_id, registrasi.jenis_rawat, bagian.nama_bagian, bagian.bagian_id, pegawai.pegawai_id, pegawai.nama_pegawai, pegawai.nik, pasien.no_mr, pasien.pasien_id, pasien.nama_pasien, pasien.ktp, pasien.jenis_kelamin, pasien.tgl_lahir, registrasi_urut.tgl_urut, pasien.id_satu_sehat as pasien_ihs_id, bagian.id_satu_sehat as location_id, pegawai.id_satu_sehat as practitioner_ihs_id 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 and bagian.id_satu_sehat is not null inner join pegawai on registrasi_urut.pegawai_id = pegawai.pegawai_id and pegawai.id_satu_sehat is not null inner join pasien on registrasi.pasien_id = pasien.pasien_id and pasien.id_satu_sehat is not null and pasien.id_satu_sehat <> '' inner join emr on registrasi.registrasi_id = emr.registrasi_id and emr.status_batal is null and emr.form_id = 3 where registrasi.status_batal is null and registrasi.tgl_masuk::date = now()::date and registrasi.status_satu_sehat is null and registrasi.id_satu_sehat is null limit ${limit} `; const getEncounterData = yield db_1.prismaDb3.$queryRawUnsafe(getEncounter); return getEncounterData; }); exports.getJobEncounter = getJobEncounter; const updateStatusRegistrasi = (data) => __awaiter(void 0, void 0, void 0, function* () { const updateStatus = yield db_1.prismaDb1.registrasi.update({ where: { registrasi_id: data.registrasi_id, }, data: { status_satu_sehat: data.status_satu_sehat, id_satu_sehat: data.id_satu_sehat, }, }); return updateStatus; }); exports.updateStatusRegistrasi = updateStatusRegistrasi; const getEncounterSatSet = (registrasiId) => __awaiter(void 0, void 0, void 0, function* () { const pasienSatSet = yield db_1.prismaDb2.admission.findFirst({ where: { registrasi_id: parseInt(registrasiId, 10), }, select: { id: true, pasien_id: true, dr_id: true, created_date: true, }, }); return pasienSatSet; }); exports.getEncounterSatSet = getEncounterSatSet; const updateDataEncounterSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const updateEncounterSatSet = yield db_1.prismaDb2.admission.update({ where: { id: data.id, }, data: { encounter_ihs_id: responseSatSet.id, last_updated_date: (0, time_1.dateNow)(), }, }); }); exports.updateDataEncounterSatSet = updateDataEncounterSatSet; const insertDataEncounterSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const encounterId = yield (0, database_handler_1.generateMaxDb2)("max_admission_idx", "id"); const insertEncounterSatSet = yield db_1.prismaDb2.admission.create({ data: { id: encounterId, bagian_id: data.bagian_id, dr_id: data.dr_id, pasien_id: data.pasien_id, created_date: (0, time_1.dateNow)(), admission_type: data.admission_type, registrasi_id: data.registrasi_id, }, }); }); exports.insertDataEncounterSatSet = insertDataEncounterSatSet; const getEmrDetailObservationSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const pasienSatSet = yield db_1.prismaDb2.admission_observation.findFirst({ where: { observation_ext_id: data.emr_detail_id, }, select: { admission_id: true, observation_value: true, observation_type: true, created_date: true, }, }); return pasienSatSet; }); exports.getEmrDetailObservationSatSet = getEmrDetailObservationSatSet; const getEmrDetailConditionSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const pasienSatSet = yield db_1.prismaDb2.dischargediagnosis.findFirst({ where: { diag_ext_id: data.emr_detail_id, }, select: { admission_id: true, diag_code: true, created_date: true, }, }); return pasienSatSet; }); exports.getEmrDetailConditionSatSet = getEmrDetailConditionSatSet; const updateDataEmrDetailObservationSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const updateEmrDetailSatSet = yield db_1.prismaDb2.admission_observation.updateMany({ where: { observation_ext_id: parseInt(data.emr_detail_id, 10), }, data: { observation_ihs_id: responseSatSet.id, last_updated_date: (0, time_1.dateNow)(), }, }); return updateEmrDetailSatSet; }); exports.updateDataEmrDetailObservationSatSet = updateDataEmrDetailObservationSatSet; const getAdmissionIdByEncounterId = (encounter_id) => __awaiter(void 0, void 0, void 0, function* () { const admissionId = yield db_1.prismaDb2.admission.findFirst({ where: { encounter_ihs_id: encounter_id, }, select: { id: true, }, }); return admissionId; }); exports.getAdmissionIdByEncounterId = getAdmissionIdByEncounterId; const insertDataEmrDetailObservationSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const insertEmrDetailSatSet = yield db_1.prismaDb2.admission_observation.create({ data: { admission_id: data.admission_id, observation_value: data.value, observation_type: data.type, created_date: (0, time_1.dateNow)(), observation_ext_id: data.emr_detail_id, }, }); return insertEmrDetailSatSet; }); exports.insertDataEmrDetailObservationSatSet = insertDataEmrDetailObservationSatSet; const updateDataEmrDetailConditionSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const updateEmrDetailSatSet = yield db_1.prismaDb2.dischargediagnosis.updateMany({ where: { diag_ext_id: parseInt(data.emr_detail_id, 10), }, data: { condition_ihs_id: responseSatSet.id, last_updated_date: (0, time_1.dateNow)(), }, }); return updateEmrDetailSatSet; }); exports.updateDataEmrDetailConditionSatSet = updateDataEmrDetailConditionSatSet; const insertDataEmrDetailConditionSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const insertEmrDetailSatSet = yield db_1.prismaDb2.dischargediagnosis.create({ data: { admission_id: data.admission_id, diag_code: data.diag_code, diag_status: data.diag_status, created_date: (0, time_1.dateNow)(), diag_label: data.diag_label, diag_ext_id: data.emr_detail_id, }, }); return insertEmrDetailSatSet; }); exports.insertDataEmrDetailConditionSatSet = insertDataEmrDetailConditionSatSet; const getJobObservation = (limit, objekId) => __awaiter(void 0, void 0, void 0, function* () { const getObservation = `select emr_detail.emr_detail_id, emr_detail.objek_id, emr_detail.variabel, emr_detail.value, registrasi.id_satu_sehat as encounter_id, pasien.id_satu_sehat as patient_ihs_id, pasien.nama_pasien, pegawai.id_satu_sehat as practitioner_ihs_id, pegawai.nama_pegawai, emr_detail.input_time from registrasi inner join pasien on registrasi.pasien_id = pasien.pasien_id and pasien.id_satu_sehat is not null inner join emr on registrasi.registrasi_id = emr.registrasi_id and emr.status_batal is null and emr.form_id = 10 inner join users on emr.input_user_id = users.user_id inner join pegawai on users.pegawai_id = pegawai.pegawai_id and pegawai.id_satu_sehat is not null inner join emr_detail on emr.emr_id = emr_detail.emr_id and emr_detail.status_batal is null and emr_detail.objek_id = ${objekId} and emr_detail.status_satu_sehat is NULL where registrasi.status_batal is null and registrasi.id_satu_sehat is not null and registrasi.tgl_masuk::date = now()::date limit ${limit}`; const getObservationData = yield db_1.prismaDb3.$queryRawUnsafe(getObservation); const formattedData = getObservationData.map((item) => (Object.assign(Object.assign({}, item), { emr_detail_id: item.emr_detail_id.toString() }))); return formattedData; }); exports.getJobObservation = getJobObservation; const updateStatusEmrDetail = (data) => __awaiter(void 0, void 0, void 0, function* () { const updateStatus = yield db_1.prismaDb1.emr_detail.update({ where: { emr_detail_id: data.emr_detail_id, }, data: { status_satu_sehat: data.status_satu_sehat, id_satu_sehat: data.id_satu_sehat, }, }); return updateStatus; }); exports.updateStatusEmrDetail = updateStatusEmrDetail; const getJobCondition = (limit) => __awaiter(void 0, void 0, void 0, function* () { const getCondition = `select emr_detail.emr_detail_id, emr_detail.objek_id, emr_detail.variabel, emr_detail.value, registrasi.id_satu_sehat as encounter_id, pasien.id_satu_sehat as patient_ihs_id, pasien.nama_pasien, pegawai.id_satu_sehat as practitioner_ihs_id, pegawai.nama_pegawai, emr_detail.input_time, icd.kode_diagnosa, icd.nama_diagnosa from registrasi inner join pasien on registrasi.pasien_id = pasien.pasien_id and pasien.id_satu_sehat is not null inner join emr on registrasi.registrasi_id = emr.registrasi_id and emr.status_batal is null and emr.form_id = 3 inner join users on emr.input_user_id = users.user_id inner join pegawai on users.pegawai_id = pegawai.pegawai_id and pegawai.id_satu_sehat is not null inner join emr_detail on emr.emr_id = emr_detail.emr_id and emr_detail.status_batal is null and emr_detail.objek_id = 42 and emr_detail.variabel in ('primary', 'secondary') and emr_detail.value is not null and emr_detail.status_satu_sehat is null inner join icd on emr_detail.value::int = icd.icd_id where registrasi.status_batal is null and registrasi.id_satu_sehat is not null and registrasi.tgl_masuk::date = now()::date limit ${limit}`; const getConditionData = yield db_1.prismaDb3.$queryRawUnsafe(getCondition); const formattedData = getConditionData.map((item) => (Object.assign(Object.assign({}, item), { emr_detail_id: item.emr_detail_id.toString() }))); return formattedData; }); exports.getJobCondition = getJobCondition;