// 1 => LOADING // 2 => DONE // 3 => ERROR import * as api from "../api/order.js" export default { namespaced: true, state: { order_id: 0, queue: "", is_from_clinic: false, catatan_fo:'', diagnosa:'', patient_note: '', finish_dialog_is_active: false, current_order: {}, received_sample: 'N', tabs : [ {"label":"DEMOGRAFI", "icon":"opacity", "code":"01", "enabled":true}, {"label":"PEMERIKSAAN", "icon":"verified_user", "code":"02", "enabled":true}, {"label":"PEMBAYARAN", "icon":"motorcycle", "code":"03", "enabled":false} ], print_dialog_is_active: false, rpt_url: window.BASE_URL + '/one-ui/test/vuex/common/under-cons.pdf', dialog_start:true, status_start:'Y', time_start:undefined, elapsedTime:0, show_time:null, loading_process:false }, mutations: { update_loading_process(state,val) { state.loading_process=val }, update_show_time(state,val) { state.show_time=val }, update_elapsedTime(state,val) { state.elapsedTime=val }, update_dialog_start(state,val) { state.dialog_start=val }, update_status_start(state,val) { state.status_start=val }, update_time_start(state,val) { state.time_start=val }, update_patient_note(state,val) { state.patient_note=val }, update_catatan_fo(state,val) { state.catatan_fo=val }, update_diagnosa(state,val) { state.diagnosa=val }, update_finish_dialog_is_active(state, val) { state.finish_dialog_is_active = val }, update_current_order(state, val) { state.current_order = val }, update_received_sample(state, val) { state.received_sample = val }, update_tab_enable(state, v) { state.tabs[v[0]].enabled = v[1] }, update_from_clinic(state, v) { state.is_from_clinic = v }, update_queue(state, v) { state.queue = v }, update_order_id(state, v) { state.order_id = v }, reset_form(state) { state.order_id = 0 state.queue = "" state.is_from_clinic = false state.catatan_fo = "" state.diagnosa = "" state.patient_note = "" }, update_print_dialog_is_active(state, val) { state.print_dialog_is_active = val }, update_rpt_url(state, v) { state.rpt_url = v } }, actions: { async save(context) { var order_id = context.state.order_id; var delivery = []; var delivery_note = []; var detail = []; var req = []; console.log('lang_2') console.log(context.rootState.language.selected_language_2) var header = { patient_id: context.rootState.patient.selected_patient.M_PatientID, age: context.rootState.patient.selected_patient.patient_age, alias_doctor: context.rootState.doctor.doctor_alias, alias_doctor_address: context.rootState.doctor.doctor_alias_address, sender_doctor_id: context.rootState.doctor.selected_doctor.M_DoctorID, sender_address_id: context.rootState.doctor.selected_address.M_DoctorAddressID, pj_doctor_id: context.rootState.doctor.selected_doctor_pj.M_DoctorID, lang_id: context.rootState.language.selected_language.id, lang_si: context.rootState.language.selected_language.is_si, lang_id_2: context.rootState.language.selected_language_2 ? context.rootState.language.selected_language_2.id : 0, lang_si_2: context.rootState.language.selected_language_2 ? context.rootState.language.selected_language_2.is_si : "N", doctor_note: "", fo_note: context.state.catatan_fo, patient_note: context.state.patient_note, company_id: context.rootState.company.selected_company.M_CompanyID, mou_id: context.rootState.company.selected_mou.M_MouID, received_sample: context.rootState.order.received_sample, queue: context.state.queue, diagnose: context.state.diagnosa, is_cito: context.rootState.px.is_cito, cito_id: context.rootState.px.selected_cito ? context.rootState.px.selected_cito.Nat_CitoID : 0, mcu_pre_id:order_id }; let xxdlv = context.rootState.delivery.data_deliveries let xdlv = _.filter(xxdlv, function(o) { return o.chex === 'Y' }) let dlv = _.filter(xdlv, function(o) { return o.typeform === 'origin' }) delivery_note = _.filter(xdlv, function(o) { return o.typeform === 'additional' }) dlv.forEach(function(value){ delivery.push({ delivery_id:value.delivery_id, delivery_code:value.delivery_code, delivery_type_id:value.delivery_type, address_id:value.address_id, note:value.description, noteplus:value.note, kelurahan:value.kelurahan }) }) var px_tmp = []; var st = context.rootState.px.selected_test; for (let i in st) { let x = { t_id: st[i]['T_TestID'], t_price: st[i]['T_PriceAmount'], t_disc: st[i]['T_PriceDisc'], t_discrp: st[i]['T_PriceDiscRp'], t_cito: st[i]['T_TestIsCito'], t_req: 'N', t_reqnote: '', t_ispacket: st[i]['is_packet'], t_packetid: st[i]['packet_id'], t_packettype: st[i]['px_type'] } let rq = context.rootState.px.requirement for (let j in rq) { if (rq[j].label == st[i].T_TestRequirement) { x.t_req = (rq[j].checked ? 'Y' : 'N') x.t_reqnote = rq[j].note } } px_tmp.push(x) } detail = px_tmp; // let _req = context.rootState.px.requirement // for (let _i in _req) { // req.push({req_id:_req[_i].req_id, req_label:_req[_i].label, checked:(_req[_i].checked?"Y":"N"), note:_req[_i].note, px_id:_req[_i].px_id}) // } let req_status = context.rootState.px.req_status req = { status : req_status, reqs : req_status == 'Y' ? [] : context.rootState.px.reqs } // context.commit("update_search_status",1) try { let resp= await api.save(one_token(), order_id, header, delivery, delivery_note, detail, req) if (resp.status != "200") { // context.commit("update_search_status",3) // context.commit("update_search_error_message",resp.message) alert('error') } else { // Dialog loading context.commit('update_loading_process', false) context.commit('update_dialog_loading', false, {root:true}) context.commit("update_current_order", resp.data.data) context.commit('update_finish_dialog_is_active', true) context.commit('payment/update_order_id', resp.data.data.id, {root:true}) context.commit("payment/update_order", resp.data,{root:true}) //context.dispatch('payment/get_order', resp.data.data.id, {root:true}) // store.commit('change_tab', '03'); } } catch(e) { // context.commit("update_search_status",3) // context.commit("update_search_error_message",e.message ) } }, async load_from_clinic(context) { let queue = context.state.queue; try { let resp= await api.load_from_clinic(queue) if (resp.status != "200") { // context.commit("update_search_status",3) // context.commit("update_search_error_message",resp.message) alert('error') } else { if (resp.data.status != "OK") { return; } let data = resp.data.data context.commit('update_from_clinic', true) context.commit('patient/update_selected_patient', data.patient, {root:true}) context.commit('doctor/update_doctors', {records:[data.doctor], total:1}, {root:true}) context.commit('doctor/update_selected_doctor', data.doctor, {root:true}) context.commit('doctor/update_search', data.doctor.search, {root:true}) // Delivery context.commit('delivery/update_params', {p_id:data.patient.M_PatientID}, {root:true}) context.commit('delivery/update_params', {d_id:data.doctor.M_DoctorID}, {root:true}) // Company let search = data.company.search delete(data.company.search) setTimeout(function() { context.commit('company/update_companies', {records:[data.company], total:1}, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_search', search, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_selected_company', data.company, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_selected_mou', data.company.mou[0], {root:true}) }, 0) // setTimeout(function() { context.commit('company/selected_xx', data.company.mou[0], {root:true}) }, 0) // PX // context.commit("px/update_selected_test", data.test, {root:true}) // context.commit("px/update_requirement", data.req, {root:true}) // Delivery context.dispatch('delivery/search', null, {root:true}) // PX context.dispatch('px/search_pxs_clinic', data.order_id, {root:true}) } } catch(e) { // context.commit("update_search_status",3) // context.commit("update_search_error_message",e.message ) } }, async load(context) { let id = context.state.order_id; try { let resp = await api.load(id) if (resp.status != "200") { // context.commit("update_search_status",3) // context.commit("update_search_error_message",resp.message) alert('error') } else { if (resp.data.status != "OK") { return; } let data = resp.data.data if(id !== -1) context.commit('patient/update_selected_patient', data.patient, {root:true}) context.commit('doctor/update_doctors', {records:[data.doctor], total:1}, {root:true}) context.commit('doctor/update_selected_doctor', data.doctor, {root:true}) context.commit('doctor/update_search', data.doctor.search, {root:true}) // Delivery context.commit('delivery/update_params', {p_id:data.patient.M_PatientID}, {root:true}) context.commit('delivery/update_params', {d_id:data.doctor.M_DoctorID}, {root:true}) // Company let search = data.company.search delete(data.company.search) setTimeout(function() { context.commit('company/update_companies', {records:[data.company], total:1}, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_search', search, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_selected_company', data.company, {root:true}) }, 0) setTimeout(function() { context.commit('company/update_selected_mou', data.company.mou[0], {root:true}) }, 0) // setTimeout(function() { context.commit('company/selected_xx', data.company.mou[0], {root:true}) }, 0) context.commit('update_received_sample', data.order.rec_sample); // PX context.commit("px/update_selected_test", data.test, {root:true}) context.commit("px/update_requirement", data.req, {root:true}) // Delivery context.dispatch('delivery/search', null, {root:true}) // Enable tab context.commit('update_tab_enable', [2, true]) setTimeout(function() { context.commit('update_from_clinic', false) }, 15000) } } catch(e) { // context.commit("update_search_status",3) // context.commit("update_search_error_message",e.message ) } }, async reset_form(context) { context.commit("reset_form") context.commit("patient/update_selected_patient", {}, {root:true}) context.commit("doctor/update_doctors", {records:[], total:0}, {root:true}) context.commit("doctor/update_selected_doctor", {}, {root:true}) context.commit("doctor/update_selected_doctor_pj", {}, {root:true}) // context.commit("delivery/update_deliveries", [], {root:true}) // context.commit("delivery/update_selected_delivery", {}, {root:true}) context.commit("delivery/update_params", {p_id:0, d_id:0, o_id:0}, {root:true}) context.dispatch("delivery/search", null, {root:true}) context.commit("px/update_selected_test", [], {root:true}) context.commit("px/update_requirement", [], {root:true}) // Company context.commit("company/reset_company") }, async load_preregister(context,prm) { //context.commit("update_search_status",1) try { prm.token = one_token() let resp = await api.load_preregister(prm) //alert("dasdasd") // console.log(resp) // context.commit("update_search_status",2) // context.commit("update_search_error_message","") // alert("aaaaaaaaaaaaaa") //console.log("dasdasdasd") let data = { records : resp.data.records } console.log(resp) var rst = resp.data.data.records console.log(rst) context.commit('patient/update_selected_patient', rst['patient'], {root:true}) if(rst['patient']['M_PatientPhoto']){ context.commit('photo/update_photo_url', rst['patient']['M_PatientPhoto'], {root:true}) } let doctors = [] doctors.push(rst['selected_doctor']) console.log(doctors) context.commit('doctor/update_doctors', {records:doctors,total:doctors.length}, {root:true}) context.commit('doctor/update_selected_doctor', doctors[0], {root:true}) context.commit('doctor/update_selected_address', rst['selected_address'], {root:true}) console.log(rst['companies']) context.commit('company/update_companies', {records:rst['companies'],total:1}, {root:true}) console.log(context.rootState.company.companies) context.commit('company/update_selected_company', rst['selected_company'], {root:true}) context.commit('company/update_selected_mou', rst['selected_mou'], {root:true}) context.commit('delivery/update_data_deliveries', rst['data_deliveries'], {root:true}) //context.commit('history/update_history_dialog',false,{root:true}) context.dispatch('px/search',{}, {root:true}) if(rst['tests']){ rst['tests'].forEach(function(test) { context.dispatch('selectPx',test) }); } } catch(e) { // context.commit("update_search_status",3) // context.commit("update_search_error_message",e.message ) } }, async selectPx(context,px) { // console.log(context) var in_selectPx = false console.log(px) //debugger console.log("start select px") if (!window.one_token()) { //context.commit('update_message_error', 'Maaf, koneksi Anda sempat terputus silahkan Log Out dan Login kembali',{root:true}) //context.commit('update_dialog_error', true,{root:true}) return } try { console.log(in_selectPx) // START LOADING //context.commit('update_dialog_loading', true) // IF PROFILE if (px.px_type == "PR" || px.px_type == "PXR") return context.dispatch('selectProfile',px) // SEARCH NAT TEST let nt = context.rootState.px.nat_test let found_nt = false for (let i in px.nat_test) { if (nt.indexOf(px.nat_test[i]) > -1) found_nt = true } if (found_nt) { alert('Pemeriksaan tersebut sudah ada !') // END LOADING //context.commit('update_dialog_loading', false,{root:true}) return } //if (in_selectPx) return in_selectPx = true let selected_test = context.rootState.px.selected_test let flag_found = false selected_test.forEach( function(t,idx) { if (t.T_TestID == px.T_TestID) { selected_test[idx] = px flag_found = true } }) if (!flag_found) { selected_test.push(px) let tests = context.rootState.px.tests let p_idx = -1 tests.forEach(function(t,idx) { if (t.T_TestID == px.T_TestID) { p_idx = idx } }) if (p_idx >= 0 ) { _.pullAt(tests,[p_idx]) let dt = { records: tests, total: tests.length } context.commit('px/update_tests',dt,{root:true}) } } context.commit('px/update_selected_test', selected_test,{root:true}) if (px.px_type !== "PN"){ let req = px.requirement let reqs = context.rootState.px.requirement if (req.length > 0) { for(let i in req) { let found = false for(let j in reqs) { if (reqs[j]['req_id'] == req[i]['req_id']) found = j } if (!found) reqs.push({ px_id: [px.T_TestID], label: req[i]['req_name'], error_message: 'Hasil harus di isi', is_error: true, checked : false, note: '', req_id: req[i]['req_id'] }) else reqs[found].px_id.push(px.T_TestID) } context.commit('px/update_requirement', reqs,{root:true}) } } context.dispatch('px/appx_schedule',{},{root:true}) in_selectPx = false context.commit('px/update_nat_test',{},{root:true}) // END LOADING if (px.px_type == "PN") context.dispatch('px/packet_reqs',{pxs:px.child_test},{root:true}) //context.commit('update_dialog_loading', false,{root:true}) } catch(e) { console.log(e) in_selectPx = false } }, async selectProfile(context,px) { try { var in_selectPx = false // SEARCH NAT TEST let nt = context.rootState.px.nat_test let found_nt = false for (let i in px.nat_test) { if (nt.indexOf(px.nat_test[i]) > -1) found_nt = true } if (found_nt) { alert('Pemeriksaan tersebut sudah ada !') // END LOADING // context.commit('update_dialog_loading', false,{root:true}) return } let pxs = px.child_test for (let i in pxs) { px = pxs[i] let selected_test = context.rootState.px.selected_test let flag_found = false selected_test.push(px) let tests = context.rootState.px.tests let p_idx = -1 tests.forEach(function(t,idx) { if (t.T_TestID == px.T_TestID) { p_idx = idx } }) if (p_idx >= 0 ) { _.pullAt(tests,[p_idx]) let dt = { records: tests, total: tests.length } context.commit('px/update_tests',dt,{root:true}) } context.commit('px/update_selected_test', selected_test,{root:true}) let req = px.requirement let reqs = context.rootState.px.requirement if (req.length > 0) { for(let i in req) { let found = false for(let j in reqs) { if (reqs[j]['req_id'] == req[i]['req_id']) found = j } if (!found) reqs.push({ px_id: [px.T_TestID], label: req[i]['req_name'], error_message: 'Hasil harus di isi', is_error: true, checked : false, note: '', req_id: req[i]['req_id'] }) else reqs[found].px_id.push(px.T_TestID) } context.commit('px/update_requirement', reqs,{root:true}) } } context.dispatch('px/appx_schedule',{root:true}) //in_selectPx = false context.commit('px/update_nat_test',{root:true}) // END LOADING //context.commit('update_dialog_loading', false,{root:true}) } catch(e) { console.log(e) // END LOADING //context.commit('update_dialog_loading', false,{root:true}) // in_selectPx = false } }, async get_time_start(context, prm) { try { prm.token = one_token() let resp= await api.get_time_start(prm) if (resp.data.status != "OK") { } else { context.commit('update_dialog_start',false) context.commit('update_show_time', resp.data.data.records) context.commit('update_status_start','Y') if(prm.pre_id){ context.dispatch("load_preregister",{id:context.state.order_id}) } } } catch(e) { } } } }