"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.getDataKfa = exports.updateInsertIdPatientRepo = exports.getDataPatient = exports.updateInsertIdPractitionerRepo = exports.getDataPractitioner = exports.updateStatusPegawai = exports.getPractitionerSimrs = exports.getJob = exports.updateStatusPasien = exports.updateJobData = exports.insertJobData = exports.getPatientSimrs = exports.updateDataPractitionerSatSet = exports.insertDataPractitionerSatSet = exports.getPractitionerSatSet = exports.updateDataPatientSatSet = exports.insertDataPatientSatSet = exports.getPatientSatSet = void 0; const db_1 = require("./../../../db"); const database_handler_1 = require("./../../../db/database.handler"); const time_1 = require("./../../../middlewares/time"); const getPatientSimrs = (limit) => __awaiter(void 0, void 0, void 0, function* () { const patientSimrs = yield db_1.prismaDb1.pasien.findMany({ where: { id_satu_sehat: null, ktp: { not: null, }, status_satu_sehat: null, }, select: { no_mr: true, pasien_id: true, ktp: true, tgl_lahir: true, nama_pasien: true, jenis_kelamin: true, }, orderBy: { no_mr: "asc", }, take: limit, }); return patientSimrs; }); exports.getPatientSimrs = getPatientSimrs; const getPractitionerSimrs = (limit) => __awaiter(void 0, void 0, void 0, function* () { const practitionerSimrs = yield db_1.prismaDb1.pegawai.findMany({ where: { id_satu_sehat: null, status_batal: null, nik: { not: null, }, }, select: { pegawai_id: true, nama_pegawai: true, nik: true, }, orderBy: { pegawai_id: "asc", }, take: limit, }); return practitionerSimrs; }); exports.getPractitionerSimrs = getPractitionerSimrs; const getPatientSatSet = (no_mr) => __awaiter(void 0, void 0, void 0, function* () { const pasienSatSet = yield db_1.prismaDb2.patient.findFirst({ where: { no_mr, }, select: { patient_ihs_id: true, patient_name: true, pasien_id: true, }, }); return pasienSatSet; }); exports.getPatientSatSet = getPatientSatSet; const getPractitionerSatSet = (pegawaiId) => __awaiter(void 0, void 0, void 0, function* () { const practitionerSatSet = yield db_1.prismaDb2.practitioner.findFirst({ where: { pegawai_id: pegawaiId, }, select: { practitioner_ihs_id: true, practitioner_name: true, id: true, }, }); return practitionerSatSet; }); exports.getPractitionerSatSet = getPractitionerSatSet; const insertDataPatientSatSet = (data) => __awaiter(void 0, void 0, void 0, function* () { const patient = yield db_1.prismaDb2.patient.create({ data: { pasien_id: data.pasien_id, patient_name: data.nama_pasien, created_date: (0, time_1.dateNow)(), birth_date: new Date(data.tgl_lahir), nik: data.nik, no_mr: data.no_mr, }, }); return patient; }); exports.insertDataPatientSatSet = insertDataPatientSatSet; const getDataKfa = (kfa_name) => __awaiter(void 0, void 0, void 0, function* () { const kfa_data = yield db_1.prismaDb2.kfa_references.findMany({ where: { kfa_name: { contains: kfa_name, mode: "insensitive", }, }, select: { kfa_code: true, kfa_name: true, }, }); return kfa_data; }); exports.getDataKfa = getDataKfa; const updateDataPatientSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const patient = yield db_1.prismaDb2.patient.update({ where: { pasien_id: data.pasien_id, }, data: { patient_ihs_id: responseSatSet.entry[0].resource.id, last_updated_date: (0, time_1.dateNow)(), ihs_json_data: responseSatSet, }, }); return patient; }); exports.updateDataPatientSatSet = updateDataPatientSatSet; const insertDataPractitionerSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const idPractiitioner = yield (0, database_handler_1.generateMaxDb2)("max_practitioner_idx", "id"); const practitioner = yield db_1.prismaDb2.practitioner.create({ data: { id: idPractiitioner, practitioner_name: responseSatSet.entry[0].resource.name[0].text, created_date: (0, time_1.dateNow)(), birth_date: new Date(responseSatSet.entry[0].resource.birthDate), gender: responseSatSet.entry[0].resource.gender, practitioner_ihs_id: responseSatSet.entry[0].resource.id, ihs_json_data: responseSatSet, nik: data.nik, pegawai_id: data.pegawai_id, }, }); return practitioner; }); exports.insertDataPractitionerSatSet = insertDataPractitionerSatSet; const updateDataPractitionerSatSet = (responseSatSet, data) => __awaiter(void 0, void 0, void 0, function* () { const patient = yield db_1.prismaDb2.practitioner.updateMany({ where: { id: data.id, }, data: { practitioner_name: responseSatSet.entry[0].resource.name[0].text, created_date: (0, time_1.dateNow)(), birth_date: new Date(responseSatSet.entry[0].resource.birthDate), gender: responseSatSet.entry[0].resource.gender, practitioner_ihs_id: responseSatSet.entry[0].resource.id, ihs_json_data: responseSatSet, nik: data.nik, pegawai_id: data.pegawai_id, }, }); return patient; }); exports.updateDataPractitionerSatSet = updateDataPractitionerSatSet; const insertJobData = (data) => __awaiter(void 0, void 0, void 0, function* () { const idJob = yield (0, database_handler_1.generateMaxDb2)("max_job_idx", "id"); const job = yield db_1.prismaDb2.job.create({ data: { id: idJob, created_date: (0, time_1.dateNow)(), endpoint_name: data.endpoint_name, payload: data.payload, status: data.status, method: data.method, url: data.url, key_simrs: data.key_simrs, }, }); return job; }); exports.insertJobData = insertJobData; const updateJobData = (data) => __awaiter(void 0, void 0, void 0, function* () { const job = yield db_1.prismaDb2.job.update({ where: { id: data.id, }, data: { last_updated_date: (0, time_1.dateNow)(), status: data.status, response: data.response, }, }); return job; }); exports.updateJobData = updateJobData; const updateStatusPasien = (data) => __awaiter(void 0, void 0, void 0, function* () { const updateStatus = yield db_1.prismaDb1.pasien.updateMany({ where: { no_mr: data.no_mr, }, data: { status_satu_sehat: data.status_satu_sehat, id_satu_sehat: data.id_satu_sehat, }, }); return updateStatus; }); exports.updateStatusPasien = updateStatusPasien; const updateStatusPegawai = (data) => __awaiter(void 0, void 0, void 0, function* () { const updateStatus = yield db_1.prismaDb1.pegawai.update({ where: { pegawai_id: data.pegawai_id, }, data: { id_satu_sehat: data.id_satu_sehat, }, }); return updateStatus; }); exports.updateStatusPegawai = updateStatusPegawai; const getJob = (endpoint_name, limit) => __awaiter(void 0, void 0, void 0, function* () { const job = yield db_1.prismaDb2.job.findMany({ where: { status: { in: [1, 3], }, endpoint_name: endpoint_name, }, select: { id: true, created_date: true, endpoint_name: true, payload: true, status: true, method: true, url: true, key_simrs: true, }, orderBy: [ { status: "asc", }, { created_date: "asc", }, ], take: limit, }); return job; }); exports.getJob = getJob; const getDataPractitioner = (limit) => __awaiter(void 0, void 0, void 0, function* () { const getDataPegawai = yield db_1.prismaDb1.$queryRaw ` SELECT pegawai.pegawai_id, pegawai.nik FROM pegawai LEFT JOIN resources ON resources.key_simrs = pegawai.pegawai_id WHERE pegawai.status_batal is null AND pegawai.nik IS NOT NULL AND resources.resources_id IS NULL ORDER BY pegawai.pegawai_id ASC LIMIT ${parseInt(limit, 10)}; `; return getDataPegawai; }); exports.getDataPractitioner = getDataPractitioner; const updateInsertIdPractitionerRepo = (pegawai_id, response, id, type) => __awaiter(void 0, void 0, void 0, function* () { const resourcesId = yield (0, database_handler_1.generateMaxDb1)("max_resources_idx", "resources_id"); const insertRujukan = yield db_1.prismaDb1.resources.create({ data: { resources_id: resourcesId, input_time: (0, time_1.dateNow)(), input_user_id: 1, key_simrs: pegawai_id, key_satu_sehat: id, resources_type: type, response: response, }, }); }); exports.updateInsertIdPractitionerRepo = updateInsertIdPractitionerRepo; const getDataPatient = (limit) => __awaiter(void 0, void 0, void 0, function* () { const getDataPasien = yield db_1.prismaDb1.$queryRaw ` SELECT pasien.pasien_id, TRIM(pasien.ktp) ktp FROM pasien LEFT JOIN resources ON resources.key_simrs = pasien.pasien_id WHERE pasien.status_batal is null AND pasien.ktp IS NOT NULL AND LENGTH(TRIM(pasien.ktp)) = 16 AND resources.resources_id IS NULL ORDER BY pasien.pasien_id DESC LIMIT ${parseInt(limit, 10)}; `; return getDataPasien; }); exports.getDataPatient = getDataPatient; const updateInsertIdPatientRepo = (pasien_id, response, id, type, gagal = null) => __awaiter(void 0, void 0, void 0, function* () { const resourcesId = yield (0, database_handler_1.generateMaxDb1)("max_resources_idx", "resources_id"); let data = { resources_id: resourcesId, input_time: (0, time_1.dateNow)(), input_user_id: 1, key_simrs: pasien_id, key_satu_sehat: id, resources_type: type, response: response, }; if (gagal === 1) { data.status = 1; } const insertRujukan = yield db_1.prismaDb1.resources.create({ data, }); }); exports.updateInsertIdPatientRepo = updateInsertIdPatientRepo;