step 9 : download ui 10.9.9.2 result entry v106
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search(token, qry, c_token) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'company/search', {
|
||||||
|
token: token,
|
||||||
|
qry: qry
|
||||||
|
},{ cancelToken : c_token });
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data.data;
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
data : data
|
||||||
|
};
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function calc_age(prm ) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'helper/calc_age', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
data : resp.data.data
|
||||||
|
};
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function history(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'history/search_v2', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function update(token, order_detail_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal/update', {
|
||||||
|
token: token,
|
||||||
|
order_detail_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search_method(token, nattest_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal_method/search_method', {
|
||||||
|
token: token,
|
||||||
|
nattest_id: nattest_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_method(token, detail_id, method_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal_method/save_method', {
|
||||||
|
token: token,
|
||||||
|
detail_id: detail_id,
|
||||||
|
method_id: method_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search(token, sdate, search, group_id, page, company_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/search', {
|
||||||
|
token: token,
|
||||||
|
start_date: sdate,
|
||||||
|
search: search,
|
||||||
|
group_id: group_id,
|
||||||
|
page: page,
|
||||||
|
company_id : company_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_note(token, order_id, note) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/save_note', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
note: note
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function info_req(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/info_req', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,586 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
const portServerImportInterface = "/one-api/v1/su/portserver_kd/";
|
||||||
|
|
||||||
|
// save_result_note_row
|
||||||
|
export async function save_result_note_row(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/update_result_note_row', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
export async function get_result_note_by_nat_test_id(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/result_note_row_by_nat_test_id', prm);
|
||||||
|
|
||||||
|
// console.log("resp ", resp);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// upload file
|
||||||
|
export async function uploadimage_lampiran(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/upload_file_lampiran_by_order_id', prm, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log("resp ", resp);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// import interface
|
||||||
|
export async function importInterface(prm, ItfNoReg) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.get(portServerImportInterface + 'fpp/' + ItfNoReg);
|
||||||
|
console.log("RESPON SERVER : ", resp)
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.data.message
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
message: resp.data.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search(token, order_id, lang_id, lang_si, group_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
lang_id: lang_id,
|
||||||
|
lang_si: lang_si,
|
||||||
|
group_id: group_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save(token, lang_id, is_si, datax) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/save', {
|
||||||
|
token: token,
|
||||||
|
lang_id: lang_id,
|
||||||
|
is_si: is_si,
|
||||||
|
data: datax
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function uploadimage(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/uploadimage', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_template(token, test_id, value) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/save_template', {
|
||||||
|
token: token,
|
||||||
|
test_id: test_id,
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function lang_export(token, order_id, lang_id, is_si) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/export', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
lang_id: lang_id,
|
||||||
|
is_si: is_si
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search_group() {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search_group', {});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search_rerun(detail_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search_rerun', { detail_id: detail_id });
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getmikroresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getmikroresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getpapsmearresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getpapsmearresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getantibiotics(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getantibiotics', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getlcprepresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getlcprepresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getfnaresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getfnaresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getcytologiresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getcytologiresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_mikro(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_mikro', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveresult_papsmear(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_papsmear', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_lcprep(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_lcprep', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function get_doctors(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getdoctorsfna', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_fna(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_fna', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_cytologi(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_cytologi', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function uploadimage_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/uploadimage_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getpreparasispermaresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getpreparasispermaresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function get_doctors_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/get_doctors_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function get_fpp(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/get_fpp', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
<template>
|
||||||
|
<v-menu
|
||||||
|
v-model="menu2"
|
||||||
|
:close-on-content-click="false"
|
||||||
|
:nudge-right="40"
|
||||||
|
lazy
|
||||||
|
transition="scale-transition"
|
||||||
|
offset-y
|
||||||
|
full-width
|
||||||
|
max-width="290px"
|
||||||
|
min-width="290px"
|
||||||
|
>
|
||||||
|
<v-text-field
|
||||||
|
slot="activator"
|
||||||
|
v-model="computedDateFormatted"
|
||||||
|
:label=init_label
|
||||||
|
hint="DD-MM-YYYY format"
|
||||||
|
persistent-hint
|
||||||
|
readonly
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
class="ma-1"
|
||||||
|
></v-text-field>
|
||||||
|
<v-date-picker v-model="init_date" no-title @input="menu2 = false"></v-date-picker>
|
||||||
|
</v-menu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
props : ['label', 'date', 'data'],
|
||||||
|
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
init_date: this.date ? this.date : new Date().toISOString().substr(0, 10),
|
||||||
|
dateFormatted: this.formatDate(new Date().toISOString().substr(0, 10)),
|
||||||
|
menu1: false,
|
||||||
|
menu2: false,
|
||||||
|
|
||||||
|
init_label: this.label ? this.label : 'Date',
|
||||||
|
init_data: this.data ? this.data : ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
computedDateFormatted () {
|
||||||
|
return this.formatDate(this.init_date)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
init_date (n, o) {
|
||||||
|
this.dateFormatted = this.formatDate(this.init_date)
|
||||||
|
|
||||||
|
this.$emit('change', {"old_date":o, "new_date":n, "data":this.init_data});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
formatDate (date) {
|
||||||
|
if (!date) return null
|
||||||
|
|
||||||
|
const [year, month, day] = date.split('-')
|
||||||
|
return `${day}-${month}-${year}`
|
||||||
|
},
|
||||||
|
parseDate (date) {
|
||||||
|
if (!date) return null
|
||||||
|
|
||||||
|
const [month, day, year] = date.split('/')
|
||||||
|
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`
|
||||||
|
},
|
||||||
|
|
||||||
|
emitChange (n, o) {
|
||||||
|
console.log("old:"+o)
|
||||||
|
console.log("new:"+n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div style="height:30px;
|
||||||
|
position:fixed;bottom:0px;
|
||||||
|
left:50%;
|
||||||
|
color:white;
|
||||||
|
font-size:16px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
font-weight:bold;
|
||||||
|
z-index:999;
|
||||||
|
margin-left:-150px;width:300px;">
|
||||||
|
Pasien hari ini : {{ hari_ini }} , menyusul {{ total - hari_ini}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
computed: {
|
||||||
|
total() {
|
||||||
|
try {
|
||||||
|
let pxs = this.$store.state.re_patient.patients
|
||||||
|
return pxs.length
|
||||||
|
} catch(e) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hari_ini() {
|
||||||
|
try {
|
||||||
|
let pxs = this.$store.state.re_patient.patients
|
||||||
|
let curdate = moment().format('DD.MM.YYYY')
|
||||||
|
let xtot = _.filter(pxs,function(p) {
|
||||||
|
let xdate = moment(p.T_OrderHeaderDate).format('DD.MM.YYYY')
|
||||||
|
return curdate == xdate
|
||||||
|
});
|
||||||
|
return xtot.length
|
||||||
|
} catch(e) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Pemeriksaan"
|
||||||
|
v-model="selected_px.t_testname"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Metode sekarang"
|
||||||
|
v-model="selected_px.methode_name"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
:items="methods"
|
||||||
|
item-text="Nat_MethodeName"
|
||||||
|
item-value="Nat_MethodeID"
|
||||||
|
return-object
|
||||||
|
v-model="selected_method"
|
||||||
|
label="Pilih Metode baru"
|
||||||
|
></v-select>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" dark @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.normal_method.dialog_method },
|
||||||
|
set (v) { this.$store.commit('normal_method/update_dialog_method', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
methods () {
|
||||||
|
return this.$store.state.normal_method.methods
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_method : {
|
||||||
|
get () { return this.$store.state.normal_method.selected_method },
|
||||||
|
set (v) { this.$store.commit('normal_method/update_selected_method', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px () {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
this.$store.dispatch('normal_method/save_method')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
dialog(val, old) {
|
||||||
|
if (val && !old) {
|
||||||
|
this.$store.dispatch('normal_method/search_method')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
persistent
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
rows="5"
|
||||||
|
outline
|
||||||
|
label="Catatan Proses"
|
||||||
|
hide-details
|
||||||
|
v-model="result_note"
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_note', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
result_note : {
|
||||||
|
get () { return this.$store.state.re_patient.result_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_result_note', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
this.$store.dispatch('re_patient/save_note')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
persistent
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_fo != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan FO</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_fo}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_fo_ver != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan Screening</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_fo_ver}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_sampling != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan Specimen</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_sampling}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_fo.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement FO</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_fo.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_spec_col.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Specimen Collection</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_spec_col.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_spec_ver.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Specimen Verification</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_spec_ver.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_samp_ver.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Sample Verification</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_samp_ver.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_pre_an.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Pre Analitik</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_pre_an.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_req },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_req', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
info_req () {
|
||||||
|
return this.$store.state.re_patient.info_req
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="400px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title primary-title class="grey darken-3 white--text">
|
||||||
|
<h3 class="headliine">Tambah Template Hasil</h3>
|
||||||
|
</v-card-title>
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Pemeriksaan"
|
||||||
|
readonly
|
||||||
|
v-model="curr_px"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Keterangan Hasil"
|
||||||
|
v-model="template_new_value"
|
||||||
|
:error="error || dup_error"
|
||||||
|
:error-messages="error_msg"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=false">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" dark @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_messages: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_template_new
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', v)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new_value : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.template_new_value
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_template_new_value', v)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
curr_px () {
|
||||||
|
return this.$store.state.re_px.selected_px.t_testname
|
||||||
|
},
|
||||||
|
|
||||||
|
error () {
|
||||||
|
|
||||||
|
if (this.template_new_value.length < 1) {
|
||||||
|
this.error_messages = "Keterangan Isi Hasil tidak boleh kosong !"
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
this.error_messages = ""
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
|
||||||
|
error_msg () {
|
||||||
|
if (this.error_messages != '')
|
||||||
|
return this.error_messages
|
||||||
|
|
||||||
|
return this.dup_error_messages
|
||||||
|
},
|
||||||
|
|
||||||
|
dup_error : {
|
||||||
|
get() { return this.$store.state.re_px.dup_template_error.status },
|
||||||
|
set (v) {
|
||||||
|
let x = this.$store.state.re_px.dup_template_error
|
||||||
|
x.status = v
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', x)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
dup_error_messages : {
|
||||||
|
get() { return this.$store.state.re_px.dup_template_error.messages },
|
||||||
|
set (v) {
|
||||||
|
let x = this.$store.state.re_px.dup_template_error
|
||||||
|
x.messages = v
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
if (this.error) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.$store.dispatch('re_px/save_template')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
template_new_value (v, o) {
|
||||||
|
|
||||||
|
if (this.dup_error) {
|
||||||
|
if (v != o)
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', {
|
||||||
|
status: false,
|
||||||
|
messages: ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
dialog (v, o) {
|
||||||
|
if (v && !o)
|
||||||
|
this.template_new_value = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Lampiran</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
|
||||||
|
<!-- progress bar -->
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
<!-- <v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Non Lab</label>
|
||||||
|
<br /> -->
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Non Lab" hide-details @click='pickFile' v-model='imageName'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="image" accept="image/*, application/pdf" @change="onFilePicked"> -->
|
||||||
|
<!-- <input type="file" ref="image" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('nonlab')" />
|
||||||
|
</v-flex> -->
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Lab</label>
|
||||||
|
<br />
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Lab" hide-details @click='pickFileLab' v-model='imageNameLab'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="imageLab" accept="image/*, application/pdf" @change="onFilePickedLab"> -->
|
||||||
|
<input type="file" ref="imageLab" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('lab')" />
|
||||||
|
</v-flex>
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogUpload">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// image
|
||||||
|
imageName: '',
|
||||||
|
imageUrl: '',
|
||||||
|
imageFile: '',
|
||||||
|
imageOldName: '',
|
||||||
|
ximage: '',
|
||||||
|
filesNonLab: '',
|
||||||
|
typeNonLab:"",
|
||||||
|
|
||||||
|
// lab
|
||||||
|
imageNameLab: '',
|
||||||
|
imageUrlLab: '',
|
||||||
|
imageFileLab: '',
|
||||||
|
imageOldNameLab: '',
|
||||||
|
ximageLab: '',
|
||||||
|
filesLab: '',
|
||||||
|
typeLab:"",
|
||||||
|
|
||||||
|
error_image_nonlab: false,
|
||||||
|
error_image_lab: false,
|
||||||
|
type_image: 'nonlab',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_upload_file },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_upload_file', v) }
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error_save:{
|
||||||
|
get(){ return this.$store.state.re_px.save_error_message_lampiran},
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value) {
|
||||||
|
if (value === 'nonlab') {
|
||||||
|
this.typeNonLab = "NonLab"
|
||||||
|
this.filesNonLab = this.$refs.image.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.typeLab = "Lab"
|
||||||
|
this.filesLab = this.$refs.imageLab.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save() {
|
||||||
|
// this.error_save = ""
|
||||||
|
|
||||||
|
// jk upload lab & non lab
|
||||||
|
// if(this.filesNonLab == "" && this.filesLab == ""){
|
||||||
|
// this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Non Lab atau Lab Masih Belum Dipilih")
|
||||||
|
// }else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
// this.error_image_lab = false
|
||||||
|
// let formData = new FormData();
|
||||||
|
|
||||||
|
// if(this.filesNonLab != ""){
|
||||||
|
// formData.append('fileNonLab', this.filesNonLab);
|
||||||
|
// formData.append('typeNonLab', this.typeNonLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(this.filesLab != ""){
|
||||||
|
// formData.append('fileLab', this.filesLab);
|
||||||
|
// formData.append('typeLab', this.typeLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
// formData.append('token', one_token())
|
||||||
|
// this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// hanya lab
|
||||||
|
if(this.filesLab == ""){
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Lab Masih Belum Dipilih")
|
||||||
|
}else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
this.error_image_lab = false
|
||||||
|
let formData = new FormData();
|
||||||
|
|
||||||
|
if(this.filesLab != ""){
|
||||||
|
formData.append('fileLab', this.filesLab);
|
||||||
|
formData.append('typeLab', this.typeLab);
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogUpload() {
|
||||||
|
// non lab
|
||||||
|
this.imageName = ''
|
||||||
|
this.imageFile = ''
|
||||||
|
this.imageUrl = ''
|
||||||
|
|
||||||
|
// lab
|
||||||
|
this.imageNameLab = ''
|
||||||
|
this.imageFileLab = ''
|
||||||
|
this.imageUrlLab = ''
|
||||||
|
|
||||||
|
this.typeNonLab = ""
|
||||||
|
this.typeLab = ""
|
||||||
|
this.filesNonLab = ""
|
||||||
|
this.filesLab = ""
|
||||||
|
this.error_save = ""
|
||||||
|
// this.$refs.image.value = ""
|
||||||
|
this.$refs.imageLab.value = ""
|
||||||
|
|
||||||
|
// close dialog
|
||||||
|
this.dialog = !this.dialog;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
HISTORI PEMERIKSAAN
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_history.dialog_history },
|
||||||
|
set (v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" persistent max-width="1000px" min-height="600px" transition="dialog-transition">
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
<!-- HISTORI PEMERIKSAAN
|
||||||
|
<br />
|
||||||
|
<p style="font-size: 10px;">Catatan Pasien : {{ patient_note }}</p> -->
|
||||||
|
<v-row align="left">
|
||||||
|
<v-col>
|
||||||
|
<h3>HISTORI PEMERIKSAAN</h3>
|
||||||
|
</v-col>
|
||||||
|
<v-col class="text-left">
|
||||||
|
<p v-if="(patient_note != '')" style="font-size: 15px; margin-top:10px;">Catatan Pasien : {{ patient_note }}</p>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="filter_test()">{{ text_filter_test }}</v-btn>
|
||||||
|
<v-btn color="white" flat @click="uncheck_all()">Clear Test</v-btn>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-title>
|
||||||
|
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
<v-layout v-if="show_filter_test" xs12 row wrap
|
||||||
|
style="background-color:white;padding-top:10px;border-radius:10px 10px 0px 0px;padding-left:10px;">
|
||||||
|
<v-flex xs3 v-for="(p, i) in pxs" v-bind:key="p.code" class="pr-2 pb-1">
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex class="boxoutline" class="text-left" style="padding-top:10px" pl-2 pr-2 xs2>
|
||||||
|
<v-layout row align-left justify-space-between>
|
||||||
|
<v-icon v-if="!px_selected(p.code)" @click="selectPx(p.code)"
|
||||||
|
style="color:red">clear</v-icon>
|
||||||
|
<v-icon v-if="px_selected(p.code)" @click="unSelectPx(p.code)"
|
||||||
|
style="color:green">check</v-icon>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex class="boxoutline " style="text-overflow:ellipsis;overflow:hidden;padding-top:10px;" xs11>
|
||||||
|
<span>{{ p.name }}</span>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text class="pt-1 pb-1 pl-1 pr-1">
|
||||||
|
<v-data-table :headers="new_headers" :items="result" :loading="isLoading" hide-actions
|
||||||
|
class="elevation-1 table-history">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1 green--text">
|
||||||
|
{{ props.item.px_name }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1">
|
||||||
|
{{ props.item.unit }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1" v-for="xdate in dates">
|
||||||
|
{{ props.item.result[xdate] }}
|
||||||
|
<br />
|
||||||
|
<!-- internal note -->
|
||||||
|
<p style="color: rgba(255, 0, 0, 0.5);">{{ props.item.notes[xdate] }}</p>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
</v-data-table>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.table-history table td {
|
||||||
|
height: 40px !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxoutline {
|
||||||
|
color: #000099;
|
||||||
|
border: 1px solid #e6f7ff;
|
||||||
|
justify-content: center;
|
||||||
|
height: 55px;
|
||||||
|
line-height: 25px;
|
||||||
|
padding-left: 5px;
|
||||||
|
background: #b3e7ff;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 1px;
|
||||||
|
font-weight: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxoutline:hover {
|
||||||
|
background: #e6f7ff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
|
||||||
|
isLoading: false,
|
||||||
|
show_filter_test: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
filter_test() {
|
||||||
|
this.show_filter_test = !this.show_filter_test
|
||||||
|
},
|
||||||
|
oneMoment: function (d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
uncheck_all() {
|
||||||
|
this.$store.commit('re_history/update_selected_px', [])
|
||||||
|
},
|
||||||
|
selectPx(code) {
|
||||||
|
console.log('Select ' + code)
|
||||||
|
let pxs = this.$store.state.re_history.pxs
|
||||||
|
let obj = _.filter(pxs, function (o) { return o.code == code })
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let n_spx = _.concat(spx, obj)
|
||||||
|
this.$store.commit('re_history/update_selected_px', n_spx)
|
||||||
|
},
|
||||||
|
unSelectPx(code) {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let new_spx = _.filter(spx, function (o) { return o.code != code })
|
||||||
|
this.$store.commit('re_history/update_selected_px', new_spx)
|
||||||
|
},
|
||||||
|
px_selected(code) {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let rst = _.findIndex(spx, { 'code': code })
|
||||||
|
if (rst == -1) return false
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dates() {
|
||||||
|
return this.$store.state.re_history.dates
|
||||||
|
},
|
||||||
|
text_filter_test() {
|
||||||
|
if (this.show_filter_test) return "Hide Test"
|
||||||
|
return "Show Test"
|
||||||
|
},
|
||||||
|
new_headers() {
|
||||||
|
let headers = [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "Unit",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "16%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}]
|
||||||
|
|
||||||
|
for (let i = 0; i < this.dates.length; i++) {
|
||||||
|
headers.push({
|
||||||
|
text: this.dates[i],
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return headers
|
||||||
|
},
|
||||||
|
result() {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let rst = this.$store.state.re_history.result
|
||||||
|
let new_rst = _.filter(rst, function (r) {
|
||||||
|
return _.findIndex(spx, { 'code': r.code }) > -1
|
||||||
|
})
|
||||||
|
return new_rst
|
||||||
|
},
|
||||||
|
pxs() {
|
||||||
|
return this.$store.state.re_history.pxs
|
||||||
|
},
|
||||||
|
// patient note
|
||||||
|
patient_note() {
|
||||||
|
return this.$store.state.re_history.patient_note
|
||||||
|
},
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_history.dialog_history },
|
||||||
|
set(v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
},
|
||||||
|
selected_px: {
|
||||||
|
get() { return this.$store.state.re_history.selected_px }
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
HISTORI PEMERIKSAAN
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.v-card__actions { display:none }
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_history.dialog_history },
|
||||||
|
set (v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,295 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card class="pa-2" v-show="!detail">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">No Reg / Tanggal</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderLabNumber}} / {{order_date}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">Nama / Jenis Kelamin</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientName}} / {{selected_patient.M_SexName}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">DOB / Umur</div>
|
||||||
|
<div class="subheading">{{dob_date}} / {{age}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">Pengirim</div>
|
||||||
|
<div class="subheading">{{selected_patient.doctor_sender_name}} </div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-btn absolute dark top right
|
||||||
|
color="black" flat depressed
|
||||||
|
@click="detail=!detail"
|
||||||
|
class="btn-detail"
|
||||||
|
>
|
||||||
|
<v-icon>keyboard_arrow_up</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs12 v-show="detail">
|
||||||
|
<v-card class="pa-2">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs6>
|
||||||
|
<div class="caption font-weight-light">No Reg / Tanggal</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderLabNumber}} / {{order_date}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Nama / Jenis Kelamin</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientName}} / {{selected_patient.M_SexName}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">DOB / Umur</div>
|
||||||
|
<div class="subheading">{{dob_date}} / {{age}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Phone / Janji hasil</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientHP}} / {{selected_patient.order_promise?selected_patient.order_promise.join(', '):''}}</div>
|
||||||
|
<div class="caption font-weight-light mt-2">Diagnose</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderDiagnose}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<div class="caption font-weight-light">Kel. Pelanggan</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_CompanyName}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Pengirim</div>
|
||||||
|
<div class="subheading">{{selected_patient.doctor_sender_name}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Pengiriman Hasil</div>
|
||||||
|
<div class="subheading">{{selected_patient.delivery?selected_patient.delivery.join(", "):''}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Format Hasil</div>
|
||||||
|
<div class="subheading">{{langs}} </div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row v-show="false">
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pr-2>
|
||||||
|
<v-flex xs7 pr-2>
|
||||||
|
|
||||||
|
<v-text-field
|
||||||
|
label="Nomor Lab"
|
||||||
|
v-model="selected_patient.T_OrderHeaderLabNumber"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs5>
|
||||||
|
<v-text-field
|
||||||
|
label="Tanggal"
|
||||||
|
v-model="order_date"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Nama"
|
||||||
|
v-model="selected_patient.M_PatientName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs5 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="DOB"
|
||||||
|
v-model="dob_date"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs7 pl-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Umur"
|
||||||
|
v-model="age"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Jenis Kelamin"
|
||||||
|
v-model="selected_patient.M_SexName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Dokter"
|
||||||
|
v-model="selected_patient.doctor_pj_name"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Company"
|
||||||
|
v-model="selected_patient.M_CompanyName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs12 mb-3>
|
||||||
|
<v-text-field
|
||||||
|
label="No HP"
|
||||||
|
v-model="selected_patient.M_PatientHP"
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Pasien"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.M_PatientNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap v-show="false">
|
||||||
|
<v-flex xs4 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan FO"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderFoNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs4 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Sampling"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderSamplingNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs4>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Sample Handling"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderResultNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-btn
|
||||||
|
absolute
|
||||||
|
dark
|
||||||
|
top
|
||||||
|
right
|
||||||
|
color="black"
|
||||||
|
flat
|
||||||
|
depressed
|
||||||
|
@click="detail=!detail"
|
||||||
|
class="btn-detail"
|
||||||
|
>
|
||||||
|
<v-icon>keyboard_arrow_down</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.btn-detail {
|
||||||
|
min-width: 0px !important;
|
||||||
|
height: auto;
|
||||||
|
padding: 0px;
|
||||||
|
top: 5px;
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
detail: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
selected_patient () {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (x)
|
||||||
|
return x
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
order_date() {
|
||||||
|
let d = this.selected_patient.T_OrderHeaderDate
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.substr(0,10).split('-').reverse().join('-')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
dob_date() {
|
||||||
|
let d = this.selected_patient.M_PatientDOB
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.substr(0,10).split('-').reverse().join('-')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
age() {
|
||||||
|
let d = this.selected_patient.T_OrderHeaderM_PatientAge
|
||||||
|
return d
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.replace(/tahun/, 'th').replace(/bulan/, 'bl').replace(/hari/, 'hr')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
langs() {
|
||||||
|
let x = this.selected_patient
|
||||||
|
if (!x) return ''
|
||||||
|
|
||||||
|
let si_01 = x.T_OrderHeaderLangIsSI == 'Y' ? ' (SI)' : ''
|
||||||
|
let si_02 = x.T_OrderHeaderAddOnSecondLangIsSI == 'Y' ? ' (SI)' : ''
|
||||||
|
|
||||||
|
if (!x.SecondM_LangID) return x.M_LangName + si_01
|
||||||
|
|
||||||
|
return x.M_LangName + si_01 + ', ' + x.SecondM_LangName + si_02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,306 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog_note"
|
||||||
|
width="40%"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title
|
||||||
|
class="headline white--text error"
|
||||||
|
primary-title
|
||||||
|
>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.M_PatientNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">PASIEN</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.M_PatientNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.T_OrderHeaderFoNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">FO</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<code style="box-shadow: none !important;color: #0f80db !important;background-color: #a8cfee6b !important;">{{selected_patient.username_fo}}</code>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.T_OrderHeaderFoNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.T_OrderHeaderSamplingNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">Sampling</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<code style="box-shadow: none !important;color: #0f80db !important;background-color: #a8cfee6b !important;">{{selected_patient.username_sample}}</code>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.T_OrderHeaderSamplingNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn
|
||||||
|
color="grey"
|
||||||
|
dark
|
||||||
|
flat
|
||||||
|
text
|
||||||
|
@click="dialog_note = false"
|
||||||
|
>
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<v-card class="grow">
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="patients"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{
|
||||||
|
'susulan' : is_susulan(props.item),
|
||||||
|
'verif_done': is_verif_done(props.item), 'verif_partial': is_verif_partial(props.item),
|
||||||
|
'valid_done': is_valid_done(props.item), 'valid_partial':is_valid_partial(props.item) }"
|
||||||
|
>
|
||||||
|
<td
|
||||||
|
class="text-xs-left pa-2 green--text" v-bind:class="[ is_cito(props.item)]"
|
||||||
|
@click="select(props.item)">
|
||||||
|
<span style="color:black">{{ props.item.T_OrderHeaderLabNumber }}</span>
|
||||||
|
<v-icon @click="openNote(props.item)" v-if="props.item.M_PatientNote || props.item.T_OrderHeaderSamplingNote || props.item.T_OrderHeaderFoNote " color="error">info</v-icon>
|
||||||
|
<br/>
|
||||||
|
<span style="color:#660000">{{props.item.T_OrderHeaderLabNumberExt}}</span>
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
class="text-xs-left pa-2" v-bind:class="[ is_cito(props.item)]"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.M_PatientName }} <br/>
|
||||||
|
<span style="color:#660000">{{format_date(props.item.T_OrderHeaderDate)}}</span>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<v-icon v-if="is_selected(props.item)" >pan_tool</v-icon>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
div.v-table__overflow {
|
||||||
|
height:680px!important;
|
||||||
|
overflow-y:scroll;
|
||||||
|
}
|
||||||
|
tr.susulan {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, white 5%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_partial{
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, white 5%, white 40%,yellow 70%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_done {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, yellow 5%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_partial.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699 20%,white 30%, white 70%, yellow 80%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_done.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699 40%,yellow 60%);
|
||||||
|
}
|
||||||
|
tr.susulan.valid_done{
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699,#99e699, #99e699, #99e699);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tr.verif_partial{
|
||||||
|
background-image: linear-gradient(to right, white 40%,yellow 70%);
|
||||||
|
}
|
||||||
|
tr.verif_done {
|
||||||
|
background-image: linear-gradient(to right, yellow,yellow, yellow, yellow);
|
||||||
|
}
|
||||||
|
tr.verif_partial.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, #99e699 20%,white 30%, white 70%, yellow 80%);
|
||||||
|
}
|
||||||
|
tr.verif_done.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, #99e699 40%,yellow 60%);
|
||||||
|
}
|
||||||
|
tr.valid_done{
|
||||||
|
background-image: linear-gradient(to right, #99e699,#99e699, #99e699, #99e699);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialog_note:false,
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NO REG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "30%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NAMA",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "60%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "",
|
||||||
|
align: "center",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 text-xs-right green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
openNote(value){
|
||||||
|
console.log(value)
|
||||||
|
this.select(value)
|
||||||
|
this.dialog_note = true
|
||||||
|
},
|
||||||
|
is_valid_partial(i) {
|
||||||
|
return i.T_OrderHeaderAddOnValidationDone == 'P'
|
||||||
|
},
|
||||||
|
is_susulan(i) {
|
||||||
|
let cur_date = moment().format('DD.MM.YYYY')
|
||||||
|
let o_date = moment(i.T_OrderHeaderDate).format('DD.MM.YYYY')
|
||||||
|
|
||||||
|
return cur_date != o_date
|
||||||
|
},
|
||||||
|
is_valid_done(i) {
|
||||||
|
return i.T_OrderHeaderAddOnValidationDone == 'Y'
|
||||||
|
},
|
||||||
|
is_verif_partial(i) {
|
||||||
|
return i.T_OrderHeaderAddOnVerificationDone == 'P'
|
||||||
|
},
|
||||||
|
is_verif_done(i) {
|
||||||
|
return i.T_OrderHeaderAddOnVerificationDone == 'Y'
|
||||||
|
},
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
format_date(p) {
|
||||||
|
return moment(p).format("DD.MM.YYYY HH:mm")
|
||||||
|
},
|
||||||
|
select (item) {
|
||||||
|
this.$store.commit('re_patient/update_selected_patient', item)
|
||||||
|
this.$store.commit('re_px/update_id', item.T_OrderHeaderID)
|
||||||
|
this.$store.dispatch('re_px/search')
|
||||||
|
this.$store.dispatch('re_patient/info_req')
|
||||||
|
this.$store.dispatch('re_px/get_fpp')
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (!x)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if (x.T_OrderHeaderID == item.T_OrderHeaderID)
|
||||||
|
return 'green lighten-4'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
is_cito (item) {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (!x)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if (item.T_OrderHeaderIsCito == "Y")
|
||||||
|
return 'amber'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
change_page(x) {
|
||||||
|
this.curr_patient_page = x
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
patients () {
|
||||||
|
return this.$store.state.re_patient.patients
|
||||||
|
},
|
||||||
|
selected_patient () {
|
||||||
|
console.log("selected pasien : ",this.$store.state.re_patient.selected_patient)
|
||||||
|
return this.$store.state.re_patient.selected_patient
|
||||||
|
},
|
||||||
|
total_patient () {
|
||||||
|
return this.$store.state.re_patient.total_patient
|
||||||
|
},
|
||||||
|
|
||||||
|
total_patient_page () {
|
||||||
|
return this.$store.state.re_patient.total_patient_page
|
||||||
|
},
|
||||||
|
|
||||||
|
curr_patient_page : {
|
||||||
|
get () { return this.$store.state.re_patient.curr_patient_page },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_curr_patient_page', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Result Note Row</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
|
||||||
|
<!-- progress bar -->
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
<!-- <v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Non Lab</label>
|
||||||
|
<br /> -->
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Non Lab" hide-details @click='pickFile' v-model='imageName'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="image" accept="image/*, application/pdf" @change="onFilePicked"> -->
|
||||||
|
<!-- <input type="file" ref="image" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('nonlab')" />
|
||||||
|
</v-flex> -->
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Lab</label>
|
||||||
|
<br />
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Lab" hide-details @click='pickFileLab' v-model='imageNameLab'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="imageLab" accept="image/*, application/pdf" @change="onFilePickedLab"> -->
|
||||||
|
<input type="file" ref="imageLab" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('lab')" />
|
||||||
|
</v-flex>
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogUpload">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// image
|
||||||
|
imageName: '',
|
||||||
|
imageUrl: '',
|
||||||
|
imageFile: '',
|
||||||
|
imageOldName: '',
|
||||||
|
ximage: '',
|
||||||
|
filesNonLab: '',
|
||||||
|
typeNonLab:"",
|
||||||
|
|
||||||
|
// lab
|
||||||
|
imageNameLab: '',
|
||||||
|
imageUrlLab: '',
|
||||||
|
imageFileLab: '',
|
||||||
|
imageOldNameLab: '',
|
||||||
|
ximageLab: '',
|
||||||
|
filesLab: '',
|
||||||
|
typeLab:"",
|
||||||
|
|
||||||
|
error_image_nonlab: false,
|
||||||
|
error_image_lab: false,
|
||||||
|
type_image: 'nonlab',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_upload_file },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_upload_file', v) }
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error_save:{
|
||||||
|
get(){ return this.$store.state.re_px.save_error_message_lampiran},
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value) {
|
||||||
|
if (value === 'nonlab') {
|
||||||
|
this.typeNonLab = "NonLab"
|
||||||
|
this.filesNonLab = this.$refs.image.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.typeLab = "Lab"
|
||||||
|
this.filesLab = this.$refs.imageLab.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save() {
|
||||||
|
// this.error_save = ""
|
||||||
|
|
||||||
|
// jk upload lab & non lab
|
||||||
|
// if(this.filesNonLab == "" && this.filesLab == ""){
|
||||||
|
// this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Non Lab atau Lab Masih Belum Dipilih")
|
||||||
|
// }else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
// this.error_image_lab = false
|
||||||
|
// let formData = new FormData();
|
||||||
|
|
||||||
|
// if(this.filesNonLab != ""){
|
||||||
|
// formData.append('fileNonLab', this.filesNonLab);
|
||||||
|
// formData.append('typeNonLab', this.typeNonLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(this.filesLab != ""){
|
||||||
|
// formData.append('fileLab', this.filesLab);
|
||||||
|
// formData.append('typeLab', this.typeLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
// formData.append('token', one_token())
|
||||||
|
// this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// hanya lab
|
||||||
|
if(this.filesLab == ""){
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Lab Masih Belum Dipilih")
|
||||||
|
}else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
this.error_image_lab = false
|
||||||
|
let formData = new FormData();
|
||||||
|
|
||||||
|
if(this.filesLab != ""){
|
||||||
|
formData.append('fileLab', this.filesLab);
|
||||||
|
formData.append('typeLab', this.typeLab);
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogUpload() {
|
||||||
|
// non lab
|
||||||
|
this.imageName = ''
|
||||||
|
this.imageFile = ''
|
||||||
|
this.imageUrl = ''
|
||||||
|
|
||||||
|
// lab
|
||||||
|
this.imageNameLab = ''
|
||||||
|
this.imageFileLab = ''
|
||||||
|
this.imageUrlLab = ''
|
||||||
|
|
||||||
|
this.typeNonLab = ""
|
||||||
|
this.typeLab = ""
|
||||||
|
this.filesNonLab = ""
|
||||||
|
this.filesLab = ""
|
||||||
|
this.error_save = ""
|
||||||
|
// this.$refs.image.value = ""
|
||||||
|
this.$refs.imageLab.value = ""
|
||||||
|
|
||||||
|
// close dialog
|
||||||
|
this.dialog = !this.dialog;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,475 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height flex-card" column>
|
||||||
|
<v-card class="fill-height">
|
||||||
|
<!-- <v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader> -->
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<!--
|
||||||
|
<v-progress-linear :indeterminate="true" class="mt-1 mb-1" v-if="search_status == 1"
|
||||||
|
height="10" striped></v-progress-linear>
|
||||||
|
-->
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="pxs"
|
||||||
|
:loading="search_status == 1"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{'red lighten-4': props.item.verification == 'Y',
|
||||||
|
'green lighten-4': props.item.validation== 'Y' }">
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'N'" colspan="7">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'" style="position: relative">
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
v-if="props.item.ResultGroupName === 'FNA'"
|
||||||
|
:value="props.item.result === null || props.item.result === ''?'Belum diisi':'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
solo
|
||||||
|
readonly
|
||||||
|
single-line
|
||||||
|
rows=1
|
||||||
|
auto-grow
|
||||||
|
hide-details
|
||||||
|
label=""
|
||||||
|
type="text"
|
||||||
|
@click:append="openDialogFNA(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
v-if="props.item.ResultGroupName === 'Papsmear'"
|
||||||
|
:value="props.item.result === null || props.item.result === ''?'Belum diisi':'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
solo
|
||||||
|
readonly
|
||||||
|
single-line
|
||||||
|
rows=1
|
||||||
|
auto-grow
|
||||||
|
hide-details
|
||||||
|
label=""
|
||||||
|
type="text"
|
||||||
|
@click:append="openDialogPapsmear(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
label=""
|
||||||
|
solo
|
||||||
|
rows=1
|
||||||
|
hide-details
|
||||||
|
v-on:keyup="update_result(props.index, $event.target.value)"
|
||||||
|
:value="props.item.result"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && props.item.ResultGroupName === 'LAB'"
|
||||||
|
auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
<v-select
|
||||||
|
:items="props.item.template"
|
||||||
|
|
||||||
|
label=""
|
||||||
|
item-value="T_ResultTemplateValue"
|
||||||
|
item-text="T_ResultTemplateValue"
|
||||||
|
v-if="props.item.is_quantitative == 'N' && props.item.ResultGroupName === 'LAB'"
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
:disabled="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
>
|
||||||
|
<template style="margin-top: 3px;" v-slot:append-outer>
|
||||||
|
<v-btn icon dark color="green" small class="btn-outer ma-0" @click="template_new(props.item)"><v-icon>add_circle</v-icon></v-btn>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
|
||||||
|
<span class="body-1" v-show="props.item.sample_worklist_receive != 'Y' || !props.item.pre_analytic || (props.item.resample == 'Y' && props.item.resample_status != 'W')">{{init_result(props.item)}}</span>
|
||||||
|
|
||||||
|
<!-- <v-textarea
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
rows="2"
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
>
|
||||||
|
</v-textarea> -->
|
||||||
|
|
||||||
|
<v-btn style="width: 28px;padding-bottom: 10px;" v-if="props.item.is_quantitative == 'Y' && props.item.result_instrument_n > 0 " color="green lighten-2" class="btn_rerun" icon flat small @click="rerun_me(props.index, props.item)">
|
||||||
|
<v-img :src="icon_info" aspect-ratio="1" height="15" contain></v-img>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.result_flag : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.normal_note : '' }}
|
||||||
|
<a href="javascript:;" v-show="props.item.normal_note != '' && props.item.normal_note != null && props.item.sample_processing == 'Y' && !init_blank(props.item)" @click="normalChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.unit_name : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.methode_name : '' }}
|
||||||
|
<a href="javascript:;" v-show="props.item.methode_name != '' && props.item.methode_name != null && props.item.sample_processing == 'Y' && !init_blank(props.item)" @click="methodeChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
<v-textarea
|
||||||
|
label=""
|
||||||
|
solo
|
||||||
|
rows=1
|
||||||
|
hide-details
|
||||||
|
v-on:keyup="update_note(props.index, $event.target.value)"
|
||||||
|
:value="props.item.note"
|
||||||
|
auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
|
||||||
|
<one-process-re-rerun-result></one-process-re-rerun-result>
|
||||||
|
<one-process-re-history></one-process-re-history>
|
||||||
|
<one-process-re-fna></one-process-re-fna>
|
||||||
|
<one-process-re-papsmear></one-process-re-papsmear>
|
||||||
|
<v-snackbar
|
||||||
|
v-model="snackbar"
|
||||||
|
:timeout="5000"
|
||||||
|
bottom right
|
||||||
|
>
|
||||||
|
{{ save_text }}
|
||||||
|
<v-btn
|
||||||
|
color="pink"
|
||||||
|
flat
|
||||||
|
@click="snackbar = false"
|
||||||
|
>
|
||||||
|
Close
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
|
||||||
|
<one-dialog-template>
|
||||||
|
</one-dialog-template>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
div.v-table__overflow {
|
||||||
|
height:640px!important;
|
||||||
|
overflow-y:scroll;
|
||||||
|
}
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_rerun {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-card {
|
||||||
|
min-height: -webkit-min-content;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__control {
|
||||||
|
min-height: 32px;
|
||||||
|
box-shadow:none;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line .v-text-field__prefix, .v-textarea.v-text-field--box.v-text-field--single-line textarea, .v-textarea.v-text-field--enclosed.v-text-field--single-line .v-text-field__prefix, .v-textarea.v-text-field--enclosed.v-text-field--single-line textarea {
|
||||||
|
margin-top: 2px;
|
||||||
|
|
||||||
|
}
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner, .v-textarea.v-text-field--solo .v-input__append-outer, .v-textarea.v-text-field--solo .v-input__prepend-inner, .v-textarea.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner .v-input__icon {
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 24px;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 24px;
|
||||||
|
width: 24px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
.v-text-field.v-text-field--solo .v-input__append-outer, .v-text-field.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
module.exports = {
|
||||||
|
components : {
|
||||||
|
'one-process-re-rerun-result': httpVueLoader('./oneProcessReRerunResult.vue' + ts ),
|
||||||
|
'one-process-re-history': httpVueLoader('./oneProcessReHistory.vue' + ts ),
|
||||||
|
'one-process-re-fna': httpVueLoader('./oneResultFNA.vue' + ts ),
|
||||||
|
'one-process-re-papsmear': httpVueLoader('./oneResultPapsmear.vue' + ts ),
|
||||||
|
'one-dialog-template': httpVueLoader('./oneProcessReDialogResultTemplateNew.vue' + ts )
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
save_text: "Data telah tersimpan.",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NAMA PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NILAI NORMAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "UNIT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "METODE",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "CATATAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
pxs () {
|
||||||
|
return this.$store.state.re_px.pxs
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_info () {
|
||||||
|
return window.BASE_URL + '/one-ui/apps/image/info.png'
|
||||||
|
},
|
||||||
|
|
||||||
|
snackbar : {
|
||||||
|
get () { return this.$store.state.re_px.snackbar },
|
||||||
|
set (v) { this.$store.commit('re_px/update_snackbar', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
search_status () {
|
||||||
|
return this.$store.state.re_px.search_status
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px () {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
openDialogFNA(value){
|
||||||
|
if(value.result === null || value.result === ''){
|
||||||
|
var results = []
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'A',label:'Diagnosis Klinis',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'B',label:'Makroskopis/Tindakan',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'C',label:'Mikroskopis',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'D',label:'Kesimpulan/Diagnosa',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'E',label:'Saran',result:''})
|
||||||
|
this.$store.commit("re_fna/update_results",results)
|
||||||
|
this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_fna/get_fnaresult",value)
|
||||||
|
},
|
||||||
|
openDialogPapsmear(value){
|
||||||
|
this.$store.dispatch("re_papsmear/get_papsmearresult",value)
|
||||||
|
},
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select (idx, item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_selected_px_idx', idx)
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
margin_left (item) {
|
||||||
|
if (item.level == 2)
|
||||||
|
return 'pl-4'
|
||||||
|
|
||||||
|
if (item.level == 3)
|
||||||
|
return 'pl-5'
|
||||||
|
|
||||||
|
return 'pl-2'
|
||||||
|
},
|
||||||
|
|
||||||
|
rerun_me (idx, item) {
|
||||||
|
if(item.verification == 'Y' ) return
|
||||||
|
this.select(idx, item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result(idx, result) {
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['result'] = result
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
update_note(idx, note) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['note'] = note
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new(item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
methodeChange(d) {
|
||||||
|
if (d.item.verification == 'Y') return
|
||||||
|
this.select(d.index, d.item)
|
||||||
|
this.$store.commit('normal_method/update_nattest_id', d.item.nattest_id)
|
||||||
|
this.$store.commit('normal_method/update_id', d.item.id)
|
||||||
|
this.$store.commit('normal_method/update_dialog_method', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
normalChange(d) {
|
||||||
|
return
|
||||||
|
},
|
||||||
|
|
||||||
|
init_result(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return x.result
|
||||||
|
|
||||||
|
let susul_date = moment(x.T_OrderPromiseDateTime).format('DD.MM.YYYY HH:mm')
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N")
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.resample_status == "R")
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
if (x.resample_status == "W")
|
||||||
|
return x.result
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y')
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.sample_receive == 'Y' && !x.pre_analytic)
|
||||||
|
return "Belum Pre Analitik"
|
||||||
|
if (x.sample_receive == 'Y' && x.pre_analytic)
|
||||||
|
{
|
||||||
|
if (x.sample_worklist_receive == "Y")
|
||||||
|
return x.result
|
||||||
|
else
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init_blank(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N" || x.resample_status == "R")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y' || !x.pre_analytic || x.sample_worklist_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
// this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,751 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height flex-card" column>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- dialog -->
|
||||||
|
<v-dialog v-model="dialog_result_note_row" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Result Note Row</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="color: red; font-style: italic;">
|
||||||
|
Kalau Hidden Dicentang True
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<input type="checkbox"
|
||||||
|
v-model="selected_hidden" :value="'Y'"
|
||||||
|
style="color: black; font-style: normal;" /> Hidden
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<div v-if="result_note_rows.length > 0">
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<v-col v-for="(item, index) in result_note_rows" :key="index" cols="12">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<input type="checkbox"
|
||||||
|
:id="item.ResultNoteRowID" :value="item"
|
||||||
|
v-model="selected_checkbox"/>
|
||||||
|
{{ item.ResultNoteRowValue }}
|
||||||
|
</v-card-title>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
</v-flex>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span v-if="result_note_rows.length < 1" style="color: red;">Tidak Ada Data</span>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogResultNoteRow">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="saveResultDialogNoteRow">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- dialog -->
|
||||||
|
|
||||||
|
<v-card class="fill-height">
|
||||||
|
<!-- <v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader> -->
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<!--
|
||||||
|
<v-progress-linear :indeterminate="true" class="mt-1 mb-1" v-if="search_status == 1"
|
||||||
|
height="10" striped></v-progress-linear>
|
||||||
|
-->
|
||||||
|
<v-data-table :headers="headers" :items="pxs" :loading="search_status == 1" hide-actions class="xelevation-1">
|
||||||
|
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{
|
||||||
|
'red lighten-4': props.item.verification == 'Y',
|
||||||
|
'green lighten-4': props.item.validation == 'Y'
|
||||||
|
}">
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'N'" colspan="7">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'"
|
||||||
|
style="position: relative">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Preparasi Sperma' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Preparasi Sperma' && props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
solo readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogPreparasiSperma(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'FNA' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'FNA' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogFNA(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Cytologi' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Cytologi' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogCytologi(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Papsmear' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Papsmear' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogPapsmear(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Pap Smear (Liquid C Prep)' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Pap Smear (Liquid C Prep)' && props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
solo readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogLcprep(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : props.item.result"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Mikro' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic === 'Y' && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Mikro' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogMikro(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea label="" solo rows=1 hide-details
|
||||||
|
v-on:keyup="update_result(props.index, $event.target.value)" :value="props.item.result"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && (props.item.ResultGroupName === 'LAB' || props.item.ResultGroupName === 'ACA')"
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)" auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'" v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"></v-textarea>
|
||||||
|
|
||||||
|
<v-select :items="props.item.template" label="" item-value="T_ResultTemplateValue"
|
||||||
|
item-text="T_ResultTemplateValue"
|
||||||
|
v-if="props.item.is_quantitative == 'N' && props.item.ResultGroupName === 'LAB'" solo hide-details
|
||||||
|
:value="props.item.result" @change="update_result(props.index, $event)"
|
||||||
|
:disabled="props.item.T_OrderDetailVerification == 'Y'" v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')">
|
||||||
|
<template style="margin-top: 3px;" v-slot:append-outer>
|
||||||
|
<v-btn icon dark color="green" small class="btn-outer ma-0"
|
||||||
|
@click="template_new(props.item)"><v-icon>add_circle</v-icon></v-btn>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
|
||||||
|
<span class="body-1"
|
||||||
|
v-show="props.item.sample_worklist_receive != 'Y' || !props.item.pre_analytic || (props.item.resample == 'Y' && props.item.resample_status != 'W')">{{
|
||||||
|
init_result(props.item) }}</span>
|
||||||
|
|
||||||
|
<!-- <v-textarea
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
rows="2"
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
>
|
||||||
|
</v-textarea> -->
|
||||||
|
|
||||||
|
<v-btn style="width: 28px;padding-bottom: 10px;margin-top: 43px;"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && props.item.result_instrument_n > 0"
|
||||||
|
color="green lighten-2" class="btn_rerun" icon flat small
|
||||||
|
@click="rerun_me(props.index, props.item)">
|
||||||
|
<v-img :src="icon_info" aspect-ratio="1" height="15" contain></v-img>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.result_flag : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.normal_note : '' }}
|
||||||
|
<a href="javascript:;"
|
||||||
|
v-show="props.item.normal_note != '' && props.item.normal_note != null && props.item.sample_processing == 'Y' && !init_blank_normal(props.item) && false"
|
||||||
|
@click="normalChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.unit_name : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.methode_name : '' }}
|
||||||
|
<a href="javascript:;"
|
||||||
|
v-show="props.item.methode_name != '' && props.item.methode_name != null && props.item.sample_processing == 'Y' && !init_blank_normal(props.item)"
|
||||||
|
@click="methodeChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
<div class="d-flex align-center">
|
||||||
|
<v-textarea label="" solo rows="1" hide-details
|
||||||
|
v-on:keyup="update_note(props.index, $event.target.value)" :value="props.item.note" auto-grow
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)"
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"></v-textarea>
|
||||||
|
<!-- button show result note row start -->
|
||||||
|
<v-btn small class="btn-search one-btn-icon ma-1 white--text ma-1 x-small" color="orange"
|
||||||
|
@click="openDialogResultNoteRow(props.item)"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
title="Result Note Row">
|
||||||
|
<v-icon style="width: 10px; height: 10px;">library_books</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
<!-- button show result note row end -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
class="text-xs-left mt-2 mb-2" style="color: brown;">Internal</p>
|
||||||
|
|
||||||
|
<!-- Inputan T_OrderDetailInternalNote -->
|
||||||
|
<v-textarea class="inputanInternalNote" label="" solo rows=1 hide-details
|
||||||
|
v-on:keyup="update_internal_note(props.index, $event.target.value)"
|
||||||
|
:value="props.item.T_OrderDetailInternalNote" auto-grow
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)"
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"></v-textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
|
||||||
|
<one-process-re-rerun-result></one-process-re-rerun-result>
|
||||||
|
<one-process-re-history></one-process-re-history>
|
||||||
|
<one-process-re-fna></one-process-re-fna>
|
||||||
|
<one-process-re-cytologi></one-process-re-cytologi>
|
||||||
|
<one-process-re-papsmear></one-process-re-papsmear>
|
||||||
|
<one-process-re-lcprep></one-process-re-lcprep>
|
||||||
|
<one-process-re-mikro></one-process-re-mikro>
|
||||||
|
<one-process-re-preparasisperma></one-process-re-preparasisperma>
|
||||||
|
<v-snackbar v-model="snackbar" :timeout="5000" bottom right>
|
||||||
|
{{ save_text }}
|
||||||
|
<v-btn color="pink" flat @click="snackbar = false">
|
||||||
|
Close
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
|
||||||
|
<!-- SNACKBAR INTERFACE START -->
|
||||||
|
<v-snackbar v-model="snackbar_interface.value" top :color="snackbar_interface.color">
|
||||||
|
{{ snackbar_interface.text }}
|
||||||
|
<v-btn flat @click="snackbar_interface.value = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
<!-- SNACKBAR INTERFACE END -->
|
||||||
|
|
||||||
|
<one-dialog-template>
|
||||||
|
</one-dialog-template>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* button result note row */
|
||||||
|
button.btn-search.one-btn-icon.ma-1.white--text.ma-1.x-small.v-btn.v-btn--small.theme--light.orange {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-search {
|
||||||
|
font-size: 1.5em
|
||||||
|
}
|
||||||
|
|
||||||
|
div.v-table__overflow {
|
||||||
|
height: 640px !important;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot {
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table tbody td,
|
||||||
|
table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_rerun {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-card {
|
||||||
|
min-height: -webkit-min-content;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__control {
|
||||||
|
min-height: 32px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.inputanInternalNote .v-input__control {
|
||||||
|
border: 2px solid rgba(255, 0, 0, 0.5) !important;
|
||||||
|
min-height: 32px !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line .v-text-field__prefix,
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line textarea,
|
||||||
|
.v-textarea.v-text-field--enclosed.v-text-field--single-line .v-text-field__prefix,
|
||||||
|
.v-textarea.v-text-field--enclosed.v-text-field--single-line textarea {
|
||||||
|
margin-top: 2px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-outer,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__prepend-inner,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner .v-input__icon {
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 24px;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 24px;
|
||||||
|
width: 24px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__append-outer,
|
||||||
|
.v-text-field.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics {
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody td,
|
||||||
|
table.table_antibiotics tbody th {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody tr:nth-child(even) {
|
||||||
|
background-color: #dddddd;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
'one-process-re-rerun-result': httpVueLoader('./oneProcessReRerunResult.vue' + ts),
|
||||||
|
'one-process-re-history': httpVueLoader('./oneProcessReHistory.vue' + ts),
|
||||||
|
'one-process-re-fna': httpVueLoader('./oneResultFNA.vue' + ts),
|
||||||
|
'one-process-re-cytologi': httpVueLoader('./oneResultCytologi.vue' + ts),
|
||||||
|
'one-process-re-papsmear': httpVueLoader('./oneResultPapsmear.vue' + ts),
|
||||||
|
'one-process-re-lcprep': httpVueLoader('./oneResultLcprep.vue' + ts),
|
||||||
|
'one-process-re-mikro': httpVueLoader('./oneResultMikro.vue' + ts),
|
||||||
|
'one-dialog-template': httpVueLoader('./oneProcessReDialogResultTemplateNew.vue' + ts),
|
||||||
|
'one-process-re-preparasisperma': httpVueLoader('./oneResultPreparasiSperma.vue' + ts),
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// selected checkbox_array
|
||||||
|
selected_checkbox: [],
|
||||||
|
// hidden
|
||||||
|
selected_hidden:[],
|
||||||
|
|
||||||
|
borderColorInternalNote: 'black',
|
||||||
|
query: "",
|
||||||
|
save_text: "Data telah tersimpan.",
|
||||||
|
items: [],
|
||||||
|
order_detail_id_param: '',
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NAMA PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NILAI NORMAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "UNIT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "METODE",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "CATATAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
pxs() {
|
||||||
|
return this.$store.state.re_px.pxs
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_info() {
|
||||||
|
return window.BASE_URL + '/one-ui/apps/image/info.png'
|
||||||
|
},
|
||||||
|
|
||||||
|
snackbar: {
|
||||||
|
get() { return this.$store.state.re_px.snackbar },
|
||||||
|
set(v) { this.$store.commit('re_px/update_snackbar', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
// SNACKBAR INTERFACE
|
||||||
|
snackbar_interface: {
|
||||||
|
get() { return this.$store.state.re_px.snackbar_interface },
|
||||||
|
set(v) { this.$store.commit('re_px/update_snackbar_interface', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
search_status() {
|
||||||
|
return this.$store.state.re_px.search_status
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px() {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
},
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
dialog_result_note_row: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_result_note_row },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_result_note_row', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
result_note_rows() {
|
||||||
|
return this.$store.state.re_px.result_note_rows
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
// dialog result note row
|
||||||
|
openDialogResultNoteRow(item) {
|
||||||
|
console.log("Data per row : ", item)
|
||||||
|
this.order_detail_id_param = item.id;
|
||||||
|
this.$store.dispatch("re_px/get_result_note_by_nat_test_id", { nattest_id: item.nattest_id })
|
||||||
|
// this.$store.commit('re_px/update_dialog_result_note_row', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogResultNoteRow() {
|
||||||
|
// close dialog
|
||||||
|
this.order_detail_id_param = ""
|
||||||
|
this.selected_checkbox = []
|
||||||
|
this.selected_hidden = []
|
||||||
|
this.dialog_result_note_row = !this.dialog_result_note_row;
|
||||||
|
},
|
||||||
|
|
||||||
|
saveResultDialogNoteRow(){
|
||||||
|
console.log("result dialog note - selected hidden checkbox", this.selected_hidden);
|
||||||
|
console.log("result dialog note - selected checkbox", this.selected_checkbox);
|
||||||
|
// let resultNoteRowString = "";
|
||||||
|
let hidden_note = "";
|
||||||
|
// if(this.selected_checkbox.length > 0){
|
||||||
|
// resultNoteRowString = this.selected_checkbox.map(item => item.ResultNoteRowValue).join(' \r ');
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(this.selected_hidden.length < 1){
|
||||||
|
hidden_note = "N"
|
||||||
|
}else{
|
||||||
|
hidden_note = "Y"
|
||||||
|
}
|
||||||
|
|
||||||
|
let prm = {
|
||||||
|
// "result_note_row" : resultNoteRowString,
|
||||||
|
"result_note_row" : this.selected_checkbox,
|
||||||
|
"order_detail_id" : this.order_detail_id_param,
|
||||||
|
"hidden_note" : hidden_note
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log("PARAM SAVE RESULT NOTE ROW",prm);
|
||||||
|
this.$store.dispatch("re_px/save_result_note_row", prm)
|
||||||
|
|
||||||
|
// clear
|
||||||
|
this.order_detail_id_param = ""
|
||||||
|
this.selected_checkbox = []
|
||||||
|
this.selected_hidden = []
|
||||||
|
this.dialog_result_note_row = !this.dialog_result_note_row;
|
||||||
|
},
|
||||||
|
|
||||||
|
async keyDownResult(idx, item) {
|
||||||
|
await this.$store.dispatch('re_normal/update', item.id)
|
||||||
|
if (this.$store.state.re_normal.error == "") {
|
||||||
|
let result = this.$store.state.re_normal.result
|
||||||
|
let pxs = this.$store.state.re_px.pxs
|
||||||
|
pxs[idx]["normal_id"] = result.T_OrderDetailNat_NormalValueID
|
||||||
|
pxs[idx]["normal_note"] = result.T_OrderDetailNormalValueNote
|
||||||
|
pxs[idx]["methode_id"] = result.T_OrderDetailNat_MethodeID
|
||||||
|
pxs[idx]["methode_name"] = result.Nat_MethodeName
|
||||||
|
let data = { records: pxs }
|
||||||
|
this.$store.commit("re_px/update_pxs", data)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openDialogFNA(value) {
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
var results = []
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'A', label: 'Diagnosis Klinis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'B', label: 'Makroskopis/Tindakan', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'C', label: 'Mikroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'D', label: 'Kesimpulan/Diagnosa', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'E', label: 'Saran', result: '' })
|
||||||
|
this.$store.commit("re_fna/update_results", results)
|
||||||
|
this.$store.dispatch("re_fna/get_doctors", { token: '' })
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_fna/get_fnaresult", value)
|
||||||
|
},
|
||||||
|
openDialogCytologi(value) {
|
||||||
|
//console.log(value.result)
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
console.log("ane-01")
|
||||||
|
var results = []
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'A', label: 'Makroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'B', label: 'Mikroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'C', label: 'Kesimpulan', result: '' })
|
||||||
|
this.$store.commit("re_cytologi/update_results", results)
|
||||||
|
this.$store.dispatch("re_cytologi/get_doctors", { token: '' })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("ane-09")
|
||||||
|
this.$store.dispatch("re_cytologi/get_cytologiresult", value)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
openDialogPapsmear(value) {
|
||||||
|
this.$store.commit("re_papsmear/update_selected_papsmear", value)
|
||||||
|
this.$store.dispatch("re_papsmear/get_papsmearresult", value)
|
||||||
|
},
|
||||||
|
openDialogLcprep(value) {
|
||||||
|
console.log(value)
|
||||||
|
this.$store.commit("re_lcprep/update_selected_lcprep", value)
|
||||||
|
this.$store.dispatch("re_lcprep/get_lcprepresult", value)
|
||||||
|
},
|
||||||
|
openDialogMikro(value) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_mikro", value)
|
||||||
|
this.$store.dispatch("re_mikro/get_mikroresult", value)
|
||||||
|
},
|
||||||
|
openDialogPreparasiSperma(value) {
|
||||||
|
console.log(value)
|
||||||
|
this.$store.commit("re_preparasisperma/update_selected_preparasisperma", value)
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
var results = { xid: '0' }
|
||||||
|
console.log('result null')
|
||||||
|
this.$store.commit("re_preparasisperma/update_results", results)
|
||||||
|
this.$store.dispatch("re_preparasisperma/get_doctors_preparasi_sperma", { token: '' })
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_preparasisperma/get_preparasispermaresult", value)
|
||||||
|
},
|
||||||
|
oneMoment: function (d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select(idx, item) {
|
||||||
|
console.log("di file oneProcessPxList")
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_selected_px_idx', idx)
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected(item) {
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
margin_left(item) {
|
||||||
|
if (item.level == 2)
|
||||||
|
return 'pl-4'
|
||||||
|
|
||||||
|
if (item.level == 3)
|
||||||
|
return 'pl-5'
|
||||||
|
|
||||||
|
return 'pl-2'
|
||||||
|
},
|
||||||
|
|
||||||
|
rerun_me(idx, item) {
|
||||||
|
if (item.verification == 'Y') return
|
||||||
|
this.select(idx, item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result(idx, result) {
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['result'] = result
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
update_note(idx, note) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['note'] = note
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
// internal note
|
||||||
|
update_internal_note(idx, internalNote) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['T_OrderDetailInternalNote'] = internalNote
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new(item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
methodeChange(d) {
|
||||||
|
if (d.item.verification == 'Y') return
|
||||||
|
this.select(d.index, d.item)
|
||||||
|
this.$store.commit('normal_method/update_nattest_id', d.item.nattest_id)
|
||||||
|
this.$store.commit('normal_method/update_id', d.item.id)
|
||||||
|
this.$store.commit('normal_method/update_dialog_method', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
normalChange(d) {
|
||||||
|
return
|
||||||
|
},
|
||||||
|
|
||||||
|
init_result(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return x.result
|
||||||
|
|
||||||
|
let susul_date = moment(x.T_OrderPromiseDateTime).format('DD.MM.YYYY HH:mm')
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N")
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.resample_status == "R")
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
if (x.resample_status == "W")
|
||||||
|
return x.result
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y')
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.sample_receive == 'Y' && !x.pre_analytic)
|
||||||
|
return "Belum Pre Analitik"
|
||||||
|
if (x.sample_receive == 'Y' && x.pre_analytic) {
|
||||||
|
if (x.sample_worklist_receive == "Y")
|
||||||
|
return x.result
|
||||||
|
else
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init_blank_normal(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
if (x.sample_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
init_blank(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N" || x.resample_status == "R")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y' || !x.pre_analytic || x.sample_worklist_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
// this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow">
|
||||||
|
<v-card-text>
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="reruns"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="elevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pa-2 green--text" v-bind:class="is_selected(props.item)">
|
||||||
|
{{get_instrument_date(props.item)}}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
{{ props.item.instrument_name }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
{{ props.item.result }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
<v-btn flat icon color="green" @click="select(props.item)">
|
||||||
|
<v-icon>get_app</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
<!-- <v-btn color="green darken-1" :dark="btn_save_enabled" @click="save" :disabled="!btn_save_enabled">Simpan</v-btn> -->
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "TANGGAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "40%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "ALAT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "5%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
get_instrument_date(i) {
|
||||||
|
// debugger
|
||||||
|
let rst = ''
|
||||||
|
try {
|
||||||
|
rst = moment(i.instrument_date).format('DD.MM.YYYY HH:mm')
|
||||||
|
} catch(e) {}
|
||||||
|
return rst
|
||||||
|
},
|
||||||
|
select (item) {
|
||||||
|
this.$store.commit('re_px/update_selected_rerun', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', false)
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[this.$store.state.re_px.selected_px_idx]['result'] = item.result
|
||||||
|
x[this.$store.state.re_px.selected_px_idx]['resultInstrumentID'] = item.resultInstrumentID
|
||||||
|
console.log(x)
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
// let x = this.$store.state.re_patient.selected_patient
|
||||||
|
// if (!x)
|
||||||
|
// return ''
|
||||||
|
|
||||||
|
// if (x.T_OrderHeaderID == item.T_OrderHeaderID)
|
||||||
|
// return 'green lighten-4'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
reruns () {
|
||||||
|
return this.$store.state.re_px.reruns
|
||||||
|
},
|
||||||
|
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_px.dialog_rerun },
|
||||||
|
set (v) { this.$store.commit('re_px/update_dialog_rerun', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
// this.$store.dispatch('re_px/search_rerun')
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
dialog(n, o) {
|
||||||
|
if (n && !o) {
|
||||||
|
this.$store.dispatch('re_px/search_rerun')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="400px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Keterangan Hasil"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_template_new
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,485 @@
|
|||||||
|
<template>
|
||||||
|
<v-card class="mb-1 pa-1">
|
||||||
|
<v-dialog v-model="dialog_fpp" width="75%">
|
||||||
|
|
||||||
|
<v-card>
|
||||||
|
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<object width="100%" height="550" :data="url_pdf" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog_fpp = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
|
||||||
|
<!-- BARCODE GABUNG DIALOG START -->
|
||||||
|
<v-dialog v-model="dialog_barcode_list" width="75%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<object width="100%" height="550" :data="url_pdf" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog_barcode_list = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- BARCODE GABUNG DIALOG END -->
|
||||||
|
|
||||||
|
<!-- Dialog Attachment Start -->
|
||||||
|
<v-dialog v-model="dialog_attachment" width="75%" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs10>
|
||||||
|
<h3>Lampiran</h3>
|
||||||
|
</v-flex>
|
||||||
|
<!-- <v-spacer></v-spacer> -->
|
||||||
|
<v-flex xs2 class="text-xs-right">
|
||||||
|
<v-btn color="red darken-1 white--text" flat @click="closeDialogAttachment()">
|
||||||
|
Tutup Lampiran
|
||||||
|
</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<img v-if="(extension_lab === 'image' || extension_non_lab === 'image')" :src="url_file_attachment"
|
||||||
|
width="100%" height="100%" />
|
||||||
|
<object v-if="(extension_lab === 'pdf' || extension_non_lab === 'pdf')" width="100%" height="550"
|
||||||
|
:data="url_file_attachment" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="red darken-1 white--text" flat @click="closeDialogAttachment()">
|
||||||
|
Tutup Lampiran
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- Dialog Attachment End -->
|
||||||
|
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-layout>
|
||||||
|
<one-date-picker label="Tanggal" :date="sdate" class="mydate" data="0"
|
||||||
|
@change="changeDate"></one-date-picker>
|
||||||
|
<v-text-field class="flex ma-1" label="" placeholder="No Reg / Nama" single-line solo hide-details
|
||||||
|
v-model="search" @keyup.native="keySearch"></v-text-field>
|
||||||
|
<v-autocomplete v-model="company" :items="companies" :loading="loading_company"
|
||||||
|
:search-input.sync="search_company" class="ma-1 ml-1 mr-1" hide-no-data filled
|
||||||
|
item-text="M_CompanyName" item-value="M_CompanyID" label="" placeholder="Cari Kelompok Pelanggan"
|
||||||
|
return-object></v-autocomplete>
|
||||||
|
<v-select :items="groups" class="ma-1" v-model="selected_group" item-text="group_name"
|
||||||
|
item-value="group_id" label="Grup Pemeriksaan" return-object solo hide-details clearable></v-select>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs2>
|
||||||
|
<v-layout>
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="success" @click="searchs">
|
||||||
|
<span class="icon-search"><span>
|
||||||
|
</v-btn>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="fpp" color="blue darken-1" @click="openFPP()" dark>
|
||||||
|
FPP
|
||||||
|
</v-btn>
|
||||||
|
<!--<span class="one-fpp-viewer-v2" :data-header-id="selected_patient.T_OrderHeaderID"></span>-->
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<!-- <p>
|
||||||
|
sasas {{ selected_patient.Itf }}
|
||||||
|
</p> -->
|
||||||
|
|
||||||
|
<!-- BARCODE GABUNG START -->
|
||||||
|
<v-flex xs1 mr-1 v-if="selected_patient.Itf !== '' && Object.keys(selected_patient).length > 0">
|
||||||
|
<v-btn style="right:10px;padding: 24px;" v-if="selected_patient.Itf !== ''"
|
||||||
|
@click="importInterface(selected_patient.BrnListBarcode)" color="primary" dark>Import Interface</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
<!-- BARCODE GABUNG END -->
|
||||||
|
|
||||||
|
<v-flex xs6 class="text-xs-right">
|
||||||
|
|
||||||
|
<!-- UPLOAD START -->
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="red" @click="openDialogUpload()" dark
|
||||||
|
title="Upload Lampiran">
|
||||||
|
<v-icon>cloud_upload</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
<!-- UPLOAD END -->
|
||||||
|
|
||||||
|
<!-- button attachment show START -->
|
||||||
|
<v-btn small color="purple lighten-1" class="one-btn-icon white--text ma-1"
|
||||||
|
@click="openAttachment(fileLab)" title="Lampiran Lab">
|
||||||
|
<v-icon>colorize</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<!-- <v-btn v-show="btn_attachment_show" small color="pink lighten-1"
|
||||||
|
class="one-btn-icon white--text ma-1" @click="openAttachment(fileNonLab)"
|
||||||
|
title="Lampiran Non Lab">
|
||||||
|
<v-icon>content_paste</v-icon>
|
||||||
|
</v-btn> -->
|
||||||
|
<!-- button attachment show END -->
|
||||||
|
|
||||||
|
<v-btn v-show="false" v-for="(lang, n) in langs" v-bind:key="n" color="grey lighten-1"
|
||||||
|
class="one-btn-icon pl-2 pr-2 ml-0 mr-1" depressed :outline="!lang_selected(lang)"
|
||||||
|
@click="lang_change(lang)">
|
||||||
|
<img :src="'../../../libs/image/' + img_lang_2(lang.code, lang.is_si)" height="40" alt="" />
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn v-if="show_re_age" class="btn-search one-btn-icon ma-1" color="brown" @click="re_calc_age" dark>
|
||||||
|
Re. Age
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn v-show="!info_req_perfect" class="btn-search one-btn-icon ma-1" color="red" @click="info" dark>
|
||||||
|
<v-icon>info</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="red" @click="note" dark>
|
||||||
|
<v-icon>library_books</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn color="blue-grey" class="white--text ma-1" @click="histories" v-show="btn_history_show">
|
||||||
|
Histori
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn color="green" class="white--text ma-1" @click="save_result">
|
||||||
|
Simpan
|
||||||
|
<v-icon right dark>save_alt</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.mydate {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-search {
|
||||||
|
font-size: 1.5em
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
'one-date-picker': httpVueLoader('./oneDatePicker.vue')
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
search_company: '',
|
||||||
|
url_pdf: '',
|
||||||
|
import_interface: "",
|
||||||
|
|
||||||
|
// ATTACHMENT START
|
||||||
|
url_file_attachment: '',
|
||||||
|
extension_lab: '',
|
||||||
|
extension_non_lab: '',
|
||||||
|
// ATTACHMENT END
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
search_company(n, o) {
|
||||||
|
this.$store.dispatch('company/search', n)
|
||||||
|
},
|
||||||
|
selected_patient(n, o) {
|
||||||
|
setTimeout(() => {
|
||||||
|
oneFppViewerV2Render();
|
||||||
|
}, 500);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
// ATTACHMENT DIALOG START
|
||||||
|
dialog_attachment: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_attachment;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_attachment", val)
|
||||||
|
console.log('attachment')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fileLab() {
|
||||||
|
// if (!this.selected_patient) return false
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return "-";
|
||||||
|
} else {
|
||||||
|
return this.$store.state.re_px.obj_attachment.lab_type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fileNonLab() {
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return "-";
|
||||||
|
} else {
|
||||||
|
return this.$store.state.re_px.obj_attachment.non_lab_type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
btn_attachment_show() {
|
||||||
|
// if (_.isEmpty(this.$store.state.re_px.obj_attachment)) return false
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if (this.$store.state.re_px.obj_attachment.lab_url === "-" ||
|
||||||
|
this.$store.state.re_px.obj_attachment.non_lab_url === "-") {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// ATTACHMENT DIALOG END
|
||||||
|
|
||||||
|
// BARCODE DIALOG START
|
||||||
|
dialog_barcode_list: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_barcode_list;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_barcode_list", val)
|
||||||
|
console.log('BARCODE LIST')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// BARCODE DIALOG END
|
||||||
|
dialog_fpp: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_fpp;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_fpp", val)
|
||||||
|
console.log('FPP')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show_re_age() {
|
||||||
|
return this.$store.state.re_patient.selected_patient.T_OrderHeaderAddOnRequestChangeDOB == 'Y'
|
||||||
|
},
|
||||||
|
fpp() {
|
||||||
|
return this.$store.state.re_px.fpp
|
||||||
|
},
|
||||||
|
company: {
|
||||||
|
get() { return this.$store.state.company.company },
|
||||||
|
set(v) { this.$store.commit('company/update_company', v) }
|
||||||
|
},
|
||||||
|
companies() {
|
||||||
|
return this.$store.state.company.companies
|
||||||
|
},
|
||||||
|
loading_company() {
|
||||||
|
return this.$store.state.company.loading
|
||||||
|
},
|
||||||
|
nolab: {
|
||||||
|
get() { return this.$store.state.re_patient.nolab },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_nolab', v) }
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
get() { return this.$store.state.re_patient.search },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_search', v) }
|
||||||
|
},
|
||||||
|
groups() {
|
||||||
|
return this.$store.state.re_px.groups
|
||||||
|
},
|
||||||
|
selected_group: {
|
||||||
|
get() { return this.$store.state.re_px.selected_group },
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit('re_px/update_selected_group', v)
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
lang() {
|
||||||
|
return this.$store.state.re_patient.selected_patient.M_LangCode
|
||||||
|
},
|
||||||
|
|
||||||
|
img_lang() {
|
||||||
|
if (this.lang == "ID")
|
||||||
|
return "inako.png"
|
||||||
|
// return "flag-ina_48.png"
|
||||||
|
else if (this.lang == "EN")
|
||||||
|
return "engko.png"
|
||||||
|
// return "flag-us_48.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
langs() {
|
||||||
|
return this.$store.state.re_patient.langs
|
||||||
|
},
|
||||||
|
|
||||||
|
sdate: {
|
||||||
|
get() { return this.$store.state.re_patient.s_date },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_sdate', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_patient() {
|
||||||
|
return this.$store.state.re_patient.selected_patient
|
||||||
|
},
|
||||||
|
|
||||||
|
btn_history_show() {
|
||||||
|
if (!this.selected_patient) return false
|
||||||
|
if (!this.selected_patient.is_history) return false
|
||||||
|
if (this.selected_patient.is_history == "N") return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
|
||||||
|
info_req_perfect() {
|
||||||
|
let x = false
|
||||||
|
try {
|
||||||
|
x = this.$store.state.re_patient.info_req.is_perfect == 'Y';
|
||||||
|
} catch (error) {
|
||||||
|
}
|
||||||
|
|
||||||
|
return x
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// ATTACHMENT METHODS START
|
||||||
|
openAttachment(attachmentType) {
|
||||||
|
// this.extension_lab = ""
|
||||||
|
// this.extension_non_lab = ""
|
||||||
|
// this.url_file_attachment = ""
|
||||||
|
var file_url = "";
|
||||||
|
|
||||||
|
if (attachmentType === this.$store.state.re_px.obj_attachment.non_lab_type) {
|
||||||
|
file_url = this.$store.state.re_px.obj_attachment.non_lab_url
|
||||||
|
this.extension_non_lab = this.$store.state.re_px.obj_attachment.extension_non_lab
|
||||||
|
} else {
|
||||||
|
file_url = this.$store.state.re_px.obj_attachment.lab_url
|
||||||
|
this.extension_lab = this.$store.state.re_px.obj_attachment.extension_lab
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(file_url)
|
||||||
|
var url_pdf = window.location.protocol + '//' + window.location.host + file_url
|
||||||
|
console.log(url_pdf)
|
||||||
|
// window.open(url_pdf, '_blank').focus();
|
||||||
|
this.url_file_attachment = url_pdf
|
||||||
|
this.dialog_attachment = true
|
||||||
|
},
|
||||||
|
closeDialogAttachment() {
|
||||||
|
this.extension_lab = ""
|
||||||
|
this.extension_non_lab = ""
|
||||||
|
this.url_file_attachment = ""
|
||||||
|
this.dialog_attachment = false
|
||||||
|
},
|
||||||
|
// ATTACHMENT METHODS END
|
||||||
|
|
||||||
|
// UPLOAD FILE DIALOG START
|
||||||
|
openDialogUpload() {
|
||||||
|
this.$store.commit('re_px/update_dialog_upload_file', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
// BARCODE LIST START
|
||||||
|
importInterface(itfNoRegParam) {
|
||||||
|
console.log(itfNoRegParam)
|
||||||
|
if (itfNoRegParam != "") {
|
||||||
|
this.import_interface = itfNoRegParam
|
||||||
|
this.$store.dispatch("re_px/importInterface", {
|
||||||
|
ItfNoReg: this.import_interface
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openFPP() {
|
||||||
|
var file_url = this.$store.state.re_px.fpp
|
||||||
|
console.log(file_url)
|
||||||
|
var url_pdf = window.location.protocol + '//' + window.location.host + "/one-api/mockup/brn/brnlist/get_pdf_v2" + file_url
|
||||||
|
// window.open(url_pdf, '_blank').focus();
|
||||||
|
this.url_pdf = url_pdf
|
||||||
|
this.dialog_fpp = true
|
||||||
|
//window.open("/one-api/mockup/brn/br
|
||||||
|
//this.$store.dispatch("patient/openpdf",{url:pdf_url})
|
||||||
|
},
|
||||||
|
searchs() {
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
},
|
||||||
|
async re_calc_age() {
|
||||||
|
|
||||||
|
let orderID = this.$store.state.re_patient.selected_patient.T_OrderHeaderID
|
||||||
|
await this.$store.dispatch('helper/calc_age', orderID)
|
||||||
|
},
|
||||||
|
keySearch(e) {
|
||||||
|
if (e.which == 13) {
|
||||||
|
this.searchs()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
search_px() {
|
||||||
|
this.$store.dispatch('re_px/search')
|
||||||
|
},
|
||||||
|
|
||||||
|
save_result() {
|
||||||
|
this.$store.dispatch('re_px/save')
|
||||||
|
},
|
||||||
|
|
||||||
|
histories() {
|
||||||
|
this.$store.dispatch('re_history/history')
|
||||||
|
this.$store.commit('re_history/update_dialog_history', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
img_lang_2(lang, si) {
|
||||||
|
|
||||||
|
if (lang == "ID" && si == "N")
|
||||||
|
return "inako.png"
|
||||||
|
if (lang == "ID" && si == "Y")
|
||||||
|
return "inasi.png"
|
||||||
|
if (lang == "EN" && si == "N")
|
||||||
|
return "engko.png"
|
||||||
|
if (lang == "EN" && si == "Y")
|
||||||
|
return "engsi.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
lang_change(lang) {
|
||||||
|
this.$store.commit('re_patient/update_lang', lang)
|
||||||
|
this.$store.dispatch('re_px/lang_export')
|
||||||
|
},
|
||||||
|
|
||||||
|
lang_selected(lang) {
|
||||||
|
if (lang.code == this.$store.state.re_patient.lang_code)
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
|
||||||
|
changeDate(x) {
|
||||||
|
this.sdate = x.new_date
|
||||||
|
this.searchs()
|
||||||
|
},
|
||||||
|
|
||||||
|
note() {
|
||||||
|
this.$store.commit('re_patient/update_dialog_note', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
info() {
|
||||||
|
this.$store.commit('re_patient/update_dialog_req', true)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$store.dispatch('re_px/search_group')
|
||||||
|
console.log(this.$store.state.re_patient.selected_patient)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
>
|
||||||
|
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_note', v) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow">
|
||||||
|
<v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader>
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="patients"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pa-2"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.T_OrderHeaderLabNumber }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.M_PatientName }}
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NO LAB",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NAMA",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select (item) {
|
||||||
|
// this.$store.commit('ver_verification/update_selected_sent_sample', item)
|
||||||
|
},
|
||||||
|
|
||||||
|
remove (item) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
patients () {
|
||||||
|
return this.$store.state.re_patient.patients
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_cytologi" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">CYTOLOGI</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_cytologi = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Cytologi" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_cytologi/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_cytologi.onprocess
|
||||||
|
},
|
||||||
|
dialog_cytologi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.dialog_cytologi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_dialog_cytologi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_cytologi.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
saveResult_Cytologi(){
|
||||||
|
|
||||||
|
//this.$store.dispatch("re_cytologi/saveresult_cytologi",{results:this.results})
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_cytologi/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_cytologi/saveresult_cytologi",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_fna" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">FNA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex xs9>
|
||||||
|
<input type="file" id="files" ref="files" multiple v-on:change="handleFileUploads()"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<p v-if="error_image" class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 2 foto ya</p>
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout v-if="images.length > 0 && !show_progrees_upload" align-center row>
|
||||||
|
|
||||||
|
<v-flex v-for="image in images" xs6 pa-2>
|
||||||
|
<v-img :src="image.image_url">
|
||||||
|
<div class="fill-height bottom-gradient"></div>
|
||||||
|
</v-img>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_fna = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Fna" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_fna.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_fna.onprocess
|
||||||
|
},
|
||||||
|
dialog_fna: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.dialog_fna
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_dialog_fna", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_fna.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(){
|
||||||
|
this.files = this.$refs.files.files;
|
||||||
|
},
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
let formData = new FormData()
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length > 1){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_fna/uploadimage",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.error_image = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult_Fna(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_fna/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_fna/saveresult_fna",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_fna" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">FNA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex xs9>
|
||||||
|
<input type="file" id="files" ref="files" multiple v-on:change="handleFileUploads()"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="blue lighten-1" @click="submitFiles()">Upload</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<p v-if="error_image" class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 2 foto ya</p>
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout v-if="images.length > 0 && !show_progrees_upload" align-center row>
|
||||||
|
|
||||||
|
<v-flex v-for="image in images" xs6 pa-2>
|
||||||
|
<v-img :src="image.image_url">
|
||||||
|
<div class="fill-height bottom-gradient"></div>
|
||||||
|
</v-img>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="blue darken-1" flat @click="dialog_fna = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="blue darken-1" @click="saveResult_Fna" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_fna.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_fna.onprocess
|
||||||
|
},
|
||||||
|
dialog_fna: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.dialog_fna
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_dialog_fna", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_fna.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(){
|
||||||
|
this.files = this.$refs.files.files;
|
||||||
|
},
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
let formData = new FormData()
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length === 2){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_fna/uploadimage",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.error_image = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult_Fna(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_fna/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_fna/saveresult_fna",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_lcprep" persistent max-width="75%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="red white--text">
|
||||||
|
<span class="headline">PAP SMEAR (LCPrep)</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
style="font-size:12px"
|
||||||
|
class="mini-select"
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout class="mt-2 mb-2" row>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-card
|
||||||
|
outlined
|
||||||
|
class="mr-1 pa-2"
|
||||||
|
>
|
||||||
|
<v-card-text>
|
||||||
|
<p class="overline mb-0 font-weight-bold">ADEKUASI BAHAN PEMERIKSAAN</p>
|
||||||
|
<v-checkbox v-for="chx_adekuasi in adekuasi"
|
||||||
|
class="mono"
|
||||||
|
v-model="chx_adekuasi.chex"
|
||||||
|
:label="chx_adekuasi.name"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-card
|
||||||
|
outlined
|
||||||
|
class="ml-1 pa-2"
|
||||||
|
>
|
||||||
|
<v-card-text>
|
||||||
|
<p class="overline mb-0 font-weight-bold">KATEGORI UMUM</p>
|
||||||
|
<v-checkbox v-for="chx_kategoriumum in kategoriumum"
|
||||||
|
class="mono"
|
||||||
|
v-model="chx_kategoriumum.chex"
|
||||||
|
:label="chx_kategoriumum.name"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout wrap>
|
||||||
|
<v-flex v-for="(details,idx) in interpretasi" :class="{'xs3':idx===0,'xs7 pl-1':idx===1,'xs2 pl-1':idx===2}">
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title color="warning" class="purple white--text">
|
||||||
|
<h5 class="subheader overline font-weight-bold">{{details.group_name}}</h5>
|
||||||
|
</v-card-title>
|
||||||
|
<v-list
|
||||||
|
dense
|
||||||
|
subheader
|
||||||
|
single-line
|
||||||
|
v-for="(subgroups,idxx) in details.subgroups" :key="details.id"
|
||||||
|
>
|
||||||
|
<v-subheader class="font-weight-black">{{subgroups.subgroup_name}}</v-subheader>
|
||||||
|
<v-list-tile v-if="subgroups.childs.length > 0" v-for="(childs,idxxx) in subgroups.childs" :key="childs.id" >
|
||||||
|
<div v-if="childs.has_result === 'Y' && childs.type_result === 'CHECK'"
|
||||||
|
:class="{'pl-0':childs.code.length === 2,'pl-4':childs.code.length === 4}"
|
||||||
|
>
|
||||||
|
<v-list-tile-action class="mb-2 mono">
|
||||||
|
<v-checkbox
|
||||||
|
v-model="childs.chex"
|
||||||
|
:label="childs.name"
|
||||||
|
:disabled="childs.is_parent === 'Y'"
|
||||||
|
@change="changeChildsChex(childs,idxxx,idxx,idx)"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-list-tile-action>
|
||||||
|
</div>
|
||||||
|
<div v-if="childs.has_result === 'Y' && childs.type_result === 'TEXT'">
|
||||||
|
<v-list-tile-action class="mb-2 pl-0 mono">
|
||||||
|
<v-text-field
|
||||||
|
label=""
|
||||||
|
single-line
|
||||||
|
v-model="childs.value"
|
||||||
|
></v-text-field>
|
||||||
|
</v-list-tile-action>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</v-list>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mb-2 mt-2" column >
|
||||||
|
<v-card>
|
||||||
|
<v-card-title color="warning" class="purple white--text">
|
||||||
|
<h5 class="subheader overline font-weight-bold">HASIL AKHIR</h5>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pa-2">
|
||||||
|
<v-layout v-for="result in results" mt-2 mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_lcprep = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Lcprep" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
.v-input.lcprep .v-label {
|
||||||
|
height: 20px!important;
|
||||||
|
line-height: 25px!important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_lcprep/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_lcprep.onprocess
|
||||||
|
},
|
||||||
|
dialog_lcprep: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.dialog_lcprep
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_dialog_lcprep", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
adekuasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.adekuasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_adekuasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
kategoriumum: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.kategoriumum
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_kategoriumum", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
interpretasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.interpretasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_interpretasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_lcprep.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeChildsChex(childs,idxxx,idxx,idx){
|
||||||
|
let interpretasi = this.interpretasi
|
||||||
|
var parent_id = interpretasi[idx].subgroups[idxx].childs[idxxx].parent_id
|
||||||
|
if(parent_id !== '0'){
|
||||||
|
let childs = interpretasi[idx].subgroups[idxx].childs
|
||||||
|
let index_parent = _.findIndex(childs, function(o) { return o.id === parent_id })
|
||||||
|
if(childs.chex)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let xfilter = _.filter(childs, { 'chex': true, 'parent_id': parent_id })
|
||||||
|
if(xfilter.length === 0)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = false
|
||||||
|
else
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.interpretasi = interpretasi
|
||||||
|
},
|
||||||
|
saveResult_Lcprep(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor.id == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_lcprep/update_onprocess", true)
|
||||||
|
let selected_lcprep = this.$store.state.re_lcprep.selected_lcprep
|
||||||
|
var prm = {
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
order_id:selected_lcprep.order_id,
|
||||||
|
detail_id:selected_lcprep.id,
|
||||||
|
results:this.results,
|
||||||
|
interpretasi:this.interpretasi,
|
||||||
|
kategoriumum:this.kategoriumum,
|
||||||
|
adekuasi:this.adekuasi
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_lcprep/saveresult_lcprep",prm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_mikro" persistent max-width="50%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="teal white--text">
|
||||||
|
<span class="headline">Mikro</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-0" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
item-text="value"
|
||||||
|
return-object
|
||||||
|
class="mini-select"
|
||||||
|
:items="result_values"
|
||||||
|
v-model="selected_result_value"
|
||||||
|
label="Pilih Hasil"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_hasil" class="error pt-1 pl-2 pr-2" style="color:#fff">Hasilnya apa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mb-0" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
class="mini-select"
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
label="Pilih Dokter"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pt-1 pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6 v-if="selected_result_value.id === 'Positif'" pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
:items="bacteries"
|
||||||
|
v-model="selected_bacteria"
|
||||||
|
label="Pilih Bakteri"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_bacteria" class="error pt-1 pl-2 pr-2" style="color:#fff">Bakterinya ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'other'" class="pl-2 pr-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
label="Hasil Lainnya"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="results.result_other"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
<p v-if="error_result_other" class="error pt-1 pl-2 pr-2" style="color:#fff">Hasil Lainnya : harus diisi</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'Positif'" class="mb-2" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-text-field
|
||||||
|
label="Hasil Biakan"
|
||||||
|
outline
|
||||||
|
v-model="results.hasil_biakan"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-text-field
|
||||||
|
label="Jenis Bahan"
|
||||||
|
outline
|
||||||
|
v-model="results.sample_name"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'Positif'" class="mb-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<table style="width:100%;border-collapse: collapse;" class="table_antibiotics">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="5%" style="padding: 8px;border: 1px solid black;" rowspan="2">No.</th>
|
||||||
|
<th width="22%" style="padding: 8px;border: 1px solid black;" rowspan="2">Jenis Obat</th>
|
||||||
|
<th style="padding: 8px;border: 1px solid black;" colspan="3">Standart</th>
|
||||||
|
<th width="10%" style="padding: 8px;border: 1px solid black;" rowspan="2">Test</th>
|
||||||
|
<th width="23%" style="padding: 8px;border: 1px solid black;" rowspan="2">Keterangan</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;">R <</th>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;"> =< I = </th>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;">S >=</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr style="border: 1px solid black;"
|
||||||
|
v-for="detail in results.details"
|
||||||
|
>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.xno}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;">{{detail.T_AntibioticName}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteR}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteI}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteS}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;">
|
||||||
|
<v-text-field
|
||||||
|
single-line
|
||||||
|
v-model="detail.value"
|
||||||
|
@change="changeValue(detail,detail.value)"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_r === 'Y'" color="teal" dark small>R</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_r === 'N'" color="red" dark small>R</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_i === 'Y'" color="teal" dark small>I</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_i === 'N'" color="red" dark small>I</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_s === 'Y'" color="teal" dark small>S</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_s === 'N'" color="red" dark small>S</v-btn>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="grey darken-1" flat @click="dialog_mikro = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Mikro" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
table.table_antibiotics {
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody td, table.table_antibiotics tbody th {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody tr:nth-child(even) {
|
||||||
|
background-color: #dddddd;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_mikro/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_bacteria:false,
|
||||||
|
error_hasil:false,
|
||||||
|
error_result_other:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_mikro.onprocess
|
||||||
|
},
|
||||||
|
disable_save(){
|
||||||
|
return this.$store.state.re_mikro.disable_save
|
||||||
|
},
|
||||||
|
selected_result_value: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_result_value
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_result_value", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
result_values(){
|
||||||
|
return this.$store.state.re_mikro.result_values
|
||||||
|
},
|
||||||
|
bacteries(){
|
||||||
|
return this.$store.state.re_mikro.bacteries
|
||||||
|
},
|
||||||
|
selected_bacteria: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_bacteria
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_bacteria", val)
|
||||||
|
this.$store.dispatch("re_mikro/getantibiotics", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dialog_mikro: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.dialog_mikro
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_dialog_mikro", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hasil_biakan: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.hasil_biakan
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_hasil_biakan", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
result_other: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.result_other
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_result_other", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sample_name: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.sample_name
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_sample_name", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
interpretasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.interpretasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_interpretasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_mikro.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeValue(detail,value){
|
||||||
|
let antibiotics = this.results.details
|
||||||
|
let idx = _.findIndex(antibiotics, function(o) { return o.T_AntibioticID === detail.T_AntibioticID })
|
||||||
|
console.log(antibiotics[idx])
|
||||||
|
antibiotics[idx].value = value
|
||||||
|
antibiotics[idx].chx_r = 'N'
|
||||||
|
antibiotics[idx].chx_s = 'N'
|
||||||
|
antibiotics[idx].chx_i = 'N'
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveR === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueR) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveR === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueR)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveR === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueR) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveR === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueR))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_r = 'Y'
|
||||||
|
antibiotics[idx].note = 'R'
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveS === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueS) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveS === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueS)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveS === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueS) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveS === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueS))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_s = 'Y'
|
||||||
|
antibiotics[idx].note = 'S'
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveI === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueI) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveI === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueI)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveI === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueI) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveI === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueI))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_i = 'Y'
|
||||||
|
antibiotics[idx].note = 'I'
|
||||||
|
}
|
||||||
|
|
||||||
|
this.results.details = antibiotics
|
||||||
|
},
|
||||||
|
getAntibiotics(){
|
||||||
|
console.log(this.selected_bacteria)
|
||||||
|
var prm = this.selected_bacteria
|
||||||
|
this.$store.dispatch("re_mikro/getantibiotics", prm)
|
||||||
|
},
|
||||||
|
changeChildsChex(childs,idxxx,idxx,idx){
|
||||||
|
let interpretasi = this.interpretasi
|
||||||
|
var parent_id = interpretasi[idx].subgroups[idxx].childs[idxxx].parent_id
|
||||||
|
if(parent_id !== '0'){
|
||||||
|
let childs = interpretasi[idx].subgroups[idxx].childs
|
||||||
|
let index_parent = _.findIndex(childs, function(o) { return o.id === parent_id })
|
||||||
|
if(childs.chex)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let xfilter = _.filter(childs, { 'chex': true, 'parent_id': parent_id })
|
||||||
|
if(xfilter.length === 0)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = false
|
||||||
|
else
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.interpretasi = interpretasi
|
||||||
|
},
|
||||||
|
saveResult_Mikro(){
|
||||||
|
var go_save = true
|
||||||
|
this.$store.commit("re_mikro/update_disable_save", true)
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor.id == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
if(this.selected_result_value.id === 'Positif' && (_.isEmpty(this.selected_bacteria) || this.selected_bacteria.id == '0')){
|
||||||
|
this.error_bacteria = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.selected_result_value.id === 'other' && this.results.result_other === ''){
|
||||||
|
this.error_result_other = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
if(go_save){
|
||||||
|
this.$store.commit("re_mikro/update_onprocess", true)
|
||||||
|
let selected_mikro = this.$store.state.re_mikro.selected_mikro
|
||||||
|
var prm = {
|
||||||
|
result_value:this.selected_result_value.id,
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
bacteria:this.selected_bacteria.id,
|
||||||
|
hasil_biakan:this.hasil_biakan,
|
||||||
|
sample_name:this.sample_name,
|
||||||
|
results:this.results
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_mikro/saveresult_mikro",prm)
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_mikro/update_disable_save", false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_papsmear" persistent max-width="50%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="red white--text">
|
||||||
|
<span class="headline">PAP SMEAR</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-2" row>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
style="font-size:12px"
|
||||||
|
class="mini-select"
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pt-2 xs4>
|
||||||
|
<v-layout class="pa-2" align-center text-xs-right row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<h3 class="subheading font-weight-bold">Bahan dari :</h3>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mt-2 mb-2" wrap>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-layout v-for="(check,index) in checks" align-center mb-1 row>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="check.selected === 'N'" @click="changeChecksSelected(check,index)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="check.selected === 'Y'" @click="changeChecksSelected(check,index)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs5 pl-2>
|
||||||
|
<label class="body-2 font-weight-bold mb-0 mono">{{check.name}}</label>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
outline
|
||||||
|
v-model="check.note"
|
||||||
|
:disabled="check.selected === 'N'"
|
||||||
|
@change="changeNote(check,index)"
|
||||||
|
single-line
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pr-4 xs4>
|
||||||
|
<v-layout align-center text-xs-right v-for="(bahan,i) in bahans" align-center mb-1 row>
|
||||||
|
<v-flex xs15 pl-2>
|
||||||
|
<label class="body-2 font-weight-bold mb-0 mono">{{bahan.name}}</label>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="bahan.selected === 'N'" @click="changeBahansSelected(bahan,i)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="bahan.selected === 'Y'" @click="changeBahansSelected(bahan,i)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout mt-2 mb-2 align-center row>
|
||||||
|
<v-flex xs3>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
Kategori keganasan :
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex text-xs-right xs9>
|
||||||
|
<span v-for="(category,idx) in categories">
|
||||||
|
<v-btn v-if="category.selected === 'N'" @click="changeCategoriesSelected(category,idx)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="category.selected === 'Y'" @click="changeCategoriesSelected(category,idx)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
<span class="pl-1 pr-2">{{category.name}}</span>
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout mt-2 mb-2 align-center row>
|
||||||
|
<v-flex xs3>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
Index maturasi :
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
M.I
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex v-for="(mtr,m) in maturasi.value" xs3 pl-2 pt-2 pb-2>
|
||||||
|
<v-text-field
|
||||||
|
v-model="mtr"
|
||||||
|
@change="changeMaturasi(mtr,m)"
|
||||||
|
outline
|
||||||
|
single-line
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout v-for="result in results" mt-2 mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_papsmear = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Papsmear" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_papsmear/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
dialog_papsmear: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.dialog_papsmear
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_dialog_papsmear", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checks: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.checks
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_checks", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
maturasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.maturasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_maturasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
bahans: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.bahans
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_bahans", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
categories: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.categories
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_categories", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_papsmear.doctors
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_papsmear.onprocess
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
saveResult_Papsmear(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_papsmear/update_onprocess", true)
|
||||||
|
let selected_papsmear = this.$store.state.re_papsmear.selected_papsmear
|
||||||
|
var prm = {
|
||||||
|
order_id:selected_papsmear.order_id,
|
||||||
|
detail_id:selected_papsmear.id,
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
checks:this.checks,
|
||||||
|
maturasi:this.maturasi,
|
||||||
|
bahans:this.bahans,
|
||||||
|
categories:this.categories,
|
||||||
|
results:this.results
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_papsmear/saveresult_papsmear",prm)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeChecksSelected(value,idx){
|
||||||
|
let checks = this.$store.state.re_papsmear.checks
|
||||||
|
checks[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
if(checks[idx].selected === 'N')
|
||||||
|
checks[idx].note = ''
|
||||||
|
this.checks = checks
|
||||||
|
},
|
||||||
|
changeNote(value,idx){
|
||||||
|
let checks = this.$store.state.re_papsmear.checks
|
||||||
|
checks[idx].note = value.note
|
||||||
|
this.checks = checks
|
||||||
|
},
|
||||||
|
changeCategoriesSelected(value,idx){
|
||||||
|
let categories = this.$store.state.re_papsmear.categories
|
||||||
|
categories[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
this.categories = categories
|
||||||
|
},
|
||||||
|
changeBahansSelected(value,idx){
|
||||||
|
let bahans = this.$store.state.re_papsmear.bahans
|
||||||
|
bahans[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
this.bahans = bahans
|
||||||
|
},
|
||||||
|
changeMaturasi(value,idx){
|
||||||
|
let mx = this.$store.state.re_papsmear.maturasi
|
||||||
|
mx.value[idx] = value
|
||||||
|
this.maturasi = mx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,337 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_preparasisperma" persistent max-width="70%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">PREPARASI SPERMA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-3 row>
|
||||||
|
<v-flex pl-0 xs4>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex class="font-weight-bold" xs12>Pre Preparasi</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Motilitas</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasA"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Non Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasB"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Immotile"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasC"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Konsentrasi</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Konsentrasi"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreKonsentrasi"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Kontaminan</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Kontaminan"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreKontaminan"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex class="font-weight-bold" xs12>Post Preparasi</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Motilitas</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasA"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Non Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasB"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Immotile"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasC"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Konsentrasi</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Konsentrasi"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostKonsentrasi"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Kontaminan</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Kontaminan"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostKontaminan"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
label="Keterangan"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="results.Other_PreparasiSpermaNote"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex pt-2 xs9>
|
||||||
|
<input type="file" id="files_pre" ref="prefile" multiple v-on:change="handleFileUploads('PRE')"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload | PRE</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="error_image_pre" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<p class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 1 foto ya</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex pt-2 xs9>
|
||||||
|
<input type="file" id="files_post" ref="postfile" multiple v-on:change="handleFileUploads('POST')"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload | POST</v-btn>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="error_image_post" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<p class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 1 foto ya</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout align-center row>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-card>
|
||||||
|
<v-layout align-center justify-center row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-img v-if="pre_image.image_url" :src="pre_image.image_url" aspect-ratio="1"></v-img>
|
||||||
|
<div v-if="!pre_image.image_url" class="display-2 text-xs-center ma-3">PRE IMAGE</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-card>
|
||||||
|
<v-layout align-center justify-center row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-img v-if="post_image.image_url" :src="post_image.image_url" aspect-ratio="1"></v-img>
|
||||||
|
<div v-if="!post_image.image_url" class="display-2 text-xs-center ma-3">POST IMAGE</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_preparasisperma = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_preparasisperma/get_doctors",{token:''})
|
||||||
|
this.files = ''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image_pre:false,
|
||||||
|
error_image_post:false,
|
||||||
|
type_image:'PRE'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
pre_image(){
|
||||||
|
return this.$store.state.re_preparasisperma.pre_image
|
||||||
|
},
|
||||||
|
post_image(){
|
||||||
|
return this.$store.state.re_preparasisperma.post_image
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_preparasisperma.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_preparasisperma.onprocess
|
||||||
|
},
|
||||||
|
dialog_preparasisperma: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.dialog_preparasisperma
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_dialog_preparasisperma", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_preparasisperma.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value){
|
||||||
|
if(value === 'PRE'){
|
||||||
|
this.files = this.$refs.prefile.files;
|
||||||
|
//this.$refs.prefile.files = []
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.files = this.$refs.postfile.files;
|
||||||
|
//this.$refs.postfile.files = []
|
||||||
|
}
|
||||||
|
console.log(this.files)
|
||||||
|
this.type_image = value
|
||||||
|
},
|
||||||
|
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
this.error_image_pre = false
|
||||||
|
this.error_image_post = false
|
||||||
|
let formData = new FormData()
|
||||||
|
console.log(this.files)
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length == 1){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
formData.append('type', this.type_image)
|
||||||
|
this.$store.dispatch("re_preparasisperma/uploadimage_preparasi_sperma",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(this.type_image === 'PRE')
|
||||||
|
this.error_image_pre = true
|
||||||
|
else
|
||||||
|
this.error_image_post = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
var selected_x = this.$store.state.re_preparasisperma.selected_preparasisperma
|
||||||
|
this.$store.commit("re_preparasisperma/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_preparasisperma/saveresult",{orderdetailid:selected_x.id,doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>One</title>
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/google-fonts.css">
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/icomoon-fonts.css">
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/vuetify.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div v-cloak id="app">
|
||||||
|
<v-app id="smartApp">
|
||||||
|
<one-navbar></one-navbar>
|
||||||
|
<v-content class="green lighten-5">
|
||||||
|
<v-container fluid pt-2 pb-2 pl-1 pr-1 fill-height>
|
||||||
|
<v-layout column fill-height>
|
||||||
|
<v-flex class="fixed-search" class="mb-8">
|
||||||
|
<one-process-re-search-box></one-process-re-search-box>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex fill-height style="position:relative;top:16px" class="mt-6">
|
||||||
|
<v-layout fill-height>
|
||||||
|
<v-flex xs3 pr-1>
|
||||||
|
<one-process-re-patient-list></one-process-re-patient-list>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs9 pl-1 fill-height>
|
||||||
|
<v-layout column fill-height>
|
||||||
|
<v-flex xs12 class="flex-0">
|
||||||
|
<one-process-re-patient-detail></one-process-re-patient-detail>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12 pt-2 class="flex-1">
|
||||||
|
<one-process-re-px-list></one-process-re-px-list>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-flex>
|
||||||
|
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-container>
|
||||||
|
</v-content>
|
||||||
|
<!-- component dialog upload file start -->
|
||||||
|
<one-process-re-dialog-upload-file></one-process-re-dialog-upload-file>
|
||||||
|
<!-- component dialog upload file end -->
|
||||||
|
|
||||||
|
<!-- component dialog result note row start -->
|
||||||
|
<!-- <one-process-re-dialog-result-note-row></one-process-re-dialog-result-note-row> -->
|
||||||
|
<!-- component dialog result note row end -->
|
||||||
|
|
||||||
|
<one-process-re-dialog-method></one-process-re-dialog-method>
|
||||||
|
<one-process-re-dialog-note></one-process-re-dialog-note>
|
||||||
|
<one-process-re-dialog-req></one-process-re-dialog-req>
|
||||||
|
<one-footer> </one-footer>
|
||||||
|
<one-info></one-info>
|
||||||
|
</v-app>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vendor -->
|
||||||
|
<script src="../../../libs/vendor/axios.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/moment.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/lodash.js"></script>
|
||||||
|
<script src="../../../libs/vendor/moment-locale-id.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vue-the-mask.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vue.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vuex.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vuetify.js"></script>
|
||||||
|
<script src="../../../libs/vendor/httpVueLoader.js"></script>
|
||||||
|
<script src="../../../libs/one_global.js"></script>
|
||||||
|
<script src="/react-comp/fpp_viewerv2/main.6924dd64.js"></script>
|
||||||
|
<!-- App Script -->
|
||||||
|
<?php
|
||||||
|
$ts = "?ts=" . Date("ymdhis");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.flex-0 {
|
||||||
|
flex: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-1 {
|
||||||
|
flex: 1 !important;
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-search {
|
||||||
|
position: fixed;
|
||||||
|
top: 68px;
|
||||||
|
left: 4px;
|
||||||
|
right: 4px;
|
||||||
|
z-index: 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-search .v-card {}
|
||||||
|
|
||||||
|
.mt-6 {
|
||||||
|
margin-top: 66px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
console.log("V18 preparasi sprema")
|
||||||
|
import {
|
||||||
|
store
|
||||||
|
} from './store.js<?php echo $ts ?>';
|
||||||
|
//for testing
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
window.store = store;
|
||||||
|
Vue.directive('mask', VueTheMask.mask)
|
||||||
|
new Vue({
|
||||||
|
store,
|
||||||
|
el: '#app',
|
||||||
|
components: {
|
||||||
|
'one-navbar': httpVueLoader('../../../apps/components/oneNavbarComponent.vue' + ts),
|
||||||
|
'one-footer': httpVueLoader('../../../apps/components/oneFooter.vue' + ts),
|
||||||
|
'one-process-re-search-box': httpVueLoader('./components/oneProcessReSearchBox.vue' + ts),
|
||||||
|
'one-process-re-patient-list': httpVueLoader('./components/oneProcessRePatientList.vue' + ts),
|
||||||
|
'one-process-re-patient-detail': httpVueLoader('./components/oneProcessRePatientDetail.vue' + ts),
|
||||||
|
'one-process-re-px-list': httpVueLoader('./components/oneProcessRePxList.vue' + ts),
|
||||||
|
'one-process-re-dialog-method': httpVueLoader('./components/oneProcessReDialogMethodChange.vue' + ts),
|
||||||
|
'one-process-re-dialog-note': httpVueLoader('./components/oneProcessReDialogNote.vue' + ts),
|
||||||
|
'one-info': httpVueLoader('./components/oneInfo.vue' + ts),
|
||||||
|
'one-process-re-dialog-req': httpVueLoader('./components/oneProcessReDialogReq.vue' + ts),
|
||||||
|
|
||||||
|
// component untuk upload file
|
||||||
|
'one-process-re-dialog-upload-file': httpVueLoader('./components/oneProcessReDialogUploadFile.vue' + ts),
|
||||||
|
|
||||||
|
// component result note row dialog
|
||||||
|
// 'one-process-re-dialog-result-note-row': httpVueLoader('./components/oneProcessRePxDialogResultNoteRow.vue' + ts),
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tab_active() {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
// store.dispatch('receive_patient/search')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
[v-cloak] {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import * as api from "../api/company.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
loading: false,
|
||||||
|
company: { M_CompanyID : 0 , M_CompanyName : 'All'},
|
||||||
|
companies: [],
|
||||||
|
error: '',
|
||||||
|
token: {}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_loading(state,status) {
|
||||||
|
state.loading= status
|
||||||
|
},
|
||||||
|
update_company(state,status) {
|
||||||
|
state.company= status
|
||||||
|
},
|
||||||
|
update_companies(state,status) {
|
||||||
|
state.companies= status
|
||||||
|
},
|
||||||
|
update_error(state,status) {
|
||||||
|
state.error= status
|
||||||
|
},
|
||||||
|
update_token(state,status) {
|
||||||
|
state.token= status
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search(context,qry) {
|
||||||
|
context.commit("update_loading", true)
|
||||||
|
try {
|
||||||
|
let token = context.state.token
|
||||||
|
if (token.hasOwnProperty("token")) {
|
||||||
|
token.cancel()
|
||||||
|
}
|
||||||
|
token = axios.CancelToken.source()
|
||||||
|
context.commit("update_token",token)
|
||||||
|
|
||||||
|
let resp= await api.search(one_token(),qry, token.token)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_loading", false)
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_loading",false)
|
||||||
|
context.commit("update_error","")
|
||||||
|
context.commit('update_companies',resp.data.data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_loading",false)
|
||||||
|
context.commit("update_error",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/helper.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
loading:false,
|
||||||
|
error:''
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_calc_age_status(state,value) {
|
||||||
|
state.loading= value
|
||||||
|
},
|
||||||
|
update_error(state,value) {
|
||||||
|
state.error= value
|
||||||
|
},
|
||||||
|
update_loading(state,value) {
|
||||||
|
state.loading = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async calc_age(context,orderID) {
|
||||||
|
context.commit("update_loading", true)
|
||||||
|
try {
|
||||||
|
let prm = { orderID }
|
||||||
|
prm["token"] = one_token()
|
||||||
|
let resp = await api.calc_age(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_error", "")
|
||||||
|
let patient = context.rootState.re_patient.selected_patient
|
||||||
|
let dob = resp.data.M_PatientDOB
|
||||||
|
let age = resp.data.T_OrderHeaderM_PatientAge
|
||||||
|
patient.M_PatientDOB = dob
|
||||||
|
patient.T_OrderHeaderM_PatientAge = age
|
||||||
|
context.rootState.commit("re_patient/update_selected_patient", patient)
|
||||||
|
let patients = context.rootState.patients
|
||||||
|
for( let idx =0; idx < patients.length ; idx++) {
|
||||||
|
if (patients[idx].M_PatientID = patient.M_PatientID ) {
|
||||||
|
patients[idx] = patient
|
||||||
|
}
|
||||||
|
}
|
||||||
|
context.rootState.commit('re_patient/update_patients',patients)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_error", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_cytologi:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_cytologi:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_fna(state,value) {
|
||||||
|
state.selected_fna = value
|
||||||
|
},
|
||||||
|
update_dialog_cytologi(state,value) {
|
||||||
|
state.dialog_cytologi = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_cytologiresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
console.log(prm)
|
||||||
|
prm.token = one_token()
|
||||||
|
console.log("wweee")
|
||||||
|
let resp = await api.getcytologiresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_cytologi", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_cytologi", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_cytologi(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_cytologi(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_cytologi", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_fna:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_fna:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false,
|
||||||
|
images:[],
|
||||||
|
show_progrees_upload:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_show_progrees_upload(state,value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
update_images(state,value) {
|
||||||
|
state.images = value
|
||||||
|
},
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_fna(state,value) {
|
||||||
|
state.selected_fna = value
|
||||||
|
},
|
||||||
|
update_dialog_fna(state,value) {
|
||||||
|
state.dialog_fna = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_fnaresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getfnaresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_images", data.records['images'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_fna(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_fna(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_fna", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async uploadimage(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_images", data.records)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
import * as api from "../api/re_history.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id:0,
|
||||||
|
search_status:0,
|
||||||
|
search_error_message:'',
|
||||||
|
result: [],
|
||||||
|
selected_px:[] ,
|
||||||
|
dates: [],
|
||||||
|
pxs: [],
|
||||||
|
patient_note : "",
|
||||||
|
|
||||||
|
dialog_history: false,
|
||||||
|
selected_tab: 0
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_search_error_message(state,status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
update_search_status(state,status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
update_dates(state, dates) {
|
||||||
|
state.dates= dates
|
||||||
|
},
|
||||||
|
update_result(state, result) {
|
||||||
|
state.result= result
|
||||||
|
},
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs
|
||||||
|
},
|
||||||
|
update_selected_px(state, px) {
|
||||||
|
state.selected_px = px
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_history(state, v) {
|
||||||
|
state.dialog_history = v
|
||||||
|
},
|
||||||
|
|
||||||
|
// patient note
|
||||||
|
update_patient_note(state, v) {
|
||||||
|
state.patient_note= v
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async history(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
context.commit('update_pxs', [])
|
||||||
|
context.commit('update_result', [])
|
||||||
|
context.commit('update_dates', [])
|
||||||
|
let resp= await api.history(one_token(), context.rootState.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit('update_result', resp.data.result)
|
||||||
|
context.commit('update_selected_px', resp.data.pxs)
|
||||||
|
context.commit('update_pxs', resp.data.pxs)
|
||||||
|
context.commit('update_dates',resp.data.dates)
|
||||||
|
|
||||||
|
// patient note
|
||||||
|
context.commit('update_patient_note',resp.data.patient_note)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_lcprep:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_lcprep:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
adekuasi:[],
|
||||||
|
kategoriumum:[],
|
||||||
|
interpretasi:[],
|
||||||
|
maturasi:[],
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_adekuasi(state,value) {
|
||||||
|
state.adekuasi = value
|
||||||
|
},
|
||||||
|
update_kategoriumum(state,value) {
|
||||||
|
state.kategoriumum = value
|
||||||
|
},
|
||||||
|
update_interpretasi(state,value) {
|
||||||
|
state.interpretasi = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_lcprep(state,value) {
|
||||||
|
state.selected_lcprep = value
|
||||||
|
},
|
||||||
|
update_dialog_lcprep(state,value) {
|
||||||
|
state.dialog_lcprep = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_lcprepresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getlcprepresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_adekuasi", data.records['adekuasi'])
|
||||||
|
context.commit("update_kategoriumum", data.records['kategoriumum'])
|
||||||
|
context.commit("update_interpretasi", data.records['interpretasi'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_lcprep", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_lcprep(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_lcprep(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_lcprep", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_mikro:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
hasil_biakan:'',
|
||||||
|
sample_name:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
result_other:'',
|
||||||
|
selected_mikro:{},
|
||||||
|
results:{xid:'0',orderdetail_id:'0',T_BacteriaID:'0',T_BacteriaName:'',doctor_id:'0',doctor_name:'',details:[]},
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
adekuasi:[],
|
||||||
|
kategoriumum:[],
|
||||||
|
interpretasi:[],
|
||||||
|
maturasi:[],
|
||||||
|
bacteries:[],
|
||||||
|
selected_bacteria:{},
|
||||||
|
result_values:[{id:'Negatif',value:'Negatif'},{id:'Positif',value:'Positif'},{id:'other',value:'Lainnya'}],
|
||||||
|
selected_result_value:{id:'Negatif',value:'Negatif'},
|
||||||
|
disable_save:false,
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_disable_save(state,value) {
|
||||||
|
state.disable_save = value
|
||||||
|
},
|
||||||
|
update_result_other(state,value) {
|
||||||
|
state.result_other = value
|
||||||
|
},
|
||||||
|
update_result_values(state,value) {
|
||||||
|
state.result_values = value
|
||||||
|
},
|
||||||
|
update_selected_result_value(state,value) {
|
||||||
|
state.selected_result_value = value
|
||||||
|
},
|
||||||
|
update_bacteries(state,value) {
|
||||||
|
state.bacteries = value
|
||||||
|
},
|
||||||
|
update_selected_bacteria(state,value) {
|
||||||
|
state.selected_bacteria = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_adekuasi(state,value) {
|
||||||
|
state.adekuasi = value
|
||||||
|
},
|
||||||
|
update_kategoriumum(state,value) {
|
||||||
|
state.kategoriumum = value
|
||||||
|
},
|
||||||
|
update_interpretasi(state,value) {
|
||||||
|
state.interpretasi = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_mikro(state,value) {
|
||||||
|
state.selected_mikro = value
|
||||||
|
},
|
||||||
|
update_dialog_mikro(state,value) {
|
||||||
|
state.dialog_mikro = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_hasil_biakan(state,value) {
|
||||||
|
state.hasil_biakan = value
|
||||||
|
},
|
||||||
|
update_sample_name(state,value) {
|
||||||
|
state.sample_name = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_mikroresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getmikroresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_bacteria",{})
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
// context.commit("update_results", {xid:'0',orderdetail_id:'0',T_BacteriaID:'0',T_BacteriaName:'',doctor_id:'0',doctor_name:'',details:[]})
|
||||||
|
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_bacteries", data.records['bacteries'])
|
||||||
|
|
||||||
|
if(!_.isEmpty(data.records['results'])){
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
var rows = data.records['results']
|
||||||
|
context.commit("update_selected_bacteria",{id:rows['T_BacteriaID'],name:rows['T_BacteriaName']})
|
||||||
|
var selected_doctor = {
|
||||||
|
id:rows['doctor_id'],
|
||||||
|
name:rows['doctor_name']
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
var selected_result_vaue = {
|
||||||
|
id:rows['result_value'],
|
||||||
|
value:rows['result_value']
|
||||||
|
}
|
||||||
|
if(rows['result_value'] === 'other'){
|
||||||
|
selected_result_vaue = {
|
||||||
|
id:'other',
|
||||||
|
value:'Lainnya'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_result_value", selected_result_vaue)
|
||||||
|
}
|
||||||
|
context.commit("update_dialog_mikro", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getantibiotics(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getantibiotics(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
var results = context.state.results
|
||||||
|
results.details = data.records
|
||||||
|
context.commit("update_results", results)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_mikro(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
//context.dispatch("update_disable_save",true)
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_mikro(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_disable_save",false)
|
||||||
|
context.commit("update_dialog_mikro", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_disable_save",false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
import * as api from "../api/re_normal.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
error:'',
|
||||||
|
status:0,
|
||||||
|
result: {}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_error(state,status) {
|
||||||
|
state.error = status
|
||||||
|
},
|
||||||
|
update_status(state,status) {
|
||||||
|
state.status= status
|
||||||
|
},
|
||||||
|
update_result(state,status) {
|
||||||
|
state.result= status
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async update(context,order_detail_id) {
|
||||||
|
context.commit("update_error", "")
|
||||||
|
context.commit("update_status", 1)
|
||||||
|
context.commit("update_result", {})
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
let resp= await api.update(one_token(),order_detail_id )
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_status", 3)
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_status", 2)
|
||||||
|
context.commit("update_error","")
|
||||||
|
let data = resp.data.records
|
||||||
|
context.commit("update_result", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save(context) {
|
||||||
|
let data = []
|
||||||
|
let x = context.state.pxs
|
||||||
|
let rerun = context.state.selected_rerun
|
||||||
|
for (let i in x) {
|
||||||
|
let y = x[i]
|
||||||
|
if ((y.result != null && y.result != y.result_old) || (y.note != y.note_old)) {
|
||||||
|
let resultInstrumentID = 0
|
||||||
|
if ( y.hasOwnProperty('resultInstrumentID') ) {
|
||||||
|
resultInstrumentID = y.resultInstrumentID
|
||||||
|
}
|
||||||
|
data.push({id:y.id, result:y.result, note:y.note, test_id:y.t_testid, test_name:y.t_testname,
|
||||||
|
resultInstrumentID,
|
||||||
|
order_id:context.state.order_id})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.length < 1) {
|
||||||
|
alert('Tidak ada data yang perlu disimpan !')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp= await api.save(one_token(), ptn.lang_id, ptn.lang_si, JSON.stringify(data))
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_template(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let resp= await api.save_template(one_token(), context.state.selected_px.t_testid, context.state.template_new_value)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit('update_dup_template_error', {status:true, messages:'Value tersebut sudah ada !'})
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit("update_dialog_template_new", false)
|
||||||
|
|
||||||
|
let pxs = context.state.pxs
|
||||||
|
for (let i in pxs) {
|
||||||
|
if (pxs[i].t_testid == context.state.selected_px.t_testid)
|
||||||
|
pxs[i].template = resp.data
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit('update_dup_template_error', {status:false, messages:''})
|
||||||
|
context.commit('update_pxs', {records:pxs, total:context.state.total_px})
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async lang_export(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let sp = context.rootState.re_patient
|
||||||
|
let resp= await api.lang_export(one_token(), sp.selected_patient.T_OrderHeaderID,
|
||||||
|
sp.lang_id, sp.lang_si)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_group(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp= await api.search_group()
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records : resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_groups", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_rerun(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp= await api.search_rerun(context.state.selected_px.id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit("update_reruns", resp.data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_normal_method.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
nattest_id: 0,
|
||||||
|
|
||||||
|
search_status:0,
|
||||||
|
search_error_message:'',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
methods: [],
|
||||||
|
selected_method: null,
|
||||||
|
normals: [],
|
||||||
|
selected_normal: null,
|
||||||
|
|
||||||
|
dialog_method: false,
|
||||||
|
dialog_normal: false
|
||||||
|
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_search_dialog_is_active(state,status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state,status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state,status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nattest_id(state, id) {
|
||||||
|
state.nattest_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_methods(state, d) {
|
||||||
|
state.methods = d.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_method(state, d) {
|
||||||
|
state.selected_method = d
|
||||||
|
},
|
||||||
|
|
||||||
|
update_normals(state, d) {
|
||||||
|
state.normals = d.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_normal(state, d) {
|
||||||
|
state.selected_normal = d
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_method(state, v) {
|
||||||
|
state.dialog_method = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_normal(state, v) {
|
||||||
|
state.dialog_normal = v
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search_method(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_method(one_token(), context.state.nattest_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records : resp.data.records
|
||||||
|
}
|
||||||
|
context.commit("update_methods", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_method(context) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.save_method(one_token(), context.state.order_id, context.state.selected_method.Nat_MethodeID)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let x = context.rootState.re_px.selected_px
|
||||||
|
x.methode_id = resp.data.data.method_id
|
||||||
|
x.methode_name = resp.data.data.method_name
|
||||||
|
x.normal_id = resp.data.data.normal_id
|
||||||
|
x.normal_note = resp.data.data.normal_note
|
||||||
|
context.commit('re_px/update_selected_px', x, {root:true})
|
||||||
|
context.commit("update_dialog_method", false)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_papsmear:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_papsmear:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
checks:[],
|
||||||
|
bahans:[],
|
||||||
|
categories:[],
|
||||||
|
maturasi:[],
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_checks(state,value) {
|
||||||
|
state.checks = value
|
||||||
|
},
|
||||||
|
update_bahans(state,value) {
|
||||||
|
state.bahans = value
|
||||||
|
},
|
||||||
|
update_categories(state,value) {
|
||||||
|
state.categories = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_papsmear(state,value) {
|
||||||
|
state.selected_papsmear = value
|
||||||
|
},
|
||||||
|
update_dialog_papsmear(state,value) {
|
||||||
|
state.dialog_papsmear = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_papsmearresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getpapsmearresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_checks", data.records['checks'])
|
||||||
|
context.commit("update_bahans", data.records['bahans'])
|
||||||
|
context.commit("update_maturasi", data.records['maturasi'])
|
||||||
|
context.commit("update_categories", data.records['categories'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_papsmear", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_papsmear(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_papsmear(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_papsmear", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_patient.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
search: '',
|
||||||
|
nolab: '',
|
||||||
|
sdate: new Date().toISOString().substr(0, 10),
|
||||||
|
edate: null,
|
||||||
|
|
||||||
|
search_status: 0,
|
||||||
|
search_error_message: '',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
patients: [],
|
||||||
|
total_patient: 0,
|
||||||
|
total_patient_page: 0,
|
||||||
|
curr_patient_page: 1,
|
||||||
|
selected_patient: {},
|
||||||
|
|
||||||
|
|
||||||
|
// PX
|
||||||
|
total_px: 0,
|
||||||
|
pxs: [],
|
||||||
|
|
||||||
|
langs: [],
|
||||||
|
lang_code: "ID",
|
||||||
|
lang_id: 0,
|
||||||
|
lang_si: "N",
|
||||||
|
|
||||||
|
dialog_req: false,
|
||||||
|
dialog_note: false,
|
||||||
|
result_note: '',
|
||||||
|
info_req: { req_fo: [], req_spec_col: [], req_spec_ver: [], req_samp_ver: [], req_pre_an: [] },
|
||||||
|
|
||||||
|
// ITF
|
||||||
|
Itf: "",
|
||||||
|
BrnListBarcode: ""
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
// ITF
|
||||||
|
update_Itf(state, val) {
|
||||||
|
state.Itf = val
|
||||||
|
},
|
||||||
|
update_BrnListBarcode(state, val) {
|
||||||
|
state.BrnListBarcode = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_dialog_is_active(state, status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state, status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search(state, val) {
|
||||||
|
state.search = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nolab(state, val) {
|
||||||
|
state.nolab = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state, status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_patients(state, data) {
|
||||||
|
state.patients = data.records
|
||||||
|
state.total_patient = data.total
|
||||||
|
state.total_patient_page = data.total_page
|
||||||
|
},
|
||||||
|
|
||||||
|
update_curr_patient_page(state, data) {
|
||||||
|
state.curr_patient_page = data
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_patient(state, val) {
|
||||||
|
state.selected_patient = val
|
||||||
|
if (val) {
|
||||||
|
state.langs = val.lang
|
||||||
|
|
||||||
|
state.lang_code = val.lang[0].code
|
||||||
|
state.lang_id = val.lang[0].id
|
||||||
|
state.lang_si = val.lang[0].is_si
|
||||||
|
|
||||||
|
state.result_note = val.T_OrderHeaderResultNote
|
||||||
|
} else {
|
||||||
|
state.langs = []
|
||||||
|
state.lang_code =
|
||||||
|
state.lang_id =
|
||||||
|
state.lang_si = null
|
||||||
|
state.result_note = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_sdate(state, date) {
|
||||||
|
state.sdate = date
|
||||||
|
},
|
||||||
|
|
||||||
|
update_edate(state, date) {
|
||||||
|
state.edate = date
|
||||||
|
},
|
||||||
|
|
||||||
|
update_lang(state, lang) {
|
||||||
|
state.lang_code = lang.code
|
||||||
|
state.lang_id = lang.id
|
||||||
|
state.lang_si = lang.is_si
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_note(state, v) {
|
||||||
|
state.dialog_note = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result_note(state, v) {
|
||||||
|
state.result_note = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_info_req(state, v) {
|
||||||
|
state.info_req = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_req(state, v) {
|
||||||
|
state.dialog_req = v
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
if (context.rootState.re_px.selected_group)
|
||||||
|
g_id = context.rootState.re_px.selected_group.group_id
|
||||||
|
|
||||||
|
let inp_no = context.state.search
|
||||||
|
if (inp_no.length == 9 && inp_no.substr(0, 2) == "ZL") {
|
||||||
|
inp_no = await window.xno(inp_no)
|
||||||
|
}
|
||||||
|
let company_id = 0
|
||||||
|
if (context.rootState.company.company) {
|
||||||
|
company_id = context.rootState.company.company.M_CompanyID
|
||||||
|
}
|
||||||
|
let resp = await api.search(one_token(), context.state.sdate, inp_no, g_id, context.state.curr_patient_page, company_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total,
|
||||||
|
total_page: resp.data.total_page
|
||||||
|
}
|
||||||
|
|
||||||
|
// attachment obj
|
||||||
|
let objAttachment = resp.data.attachment;
|
||||||
|
console.log("DARI SERVER ATTACHMENT RE_PATIENT ", resp.data.attachment)
|
||||||
|
|
||||||
|
// update object attachment
|
||||||
|
context.commit("re_px/update_obj_attachment", objAttachment, { root: true })
|
||||||
|
|
||||||
|
context.commit("update_patients", data)
|
||||||
|
|
||||||
|
if (data.records.length < 1) {
|
||||||
|
context.commit('update_selected_patient', null)
|
||||||
|
context.commit('re_px/update_pxs', [], { root: true })
|
||||||
|
// update order_id state jika data tidak ada
|
||||||
|
context.commit('re_px/update_id', 0, { root: true })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
context.commit('update_selected_patient', data.records[0])
|
||||||
|
context.commit('re_px/update_id', data.records[0].T_OrderHeaderID, { root: true })
|
||||||
|
context.dispatch('re_px/search', null, { root: true })
|
||||||
|
|
||||||
|
context.dispatch('info_req')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_note(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let resp = await api.save_note(one_token(), context.state.selected_patient.T_OrderHeaderID, context.state.result_note)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
console.log(resp)
|
||||||
|
|
||||||
|
context.commit('update_dialog_note', false)
|
||||||
|
let x = context.state.selected_patient
|
||||||
|
let y = context.state.patients
|
||||||
|
for (let i in y)
|
||||||
|
if (x.T_OrderHeaderID == y[i].T_OrderHeaderID)
|
||||||
|
y[i].T_OrderHeaderResultNote = context.state.result_note
|
||||||
|
|
||||||
|
context.commit("update_patients", {
|
||||||
|
records: y,
|
||||||
|
total: context.state.total_patient,
|
||||||
|
total_page: context.state.total_patient_page
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async info_req(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let resp = await api.info_req(one_token(), context.state.selected_patient.T_OrderHeaderID)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit('update_info_req', resp.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_preparasisperma:false,
|
||||||
|
results:{},
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false,
|
||||||
|
images:[],
|
||||||
|
pre_image:{},
|
||||||
|
post_image:{},
|
||||||
|
show_progrees_upload:false,
|
||||||
|
selected_preparasisperma:{}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_selected_preparasisperma(state,value) {
|
||||||
|
state.selected_preparasisperma = value
|
||||||
|
},
|
||||||
|
update_show_progrees_upload(state,value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
update_pre_image(state,value) {
|
||||||
|
state.pre_image = value
|
||||||
|
},
|
||||||
|
update_post_image(state,value) {
|
||||||
|
state.post_image = value
|
||||||
|
},
|
||||||
|
update_images(state,value) {
|
||||||
|
state.images = value
|
||||||
|
},
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_dialog_preparasisperma(state,value) {
|
||||||
|
state.dialog_preparasisperma = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_preparasispermaresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getpreparasispermaresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_post_image", '')
|
||||||
|
context.commit("update_pre_image", '')
|
||||||
|
if(data.records['images']){
|
||||||
|
data.records['images'].forEach(function(image) {
|
||||||
|
if(image.type == 'PRE'){
|
||||||
|
context.commit("update_pre_image", image)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
context.commit("update_post_image", image)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results']['doctor_id'],
|
||||||
|
name:data.records['results']['doctor_name']
|
||||||
|
}
|
||||||
|
console.log(selected_doctor)
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_preparasisperma", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors_preparasi_sperma(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_preparasisperma", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_preparasisperma", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async uploadimage_preparasi_sperma(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
if(data.records[0].type === 'PRE')
|
||||||
|
context.commit("update_pre_image", data.records[0])
|
||||||
|
else
|
||||||
|
context.commit("update_post_image", data.records[0])
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,501 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
|
||||||
|
search_status: 0,
|
||||||
|
search_error_message: '',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
// PX
|
||||||
|
total_px: 0,
|
||||||
|
pxs: [],
|
||||||
|
selected_px: {},
|
||||||
|
selected_px_idx: 0,
|
||||||
|
|
||||||
|
// template
|
||||||
|
dialog_template_new: false,
|
||||||
|
template_new_value: "",
|
||||||
|
dup_template_error: { status: false, messages: '' },
|
||||||
|
|
||||||
|
groups: [{ group_id: '1', group_name: 'DUMMY - KIMIA' }, { group_id: '2', group_name: 'DUMMY - HEMATOLOGI' }],
|
||||||
|
selected_group: {},
|
||||||
|
|
||||||
|
reruns: [{ date: '2019-07-10 08:00', instrument: 'COBAS', result: '56' }, { date: '2019-07-10 08:20', instrument: 'COBAS', result: '68' }],
|
||||||
|
selected_rerun: {},
|
||||||
|
dialog_rerun: false,
|
||||||
|
snackbar: false,
|
||||||
|
fpp: '',
|
||||||
|
dialog_fpp: false,
|
||||||
|
dialog_barcode_list: false,
|
||||||
|
dialog_upload_file: false,
|
||||||
|
photo_64: '',
|
||||||
|
photo_64_lab: '',
|
||||||
|
show_progrees_upload: false,
|
||||||
|
save_status: 0,
|
||||||
|
save_error_message_lampiran: '',
|
||||||
|
snackbar_interface: { value: false, color: 'success', text: '' },
|
||||||
|
|
||||||
|
// attachment
|
||||||
|
dialog_attachment: false,
|
||||||
|
obj_attachment: {},
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
dialog_result_note_row: false,
|
||||||
|
result_note_rows: [],
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
// result note row
|
||||||
|
update_dialog_result_note_row(state, value) {
|
||||||
|
state.dialog_result_note_row = value
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result_note_rows(state, result_note_rows) {
|
||||||
|
state.result_note_rows = result_note_rows.records
|
||||||
|
},
|
||||||
|
|
||||||
|
// ATTACHMENT START
|
||||||
|
update_dialog_attachment(state, value) {
|
||||||
|
state.dialog_attachment = value
|
||||||
|
},
|
||||||
|
update_obj_attachment(state, value) {
|
||||||
|
state.obj_attachment = value
|
||||||
|
},
|
||||||
|
// ATTACHMENT END
|
||||||
|
|
||||||
|
update_save_error_message_lampiran(state, status) {
|
||||||
|
state.save_error_message_lampiran = status
|
||||||
|
},
|
||||||
|
update_save_status(state, value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
// update foto state
|
||||||
|
update_show_progrees_upload(state, value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
|
||||||
|
update_photo_64(state, data) {
|
||||||
|
state.photo_64 = data
|
||||||
|
},
|
||||||
|
|
||||||
|
update_photo_64_lab(state, data) {
|
||||||
|
state.photo_64_lab = data
|
||||||
|
},
|
||||||
|
|
||||||
|
// upload file dialog
|
||||||
|
update_dialog_upload_file(state, value) {
|
||||||
|
state.dialog_upload_file = value
|
||||||
|
},
|
||||||
|
|
||||||
|
// barcode list
|
||||||
|
update_dialog_barcode_list(state, value) {
|
||||||
|
state.dialog_barcode_list = value
|
||||||
|
},
|
||||||
|
update_snackbar_interface(state, v) {
|
||||||
|
state.snackbar_interface = v
|
||||||
|
},
|
||||||
|
// end barcode list
|
||||||
|
update_dialog_fpp(state, value) {
|
||||||
|
state.dialog_fpp = value
|
||||||
|
},
|
||||||
|
update_fpp(state, value) {
|
||||||
|
state.fpp = value
|
||||||
|
},
|
||||||
|
update_search_dialog_is_active(state, status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state, status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state, status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_px(state, px) {
|
||||||
|
state.selected_px = px
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_px_idx(state, idx) {
|
||||||
|
state.selected_px_idx = idx
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_group(state, group) {
|
||||||
|
state.selected_group = group
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_rerun(state, v) {
|
||||||
|
state.dialog_rerun = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_reruns(state, reruns) {
|
||||||
|
state.reruns = reruns.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_rerun(state, rerun) {
|
||||||
|
state.selected_rerun = rerun
|
||||||
|
},
|
||||||
|
|
||||||
|
update_snackbar(state, v) {
|
||||||
|
state.snackbar = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_template_new(state, v) {
|
||||||
|
state.dialog_template_new = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_template_new_value(state, v) {
|
||||||
|
state.template_new_value = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dup_template_error(state, v) {
|
||||||
|
state.dup_template_error = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_groups(state, v) {
|
||||||
|
state.groups = v.records
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
// update result_note_row
|
||||||
|
async save_result_note_row(context, prm) {
|
||||||
|
try {
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp = await api.save_result_note_row(prm)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// get_result_note_by_nat_test_id
|
||||||
|
async get_result_note_by_nat_test_id(context, prm) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.get_result_note_by_nat_test_id(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
console.log("respon server ", resp.message);
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
// context.commit("update_save_error_message_lampiran", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
// context.commit("update_save_error_message_lampiran", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
// context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
// context.dispatch("search")
|
||||||
|
context.commit("update_result_note_rows", data)
|
||||||
|
context.commit("update_dialog_result_note_row", true)
|
||||||
|
// context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_dialog_result_note_row", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// upload file
|
||||||
|
async uploadimage_lampiran(context, prm) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage_lampiran(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
console.log("respon server ", resp.message);
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_save_error_message_lampiran", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_dialog_upload_file", false)
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
|
||||||
|
// if (data.records[0].type === 'PRE')
|
||||||
|
// context.commit("update_pre_image", data.records[0])
|
||||||
|
// else
|
||||||
|
// context.commit("update_post_image", data.records[0])
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// import interface
|
||||||
|
async importInterface(context, prm) {
|
||||||
|
var itfNoReg = prm.ItfNoReg;
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
var prm = {};
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.importInterface(prm, itfNoReg)
|
||||||
|
console.log(resp);
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_snackbar_interface", { value: true, color: "error", text: resp.message })
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_snackbar_interface", { value: true, color: "success", text: "Import Succes" })
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async search(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
if (context.state.selected_group)
|
||||||
|
g_id = context.state.selected_group.group_id
|
||||||
|
let resp = await api.search(one_token(), context.state.order_id,
|
||||||
|
context.rootState.re_patient.lang_id,
|
||||||
|
context.rootState.re_patient.lang_si,
|
||||||
|
g_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
// attachment obj
|
||||||
|
let objAttachment = resp.data.attachment;
|
||||||
|
// console.log("DARI SERVER ATTACHMENT RE_PX ",resp.data.attachment)
|
||||||
|
// update object attachment
|
||||||
|
context.commit("update_obj_attachment", objAttachment)
|
||||||
|
|
||||||
|
context.commit("update_pxs", data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save(context) {
|
||||||
|
let data = []
|
||||||
|
let x = context.state.pxs
|
||||||
|
let rerun = context.state.selected_rerun
|
||||||
|
for (let i in x) {
|
||||||
|
let y = x[i]
|
||||||
|
if ((y.result != null && y.result != y.result_old) || (y.note != y.note_old) || (y.T_OrderDetailInternalNote != y.T_OrderDetailInternalNote_old)) {
|
||||||
|
let resultInstrumentID = 0
|
||||||
|
if (y.hasOwnProperty('resultInstrumentID')) {
|
||||||
|
resultInstrumentID = y.resultInstrumentID
|
||||||
|
}
|
||||||
|
data.push({
|
||||||
|
id: y.id, result: y.result, note: y.note, T_OrderDetailInternalNote: y.T_OrderDetailInternalNote, test_id: y.t_testid, test_name: y.t_testname,
|
||||||
|
resultInstrumentID,
|
||||||
|
order_id: context.state.order_id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log("DATA KE BE : ",JSON.stringify(data));
|
||||||
|
// return;
|
||||||
|
|
||||||
|
if (data.length < 1) {
|
||||||
|
alert('Tidak ada data yang perlu disimpan !')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// console.log("DATA KE BE : ",JSON.stringify(data));
|
||||||
|
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp = await api.save(one_token(), ptn.lang_id, ptn.lang_si, JSON.stringify(data))
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_template(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let resp = await api.save_template(one_token(), context.state.selected_px.t_testid, context.state.template_new_value)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit('update_dup_template_error', { status: true, messages: 'Value tersebut sudah ada !' })
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_dialog_template_new", false)
|
||||||
|
|
||||||
|
let pxs = context.state.pxs
|
||||||
|
for (let i in pxs) {
|
||||||
|
if (pxs[i].t_testid == context.state.selected_px.t_testid)
|
||||||
|
pxs[i].template = resp.data
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit('update_dup_template_error', { status: false, messages: '' })
|
||||||
|
context.commit('update_pxs', { records: pxs, total: context.state.total_px })
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async lang_export(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let sp = context.rootState.re_patient
|
||||||
|
let resp = await api.lang_export(one_token(), sp.selected_patient.T_OrderHeaderID,
|
||||||
|
sp.lang_id, sp.lang_si)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_group(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_group()
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_groups", data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_rerun(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_rerun(context.state.selected_px.id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_reruns", resp.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_fpp(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.get_fpp(one_token(), context.state.order_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_fpp", resp.data.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search(token, qry, c_token) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'company/search', {
|
||||||
|
token: token,
|
||||||
|
qry: qry
|
||||||
|
},{ cancelToken : c_token });
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data.data;
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
data : data
|
||||||
|
};
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function calc_age(prm ) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'helper/calc_age', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
data : resp.data.data
|
||||||
|
};
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function history(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 'history/search_v2', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function update(token, order_detail_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal/update', {
|
||||||
|
token: token,
|
||||||
|
order_detail_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search_method(token, nattest_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal_method/search_method', {
|
||||||
|
token: token,
|
||||||
|
nattest_id: nattest_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_method(token, detail_id, method_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_normal_method/save_method', {
|
||||||
|
token: token,
|
||||||
|
detail_id: detail_id,
|
||||||
|
method_id: method_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
|
||||||
|
export async function search(token, sdate, search, group_id, page, company_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/search', {
|
||||||
|
token: token,
|
||||||
|
start_date: sdate,
|
||||||
|
search: search,
|
||||||
|
group_id: group_id,
|
||||||
|
page: page,
|
||||||
|
company_id : company_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_note(token, order_id, note) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/save_note', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
note: note
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function info_req(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_patient/info_req', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch(e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,586 @@
|
|||||||
|
const URL = "/one-api/mockup/process/resultentry-v106/";
|
||||||
|
const portServerImportInterface = "/one-api/v1/su/portserver_kd/";
|
||||||
|
|
||||||
|
// save_result_note_row
|
||||||
|
export async function save_result_note_row(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/update_result_note_row', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
export async function get_result_note_by_nat_test_id(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/result_note_row_by_nat_test_id', prm);
|
||||||
|
|
||||||
|
// console.log("resp ", resp);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// upload file
|
||||||
|
export async function uploadimage_lampiran(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/upload_file_lampiran_by_order_id', prm, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log("resp ", resp);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// import interface
|
||||||
|
export async function importInterface(prm, ItfNoReg) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.get(portServerImportInterface + 'fpp/' + ItfNoReg);
|
||||||
|
console.log("RESPON SERVER : ", resp)
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.data.message
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
status: "OK",
|
||||||
|
message: resp.data.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search(token, order_id, lang_id, lang_si, group_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
lang_id: lang_id,
|
||||||
|
lang_si: lang_si,
|
||||||
|
group_id: group_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save(token, lang_id, is_si, datax) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/save', {
|
||||||
|
token: token,
|
||||||
|
lang_id: lang_id,
|
||||||
|
is_si: is_si,
|
||||||
|
data: datax
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function uploadimage(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/uploadimage', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function save_template(token, test_id, value) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/save_template', {
|
||||||
|
token: token,
|
||||||
|
test_id: test_id,
|
||||||
|
value: value
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function lang_export(token, order_id, lang_id, is_si) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/export', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id,
|
||||||
|
lang_id: lang_id,
|
||||||
|
is_si: is_si
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search_group() {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search_group', {});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function search_rerun(detail_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/search_rerun', { detail_id: detail_id });
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getmikroresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getmikroresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getpapsmearresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getpapsmearresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getantibiotics(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getantibiotics', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getlcprepresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getlcprepresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getfnaresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getfnaresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getcytologiresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getcytologiresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_mikro(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_mikro', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function saveresult_papsmear(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_papsmear', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_lcprep(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_lcprep', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function get_doctors(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getdoctorsfna', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_fna(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_fna', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_cytologi(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_cytologi', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function uploadimage_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/uploadimage_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function getpreparasispermaresult(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/getpreparasispermaresult', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export async function saveresult_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/saveresult_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function get_doctors_preparasi_sperma(prm) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/get_doctors_preparasi_sperma', prm);
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function get_fpp(token, order_id) {
|
||||||
|
try {
|
||||||
|
var resp = await axios.post(URL + 're_px/get_fpp', {
|
||||||
|
token: token,
|
||||||
|
order_id: order_id
|
||||||
|
});
|
||||||
|
if (resp.status != 200) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: resp.statusText
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let data = resp.data;
|
||||||
|
return data;
|
||||||
|
} catch (e) {
|
||||||
|
return {
|
||||||
|
status: "ERR",
|
||||||
|
message: e.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
<template>
|
||||||
|
<v-menu
|
||||||
|
v-model="menu2"
|
||||||
|
:close-on-content-click="false"
|
||||||
|
:nudge-right="40"
|
||||||
|
lazy
|
||||||
|
transition="scale-transition"
|
||||||
|
offset-y
|
||||||
|
full-width
|
||||||
|
max-width="290px"
|
||||||
|
min-width="290px"
|
||||||
|
>
|
||||||
|
<v-text-field
|
||||||
|
slot="activator"
|
||||||
|
v-model="computedDateFormatted"
|
||||||
|
:label=init_label
|
||||||
|
hint="DD-MM-YYYY format"
|
||||||
|
persistent-hint
|
||||||
|
readonly
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
class="ma-1"
|
||||||
|
></v-text-field>
|
||||||
|
<v-date-picker v-model="init_date" no-title @input="menu2 = false"></v-date-picker>
|
||||||
|
</v-menu>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
props : ['label', 'date', 'data'],
|
||||||
|
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
init_date: this.date ? this.date : new Date().toISOString().substr(0, 10),
|
||||||
|
dateFormatted: this.formatDate(new Date().toISOString().substr(0, 10)),
|
||||||
|
menu1: false,
|
||||||
|
menu2: false,
|
||||||
|
|
||||||
|
init_label: this.label ? this.label : 'Date',
|
||||||
|
init_data: this.data ? this.data : ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
computedDateFormatted () {
|
||||||
|
return this.formatDate(this.init_date)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
init_date (n, o) {
|
||||||
|
this.dateFormatted = this.formatDate(this.init_date)
|
||||||
|
|
||||||
|
this.$emit('change', {"old_date":o, "new_date":n, "data":this.init_data});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
formatDate (date) {
|
||||||
|
if (!date) return null
|
||||||
|
|
||||||
|
const [year, month, day] = date.split('-')
|
||||||
|
return `${day}-${month}-${year}`
|
||||||
|
},
|
||||||
|
parseDate (date) {
|
||||||
|
if (!date) return null
|
||||||
|
|
||||||
|
const [month, day, year] = date.split('/')
|
||||||
|
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`
|
||||||
|
},
|
||||||
|
|
||||||
|
emitChange (n, o) {
|
||||||
|
console.log("old:"+o)
|
||||||
|
console.log("new:"+n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div style="height:30px;
|
||||||
|
position:fixed;bottom:0px;
|
||||||
|
left:50%;
|
||||||
|
color:white;
|
||||||
|
font-size:16px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
font-weight:bold;
|
||||||
|
z-index:999;
|
||||||
|
margin-left:-150px;width:300px;">
|
||||||
|
Pasien hari ini : {{ hari_ini }} , menyusul {{ total - hari_ini}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
computed: {
|
||||||
|
total() {
|
||||||
|
try {
|
||||||
|
let pxs = this.$store.state.re_patient.patients
|
||||||
|
return pxs.length
|
||||||
|
} catch(e) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hari_ini() {
|
||||||
|
try {
|
||||||
|
let pxs = this.$store.state.re_patient.patients
|
||||||
|
let curdate = moment().format('DD.MM.YYYY')
|
||||||
|
let xtot = _.filter(pxs,function(p) {
|
||||||
|
let xdate = moment(p.T_OrderHeaderDate).format('DD.MM.YYYY')
|
||||||
|
return curdate == xdate
|
||||||
|
});
|
||||||
|
return xtot.length
|
||||||
|
} catch(e) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Pemeriksaan"
|
||||||
|
v-model="selected_px.t_testname"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Metode sekarang"
|
||||||
|
v-model="selected_px.methode_name"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
:items="methods"
|
||||||
|
item-text="Nat_MethodeName"
|
||||||
|
item-value="Nat_MethodeID"
|
||||||
|
return-object
|
||||||
|
v-model="selected_method"
|
||||||
|
label="Pilih Metode baru"
|
||||||
|
></v-select>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" dark @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.normal_method.dialog_method },
|
||||||
|
set (v) { this.$store.commit('normal_method/update_dialog_method', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
methods () {
|
||||||
|
return this.$store.state.normal_method.methods
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_method : {
|
||||||
|
get () { return this.$store.state.normal_method.selected_method },
|
||||||
|
set (v) { this.$store.commit('normal_method/update_selected_method', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px () {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
this.$store.dispatch('normal_method/save_method')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
dialog(val, old) {
|
||||||
|
if (val && !old) {
|
||||||
|
this.$store.dispatch('normal_method/search_method')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
persistent
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
rows="5"
|
||||||
|
outline
|
||||||
|
label="Catatan Proses"
|
||||||
|
hide-details
|
||||||
|
v-model="result_note"
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_note', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
result_note : {
|
||||||
|
get () { return this.$store.state.re_patient.result_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_result_note', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
this.$store.dispatch('re_patient/save_note')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
persistent
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_fo != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan FO</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_fo}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_fo_ver != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan Screening</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_fo_ver}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.note_sampling != ''">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Catatan Specimen</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.note_sampling}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_fo.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement FO</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_fo.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_spec_col.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Specimen Collection</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_spec_col.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_spec_ver.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Specimen Verification</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_spec_ver.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_samp_ver.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Sample Verification</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_samp_ver.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap mb-2 v-show="info_req.req_pre_an.length > 0">
|
||||||
|
<v-flex xs12>
|
||||||
|
<h5 class="caption">Requirement Pre Analitik</h5>
|
||||||
|
<h3 class="title font-weight-regular">{{info_req.req_pre_an.join(', ')}}</h3>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog=!dialog">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_req },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_req', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
info_req () {
|
||||||
|
return this.$store.state.re_patient.info_req
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="400px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title primary-title class="grey darken-3 white--text">
|
||||||
|
<h3 class="headliine">Tambah Template Hasil</h3>
|
||||||
|
</v-card-title>
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Pemeriksaan"
|
||||||
|
readonly
|
||||||
|
v-model="curr_px"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Keterangan Hasil"
|
||||||
|
v-model="template_new_value"
|
||||||
|
:error="error || dup_error"
|
||||||
|
:error-messages="error_msg"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="dialog=false">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" dark @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_messages: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_template_new
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', v)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new_value : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.template_new_value
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_template_new_value', v)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
curr_px () {
|
||||||
|
return this.$store.state.re_px.selected_px.t_testname
|
||||||
|
},
|
||||||
|
|
||||||
|
error () {
|
||||||
|
|
||||||
|
if (this.template_new_value.length < 1) {
|
||||||
|
this.error_messages = "Keterangan Isi Hasil tidak boleh kosong !"
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
this.error_messages = ""
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
|
||||||
|
error_msg () {
|
||||||
|
if (this.error_messages != '')
|
||||||
|
return this.error_messages
|
||||||
|
|
||||||
|
return this.dup_error_messages
|
||||||
|
},
|
||||||
|
|
||||||
|
dup_error : {
|
||||||
|
get() { return this.$store.state.re_px.dup_template_error.status },
|
||||||
|
set (v) {
|
||||||
|
let x = this.$store.state.re_px.dup_template_error
|
||||||
|
x.status = v
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', x)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
dup_error_messages : {
|
||||||
|
get() { return this.$store.state.re_px.dup_template_error.messages },
|
||||||
|
set (v) {
|
||||||
|
let x = this.$store.state.re_px.dup_template_error
|
||||||
|
x.messages = v
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
save () {
|
||||||
|
if (this.error) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.$store.dispatch('re_px/save_template')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
template_new_value (v, o) {
|
||||||
|
|
||||||
|
if (this.dup_error) {
|
||||||
|
if (v != o)
|
||||||
|
this.$store.commit('re_px/update_dup_template_error', {
|
||||||
|
status: false,
|
||||||
|
messages: ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
dialog (v, o) {
|
||||||
|
if (v && !o)
|
||||||
|
this.template_new_value = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Lampiran</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
|
||||||
|
<!-- progress bar -->
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
<!-- <v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Non Lab</label>
|
||||||
|
<br /> -->
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Non Lab" hide-details @click='pickFile' v-model='imageName'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="image" accept="image/*, application/pdf" @change="onFilePicked"> -->
|
||||||
|
<!-- <input type="file" ref="image" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('nonlab')" />
|
||||||
|
</v-flex> -->
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Lab</label>
|
||||||
|
<br />
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Lab" hide-details @click='pickFileLab' v-model='imageNameLab'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="imageLab" accept="image/*, application/pdf" @change="onFilePickedLab"> -->
|
||||||
|
<input type="file" ref="imageLab" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('lab')" />
|
||||||
|
</v-flex>
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogUpload">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// image
|
||||||
|
imageName: '',
|
||||||
|
imageUrl: '',
|
||||||
|
imageFile: '',
|
||||||
|
imageOldName: '',
|
||||||
|
ximage: '',
|
||||||
|
filesNonLab: '',
|
||||||
|
typeNonLab:"",
|
||||||
|
|
||||||
|
// lab
|
||||||
|
imageNameLab: '',
|
||||||
|
imageUrlLab: '',
|
||||||
|
imageFileLab: '',
|
||||||
|
imageOldNameLab: '',
|
||||||
|
ximageLab: '',
|
||||||
|
filesLab: '',
|
||||||
|
typeLab:"",
|
||||||
|
|
||||||
|
error_image_nonlab: false,
|
||||||
|
error_image_lab: false,
|
||||||
|
type_image: 'nonlab',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_upload_file },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_upload_file', v) }
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error_save:{
|
||||||
|
get(){ return this.$store.state.re_px.save_error_message_lampiran},
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value) {
|
||||||
|
if (value === 'nonlab') {
|
||||||
|
this.typeNonLab = "NonLab"
|
||||||
|
this.filesNonLab = this.$refs.image.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.typeLab = "Lab"
|
||||||
|
this.filesLab = this.$refs.imageLab.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save() {
|
||||||
|
// this.error_save = ""
|
||||||
|
|
||||||
|
// jk upload lab & non lab
|
||||||
|
// if(this.filesNonLab == "" && this.filesLab == ""){
|
||||||
|
// this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Non Lab atau Lab Masih Belum Dipilih")
|
||||||
|
// }else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
// this.error_image_lab = false
|
||||||
|
// let formData = new FormData();
|
||||||
|
|
||||||
|
// if(this.filesNonLab != ""){
|
||||||
|
// formData.append('fileNonLab', this.filesNonLab);
|
||||||
|
// formData.append('typeNonLab', this.typeNonLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(this.filesLab != ""){
|
||||||
|
// formData.append('fileLab', this.filesLab);
|
||||||
|
// formData.append('typeLab', this.typeLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
// formData.append('token', one_token())
|
||||||
|
// this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// hanya lab
|
||||||
|
if(this.filesLab == ""){
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Lab Masih Belum Dipilih")
|
||||||
|
}else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
this.error_image_lab = false
|
||||||
|
let formData = new FormData();
|
||||||
|
|
||||||
|
if(this.filesLab != ""){
|
||||||
|
formData.append('fileLab', this.filesLab);
|
||||||
|
formData.append('typeLab', this.typeLab);
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogUpload() {
|
||||||
|
// non lab
|
||||||
|
this.imageName = ''
|
||||||
|
this.imageFile = ''
|
||||||
|
this.imageUrl = ''
|
||||||
|
|
||||||
|
// lab
|
||||||
|
this.imageNameLab = ''
|
||||||
|
this.imageFileLab = ''
|
||||||
|
this.imageUrlLab = ''
|
||||||
|
|
||||||
|
this.typeNonLab = ""
|
||||||
|
this.typeLab = ""
|
||||||
|
this.filesNonLab = ""
|
||||||
|
this.filesLab = ""
|
||||||
|
this.error_save = ""
|
||||||
|
// this.$refs.image.value = ""
|
||||||
|
this.$refs.imageLab.value = ""
|
||||||
|
|
||||||
|
// close dialog
|
||||||
|
this.dialog = !this.dialog;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
HISTORI PEMERIKSAAN
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_history.dialog_history },
|
||||||
|
set (v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,218 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" persistent max-width="1000px" min-height="600px" transition="dialog-transition">
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
<!-- HISTORI PEMERIKSAAN
|
||||||
|
<br />
|
||||||
|
<p style="font-size: 10px;">Catatan Pasien : {{ patient_note }}</p> -->
|
||||||
|
<v-row align="left">
|
||||||
|
<v-col>
|
||||||
|
<h3>HISTORI PEMERIKSAAN</h3>
|
||||||
|
</v-col>
|
||||||
|
<v-col class="text-left">
|
||||||
|
<p v-if="(patient_note != '')" style="font-size: 15px; margin-top:10px;">Catatan Pasien : {{ patient_note }}</p>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="filter_test()">{{ text_filter_test }}</v-btn>
|
||||||
|
<v-btn color="white" flat @click="uncheck_all()">Clear Test</v-btn>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-title>
|
||||||
|
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
<v-layout v-if="show_filter_test" xs12 row wrap
|
||||||
|
style="background-color:white;padding-top:10px;border-radius:10px 10px 0px 0px;padding-left:10px;">
|
||||||
|
<v-flex xs3 v-for="(p, i) in pxs" v-bind:key="p.code" class="pr-2 pb-1">
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex class="boxoutline" class="text-left" style="padding-top:10px" pl-2 pr-2 xs2>
|
||||||
|
<v-layout row align-left justify-space-between>
|
||||||
|
<v-icon v-if="!px_selected(p.code)" @click="selectPx(p.code)"
|
||||||
|
style="color:red">clear</v-icon>
|
||||||
|
<v-icon v-if="px_selected(p.code)" @click="unSelectPx(p.code)"
|
||||||
|
style="color:green">check</v-icon>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex class="boxoutline " style="text-overflow:ellipsis;overflow:hidden;padding-top:10px;" xs11>
|
||||||
|
<span>{{ p.name }}</span>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text class="pt-1 pb-1 pl-1 pr-1">
|
||||||
|
<v-data-table :headers="new_headers" :items="result" :loading="isLoading" hide-actions
|
||||||
|
class="elevation-1 table-history">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1 green--text">
|
||||||
|
{{ props.item.px_name }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1">
|
||||||
|
{{ props.item.unit }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pl-2 pr-2 pa-1" v-for="xdate in dates">
|
||||||
|
{{ props.item.result[xdate] }}
|
||||||
|
<br />
|
||||||
|
<!-- internal note -->
|
||||||
|
<p style="color: rgba(255, 0, 0, 0.5);">{{ props.item.notes[xdate] }}</p>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
</v-data-table>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.table-history table td {
|
||||||
|
height: 40px !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxoutline {
|
||||||
|
color: #000099;
|
||||||
|
border: 1px solid #e6f7ff;
|
||||||
|
justify-content: center;
|
||||||
|
height: 55px;
|
||||||
|
line-height: 25px;
|
||||||
|
padding-left: 5px;
|
||||||
|
background: #b3e7ff;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 1px;
|
||||||
|
font-weight: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.boxoutline:hover {
|
||||||
|
background: #e6f7ff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
|
||||||
|
isLoading: false,
|
||||||
|
show_filter_test: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
filter_test() {
|
||||||
|
this.show_filter_test = !this.show_filter_test
|
||||||
|
},
|
||||||
|
oneMoment: function (d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
uncheck_all() {
|
||||||
|
this.$store.commit('re_history/update_selected_px', [])
|
||||||
|
},
|
||||||
|
selectPx(code) {
|
||||||
|
console.log('Select ' + code)
|
||||||
|
let pxs = this.$store.state.re_history.pxs
|
||||||
|
let obj = _.filter(pxs, function (o) { return o.code == code })
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let n_spx = _.concat(spx, obj)
|
||||||
|
this.$store.commit('re_history/update_selected_px', n_spx)
|
||||||
|
},
|
||||||
|
unSelectPx(code) {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let new_spx = _.filter(spx, function (o) { return o.code != code })
|
||||||
|
this.$store.commit('re_history/update_selected_px', new_spx)
|
||||||
|
},
|
||||||
|
px_selected(code) {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let rst = _.findIndex(spx, { 'code': code })
|
||||||
|
if (rst == -1) return false
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dates() {
|
||||||
|
return this.$store.state.re_history.dates
|
||||||
|
},
|
||||||
|
text_filter_test() {
|
||||||
|
if (this.show_filter_test) return "Hide Test"
|
||||||
|
return "Show Test"
|
||||||
|
},
|
||||||
|
new_headers() {
|
||||||
|
let headers = [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "Unit",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "16%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}]
|
||||||
|
|
||||||
|
for (let i = 0; i < this.dates.length; i++) {
|
||||||
|
headers.push({
|
||||||
|
text: this.dates[i],
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return headers
|
||||||
|
},
|
||||||
|
result() {
|
||||||
|
let spx = this.$store.state.re_history.selected_px
|
||||||
|
let rst = this.$store.state.re_history.result
|
||||||
|
let new_rst = _.filter(rst, function (r) {
|
||||||
|
return _.findIndex(spx, { 'code': r.code }) > -1
|
||||||
|
})
|
||||||
|
return new_rst
|
||||||
|
},
|
||||||
|
pxs() {
|
||||||
|
return this.$store.state.re_history.pxs
|
||||||
|
},
|
||||||
|
// patient note
|
||||||
|
patient_note() {
|
||||||
|
return this.$store.state.re_history.patient_note
|
||||||
|
},
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_history.dialog_history },
|
||||||
|
set(v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
},
|
||||||
|
selected_px: {
|
||||||
|
get() { return this.$store.state.re_history.selected_px }
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow" color="blue-grey lighten-2">
|
||||||
|
<v-card-title primary-title class="title white--text pb-2">
|
||||||
|
HISTORI PEMERIKSAAN
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pt-2 pb-2">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="white" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.v-card__actions { display:none }
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
width: "45%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_history.dialog_history },
|
||||||
|
set (v) { this.$store.commit('re_history/update_dialog_history', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,295 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card class="pa-2" v-show="!detail">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">No Reg / Tanggal</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderLabNumber}} / {{order_date}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">Nama / Jenis Kelamin</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientName}} / {{selected_patient.M_SexName}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">DOB / Umur</div>
|
||||||
|
<div class="subheading">{{dob_date}} / {{age}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3>
|
||||||
|
<div class="caption font-weight-light">Pengirim</div>
|
||||||
|
<div class="subheading">{{selected_patient.doctor_sender_name}} </div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-btn absolute dark top right
|
||||||
|
color="black" flat depressed
|
||||||
|
@click="detail=!detail"
|
||||||
|
class="btn-detail"
|
||||||
|
>
|
||||||
|
<v-icon>keyboard_arrow_up</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs12 v-show="detail">
|
||||||
|
<v-card class="pa-2">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs6>
|
||||||
|
<div class="caption font-weight-light">No Reg / Tanggal</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderLabNumber}} / {{order_date}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Nama / Jenis Kelamin</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientName}} / {{selected_patient.M_SexName}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">DOB / Umur</div>
|
||||||
|
<div class="subheading">{{dob_date}} / {{age}}</div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Phone / Janji hasil</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_PatientHP}} / {{selected_patient.order_promise?selected_patient.order_promise.join(', '):''}}</div>
|
||||||
|
<div class="caption font-weight-light mt-2">Diagnose</div>
|
||||||
|
<div class="subheading">{{selected_patient.T_OrderHeaderDiagnose}}</div>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<div class="caption font-weight-light">Kel. Pelanggan</div>
|
||||||
|
<div class="subheading">{{selected_patient.M_CompanyName}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Pengirim</div>
|
||||||
|
<div class="subheading">{{selected_patient.doctor_sender_name}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Pengiriman Hasil</div>
|
||||||
|
<div class="subheading">{{selected_patient.delivery?selected_patient.delivery.join(", "):''}} </div>
|
||||||
|
|
||||||
|
<div class="caption font-weight-light mt-2">Format Hasil</div>
|
||||||
|
<div class="subheading">{{langs}} </div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row v-show="false">
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pr-2>
|
||||||
|
<v-flex xs7 pr-2>
|
||||||
|
|
||||||
|
<v-text-field
|
||||||
|
label="Nomor Lab"
|
||||||
|
v-model="selected_patient.T_OrderHeaderLabNumber"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs5>
|
||||||
|
<v-text-field
|
||||||
|
label="Tanggal"
|
||||||
|
v-model="order_date"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Nama"
|
||||||
|
v-model="selected_patient.M_PatientName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs5 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="DOB"
|
||||||
|
v-model="dob_date"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs7 pl-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Umur"
|
||||||
|
v-model="age"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Jenis Kelamin"
|
||||||
|
v-model="selected_patient.M_SexName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Dokter"
|
||||||
|
v-model="selected_patient.doctor_pj_name"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Company"
|
||||||
|
v-model="selected_patient.M_CompanyName"
|
||||||
|
readonly
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs3>
|
||||||
|
<v-layout row wrap pl-2>
|
||||||
|
<v-flex xs12 mb-3>
|
||||||
|
<v-text-field
|
||||||
|
label="No HP"
|
||||||
|
v-model="selected_patient.M_PatientHP"
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Pasien"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.M_PatientNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout row wrap v-show="false">
|
||||||
|
<v-flex xs4 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan FO"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderFoNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs4 pr-2>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Sampling"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderSamplingNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs4>
|
||||||
|
<v-text-field
|
||||||
|
label="Catatan Sample Handling"
|
||||||
|
outline
|
||||||
|
readonly
|
||||||
|
hide-details
|
||||||
|
v-model="selected_patient.T_OrderHeaderResultNote"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-btn
|
||||||
|
absolute
|
||||||
|
dark
|
||||||
|
top
|
||||||
|
right
|
||||||
|
color="black"
|
||||||
|
flat
|
||||||
|
depressed
|
||||||
|
@click="detail=!detail"
|
||||||
|
class="btn-detail"
|
||||||
|
>
|
||||||
|
<v-icon>keyboard_arrow_down</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.btn-detail {
|
||||||
|
min-width: 0px !important;
|
||||||
|
height: auto;
|
||||||
|
padding: 0px;
|
||||||
|
top: 5px;
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
detail: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
selected_patient () {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (x)
|
||||||
|
return x
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
order_date() {
|
||||||
|
let d = this.selected_patient.T_OrderHeaderDate
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.substr(0,10).split('-').reverse().join('-')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
dob_date() {
|
||||||
|
let d = this.selected_patient.M_PatientDOB
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.substr(0,10).split('-').reverse().join('-')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
age() {
|
||||||
|
let d = this.selected_patient.T_OrderHeaderM_PatientAge
|
||||||
|
return d
|
||||||
|
let e = ''
|
||||||
|
try {
|
||||||
|
e = d.replace(/tahun/, 'th').replace(/bulan/, 'bl').replace(/hari/, 'hr')
|
||||||
|
} catch(e) { /*console.log(e.message)*/ }
|
||||||
|
|
||||||
|
return e
|
||||||
|
},
|
||||||
|
|
||||||
|
langs() {
|
||||||
|
let x = this.selected_patient
|
||||||
|
if (!x) return ''
|
||||||
|
|
||||||
|
let si_01 = x.T_OrderHeaderLangIsSI == 'Y' ? ' (SI)' : ''
|
||||||
|
let si_02 = x.T_OrderHeaderAddOnSecondLangIsSI == 'Y' ? ' (SI)' : ''
|
||||||
|
|
||||||
|
if (!x.SecondM_LangID) return x.M_LangName + si_01
|
||||||
|
|
||||||
|
return x.M_LangName + si_01 + ', ' + x.SecondM_LangName + si_02
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,306 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog_note"
|
||||||
|
width="40%"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title
|
||||||
|
class="headline white--text error"
|
||||||
|
primary-title
|
||||||
|
>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.M_PatientNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">PASIEN</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.M_PatientNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.T_OrderHeaderFoNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">FO</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<code style="box-shadow: none !important;color: #0f80db !important;background-color: #a8cfee6b !important;">{{selected_patient.username_fo}}</code>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.T_OrderHeaderFoNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_patient && selected_patient.T_OrderHeaderSamplingNote" mb-2 row>
|
||||||
|
<v-flex mb-2 xs3>
|
||||||
|
<span style="color: #0f80db" class="mono name">Sampling</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs9>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex mb-1 xs12>
|
||||||
|
<code style="box-shadow: none !important;color: #0f80db !important;background-color: #a8cfee6b !important;">{{selected_patient.username_sample}}</code>
|
||||||
|
<div class="v-markdown">
|
||||||
|
<p style="margin-top:2px;margin-bottom:0">{{selected_patient.T_OrderHeaderSamplingNote}}</p>
|
||||||
|
</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn
|
||||||
|
color="grey"
|
||||||
|
dark
|
||||||
|
flat
|
||||||
|
text
|
||||||
|
@click="dialog_note = false"
|
||||||
|
>
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<v-card class="grow">
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="patients"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{
|
||||||
|
'susulan' : is_susulan(props.item),
|
||||||
|
'verif_done': is_verif_done(props.item), 'verif_partial': is_verif_partial(props.item),
|
||||||
|
'valid_done': is_valid_done(props.item), 'valid_partial':is_valid_partial(props.item) }"
|
||||||
|
>
|
||||||
|
<td
|
||||||
|
class="text-xs-left pa-2 green--text" v-bind:class="[ is_cito(props.item)]"
|
||||||
|
@click="select(props.item)">
|
||||||
|
<span style="color:black">{{ props.item.T_OrderHeaderLabNumber }}</span>
|
||||||
|
<v-icon @click="openNote(props.item)" v-if="props.item.M_PatientNote || props.item.T_OrderHeaderSamplingNote || props.item.T_OrderHeaderFoNote " color="error">info</v-icon>
|
||||||
|
<br/>
|
||||||
|
<span style="color:#660000">{{props.item.T_OrderHeaderLabNumberExt}}</span>
|
||||||
|
</td>
|
||||||
|
<td
|
||||||
|
class="text-xs-left pa-2" v-bind:class="[ is_cito(props.item)]"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.M_PatientName }} <br/>
|
||||||
|
<span style="color:#660000">{{format_date(props.item.T_OrderHeaderDate)}}</span>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<v-icon v-if="is_selected(props.item)" >pan_tool</v-icon>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
div.v-table__overflow {
|
||||||
|
height:680px!important;
|
||||||
|
overflow-y:scroll;
|
||||||
|
}
|
||||||
|
tr.susulan {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, white 5%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_partial{
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, white 5%, white 40%,yellow 70%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_done {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%, yellow 5%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_partial.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699 20%,white 30%, white 70%, yellow 80%);
|
||||||
|
}
|
||||||
|
tr.susulan.verif_done.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699 40%,yellow 60%);
|
||||||
|
}
|
||||||
|
tr.susulan.valid_done{
|
||||||
|
background-image: linear-gradient(to right, rgba(255, 0, 0,0.9) 5%,#99e699 5%, #99e699,#99e699, #99e699, #99e699);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tr.verif_partial{
|
||||||
|
background-image: linear-gradient(to right, white 40%,yellow 70%);
|
||||||
|
}
|
||||||
|
tr.verif_done {
|
||||||
|
background-image: linear-gradient(to right, yellow,yellow, yellow, yellow);
|
||||||
|
}
|
||||||
|
tr.verif_partial.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, #99e699 20%,white 30%, white 70%, yellow 80%);
|
||||||
|
}
|
||||||
|
tr.verif_done.valid_partial {
|
||||||
|
background-image: linear-gradient(to right, #99e699 40%,yellow 60%);
|
||||||
|
}
|
||||||
|
tr.valid_done{
|
||||||
|
background-image: linear-gradient(to right, #99e699,#99e699, #99e699, #99e699);
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialog_note:false,
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NO REG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "30%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NAMA",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "60%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "",
|
||||||
|
align: "center",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 text-xs-right green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
openNote(value){
|
||||||
|
console.log(value)
|
||||||
|
this.select(value)
|
||||||
|
this.dialog_note = true
|
||||||
|
},
|
||||||
|
is_valid_partial(i) {
|
||||||
|
return i.T_OrderHeaderAddOnValidationDone == 'P'
|
||||||
|
},
|
||||||
|
is_susulan(i) {
|
||||||
|
let cur_date = moment().format('DD.MM.YYYY')
|
||||||
|
let o_date = moment(i.T_OrderHeaderDate).format('DD.MM.YYYY')
|
||||||
|
|
||||||
|
return cur_date != o_date
|
||||||
|
},
|
||||||
|
is_valid_done(i) {
|
||||||
|
return i.T_OrderHeaderAddOnValidationDone == 'Y'
|
||||||
|
},
|
||||||
|
is_verif_partial(i) {
|
||||||
|
return i.T_OrderHeaderAddOnVerificationDone == 'P'
|
||||||
|
},
|
||||||
|
is_verif_done(i) {
|
||||||
|
return i.T_OrderHeaderAddOnVerificationDone == 'Y'
|
||||||
|
},
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
format_date(p) {
|
||||||
|
return moment(p).format("DD.MM.YYYY HH:mm")
|
||||||
|
},
|
||||||
|
select (item) {
|
||||||
|
this.$store.commit('re_patient/update_selected_patient', item)
|
||||||
|
this.$store.commit('re_px/update_id', item.T_OrderHeaderID)
|
||||||
|
this.$store.dispatch('re_px/search')
|
||||||
|
this.$store.dispatch('re_patient/info_req')
|
||||||
|
this.$store.dispatch('re_px/get_fpp')
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (!x)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if (x.T_OrderHeaderID == item.T_OrderHeaderID)
|
||||||
|
return 'green lighten-4'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
is_cito (item) {
|
||||||
|
let x = this.$store.state.re_patient.selected_patient
|
||||||
|
if (!x)
|
||||||
|
return ''
|
||||||
|
|
||||||
|
if (item.T_OrderHeaderIsCito == "Y")
|
||||||
|
return 'amber'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
change_page(x) {
|
||||||
|
this.curr_patient_page = x
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
patients () {
|
||||||
|
return this.$store.state.re_patient.patients
|
||||||
|
},
|
||||||
|
selected_patient () {
|
||||||
|
console.log("selected pasien : ",this.$store.state.re_patient.selected_patient)
|
||||||
|
return this.$store.state.re_patient.selected_patient
|
||||||
|
},
|
||||||
|
total_patient () {
|
||||||
|
return this.$store.state.re_patient.total_patient
|
||||||
|
},
|
||||||
|
|
||||||
|
total_patient_page () {
|
||||||
|
return this.$store.state.re_patient.total_patient_page
|
||||||
|
},
|
||||||
|
|
||||||
|
curr_patient_page : {
|
||||||
|
get () { return this.$store.state.re_patient.curr_patient_page },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_curr_patient_page', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="dialog" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Result Note Row</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
|
||||||
|
<!-- progress bar -->
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
<!-- <v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Non Lab</label>
|
||||||
|
<br /> -->
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Non Lab" hide-details @click='pickFile' v-model='imageName'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="image" accept="image/*, application/pdf" @change="onFilePicked"> -->
|
||||||
|
<!-- <input type="file" ref="image" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('nonlab')" />
|
||||||
|
</v-flex> -->
|
||||||
|
<!-- Hasil non lab -->
|
||||||
|
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="font-weight: bold; color: red;">{{ this.error_save }}</label>
|
||||||
|
<br v-if="(this.error_save != '')" />
|
||||||
|
<label style="font-weight: bold;"> * File Hasil Lab</label>
|
||||||
|
<br />
|
||||||
|
<!-- <v-text-field label="Pilih Hasil Lab" hide-details @click='pickFileLab' v-model='imageNameLab'
|
||||||
|
prepend-icon='attach_file' class="mt-2"></v-text-field> -->
|
||||||
|
<!-- <input type="file" style="display: none" ref="imageLab" accept="image/*, application/pdf" @change="onFilePickedLab"> -->
|
||||||
|
<input type="file" ref="imageLab" accept="image/*, application/pdf"
|
||||||
|
v-on:change="handleFileUploads('lab')" />
|
||||||
|
</v-flex>
|
||||||
|
<!-- Hasil lab -->
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogUpload">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="save">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* .v-overlay--active {
|
||||||
|
z-index: 1005 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-dialog__content--active {
|
||||||
|
z-index: 1006 !important;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// image
|
||||||
|
imageName: '',
|
||||||
|
imageUrl: '',
|
||||||
|
imageFile: '',
|
||||||
|
imageOldName: '',
|
||||||
|
ximage: '',
|
||||||
|
filesNonLab: '',
|
||||||
|
typeNonLab:"",
|
||||||
|
|
||||||
|
// lab
|
||||||
|
imageNameLab: '',
|
||||||
|
imageUrlLab: '',
|
||||||
|
imageFileLab: '',
|
||||||
|
imageOldNameLab: '',
|
||||||
|
ximageLab: '',
|
||||||
|
filesLab: '',
|
||||||
|
typeLab:"",
|
||||||
|
|
||||||
|
error_image_nonlab: false,
|
||||||
|
error_image_lab: false,
|
||||||
|
type_image: 'nonlab',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
dialog: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_upload_file },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_upload_file', v) }
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error_save:{
|
||||||
|
get(){ return this.$store.state.re_px.save_error_message_lampiran},
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value) {
|
||||||
|
if (value === 'nonlab') {
|
||||||
|
this.typeNonLab = "NonLab"
|
||||||
|
this.filesNonLab = this.$refs.image.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.typeLab = "Lab"
|
||||||
|
this.filesLab = this.$refs.imageLab.files[0];
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save() {
|
||||||
|
// this.error_save = ""
|
||||||
|
|
||||||
|
// jk upload lab & non lab
|
||||||
|
// if(this.filesNonLab == "" && this.filesLab == ""){
|
||||||
|
// this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Non Lab atau Lab Masih Belum Dipilih")
|
||||||
|
// }else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
// this.error_image_lab = false
|
||||||
|
// let formData = new FormData();
|
||||||
|
|
||||||
|
// if(this.filesNonLab != ""){
|
||||||
|
// formData.append('fileNonLab', this.filesNonLab);
|
||||||
|
// formData.append('typeNonLab', this.typeNonLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(this.filesLab != ""){
|
||||||
|
// formData.append('fileLab', this.filesLab);
|
||||||
|
// formData.append('typeLab', this.typeLab);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
// formData.append('token', one_token())
|
||||||
|
// this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// hanya lab
|
||||||
|
if(this.filesLab == ""){
|
||||||
|
this.$store.commit("re_px/update_save_error_message_lampiran", "Err : File Lab Masih Belum Dipilih")
|
||||||
|
}else{
|
||||||
|
// this.error_image_nonlab = false
|
||||||
|
this.error_image_lab = false
|
||||||
|
let formData = new FormData();
|
||||||
|
|
||||||
|
if(this.filesLab != ""){
|
||||||
|
formData.append('fileLab', this.filesLab);
|
||||||
|
formData.append('typeLab', this.typeLab);
|
||||||
|
}
|
||||||
|
|
||||||
|
formData.append('orderid', this.$store.state.re_px.order_id)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_px/uploadimage_lampiran",formData)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogUpload() {
|
||||||
|
// non lab
|
||||||
|
this.imageName = ''
|
||||||
|
this.imageFile = ''
|
||||||
|
this.imageUrl = ''
|
||||||
|
|
||||||
|
// lab
|
||||||
|
this.imageNameLab = ''
|
||||||
|
this.imageFileLab = ''
|
||||||
|
this.imageUrlLab = ''
|
||||||
|
|
||||||
|
this.typeNonLab = ""
|
||||||
|
this.typeLab = ""
|
||||||
|
this.filesNonLab = ""
|
||||||
|
this.filesLab = ""
|
||||||
|
this.error_save = ""
|
||||||
|
// this.$refs.image.value = ""
|
||||||
|
this.$refs.imageLab.value = ""
|
||||||
|
|
||||||
|
// close dialog
|
||||||
|
this.dialog = !this.dialog;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,475 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height flex-card" column>
|
||||||
|
<v-card class="fill-height">
|
||||||
|
<!-- <v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader> -->
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<!--
|
||||||
|
<v-progress-linear :indeterminate="true" class="mt-1 mb-1" v-if="search_status == 1"
|
||||||
|
height="10" striped></v-progress-linear>
|
||||||
|
-->
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="pxs"
|
||||||
|
:loading="search_status == 1"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{'red lighten-4': props.item.verification == 'Y',
|
||||||
|
'green lighten-4': props.item.validation== 'Y' }">
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'N'" colspan="7">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'" style="position: relative">
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
v-if="props.item.ResultGroupName === 'FNA'"
|
||||||
|
:value="props.item.result === null || props.item.result === ''?'Belum diisi':'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
solo
|
||||||
|
readonly
|
||||||
|
single-line
|
||||||
|
rows=1
|
||||||
|
auto-grow
|
||||||
|
hide-details
|
||||||
|
label=""
|
||||||
|
type="text"
|
||||||
|
@click:append="openDialogFNA(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
v-if="props.item.ResultGroupName === 'Papsmear'"
|
||||||
|
:value="props.item.result === null || props.item.result === ''?'Belum diisi':'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
solo
|
||||||
|
readonly
|
||||||
|
single-line
|
||||||
|
rows=1
|
||||||
|
auto-grow
|
||||||
|
hide-details
|
||||||
|
label=""
|
||||||
|
type="text"
|
||||||
|
@click:append="openDialogPapsmear(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
label=""
|
||||||
|
solo
|
||||||
|
rows=1
|
||||||
|
hide-details
|
||||||
|
v-on:keyup="update_result(props.index, $event.target.value)"
|
||||||
|
:value="props.item.result"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && props.item.ResultGroupName === 'LAB'"
|
||||||
|
auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
></v-textarea>
|
||||||
|
|
||||||
|
<v-select
|
||||||
|
:items="props.item.template"
|
||||||
|
|
||||||
|
label=""
|
||||||
|
item-value="T_ResultTemplateValue"
|
||||||
|
item-text="T_ResultTemplateValue"
|
||||||
|
v-if="props.item.is_quantitative == 'N' && props.item.ResultGroupName === 'LAB'"
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
:disabled="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
>
|
||||||
|
<template style="margin-top: 3px;" v-slot:append-outer>
|
||||||
|
<v-btn icon dark color="green" small class="btn-outer ma-0" @click="template_new(props.item)"><v-icon>add_circle</v-icon></v-btn>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
|
||||||
|
<span class="body-1" v-show="props.item.sample_worklist_receive != 'Y' || !props.item.pre_analytic || (props.item.resample == 'Y' && props.item.resample_status != 'W')">{{init_result(props.item)}}</span>
|
||||||
|
|
||||||
|
<!-- <v-textarea
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
rows="2"
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
>
|
||||||
|
</v-textarea> -->
|
||||||
|
|
||||||
|
<v-btn style="width: 28px;padding-bottom: 10px;" v-if="props.item.is_quantitative == 'Y' && props.item.result_instrument_n > 0 " color="green lighten-2" class="btn_rerun" icon flat small @click="rerun_me(props.index, props.item)">
|
||||||
|
<v-img :src="icon_info" aspect-ratio="1" height="15" contain></v-img>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.result_flag : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.normal_note : '' }}
|
||||||
|
<a href="javascript:;" v-show="props.item.normal_note != '' && props.item.normal_note != null && props.item.sample_processing == 'Y' && !init_blank(props.item)" @click="normalChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.unit_name : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.methode_name : '' }}
|
||||||
|
<a href="javascript:;" v-show="props.item.methode_name != '' && props.item.methode_name != null && props.item.sample_processing == 'Y' && !init_blank(props.item)" @click="methodeChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
<v-textarea
|
||||||
|
label=""
|
||||||
|
solo
|
||||||
|
rows=1
|
||||||
|
hide-details
|
||||||
|
v-on:keyup="update_note(props.index, $event.target.value)"
|
||||||
|
:value="props.item.note"
|
||||||
|
auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
></v-textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
|
||||||
|
<one-process-re-rerun-result></one-process-re-rerun-result>
|
||||||
|
<one-process-re-history></one-process-re-history>
|
||||||
|
<one-process-re-fna></one-process-re-fna>
|
||||||
|
<one-process-re-papsmear></one-process-re-papsmear>
|
||||||
|
<v-snackbar
|
||||||
|
v-model="snackbar"
|
||||||
|
:timeout="5000"
|
||||||
|
bottom right
|
||||||
|
>
|
||||||
|
{{ save_text }}
|
||||||
|
<v-btn
|
||||||
|
color="pink"
|
||||||
|
flat
|
||||||
|
@click="snackbar = false"
|
||||||
|
>
|
||||||
|
Close
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
|
||||||
|
<one-dialog-template>
|
||||||
|
</one-dialog-template>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
div.v-table__overflow {
|
||||||
|
height:640px!important;
|
||||||
|
overflow-y:scroll;
|
||||||
|
}
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_rerun {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-card {
|
||||||
|
min-height: -webkit-min-content;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__control {
|
||||||
|
min-height: 32px;
|
||||||
|
box-shadow:none;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line .v-text-field__prefix, .v-textarea.v-text-field--box.v-text-field--single-line textarea, .v-textarea.v-text-field--enclosed.v-text-field--single-line .v-text-field__prefix, .v-textarea.v-text-field--enclosed.v-text-field--single-line textarea {
|
||||||
|
margin-top: 2px;
|
||||||
|
|
||||||
|
}
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner, .v-textarea.v-text-field--solo .v-input__append-outer, .v-textarea.v-text-field--solo .v-input__prepend-inner, .v-textarea.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner .v-input__icon {
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 24px;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 24px;
|
||||||
|
width: 24px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
.v-text-field.v-text-field--solo .v-input__append-outer, .v-text-field.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
module.exports = {
|
||||||
|
components : {
|
||||||
|
'one-process-re-rerun-result': httpVueLoader('./oneProcessReRerunResult.vue' + ts ),
|
||||||
|
'one-process-re-history': httpVueLoader('./oneProcessReHistory.vue' + ts ),
|
||||||
|
'one-process-re-fna': httpVueLoader('./oneResultFNA.vue' + ts ),
|
||||||
|
'one-process-re-papsmear': httpVueLoader('./oneResultPapsmear.vue' + ts ),
|
||||||
|
'one-dialog-template': httpVueLoader('./oneProcessReDialogResultTemplateNew.vue' + ts )
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
save_text: "Data telah tersimpan.",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NAMA PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NILAI NORMAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "UNIT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "METODE",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "CATATAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
pxs () {
|
||||||
|
return this.$store.state.re_px.pxs
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_info () {
|
||||||
|
return window.BASE_URL + '/one-ui/apps/image/info.png'
|
||||||
|
},
|
||||||
|
|
||||||
|
snackbar : {
|
||||||
|
get () { return this.$store.state.re_px.snackbar },
|
||||||
|
set (v) { this.$store.commit('re_px/update_snackbar', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
search_status () {
|
||||||
|
return this.$store.state.re_px.search_status
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px () {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
openDialogFNA(value){
|
||||||
|
if(value.result === null || value.result === ''){
|
||||||
|
var results = []
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'A',label:'Diagnosis Klinis',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'B',label:'Makroskopis/Tindakan',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'C',label:'Mikroskopis',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'D',label:'Kesimpulan/Diagnosa',result:''})
|
||||||
|
results.push({xid:'0',orderdetail_id:value.id,code:'E',label:'Saran',result:''})
|
||||||
|
this.$store.commit("re_fna/update_results",results)
|
||||||
|
this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_fna/get_fnaresult",value)
|
||||||
|
},
|
||||||
|
openDialogPapsmear(value){
|
||||||
|
this.$store.dispatch("re_papsmear/get_papsmearresult",value)
|
||||||
|
},
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select (idx, item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_selected_px_idx', idx)
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
margin_left (item) {
|
||||||
|
if (item.level == 2)
|
||||||
|
return 'pl-4'
|
||||||
|
|
||||||
|
if (item.level == 3)
|
||||||
|
return 'pl-5'
|
||||||
|
|
||||||
|
return 'pl-2'
|
||||||
|
},
|
||||||
|
|
||||||
|
rerun_me (idx, item) {
|
||||||
|
if(item.verification == 'Y' ) return
|
||||||
|
this.select(idx, item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result(idx, result) {
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['result'] = result
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
update_note(idx, note) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['note'] = note
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new(item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
methodeChange(d) {
|
||||||
|
if (d.item.verification == 'Y') return
|
||||||
|
this.select(d.index, d.item)
|
||||||
|
this.$store.commit('normal_method/update_nattest_id', d.item.nattest_id)
|
||||||
|
this.$store.commit('normal_method/update_id', d.item.id)
|
||||||
|
this.$store.commit('normal_method/update_dialog_method', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
normalChange(d) {
|
||||||
|
return
|
||||||
|
},
|
||||||
|
|
||||||
|
init_result(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return x.result
|
||||||
|
|
||||||
|
let susul_date = moment(x.T_OrderPromiseDateTime).format('DD.MM.YYYY HH:mm')
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N")
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.resample_status == "R")
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
if (x.resample_status == "W")
|
||||||
|
return x.result
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y')
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.sample_receive == 'Y' && !x.pre_analytic)
|
||||||
|
return "Belum Pre Analitik"
|
||||||
|
if (x.sample_receive == 'Y' && x.pre_analytic)
|
||||||
|
{
|
||||||
|
if (x.sample_worklist_receive == "Y")
|
||||||
|
return x.result
|
||||||
|
else
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init_blank(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N" || x.resample_status == "R")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y' || !x.pre_analytic || x.sample_worklist_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
// this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,751 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height flex-card" column>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- dialog -->
|
||||||
|
<v-dialog v-model="dialog_result_note_row" max-width="500px" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<h3>Result Note Row</h3>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<label style="color: red; font-style: italic;">
|
||||||
|
Kalau Hidden Dicentang True
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<input type="checkbox"
|
||||||
|
v-model="selected_hidden" :value="'Y'"
|
||||||
|
style="color: black; font-style: normal;" /> Hidden
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<div v-if="result_note_rows.length > 0">
|
||||||
|
<v-flex xs12 class="mb-4">
|
||||||
|
<v-col v-for="(item, index) in result_note_rows" :key="index" cols="12">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<input type="checkbox"
|
||||||
|
:id="item.ResultNoteRowID" :value="item"
|
||||||
|
v-model="selected_checkbox"/>
|
||||||
|
{{ item.ResultNoteRowValue }}
|
||||||
|
</v-card-title>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
</v-flex>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span v-if="result_note_rows.length < 1" style="color: red;">Tidak Ada Data</span>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn color="primary" flat @click="closeDialogResultNoteRow">Tutup</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" @click="saveResultDialogNoteRow">Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- dialog -->
|
||||||
|
|
||||||
|
<v-card class="fill-height">
|
||||||
|
<!-- <v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader> -->
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<!--
|
||||||
|
<v-progress-linear :indeterminate="true" class="mt-1 mb-1" v-if="search_status == 1"
|
||||||
|
height="10" striped></v-progress-linear>
|
||||||
|
-->
|
||||||
|
<v-data-table :headers="headers" :items="pxs" :loading="search_status == 1" hide-actions class="xelevation-1">
|
||||||
|
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<tr :class="{
|
||||||
|
'red lighten-4': props.item.verification == 'Y',
|
||||||
|
'green lighten-4': props.item.validation == 'Y'
|
||||||
|
}">
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'N'" colspan="7">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pt-2 pb-2 pr-2 green--text" v-bind:class="margin_left(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ props.item.t_testname }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'"
|
||||||
|
style="position: relative">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Preparasi Sperma' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Preparasi Sperma' && props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
solo readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogPreparasiSperma(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'FNA' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'FNA' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogFNA(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Cytologi' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Cytologi' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogCytologi(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Papsmear' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Papsmear' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogPapsmear(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : 'Terlampir'"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Pap Smear (Liquid C Prep)' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Pap Smear (Liquid C Prep)' && props.item.resample == 'Y' && props.item.resample_status == 'W')"
|
||||||
|
solo readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogLcprep(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
<v-textarea
|
||||||
|
:value="props.item.result === null || props.item.result === '' ? 'Belum diisi' : props.item.result"
|
||||||
|
append-icon="description"
|
||||||
|
v-if="(props.item.ResultGroupName === 'Mikro' && props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic === 'Y' && props.item.resample == 'N') ||
|
||||||
|
(props.item.ResultGroupName === 'Mikro' && props.item.resample == 'Y' && props.item.resample_status == 'W')" solo
|
||||||
|
readonly single-line rows=1 auto-grow hide-details label="" type="text"
|
||||||
|
@click:append="openDialogMikro(props.item)"></v-textarea>
|
||||||
|
|
||||||
|
|
||||||
|
<v-textarea label="" solo rows=1 hide-details
|
||||||
|
v-on:keyup="update_result(props.index, $event.target.value)" :value="props.item.result"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && (props.item.ResultGroupName === 'LAB' || props.item.ResultGroupName === 'ACA')"
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)" auto-grow
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'" v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')"></v-textarea>
|
||||||
|
|
||||||
|
<v-select :items="props.item.template" label="" item-value="T_ResultTemplateValue"
|
||||||
|
item-text="T_ResultTemplateValue"
|
||||||
|
v-if="props.item.is_quantitative == 'N' && props.item.ResultGroupName === 'LAB'" solo hide-details
|
||||||
|
:value="props.item.result" @change="update_result(props.index, $event)"
|
||||||
|
:disabled="props.item.T_OrderDetailVerification == 'Y'" v-show="(props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && props.item.resample == 'N') ||
|
||||||
|
(props.item.resample == 'Y' && props.item.resample_status == 'W')">
|
||||||
|
<template style="margin-top: 3px;" v-slot:append-outer>
|
||||||
|
<v-btn icon dark color="green" small class="btn-outer ma-0"
|
||||||
|
@click="template_new(props.item)"><v-icon>add_circle</v-icon></v-btn>
|
||||||
|
</template>
|
||||||
|
</v-select>
|
||||||
|
|
||||||
|
<span class="body-1"
|
||||||
|
v-show="props.item.sample_worklist_receive != 'Y' || !props.item.pre_analytic || (props.item.resample == 'Y' && props.item.resample_status != 'W')">{{
|
||||||
|
init_result(props.item) }}</span>
|
||||||
|
|
||||||
|
<!-- <v-textarea
|
||||||
|
solo
|
||||||
|
hide-details
|
||||||
|
rows="2"
|
||||||
|
:value="props.item.result"
|
||||||
|
@change="update_result(props.index, $event)"
|
||||||
|
>
|
||||||
|
</v-textarea> -->
|
||||||
|
|
||||||
|
<v-btn style="width: 28px;padding-bottom: 10px;margin-top: 43px;"
|
||||||
|
v-if="props.item.is_quantitative == 'Y' && props.item.result_instrument_n > 0"
|
||||||
|
color="green lighten-2" class="btn_rerun" icon flat small
|
||||||
|
@click="rerun_me(props.index, props.item)">
|
||||||
|
<v-img :src="icon_info" aspect-ratio="1" height="15" contain></v-img>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank(props.item) ? props.item.result_flag : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.normal_note : '' }}
|
||||||
|
<a href="javascript:;"
|
||||||
|
v-show="props.item.normal_note != '' && props.item.normal_note != null && props.item.sample_processing == 'Y' && !init_blank_normal(props.item) && false"
|
||||||
|
@click="normalChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.unit_name : '' }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
{{ !init_blank_normal(props.item) ? props.item.methode_name : '' }}
|
||||||
|
<a href="javascript:;"
|
||||||
|
v-show="props.item.methode_name != '' && props.item.methode_name != null && props.item.sample_processing == 'Y' && !init_blank_normal(props.item)"
|
||||||
|
@click="methodeChange(props)"><v-icon small color="green">create</v-icon></a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)"
|
||||||
|
@click="select(props.index, props.item)" v-if="props.item.is_result == 'Y'">
|
||||||
|
<div class="d-flex align-center">
|
||||||
|
<v-textarea label="" solo rows="1" hide-details
|
||||||
|
v-on:keyup="update_note(props.index, $event.target.value)" :value="props.item.note" auto-grow
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)"
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"></v-textarea>
|
||||||
|
<!-- button show result note row start -->
|
||||||
|
<v-btn small class="btn-search one-btn-icon ma-1 white--text ma-1 x-small" color="orange"
|
||||||
|
@click="openDialogResultNoteRow(props.item)"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
title="Result Note Row">
|
||||||
|
<v-icon style="width: 10px; height: 10px;">library_books</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
<!-- button show result note row end -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"
|
||||||
|
class="text-xs-left mt-2 mb-2" style="color: brown;">Internal</p>
|
||||||
|
|
||||||
|
<!-- Inputan T_OrderDetailInternalNote -->
|
||||||
|
<v-textarea class="inputanInternalNote" label="" solo rows=1 hide-details
|
||||||
|
v-on:keyup="update_internal_note(props.index, $event.target.value)"
|
||||||
|
:value="props.item.T_OrderDetailInternalNote" auto-grow
|
||||||
|
@keydown.ctrl.a="keyDownResult(props.index, props.item)"
|
||||||
|
:readonly="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
:flat="props.item.T_OrderDetailVerification == 'Y'"
|
||||||
|
v-show="props.item.sample_worklist_receive == 'Y' && props.item.pre_analytic && !init_blank(props.item)"></v-textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
|
||||||
|
<one-process-re-rerun-result></one-process-re-rerun-result>
|
||||||
|
<one-process-re-history></one-process-re-history>
|
||||||
|
<one-process-re-fna></one-process-re-fna>
|
||||||
|
<one-process-re-cytologi></one-process-re-cytologi>
|
||||||
|
<one-process-re-papsmear></one-process-re-papsmear>
|
||||||
|
<one-process-re-lcprep></one-process-re-lcprep>
|
||||||
|
<one-process-re-mikro></one-process-re-mikro>
|
||||||
|
<one-process-re-preparasisperma></one-process-re-preparasisperma>
|
||||||
|
<v-snackbar v-model="snackbar" :timeout="5000" bottom right>
|
||||||
|
{{ save_text }}
|
||||||
|
<v-btn color="pink" flat @click="snackbar = false">
|
||||||
|
Close
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
|
||||||
|
<!-- SNACKBAR INTERFACE START -->
|
||||||
|
<v-snackbar v-model="snackbar_interface.value" top :color="snackbar_interface.color">
|
||||||
|
{{ snackbar_interface.text }}
|
||||||
|
<v-btn flat @click="snackbar_interface.value = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-snackbar>
|
||||||
|
<!-- SNACKBAR INTERFACE END -->
|
||||||
|
|
||||||
|
<one-dialog-template>
|
||||||
|
</one-dialog-template>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* button result note row */
|
||||||
|
button.btn-search.one-btn-icon.ma-1.white--text.ma-1.x-small.v-btn.v-btn--small.theme--light.orange {
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-search {
|
||||||
|
font-size: 1.5em
|
||||||
|
}
|
||||||
|
|
||||||
|
div.v-table__overflow {
|
||||||
|
height: 640px !important;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot {
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table tbody td,
|
||||||
|
table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_rerun {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-card {
|
||||||
|
min-height: -webkit-min-content;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__control {
|
||||||
|
min-height: 32px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.inputanInternalNote .v-input__control {
|
||||||
|
border: 2px solid rgba(255, 0, 0, 0.5) !important;
|
||||||
|
min-height: 32px !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line .v-text-field__prefix,
|
||||||
|
.v-textarea.v-text-field--box.v-text-field--single-line textarea,
|
||||||
|
.v-textarea.v-text-field--enclosed.v-text-field--single-line .v-text-field__prefix,
|
||||||
|
.v-textarea.v-text-field--enclosed.v-text-field--single-line textarea {
|
||||||
|
margin-top: 2px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-outer,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__prepend-inner,
|
||||||
|
.v-textarea.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-textarea.v-text-field--solo .v-input__append-inner .v-input__icon {
|
||||||
|
align-items: center;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 24px;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 24px;
|
||||||
|
width: 24px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-text-field.v-text-field--solo .v-input__append-outer,
|
||||||
|
.v-text-field.v-text-field--solo .v-input__prepend-outer {
|
||||||
|
margin-top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics {
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody td,
|
||||||
|
table.table_antibiotics tbody th {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody tr:nth-child(even) {
|
||||||
|
background-color: #dddddd;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
'one-process-re-rerun-result': httpVueLoader('./oneProcessReRerunResult.vue' + ts),
|
||||||
|
'one-process-re-history': httpVueLoader('./oneProcessReHistory.vue' + ts),
|
||||||
|
'one-process-re-fna': httpVueLoader('./oneResultFNA.vue' + ts),
|
||||||
|
'one-process-re-cytologi': httpVueLoader('./oneResultCytologi.vue' + ts),
|
||||||
|
'one-process-re-papsmear': httpVueLoader('./oneResultPapsmear.vue' + ts),
|
||||||
|
'one-process-re-lcprep': httpVueLoader('./oneResultLcprep.vue' + ts),
|
||||||
|
'one-process-re-mikro': httpVueLoader('./oneResultMikro.vue' + ts),
|
||||||
|
'one-dialog-template': httpVueLoader('./oneProcessReDialogResultTemplateNew.vue' + ts),
|
||||||
|
'one-process-re-preparasisperma': httpVueLoader('./oneResultPreparasiSperma.vue' + ts),
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// selected checkbox_array
|
||||||
|
selected_checkbox: [],
|
||||||
|
// hidden
|
||||||
|
selected_hidden:[],
|
||||||
|
|
||||||
|
borderColorInternalNote: 'black',
|
||||||
|
query: "",
|
||||||
|
save_text: "Data telah tersimpan.",
|
||||||
|
items: [],
|
||||||
|
order_detail_id_param: '',
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NAMA PEMERIKSAAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "FLAG",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NILAI NORMAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "UNIT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "10%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "METODE",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "CATATAN",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
pxs() {
|
||||||
|
return this.$store.state.re_px.pxs
|
||||||
|
},
|
||||||
|
|
||||||
|
icon_info() {
|
||||||
|
return window.BASE_URL + '/one-ui/apps/image/info.png'
|
||||||
|
},
|
||||||
|
|
||||||
|
snackbar: {
|
||||||
|
get() { return this.$store.state.re_px.snackbar },
|
||||||
|
set(v) { this.$store.commit('re_px/update_snackbar', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
// SNACKBAR INTERFACE
|
||||||
|
snackbar_interface: {
|
||||||
|
get() { return this.$store.state.re_px.snackbar_interface },
|
||||||
|
set(v) { this.$store.commit('re_px/update_snackbar_interface', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
search_status() {
|
||||||
|
return this.$store.state.re_px.search_status
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_px() {
|
||||||
|
return this.$store.state.re_px.selected_px
|
||||||
|
},
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
dialog_result_note_row: {
|
||||||
|
get() { return this.$store.state.re_px.dialog_result_note_row },
|
||||||
|
set(v) { this.$store.commit('re_px/update_dialog_result_note_row', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
result_note_rows() {
|
||||||
|
return this.$store.state.re_px.result_note_rows
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
// dialog result note row
|
||||||
|
openDialogResultNoteRow(item) {
|
||||||
|
console.log("Data per row : ", item)
|
||||||
|
this.order_detail_id_param = item.id;
|
||||||
|
this.$store.dispatch("re_px/get_result_note_by_nat_test_id", { nattest_id: item.nattest_id })
|
||||||
|
// this.$store.commit('re_px/update_dialog_result_note_row', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
closeDialogResultNoteRow() {
|
||||||
|
// close dialog
|
||||||
|
this.order_detail_id_param = ""
|
||||||
|
this.selected_checkbox = []
|
||||||
|
this.selected_hidden = []
|
||||||
|
this.dialog_result_note_row = !this.dialog_result_note_row;
|
||||||
|
},
|
||||||
|
|
||||||
|
saveResultDialogNoteRow(){
|
||||||
|
console.log("result dialog note - selected hidden checkbox", this.selected_hidden);
|
||||||
|
console.log("result dialog note - selected checkbox", this.selected_checkbox);
|
||||||
|
// let resultNoteRowString = "";
|
||||||
|
let hidden_note = "";
|
||||||
|
// if(this.selected_checkbox.length > 0){
|
||||||
|
// resultNoteRowString = this.selected_checkbox.map(item => item.ResultNoteRowValue).join(' \r ');
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(this.selected_hidden.length < 1){
|
||||||
|
hidden_note = "N"
|
||||||
|
}else{
|
||||||
|
hidden_note = "Y"
|
||||||
|
}
|
||||||
|
|
||||||
|
let prm = {
|
||||||
|
// "result_note_row" : resultNoteRowString,
|
||||||
|
"result_note_row" : this.selected_checkbox,
|
||||||
|
"order_detail_id" : this.order_detail_id_param,
|
||||||
|
"hidden_note" : hidden_note
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log("PARAM SAVE RESULT NOTE ROW",prm);
|
||||||
|
this.$store.dispatch("re_px/save_result_note_row", prm)
|
||||||
|
|
||||||
|
// clear
|
||||||
|
this.order_detail_id_param = ""
|
||||||
|
this.selected_checkbox = []
|
||||||
|
this.selected_hidden = []
|
||||||
|
this.dialog_result_note_row = !this.dialog_result_note_row;
|
||||||
|
},
|
||||||
|
|
||||||
|
async keyDownResult(idx, item) {
|
||||||
|
await this.$store.dispatch('re_normal/update', item.id)
|
||||||
|
if (this.$store.state.re_normal.error == "") {
|
||||||
|
let result = this.$store.state.re_normal.result
|
||||||
|
let pxs = this.$store.state.re_px.pxs
|
||||||
|
pxs[idx]["normal_id"] = result.T_OrderDetailNat_NormalValueID
|
||||||
|
pxs[idx]["normal_note"] = result.T_OrderDetailNormalValueNote
|
||||||
|
pxs[idx]["methode_id"] = result.T_OrderDetailNat_MethodeID
|
||||||
|
pxs[idx]["methode_name"] = result.Nat_MethodeName
|
||||||
|
let data = { records: pxs }
|
||||||
|
this.$store.commit("re_px/update_pxs", data)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openDialogFNA(value) {
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
var results = []
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'A', label: 'Diagnosis Klinis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'B', label: 'Makroskopis/Tindakan', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'C', label: 'Mikroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'D', label: 'Kesimpulan/Diagnosa', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'E', label: 'Saran', result: '' })
|
||||||
|
this.$store.commit("re_fna/update_results", results)
|
||||||
|
this.$store.dispatch("re_fna/get_doctors", { token: '' })
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_fna/get_fnaresult", value)
|
||||||
|
},
|
||||||
|
openDialogCytologi(value) {
|
||||||
|
//console.log(value.result)
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
console.log("ane-01")
|
||||||
|
var results = []
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'A', label: 'Makroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'B', label: 'Mikroskopis', result: '' })
|
||||||
|
results.push({ xid: '0', orderdetail_id: value.id, code: 'C', label: 'Kesimpulan', result: '' })
|
||||||
|
this.$store.commit("re_cytologi/update_results", results)
|
||||||
|
this.$store.dispatch("re_cytologi/get_doctors", { token: '' })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("ane-09")
|
||||||
|
this.$store.dispatch("re_cytologi/get_cytologiresult", value)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
openDialogPapsmear(value) {
|
||||||
|
this.$store.commit("re_papsmear/update_selected_papsmear", value)
|
||||||
|
this.$store.dispatch("re_papsmear/get_papsmearresult", value)
|
||||||
|
},
|
||||||
|
openDialogLcprep(value) {
|
||||||
|
console.log(value)
|
||||||
|
this.$store.commit("re_lcprep/update_selected_lcprep", value)
|
||||||
|
this.$store.dispatch("re_lcprep/get_lcprepresult", value)
|
||||||
|
},
|
||||||
|
openDialogMikro(value) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_mikro", value)
|
||||||
|
this.$store.dispatch("re_mikro/get_mikroresult", value)
|
||||||
|
},
|
||||||
|
openDialogPreparasiSperma(value) {
|
||||||
|
console.log(value)
|
||||||
|
this.$store.commit("re_preparasisperma/update_selected_preparasisperma", value)
|
||||||
|
if (value.result === null || value.result === '') {
|
||||||
|
var results = { xid: '0' }
|
||||||
|
console.log('result null')
|
||||||
|
this.$store.commit("re_preparasisperma/update_results", results)
|
||||||
|
this.$store.dispatch("re_preparasisperma/get_doctors_preparasi_sperma", { token: '' })
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$store.dispatch("re_preparasisperma/get_preparasispermaresult", value)
|
||||||
|
},
|
||||||
|
oneMoment: function (d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select(idx, item) {
|
||||||
|
console.log("di file oneProcessPxList")
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_selected_px_idx', idx)
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected(item) {
|
||||||
|
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
|
||||||
|
margin_left(item) {
|
||||||
|
if (item.level == 2)
|
||||||
|
return 'pl-4'
|
||||||
|
|
||||||
|
if (item.level == 3)
|
||||||
|
return 'pl-5'
|
||||||
|
|
||||||
|
return 'pl-2'
|
||||||
|
},
|
||||||
|
|
||||||
|
rerun_me(idx, item) {
|
||||||
|
if (item.verification == 'Y') return
|
||||||
|
this.select(idx, item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result(idx, result) {
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['result'] = result
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
update_note(idx, note) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['note'] = note
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
// internal note
|
||||||
|
update_internal_note(idx, internalNote) {
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[idx]['T_OrderDetailInternalNote'] = internalNote
|
||||||
|
|
||||||
|
this.$store.commit('re_px/update_pxs', { records: x })
|
||||||
|
},
|
||||||
|
|
||||||
|
template_new(item) {
|
||||||
|
this.$store.commit('re_px/update_selected_px', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
methodeChange(d) {
|
||||||
|
if (d.item.verification == 'Y') return
|
||||||
|
this.select(d.index, d.item)
|
||||||
|
this.$store.commit('normal_method/update_nattest_id', d.item.nattest_id)
|
||||||
|
this.$store.commit('normal_method/update_id', d.item.id)
|
||||||
|
this.$store.commit('normal_method/update_dialog_method', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
normalChange(d) {
|
||||||
|
return
|
||||||
|
},
|
||||||
|
|
||||||
|
init_result(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return x.result
|
||||||
|
|
||||||
|
let susul_date = moment(x.T_OrderPromiseDateTime).format('DD.MM.YYYY HH:mm')
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N")
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.resample_status == "R")
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
if (x.resample_status == "W")
|
||||||
|
return x.result
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y')
|
||||||
|
return "Bahan belum"
|
||||||
|
if (x.sample_receive == 'Y' && !x.pre_analytic)
|
||||||
|
return "Belum Pre Analitik"
|
||||||
|
if (x.sample_receive == 'Y' && x.pre_analytic) {
|
||||||
|
if (x.sample_worklist_receive == "Y")
|
||||||
|
return x.result
|
||||||
|
else
|
||||||
|
return "Hasil Menyusul : " + susul_date
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init_blank_normal(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
if (x.sample_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
init_blank(x) {
|
||||||
|
if (x.verification == "Y" || x.validation == "Y")
|
||||||
|
return false
|
||||||
|
|
||||||
|
// Override
|
||||||
|
if (x.resample == "Y") {
|
||||||
|
if (x.resample_status == "N" || x.resample_status == "R")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.sample_receive != 'Y' || !x.pre_analytic || x.sample_worklist_receive != "Y")
|
||||||
|
return true
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
// this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
persistent
|
||||||
|
max-width="500px"
|
||||||
|
transition="dialog-transition"
|
||||||
|
>
|
||||||
|
|
||||||
|
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow">
|
||||||
|
<v-card-text>
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="reruns"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="elevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pa-2 green--text" v-bind:class="is_selected(props.item)">
|
||||||
|
{{get_instrument_date(props.item)}}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
{{ props.item.instrument_name }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
{{ props.item.result }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="text-xs-left pa-2" v-bind:class="is_selected(props.item)">
|
||||||
|
<v-btn flat icon color="green" @click="select(props.item)">
|
||||||
|
<v-icon>get_app</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog = false">Tutup</v-btn>
|
||||||
|
<!-- <v-btn color="green darken-1" :dark="btn_save_enabled" @click="save" :disabled="!btn_save_enabled">Simpan</v-btn> -->
|
||||||
|
</v-card-actions>
|
||||||
|
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "TANGGAL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "40%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "ALAT",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "35%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "HASIL",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "5%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
get_instrument_date(i) {
|
||||||
|
// debugger
|
||||||
|
let rst = ''
|
||||||
|
try {
|
||||||
|
rst = moment(i.instrument_date).format('DD.MM.YYYY HH:mm')
|
||||||
|
} catch(e) {}
|
||||||
|
return rst
|
||||||
|
},
|
||||||
|
select (item) {
|
||||||
|
this.$store.commit('re_px/update_selected_rerun', item)
|
||||||
|
this.$store.commit('re_px/update_dialog_rerun', false)
|
||||||
|
|
||||||
|
let x = this.$store.state.re_px.pxs
|
||||||
|
x[this.$store.state.re_px.selected_px_idx]['result'] = item.result
|
||||||
|
x[this.$store.state.re_px.selected_px_idx]['resultInstrumentID'] = item.resultInstrumentID
|
||||||
|
console.log(x)
|
||||||
|
this.$store.commit('re_px/update_pxs', {records:x})
|
||||||
|
},
|
||||||
|
|
||||||
|
is_selected (item) {
|
||||||
|
// let x = this.$store.state.re_patient.selected_patient
|
||||||
|
// if (!x)
|
||||||
|
// return ''
|
||||||
|
|
||||||
|
// if (x.T_OrderHeaderID == item.T_OrderHeaderID)
|
||||||
|
// return 'green lighten-4'
|
||||||
|
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
reruns () {
|
||||||
|
return this.$store.state.re_px.reruns
|
||||||
|
},
|
||||||
|
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_px.dialog_rerun },
|
||||||
|
set (v) { this.$store.commit('re_px/update_dialog_rerun', v) }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
// this.$store.dispatch('re_px/search_rerun')
|
||||||
|
},
|
||||||
|
|
||||||
|
watch : {
|
||||||
|
dialog(n, o) {
|
||||||
|
if (n && !o) {
|
||||||
|
this.$store.dispatch('re_px/search_rerun')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="400px"
|
||||||
|
>
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-text-field
|
||||||
|
label="Keterangan Hasil"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_template_new
|
||||||
|
},
|
||||||
|
set (v) {
|
||||||
|
this.$store.commit('re_px/update_dialog_template_new', v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,485 @@
|
|||||||
|
<template>
|
||||||
|
<v-card class="mb-1 pa-1">
|
||||||
|
<v-dialog v-model="dialog_fpp" width="75%">
|
||||||
|
|
||||||
|
<v-card>
|
||||||
|
|
||||||
|
|
||||||
|
<v-card-text>
|
||||||
|
<object width="100%" height="550" :data="url_pdf" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog_fpp = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
|
||||||
|
<!-- BARCODE GABUNG DIALOG START -->
|
||||||
|
<v-dialog v-model="dialog_barcode_list" width="75%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-text>
|
||||||
|
<object width="100%" height="550" :data="url_pdf" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="primary" flat @click="dialog_barcode_list = false">
|
||||||
|
Tutup
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- BARCODE GABUNG DIALOG END -->
|
||||||
|
|
||||||
|
<!-- Dialog Attachment Start -->
|
||||||
|
<v-dialog v-model="dialog_attachment" width="75%" persistent>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="grey lighten-2">
|
||||||
|
<v-layout row wrap>
|
||||||
|
<v-flex xs10>
|
||||||
|
<h3>Lampiran</h3>
|
||||||
|
</v-flex>
|
||||||
|
<!-- <v-spacer></v-spacer> -->
|
||||||
|
<v-flex xs2 class="text-xs-right">
|
||||||
|
<v-btn color="red darken-1 white--text" flat @click="closeDialogAttachment()">
|
||||||
|
Tutup Lampiran
|
||||||
|
</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<img v-if="(extension_lab === 'image' || extension_non_lab === 'image')" :src="url_file_attachment"
|
||||||
|
width="100%" height="100%" />
|
||||||
|
<object v-if="(extension_lab === 'pdf' || extension_non_lab === 'pdf')" width="100%" height="550"
|
||||||
|
:data="url_file_attachment" style="overflow: hidden;"></object>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
<v-divider></v-divider>
|
||||||
|
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="red darken-1 white--text" flat @click="closeDialogAttachment()">
|
||||||
|
Tutup Lampiran
|
||||||
|
</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
<!-- Dialog Attachment End -->
|
||||||
|
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-layout>
|
||||||
|
<one-date-picker label="Tanggal" :date="sdate" class="mydate" data="0"
|
||||||
|
@change="changeDate"></one-date-picker>
|
||||||
|
<v-text-field class="flex ma-1" label="" placeholder="No Reg / Nama" single-line solo hide-details
|
||||||
|
v-model="search" @keyup.native="keySearch"></v-text-field>
|
||||||
|
<v-autocomplete v-model="company" :items="companies" :loading="loading_company"
|
||||||
|
:search-input.sync="search_company" class="ma-1 ml-1 mr-1" hide-no-data filled
|
||||||
|
item-text="M_CompanyName" item-value="M_CompanyID" label="" placeholder="Cari Kelompok Pelanggan"
|
||||||
|
return-object></v-autocomplete>
|
||||||
|
<v-select :items="groups" class="ma-1" v-model="selected_group" item-text="group_name"
|
||||||
|
item-value="group_id" label="Grup Pemeriksaan" return-object solo hide-details clearable></v-select>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs2>
|
||||||
|
<v-layout>
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="success" @click="searchs">
|
||||||
|
<span class="icon-search"><span>
|
||||||
|
</v-btn>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="fpp" color="blue darken-1" @click="openFPP()" dark>
|
||||||
|
FPP
|
||||||
|
</v-btn>
|
||||||
|
<!--<span class="one-fpp-viewer-v2" :data-header-id="selected_patient.T_OrderHeaderID"></span>-->
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<!-- <p>
|
||||||
|
sasas {{ selected_patient.Itf }}
|
||||||
|
</p> -->
|
||||||
|
|
||||||
|
<!-- BARCODE GABUNG START -->
|
||||||
|
<v-flex xs1 mr-1 v-if="selected_patient.Itf !== '' && Object.keys(selected_patient).length > 0">
|
||||||
|
<v-btn style="right:10px;padding: 24px;" v-if="selected_patient.Itf !== ''"
|
||||||
|
@click="importInterface(selected_patient.BrnListBarcode)" color="primary" dark>Import Interface</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
<!-- BARCODE GABUNG END -->
|
||||||
|
|
||||||
|
<v-flex xs6 class="text-xs-right">
|
||||||
|
|
||||||
|
<!-- UPLOAD START -->
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="red" @click="openDialogUpload()" dark
|
||||||
|
title="Upload Lampiran">
|
||||||
|
<v-icon>cloud_upload</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
<!-- UPLOAD END -->
|
||||||
|
|
||||||
|
<!-- button attachment show START -->
|
||||||
|
<v-btn small color="purple lighten-1" class="one-btn-icon white--text ma-1"
|
||||||
|
@click="openAttachment(fileLab)" title="Lampiran Lab">
|
||||||
|
<v-icon>colorize</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<!-- <v-btn v-show="btn_attachment_show" small color="pink lighten-1"
|
||||||
|
class="one-btn-icon white--text ma-1" @click="openAttachment(fileNonLab)"
|
||||||
|
title="Lampiran Non Lab">
|
||||||
|
<v-icon>content_paste</v-icon>
|
||||||
|
</v-btn> -->
|
||||||
|
<!-- button attachment show END -->
|
||||||
|
|
||||||
|
<v-btn v-show="false" v-for="(lang, n) in langs" v-bind:key="n" color="grey lighten-1"
|
||||||
|
class="one-btn-icon pl-2 pr-2 ml-0 mr-1" depressed :outline="!lang_selected(lang)"
|
||||||
|
@click="lang_change(lang)">
|
||||||
|
<img :src="'../../../libs/image/' + img_lang_2(lang.code, lang.is_si)" height="40" alt="" />
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn v-if="show_re_age" class="btn-search one-btn-icon ma-1" color="brown" @click="re_calc_age" dark>
|
||||||
|
Re. Age
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn v-show="!info_req_perfect" class="btn-search one-btn-icon ma-1" color="red" @click="info" dark>
|
||||||
|
<v-icon>info</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn class="btn-search one-btn-icon ma-1" color="red" @click="note" dark>
|
||||||
|
<v-icon>library_books</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn color="blue-grey" class="white--text ma-1" @click="histories" v-show="btn_history_show">
|
||||||
|
Histori
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
|
<v-btn color="green" class="white--text ma-1" @click="save_result">
|
||||||
|
Simpan
|
||||||
|
<v-icon right dark>save_alt</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.mydate {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-search {
|
||||||
|
font-size: 1.5em
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
components: {
|
||||||
|
'one-date-picker': httpVueLoader('./oneDatePicker.vue')
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
search_company: '',
|
||||||
|
url_pdf: '',
|
||||||
|
import_interface: "",
|
||||||
|
|
||||||
|
// ATTACHMENT START
|
||||||
|
url_file_attachment: '',
|
||||||
|
extension_lab: '',
|
||||||
|
extension_non_lab: '',
|
||||||
|
// ATTACHMENT END
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
search_company(n, o) {
|
||||||
|
this.$store.dispatch('company/search', n)
|
||||||
|
},
|
||||||
|
selected_patient(n, o) {
|
||||||
|
setTimeout(() => {
|
||||||
|
oneFppViewerV2Render();
|
||||||
|
}, 500);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
// ATTACHMENT DIALOG START
|
||||||
|
dialog_attachment: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_attachment;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_attachment", val)
|
||||||
|
console.log('attachment')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fileLab() {
|
||||||
|
// if (!this.selected_patient) return false
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return "-";
|
||||||
|
} else {
|
||||||
|
return this.$store.state.re_px.obj_attachment.lab_type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fileNonLab() {
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return "-";
|
||||||
|
} else {
|
||||||
|
return this.$store.state.re_px.obj_attachment.non_lab_type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
btn_attachment_show() {
|
||||||
|
// if (_.isEmpty(this.$store.state.re_px.obj_attachment)) return false
|
||||||
|
if (_.isEmpty(this.$store.state.re_px.obj_attachment)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if (this.$store.state.re_px.obj_attachment.lab_url === "-" ||
|
||||||
|
this.$store.state.re_px.obj_attachment.non_lab_url === "-") {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// ATTACHMENT DIALOG END
|
||||||
|
|
||||||
|
// BARCODE DIALOG START
|
||||||
|
dialog_barcode_list: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_barcode_list;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_barcode_list", val)
|
||||||
|
console.log('BARCODE LIST')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// BARCODE DIALOG END
|
||||||
|
dialog_fpp: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_px.dialog_fpp;
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_px/update_dialog_fpp", val)
|
||||||
|
console.log('FPP')
|
||||||
|
console.log(val)
|
||||||
|
//this.searchPatient()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
show_re_age() {
|
||||||
|
return this.$store.state.re_patient.selected_patient.T_OrderHeaderAddOnRequestChangeDOB == 'Y'
|
||||||
|
},
|
||||||
|
fpp() {
|
||||||
|
return this.$store.state.re_px.fpp
|
||||||
|
},
|
||||||
|
company: {
|
||||||
|
get() { return this.$store.state.company.company },
|
||||||
|
set(v) { this.$store.commit('company/update_company', v) }
|
||||||
|
},
|
||||||
|
companies() {
|
||||||
|
return this.$store.state.company.companies
|
||||||
|
},
|
||||||
|
loading_company() {
|
||||||
|
return this.$store.state.company.loading
|
||||||
|
},
|
||||||
|
nolab: {
|
||||||
|
get() { return this.$store.state.re_patient.nolab },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_nolab', v) }
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
get() { return this.$store.state.re_patient.search },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_search', v) }
|
||||||
|
},
|
||||||
|
groups() {
|
||||||
|
return this.$store.state.re_px.groups
|
||||||
|
},
|
||||||
|
selected_group: {
|
||||||
|
get() { return this.$store.state.re_px.selected_group },
|
||||||
|
set(v) {
|
||||||
|
this.$store.commit('re_px/update_selected_group', v)
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
lang() {
|
||||||
|
return this.$store.state.re_patient.selected_patient.M_LangCode
|
||||||
|
},
|
||||||
|
|
||||||
|
img_lang() {
|
||||||
|
if (this.lang == "ID")
|
||||||
|
return "inako.png"
|
||||||
|
// return "flag-ina_48.png"
|
||||||
|
else if (this.lang == "EN")
|
||||||
|
return "engko.png"
|
||||||
|
// return "flag-us_48.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
langs() {
|
||||||
|
return this.$store.state.re_patient.langs
|
||||||
|
},
|
||||||
|
|
||||||
|
sdate: {
|
||||||
|
get() { return this.$store.state.re_patient.s_date },
|
||||||
|
set(v) { this.$store.commit('re_patient/update_sdate', v) }
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_patient() {
|
||||||
|
return this.$store.state.re_patient.selected_patient
|
||||||
|
},
|
||||||
|
|
||||||
|
btn_history_show() {
|
||||||
|
if (!this.selected_patient) return false
|
||||||
|
if (!this.selected_patient.is_history) return false
|
||||||
|
if (this.selected_patient.is_history == "N") return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
|
||||||
|
info_req_perfect() {
|
||||||
|
let x = false
|
||||||
|
try {
|
||||||
|
x = this.$store.state.re_patient.info_req.is_perfect == 'Y';
|
||||||
|
} catch (error) {
|
||||||
|
}
|
||||||
|
|
||||||
|
return x
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// ATTACHMENT METHODS START
|
||||||
|
openAttachment(attachmentType) {
|
||||||
|
// this.extension_lab = ""
|
||||||
|
// this.extension_non_lab = ""
|
||||||
|
// this.url_file_attachment = ""
|
||||||
|
var file_url = "";
|
||||||
|
|
||||||
|
if (attachmentType === this.$store.state.re_px.obj_attachment.non_lab_type) {
|
||||||
|
file_url = this.$store.state.re_px.obj_attachment.non_lab_url
|
||||||
|
this.extension_non_lab = this.$store.state.re_px.obj_attachment.extension_non_lab
|
||||||
|
} else {
|
||||||
|
file_url = this.$store.state.re_px.obj_attachment.lab_url
|
||||||
|
this.extension_lab = this.$store.state.re_px.obj_attachment.extension_lab
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(file_url)
|
||||||
|
var url_pdf = window.location.protocol + '//' + window.location.host + file_url
|
||||||
|
console.log(url_pdf)
|
||||||
|
// window.open(url_pdf, '_blank').focus();
|
||||||
|
this.url_file_attachment = url_pdf
|
||||||
|
this.dialog_attachment = true
|
||||||
|
},
|
||||||
|
closeDialogAttachment() {
|
||||||
|
this.extension_lab = ""
|
||||||
|
this.extension_non_lab = ""
|
||||||
|
this.url_file_attachment = ""
|
||||||
|
this.dialog_attachment = false
|
||||||
|
},
|
||||||
|
// ATTACHMENT METHODS END
|
||||||
|
|
||||||
|
// UPLOAD FILE DIALOG START
|
||||||
|
openDialogUpload() {
|
||||||
|
this.$store.commit('re_px/update_dialog_upload_file', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
// BARCODE LIST START
|
||||||
|
importInterface(itfNoRegParam) {
|
||||||
|
console.log(itfNoRegParam)
|
||||||
|
if (itfNoRegParam != "") {
|
||||||
|
this.import_interface = itfNoRegParam
|
||||||
|
this.$store.dispatch("re_px/importInterface", {
|
||||||
|
ItfNoReg: this.import_interface
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openFPP() {
|
||||||
|
var file_url = this.$store.state.re_px.fpp
|
||||||
|
console.log(file_url)
|
||||||
|
var url_pdf = window.location.protocol + '//' + window.location.host + "/one-api/mockup/brn/brnlist/get_pdf_v2" + file_url
|
||||||
|
// window.open(url_pdf, '_blank').focus();
|
||||||
|
this.url_pdf = url_pdf
|
||||||
|
this.dialog_fpp = true
|
||||||
|
//window.open("/one-api/mockup/brn/br
|
||||||
|
//this.$store.dispatch("patient/openpdf",{url:pdf_url})
|
||||||
|
},
|
||||||
|
searchs() {
|
||||||
|
this.$store.dispatch('re_patient/search')
|
||||||
|
},
|
||||||
|
async re_calc_age() {
|
||||||
|
|
||||||
|
let orderID = this.$store.state.re_patient.selected_patient.T_OrderHeaderID
|
||||||
|
await this.$store.dispatch('helper/calc_age', orderID)
|
||||||
|
},
|
||||||
|
keySearch(e) {
|
||||||
|
if (e.which == 13) {
|
||||||
|
this.searchs()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
search_px() {
|
||||||
|
this.$store.dispatch('re_px/search')
|
||||||
|
},
|
||||||
|
|
||||||
|
save_result() {
|
||||||
|
this.$store.dispatch('re_px/save')
|
||||||
|
},
|
||||||
|
|
||||||
|
histories() {
|
||||||
|
this.$store.dispatch('re_history/history')
|
||||||
|
this.$store.commit('re_history/update_dialog_history', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
img_lang_2(lang, si) {
|
||||||
|
|
||||||
|
if (lang == "ID" && si == "N")
|
||||||
|
return "inako.png"
|
||||||
|
if (lang == "ID" && si == "Y")
|
||||||
|
return "inasi.png"
|
||||||
|
if (lang == "EN" && si == "N")
|
||||||
|
return "engko.png"
|
||||||
|
if (lang == "EN" && si == "Y")
|
||||||
|
return "engsi.png"
|
||||||
|
},
|
||||||
|
|
||||||
|
lang_change(lang) {
|
||||||
|
this.$store.commit('re_patient/update_lang', lang)
|
||||||
|
this.$store.dispatch('re_px/lang_export')
|
||||||
|
},
|
||||||
|
|
||||||
|
lang_selected(lang) {
|
||||||
|
if (lang.code == this.$store.state.re_patient.lang_code)
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
},
|
||||||
|
|
||||||
|
changeDate(x) {
|
||||||
|
this.sdate = x.new_date
|
||||||
|
this.searchs()
|
||||||
|
},
|
||||||
|
|
||||||
|
note() {
|
||||||
|
this.$store.commit('re_patient/update_dialog_note', true)
|
||||||
|
},
|
||||||
|
|
||||||
|
info() {
|
||||||
|
this.$store.commit('re_patient/update_dialog_req', true)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$store.dispatch('re_px/search_group')
|
||||||
|
console.log(this.$store.state.re_patient.selected_patient)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog
|
||||||
|
v-model="dialog"
|
||||||
|
max-width="500px"
|
||||||
|
>
|
||||||
|
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data () {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
dialog : {
|
||||||
|
get () { return this.$store.state.re_patient.dialog_note },
|
||||||
|
set (v) { this.$store.commit('re_patient/update_dialog_note', v) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout class="fill-height" column>
|
||||||
|
<v-card class="grow">
|
||||||
|
<v-subheader>
|
||||||
|
<h3 class="title">DAFTAR PASIEN</h3>
|
||||||
|
</v-subheader>
|
||||||
|
<hr style="border-top:0px solid #c8c8c8;" />
|
||||||
|
<v-data-table
|
||||||
|
:headers="headers" :items="patients"
|
||||||
|
:loading="isLoading"
|
||||||
|
hide-actions class="xelevation-1">
|
||||||
|
<template slot="items" slot-scope="props">
|
||||||
|
<td class="text-xs-left pa-2"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.T_OrderHeaderLabNumber }}
|
||||||
|
</td>
|
||||||
|
<td class="text-xs-left pa-2"
|
||||||
|
@click="select(props.item)">
|
||||||
|
{{ props.item.M_PatientName }}
|
||||||
|
</td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</v-data-table>
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.searchbox .v-input.v-text-field .v-input__slot{
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
.searchbox .v-btn {
|
||||||
|
min-height:60px;
|
||||||
|
}
|
||||||
|
table.v-table tbody td,table.v-table tbody th {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.v-table thead tr {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
query: "",
|
||||||
|
items: [],
|
||||||
|
headers: [
|
||||||
|
{
|
||||||
|
text: "NO LAB",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "20%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "NAMA",
|
||||||
|
align: "left",
|
||||||
|
sortable: false,
|
||||||
|
value: "mr",
|
||||||
|
width: "15%",
|
||||||
|
class: "pa-2 green lighten-3 white--text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
isLoading: false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods : {
|
||||||
|
oneMoment : function(d) {
|
||||||
|
return window.oneMoment(d)
|
||||||
|
},
|
||||||
|
|
||||||
|
select (item) {
|
||||||
|
// this.$store.commit('ver_verification/update_selected_sent_sample', item)
|
||||||
|
},
|
||||||
|
|
||||||
|
remove (item) {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed : {
|
||||||
|
patients () {
|
||||||
|
return this.$store.state.re_patient.patients
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_cytologi" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">CYTOLOGI</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout wrap>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_cytologi = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Cytologi" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_cytologi/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_cytologi.onprocess
|
||||||
|
},
|
||||||
|
dialog_cytologi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.dialog_cytologi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_dialog_cytologi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_cytologi.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_cytologi.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_cytologi/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
saveResult_Cytologi(){
|
||||||
|
|
||||||
|
//this.$store.dispatch("re_cytologi/saveresult_cytologi",{results:this.results})
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_cytologi/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_cytologi/saveresult_cytologi",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_fna" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">FNA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex xs9>
|
||||||
|
<input type="file" id="files" ref="files" multiple v-on:change="handleFileUploads()"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<p v-if="error_image" class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 2 foto ya</p>
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout v-if="images.length > 0 && !show_progrees_upload" align-center row>
|
||||||
|
|
||||||
|
<v-flex v-for="image in images" xs6 pa-2>
|
||||||
|
<v-img :src="image.image_url">
|
||||||
|
<div class="fill-height bottom-gradient"></div>
|
||||||
|
</v-img>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_fna = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Fna" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_fna.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_fna.onprocess
|
||||||
|
},
|
||||||
|
dialog_fna: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.dialog_fna
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_dialog_fna", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_fna.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(){
|
||||||
|
this.files = this.$refs.files.files;
|
||||||
|
},
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
let formData = new FormData()
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length > 1){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_fna/uploadimage",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.error_image = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult_Fna(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_fna/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_fna/saveresult_fna",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_fna" persistent max-width="40%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">FNA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout v-for="result in results" mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex xs9>
|
||||||
|
<input type="file" id="files" ref="files" multiple v-on:change="handleFileUploads()"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="blue lighten-1" @click="submitFiles()">Upload</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<p v-if="error_image" class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 2 foto ya</p>
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout v-if="images.length > 0 && !show_progrees_upload" align-center row>
|
||||||
|
|
||||||
|
<v-flex v-for="image in images" xs6 pa-2>
|
||||||
|
<v-img :src="image.image_url">
|
||||||
|
<div class="fill-height bottom-gradient"></div>
|
||||||
|
</v-img>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="blue darken-1" flat @click="dialog_fna = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="blue darken-1" @click="saveResult_Fna" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_fna/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_fna.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_fna.onprocess
|
||||||
|
},
|
||||||
|
dialog_fna: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.dialog_fna
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_dialog_fna", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_fna.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_fna.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_fna/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(){
|
||||||
|
this.files = this.$refs.files.files;
|
||||||
|
},
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
let formData = new FormData()
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length === 2){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
this.$store.dispatch("re_fna/uploadimage",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.error_image = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult_Fna(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
this.$store.commit("re_fna/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_fna/saveresult_fna",{doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_lcprep" persistent max-width="75%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="red white--text">
|
||||||
|
<span class="headline">PAP SMEAR (LCPrep)</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
style="font-size:12px"
|
||||||
|
class="mini-select"
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout class="mt-2 mb-2" row>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-card
|
||||||
|
outlined
|
||||||
|
class="mr-1 pa-2"
|
||||||
|
>
|
||||||
|
<v-card-text>
|
||||||
|
<p class="overline mb-0 font-weight-bold">ADEKUASI BAHAN PEMERIKSAAN</p>
|
||||||
|
<v-checkbox v-for="chx_adekuasi in adekuasi"
|
||||||
|
class="mono"
|
||||||
|
v-model="chx_adekuasi.chex"
|
||||||
|
:label="chx_adekuasi.name"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-card
|
||||||
|
outlined
|
||||||
|
class="ml-1 pa-2"
|
||||||
|
>
|
||||||
|
<v-card-text>
|
||||||
|
<p class="overline mb-0 font-weight-bold">KATEGORI UMUM</p>
|
||||||
|
<v-checkbox v-for="chx_kategoriumum in kategoriumum"
|
||||||
|
class="mono"
|
||||||
|
v-model="chx_kategoriumum.chex"
|
||||||
|
:label="chx_kategoriumum.name"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout wrap>
|
||||||
|
<v-flex v-for="(details,idx) in interpretasi" :class="{'xs3':idx===0,'xs7 pl-1':idx===1,'xs2 pl-1':idx===2}">
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-card>
|
||||||
|
<v-card-title color="warning" class="purple white--text">
|
||||||
|
<h5 class="subheader overline font-weight-bold">{{details.group_name}}</h5>
|
||||||
|
</v-card-title>
|
||||||
|
<v-list
|
||||||
|
dense
|
||||||
|
subheader
|
||||||
|
single-line
|
||||||
|
v-for="(subgroups,idxx) in details.subgroups" :key="details.id"
|
||||||
|
>
|
||||||
|
<v-subheader class="font-weight-black">{{subgroups.subgroup_name}}</v-subheader>
|
||||||
|
<v-list-tile v-if="subgroups.childs.length > 0" v-for="(childs,idxxx) in subgroups.childs" :key="childs.id" >
|
||||||
|
<div v-if="childs.has_result === 'Y' && childs.type_result === 'CHECK'"
|
||||||
|
:class="{'pl-0':childs.code.length === 2,'pl-4':childs.code.length === 4}"
|
||||||
|
>
|
||||||
|
<v-list-tile-action class="mb-2 mono">
|
||||||
|
<v-checkbox
|
||||||
|
v-model="childs.chex"
|
||||||
|
:label="childs.name"
|
||||||
|
:disabled="childs.is_parent === 'Y'"
|
||||||
|
@change="changeChildsChex(childs,idxxx,idxx,idx)"
|
||||||
|
hide-details
|
||||||
|
></v-checkbox>
|
||||||
|
</v-list-tile-action>
|
||||||
|
</div>
|
||||||
|
<div v-if="childs.has_result === 'Y' && childs.type_result === 'TEXT'">
|
||||||
|
<v-list-tile-action class="mb-2 pl-0 mono">
|
||||||
|
<v-text-field
|
||||||
|
label=""
|
||||||
|
single-line
|
||||||
|
v-model="childs.value"
|
||||||
|
></v-text-field>
|
||||||
|
</v-list-tile-action>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</v-list>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mb-2 mt-2" column >
|
||||||
|
<v-card>
|
||||||
|
<v-card-title color="warning" class="purple white--text">
|
||||||
|
<h5 class="subheader overline font-weight-bold">HASIL AKHIR</h5>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pa-2">
|
||||||
|
<v-layout v-for="result in results" mt-2 mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_lcprep = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Lcprep" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
.v-input.lcprep .v-label {
|
||||||
|
height: 20px!important;
|
||||||
|
line-height: 25px!important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_lcprep/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_lcprep.onprocess
|
||||||
|
},
|
||||||
|
dialog_lcprep: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.dialog_lcprep
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_dialog_lcprep", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
adekuasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.adekuasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_adekuasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
kategoriumum: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.kategoriumum
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_kategoriumum", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
interpretasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.interpretasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_interpretasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_lcprep.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_lcprep.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_lcprep/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeChildsChex(childs,idxxx,idxx,idx){
|
||||||
|
let interpretasi = this.interpretasi
|
||||||
|
var parent_id = interpretasi[idx].subgroups[idxx].childs[idxxx].parent_id
|
||||||
|
if(parent_id !== '0'){
|
||||||
|
let childs = interpretasi[idx].subgroups[idxx].childs
|
||||||
|
let index_parent = _.findIndex(childs, function(o) { return o.id === parent_id })
|
||||||
|
if(childs.chex)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let xfilter = _.filter(childs, { 'chex': true, 'parent_id': parent_id })
|
||||||
|
if(xfilter.length === 0)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = false
|
||||||
|
else
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.interpretasi = interpretasi
|
||||||
|
},
|
||||||
|
saveResult_Lcprep(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor.id == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_lcprep/update_onprocess", true)
|
||||||
|
let selected_lcprep = this.$store.state.re_lcprep.selected_lcprep
|
||||||
|
var prm = {
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
order_id:selected_lcprep.order_id,
|
||||||
|
detail_id:selected_lcprep.id,
|
||||||
|
results:this.results,
|
||||||
|
interpretasi:this.interpretasi,
|
||||||
|
kategoriumum:this.kategoriumum,
|
||||||
|
adekuasi:this.adekuasi
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_lcprep/saveresult_lcprep",prm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,362 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_mikro" persistent max-width="50%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="teal white--text">
|
||||||
|
<span class="headline">Mikro</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-0" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
item-text="value"
|
||||||
|
return-object
|
||||||
|
class="mini-select"
|
||||||
|
:items="result_values"
|
||||||
|
v-model="selected_result_value"
|
||||||
|
label="Pilih Hasil"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_hasil" class="error pt-1 pl-2 pr-2" style="color:#fff">Hasilnya apa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mb-0" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
class="mini-select"
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
label="Pilih Dokter"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pt-1 pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6 v-if="selected_result_value.id === 'Positif'" pa-2 pb-0>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
:items="bacteries"
|
||||||
|
v-model="selected_bacteria"
|
||||||
|
label="Pilih Bakteri"
|
||||||
|
outline
|
||||||
|
hide-details
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_bacteria" class="error pt-1 pl-2 pr-2" style="color:#fff">Bakterinya ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'other'" class="pl-2 pr-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
label="Hasil Lainnya"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="results.result_other"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
<p v-if="error_result_other" class="error pt-1 pl-2 pr-2" style="color:#fff">Hasil Lainnya : harus diisi</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'Positif'" class="mb-2" row>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-text-field
|
||||||
|
label="Hasil Biakan"
|
||||||
|
outline
|
||||||
|
v-model="results.hasil_biakan"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6 pa-2 pb-0>
|
||||||
|
<v-text-field
|
||||||
|
label="Jenis Bahan"
|
||||||
|
outline
|
||||||
|
v-model="results.sample_name"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="selected_result_value.id === 'Positif'" class="mb-2" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<table style="width:100%;border-collapse: collapse;" class="table_antibiotics">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="5%" style="padding: 8px;border: 1px solid black;" rowspan="2">No.</th>
|
||||||
|
<th width="22%" style="padding: 8px;border: 1px solid black;" rowspan="2">Jenis Obat</th>
|
||||||
|
<th style="padding: 8px;border: 1px solid black;" colspan="3">Standart</th>
|
||||||
|
<th width="10%" style="padding: 8px;border: 1px solid black;" rowspan="2">Test</th>
|
||||||
|
<th width="23%" style="padding: 8px;border: 1px solid black;" rowspan="2">Keterangan</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;">R <</th>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;"> =< I = </th>
|
||||||
|
<th width="12%" style="padding: 8px;border: 1px solid black;">S >=</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr style="border: 1px solid black;"
|
||||||
|
v-for="detail in results.details"
|
||||||
|
>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.xno}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;">{{detail.T_AntibioticName}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteR}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteI}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">{{detail.T_AntibioticNoteS}}</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;">
|
||||||
|
<v-text-field
|
||||||
|
single-line
|
||||||
|
v-model="detail.value"
|
||||||
|
@change="changeValue(detail,detail.value)"
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</td>
|
||||||
|
<td style="border: 1px solid black;padding: 8px;text-align:center">
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_r === 'Y'" color="teal" dark small>R</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_r === 'N'" color="red" dark small>R</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_i === 'Y'" color="teal" dark small>I</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_i === 'N'" color="red" dark small>I</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_s === 'Y'" color="teal" dark small>S</v-btn>
|
||||||
|
<v-btn style="min-width:30px" v-if="detail.chx_s === 'N'" color="red" dark small>S</v-btn>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="grey darken-1" flat @click="dialog_mikro = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Mikro" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
<style scoped>
|
||||||
|
table.table_antibiotics {
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody td, table.table_antibiotics tbody th {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table_antibiotics tbody tr:nth-child(even) {
|
||||||
|
background-color: #dddddd;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_mikro/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_bacteria:false,
|
||||||
|
error_hasil:false,
|
||||||
|
error_result_other:false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_mikro.onprocess
|
||||||
|
},
|
||||||
|
disable_save(){
|
||||||
|
return this.$store.state.re_mikro.disable_save
|
||||||
|
},
|
||||||
|
selected_result_value: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_result_value
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_result_value", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
result_values(){
|
||||||
|
return this.$store.state.re_mikro.result_values
|
||||||
|
},
|
||||||
|
bacteries(){
|
||||||
|
return this.$store.state.re_mikro.bacteries
|
||||||
|
},
|
||||||
|
selected_bacteria: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_bacteria
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_bacteria", val)
|
||||||
|
this.$store.dispatch("re_mikro/getantibiotics", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dialog_mikro: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.dialog_mikro
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_dialog_mikro", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hasil_biakan: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.hasil_biakan
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_hasil_biakan", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
result_other: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.result_other
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_result_other", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sample_name: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.sample_name
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_sample_name", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
interpretasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.interpretasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_interpretasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_mikro.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_mikro.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_mikro/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeValue(detail,value){
|
||||||
|
let antibiotics = this.results.details
|
||||||
|
let idx = _.findIndex(antibiotics, function(o) { return o.T_AntibioticID === detail.T_AntibioticID })
|
||||||
|
console.log(antibiotics[idx])
|
||||||
|
antibiotics[idx].value = value
|
||||||
|
antibiotics[idx].chx_r = 'N'
|
||||||
|
antibiotics[idx].chx_s = 'N'
|
||||||
|
antibiotics[idx].chx_i = 'N'
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveR === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueR) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveR === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueR)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveR === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueR) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveR === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueR))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_r = 'Y'
|
||||||
|
antibiotics[idx].note = 'R'
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveS === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueS) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveS === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueS)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveS === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueS) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveS === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueS))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_s = 'Y'
|
||||||
|
antibiotics[idx].note = 'S'
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
((detail.T_AntibioticMinInclusiveI === 'N' && parseFloat(antibiotics[idx].value) > detail.T_AntibioticMinValueI) ||
|
||||||
|
(detail.T_AntibioticMinInclusiveI === 'Y' && parseFloat(antibiotics[idx].value) >= detail.T_AntibioticMinValueI)) &&
|
||||||
|
((detail.T_AntibioticMaxInclusiveI === 'N' && parseFloat(antibiotics[idx].value) < detail.T_AntibioticMaxValueI) ||
|
||||||
|
(detail.T_AntibioticMaxInclusiveI === 'Y' && parseFloat(antibiotics[idx].value) <= detail.T_AntibioticMaxValueI))
|
||||||
|
){
|
||||||
|
antibiotics[idx].chx_i = 'Y'
|
||||||
|
antibiotics[idx].note = 'I'
|
||||||
|
}
|
||||||
|
|
||||||
|
this.results.details = antibiotics
|
||||||
|
},
|
||||||
|
getAntibiotics(){
|
||||||
|
console.log(this.selected_bacteria)
|
||||||
|
var prm = this.selected_bacteria
|
||||||
|
this.$store.dispatch("re_mikro/getantibiotics", prm)
|
||||||
|
},
|
||||||
|
changeChildsChex(childs,idxxx,idxx,idx){
|
||||||
|
let interpretasi = this.interpretasi
|
||||||
|
var parent_id = interpretasi[idx].subgroups[idxx].childs[idxxx].parent_id
|
||||||
|
if(parent_id !== '0'){
|
||||||
|
let childs = interpretasi[idx].subgroups[idxx].childs
|
||||||
|
let index_parent = _.findIndex(childs, function(o) { return o.id === parent_id })
|
||||||
|
if(childs.chex)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
else
|
||||||
|
{
|
||||||
|
let xfilter = _.filter(childs, { 'chex': true, 'parent_id': parent_id })
|
||||||
|
if(xfilter.length === 0)
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = false
|
||||||
|
else
|
||||||
|
interpretasi[idx].subgroups[idxx].childs[index_parent].chex = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.interpretasi = interpretasi
|
||||||
|
},
|
||||||
|
saveResult_Mikro(){
|
||||||
|
var go_save = true
|
||||||
|
this.$store.commit("re_mikro/update_disable_save", true)
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor.id == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
if(this.selected_result_value.id === 'Positif' && (_.isEmpty(this.selected_bacteria) || this.selected_bacteria.id == '0')){
|
||||||
|
this.error_bacteria = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.selected_result_value.id === 'other' && this.results.result_other === ''){
|
||||||
|
this.error_result_other = true
|
||||||
|
go_save = false
|
||||||
|
}
|
||||||
|
if(go_save){
|
||||||
|
this.$store.commit("re_mikro/update_onprocess", true)
|
||||||
|
let selected_mikro = this.$store.state.re_mikro.selected_mikro
|
||||||
|
var prm = {
|
||||||
|
result_value:this.selected_result_value.id,
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
bacteria:this.selected_bacteria.id,
|
||||||
|
hasil_biakan:this.hasil_biakan,
|
||||||
|
sample_name:this.sample_name,
|
||||||
|
results:this.results
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_mikro/saveresult_mikro",prm)
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_mikro/update_disable_save", false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_papsmear" persistent max-width="50%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title class="red white--text">
|
||||||
|
<span class="headline">PAP SMEAR</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout class="mb-2" row>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-select
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
style="font-size:12px"
|
||||||
|
class="mini-select"
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pt-2 xs4>
|
||||||
|
<v-layout class="pa-2" align-center text-xs-right row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<h3 class="subheading font-weight-bold">Bahan dari :</h3>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout class="mt-2 mb-2" wrap>
|
||||||
|
<v-flex xs8>
|
||||||
|
<v-layout v-for="(check,index) in checks" align-center mb-1 row>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="check.selected === 'N'" @click="changeChecksSelected(check,index)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="check.selected === 'Y'" @click="changeChecksSelected(check,index)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs5 pl-2>
|
||||||
|
<label class="body-2 font-weight-bold mb-0 mono">{{check.name}}</label>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
outline
|
||||||
|
v-model="check.note"
|
||||||
|
:disabled="check.selected === 'N'"
|
||||||
|
@change="changeNote(check,index)"
|
||||||
|
single-line
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pr-4 xs4>
|
||||||
|
<v-layout align-center text-xs-right v-for="(bahan,i) in bahans" align-center mb-1 row>
|
||||||
|
<v-flex xs15 pl-2>
|
||||||
|
<label class="body-2 font-weight-bold mb-0 mono">{{bahan.name}}</label>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<v-btn v-if="bahan.selected === 'N'" @click="changeBahansSelected(bahan,i)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="bahan.selected === 'Y'" @click="changeBahansSelected(bahan,i)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout mt-2 mb-2 align-center row>
|
||||||
|
<v-flex xs3>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
Kategori keganasan :
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex text-xs-right xs9>
|
||||||
|
<span v-for="(category,idx) in categories">
|
||||||
|
<v-btn v-if="category.selected === 'N'" @click="changeCategoriesSelected(category,idx)" small style="min-width:18px"><v-icon small>close</v-icon></v-btn>
|
||||||
|
<v-btn color="teal" dark v-if="category.selected === 'Y'" @click="changeCategoriesSelected(category,idx)" small style="min-width:18px"><v-icon small>check</v-icon></v-btn>
|
||||||
|
<span class="pl-1 pr-2">{{category.name}}</span>
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout mt-2 mb-2 align-center row>
|
||||||
|
<v-flex xs3>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
Index maturasi :
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs1>
|
||||||
|
<span class="subheading font-weight-bold">
|
||||||
|
M.I
|
||||||
|
</span>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex v-for="(mtr,m) in maturasi.value" xs3 pl-2 pt-2 pb-2>
|
||||||
|
<v-text-field
|
||||||
|
v-model="mtr"
|
||||||
|
@change="changeMaturasi(mtr,m)"
|
||||||
|
outline
|
||||||
|
single-line
|
||||||
|
hide-details
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-divider></v-divider>
|
||||||
|
<v-layout v-for="result in results" mt-2 mb-2 row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
:label="result.label"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="result.result"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_papsmear = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult_Papsmear" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_papsmear/get_doctors",{token:''})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
dialog_papsmear: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.dialog_papsmear
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_dialog_papsmear", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checks: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.checks
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_checks", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
maturasi: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.maturasi
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_maturasi", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
bahans: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.bahans
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_bahans", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
categories: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.categories
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_categories", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_papsmear.doctors
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_papsmear.onprocess
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_papsmear.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_papsmear/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
saveResult_Papsmear(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.$store.commit("re_papsmear/update_onprocess", true)
|
||||||
|
let selected_papsmear = this.$store.state.re_papsmear.selected_papsmear
|
||||||
|
var prm = {
|
||||||
|
order_id:selected_papsmear.order_id,
|
||||||
|
detail_id:selected_papsmear.id,
|
||||||
|
doctor:this.selected_doctor.id,
|
||||||
|
checks:this.checks,
|
||||||
|
maturasi:this.maturasi,
|
||||||
|
bahans:this.bahans,
|
||||||
|
categories:this.categories,
|
||||||
|
results:this.results
|
||||||
|
}
|
||||||
|
this.$store.dispatch("re_papsmear/saveresult_papsmear",prm)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeChecksSelected(value,idx){
|
||||||
|
let checks = this.$store.state.re_papsmear.checks
|
||||||
|
checks[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
if(checks[idx].selected === 'N')
|
||||||
|
checks[idx].note = ''
|
||||||
|
this.checks = checks
|
||||||
|
},
|
||||||
|
changeNote(value,idx){
|
||||||
|
let checks = this.$store.state.re_papsmear.checks
|
||||||
|
checks[idx].note = value.note
|
||||||
|
this.checks = checks
|
||||||
|
},
|
||||||
|
changeCategoriesSelected(value,idx){
|
||||||
|
let categories = this.$store.state.re_papsmear.categories
|
||||||
|
categories[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
this.categories = categories
|
||||||
|
},
|
||||||
|
changeBahansSelected(value,idx){
|
||||||
|
let bahans = this.$store.state.re_papsmear.bahans
|
||||||
|
bahans[idx].selected = value.selected === 'N'?'Y':'N'
|
||||||
|
this.bahans = bahans
|
||||||
|
},
|
||||||
|
changeMaturasi(value,idx){
|
||||||
|
let mx = this.$store.state.re_papsmear.maturasi
|
||||||
|
mx.value[idx] = value
|
||||||
|
this.maturasi = mx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,337 @@
|
|||||||
|
<template>
|
||||||
|
<v-layout row justify-center>
|
||||||
|
<v-dialog v-model="dialog_preparasisperma" persistent max-width="70%">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>
|
||||||
|
<span class="headline">PREPARASI SPERMA</span>
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-layout mb-3 row>
|
||||||
|
<v-flex pl-0 xs4>
|
||||||
|
<v-select
|
||||||
|
class="mini-select"
|
||||||
|
item-text="name"
|
||||||
|
return-object
|
||||||
|
outline
|
||||||
|
:items="doctors"
|
||||||
|
v-model="selected_doctor"
|
||||||
|
hide-details
|
||||||
|
label="Dokter"
|
||||||
|
></v-select>
|
||||||
|
<p v-if="error_doctor" class="error pl-2 pr-2" style="color:#fff">Dokternya siapa ? jangan lupa ya ...</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex class="font-weight-bold" xs12>Pre Preparasi</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Motilitas</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasA"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Non Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasB"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Immotile"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreMotilitasC"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Konsentrasi</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Konsentrasi"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreKonsentrasi"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Kontaminan</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Kontaminan"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPreKontaminan"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-layout mb-2 row>
|
||||||
|
<v-flex class="font-weight-bold" xs12>Post Preparasi</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Motilitas</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasA"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Non Progresive"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasB"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-1 xs2>
|
||||||
|
<v-text-field
|
||||||
|
label="Immotile"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostMotilitasC"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Konsentrasi</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Konsentrasi"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostKonsentrasi"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs4>Kontaminan</v-flex>
|
||||||
|
<v-flex xs6>
|
||||||
|
<v-text-field
|
||||||
|
label="Kontaminan"
|
||||||
|
outline
|
||||||
|
v-model="results.Other_PreparasiSpermaPostKontaminan"
|
||||||
|
></v-text-field>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-textarea
|
||||||
|
auto-grow
|
||||||
|
label="Keterangan"
|
||||||
|
outline
|
||||||
|
rows="2"
|
||||||
|
v-model="results.Other_PreparasiSpermaNote"
|
||||||
|
hide-details
|
||||||
|
></v-textarea>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-layout mt-1 style="border:1px solid black" align-center row pa-2>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex pt-2 xs9>
|
||||||
|
<input type="file" id="files_pre" ref="prefile" multiple v-on:change="handleFileUploads('PRE')"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload | PRE</v-btn>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="error_image_pre" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<p class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 1 foto ya</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-layout row>
|
||||||
|
<v-flex pt-2 xs9>
|
||||||
|
<input type="file" id="files_post" ref="postfile" multiple v-on:change="handleFileUploads('POST')"/>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex xs3 class="text-xs-right">
|
||||||
|
<v-btn :disabled="show_progrees_upload" small dark color="green lighten-1" @click="submitFiles()">Upload | POST</v-btn>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
<v-layout v-if="error_image_post" row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<p class="mt-1 error pl-2 pr-2" style="color:#fff">Pilih 1 foto ya</p>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
<v-layout v-if="show_progrees_upload" row align-center>
|
||||||
|
<v-flex xs12>
|
||||||
|
|
||||||
|
<v-progress-linear :indeterminate="true"></v-progress-linear>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-card class="mt-1">
|
||||||
|
<v-layout align-center row>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-card>
|
||||||
|
<v-layout align-center justify-center row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-img v-if="pre_image.image_url" :src="pre_image.image_url" aspect-ratio="1"></v-img>
|
||||||
|
<div v-if="!pre_image.image_url" class="display-2 text-xs-center ma-3">PRE IMAGE</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex pa-2 xs6>
|
||||||
|
<v-card>
|
||||||
|
<v-layout align-center justify-center row>
|
||||||
|
<v-flex xs12>
|
||||||
|
<v-img v-if="post_image.image_url" :src="post_image.image_url" aspect-ratio="1"></v-img>
|
||||||
|
<div v-if="!post_image.image_url" class="display-2 text-xs-center ma-3">POST IMAGE</div>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
</v-card>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
<v-btn color="green darken-1" flat @click="dialog_preparasisperma = false">Tutup</v-btn>
|
||||||
|
<v-btn v-if="!onprocess" color="green darken-1" @click="saveResult" flat >Simpan</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-layout>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
module.exports = {
|
||||||
|
mounted() {
|
||||||
|
//this.$store.dispatch("re_preparasisperma/get_doctors",{token:''})
|
||||||
|
this.files = ''
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
error_doctor:false,
|
||||||
|
error_image_pre:false,
|
||||||
|
error_image_post:false,
|
||||||
|
type_image:'PRE'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
pre_image(){
|
||||||
|
return this.$store.state.re_preparasisperma.pre_image
|
||||||
|
},
|
||||||
|
post_image(){
|
||||||
|
return this.$store.state.re_preparasisperma.post_image
|
||||||
|
},
|
||||||
|
show_progrees_upload: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.show_progrees_upload
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_show_progrees_upload", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
images(){
|
||||||
|
return this.$store.state.re_preparasisperma.images
|
||||||
|
},
|
||||||
|
onprocess(){
|
||||||
|
return this.$store.state.re_preparasisperma.onprocess
|
||||||
|
},
|
||||||
|
dialog_preparasisperma: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.dialog_preparasisperma
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_dialog_preparasisperma", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
results: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.results
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_results", val)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doctors(){
|
||||||
|
return this.$store.state.re_preparasisperma.doctors
|
||||||
|
},
|
||||||
|
selected_doctor: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.re_preparasisperma.selected_doctor
|
||||||
|
},
|
||||||
|
set(val) {
|
||||||
|
this.$store.commit("re_preparasisperma/update_selected_doctor", val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleFileUploads(value){
|
||||||
|
if(value === 'PRE'){
|
||||||
|
this.files = this.$refs.prefile.files;
|
||||||
|
//this.$refs.prefile.files = []
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.files = this.$refs.postfile.files;
|
||||||
|
//this.$refs.postfile.files = []
|
||||||
|
}
|
||||||
|
console.log(this.files)
|
||||||
|
this.type_image = value
|
||||||
|
},
|
||||||
|
|
||||||
|
removeFile( key ){
|
||||||
|
this.files.splice( key, 1 );
|
||||||
|
},
|
||||||
|
submitFiles(){
|
||||||
|
this.error_image = false
|
||||||
|
this.error_image_pre = false
|
||||||
|
this.error_image_post = false
|
||||||
|
let formData = new FormData()
|
||||||
|
console.log(this.files)
|
||||||
|
for( var i = 0; i < this.files.length; i++ ){
|
||||||
|
let file = this.files[i];
|
||||||
|
formData.append('files[' + i + ']', file)
|
||||||
|
}
|
||||||
|
if(this.files.length == 1){
|
||||||
|
this.files = []
|
||||||
|
this.show_progrees_upload = true
|
||||||
|
formData.append('orderid', this.$store.state.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
formData.append('labnumber', this.$store.state.re_patient.selected_patient.T_OrderHeaderLabNumber)
|
||||||
|
formData.append('token', one_token())
|
||||||
|
formData.append('type', this.type_image)
|
||||||
|
this.$store.dispatch("re_preparasisperma/uploadimage_preparasi_sperma",formData)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(this.type_image === 'PRE')
|
||||||
|
this.error_image_pre = true
|
||||||
|
else
|
||||||
|
this.error_image_post = true
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveResult(){
|
||||||
|
if(_.isEmpty(this.selected_doctor) || this.selected_doctor == '0'){
|
||||||
|
this.error_doctor = true
|
||||||
|
|
||||||
|
}else
|
||||||
|
var selected_x = this.$store.state.re_preparasisperma.selected_preparasisperma
|
||||||
|
this.$store.commit("re_preparasisperma/update_onprocess", true)
|
||||||
|
this.$store.dispatch("re_preparasisperma/saveresult",{orderdetailid:selected_x.id,doctor:this.selected_doctor.id,results:this.results})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>One</title>
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/google-fonts.css">
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/icomoon-fonts.css">
|
||||||
|
<link rel="stylesheet" href="../../../libs/vendor/css/vuetify.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div v-cloak id="app">
|
||||||
|
<v-app id="smartApp">
|
||||||
|
<one-navbar></one-navbar>
|
||||||
|
<v-content class="green lighten-5">
|
||||||
|
<v-container fluid pt-2 pb-2 pl-1 pr-1 fill-height>
|
||||||
|
<v-layout column fill-height>
|
||||||
|
<v-flex class="fixed-search" class="mb-8">
|
||||||
|
<one-process-re-search-box></one-process-re-search-box>
|
||||||
|
</v-flex>
|
||||||
|
<v-flex fill-height style="position:relative;top:16px" class="mt-6">
|
||||||
|
<v-layout fill-height>
|
||||||
|
<v-flex xs3 pr-1>
|
||||||
|
<one-process-re-patient-list></one-process-re-patient-list>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs9 pl-1 fill-height>
|
||||||
|
<v-layout column fill-height>
|
||||||
|
<v-flex xs12 class="flex-0">
|
||||||
|
<one-process-re-patient-detail></one-process-re-patient-detail>
|
||||||
|
</v-flex>
|
||||||
|
|
||||||
|
<v-flex xs12 pt-2 class="flex-1">
|
||||||
|
<one-process-re-px-list></one-process-re-px-list>
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
|
||||||
|
</v-flex>
|
||||||
|
</v-layout>
|
||||||
|
<v-flex>
|
||||||
|
|
||||||
|
|
||||||
|
</v-layout>
|
||||||
|
</v-container>
|
||||||
|
</v-content>
|
||||||
|
<!-- component dialog upload file start -->
|
||||||
|
<one-process-re-dialog-upload-file></one-process-re-dialog-upload-file>
|
||||||
|
<!-- component dialog upload file end -->
|
||||||
|
|
||||||
|
<!-- component dialog result note row start -->
|
||||||
|
<!-- <one-process-re-dialog-result-note-row></one-process-re-dialog-result-note-row> -->
|
||||||
|
<!-- component dialog result note row end -->
|
||||||
|
|
||||||
|
<one-process-re-dialog-method></one-process-re-dialog-method>
|
||||||
|
<one-process-re-dialog-note></one-process-re-dialog-note>
|
||||||
|
<one-process-re-dialog-req></one-process-re-dialog-req>
|
||||||
|
<one-footer> </one-footer>
|
||||||
|
<one-info></one-info>
|
||||||
|
</v-app>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vendor -->
|
||||||
|
<script src="../../../libs/vendor/axios.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/moment.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/lodash.js"></script>
|
||||||
|
<script src="../../../libs/vendor/moment-locale-id.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vue-the-mask.min.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vue.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vuex.js"></script>
|
||||||
|
<script src="../../../libs/vendor/vuetify.js"></script>
|
||||||
|
<script src="../../../libs/vendor/httpVueLoader.js"></script>
|
||||||
|
<script src="../../../libs/one_global.js"></script>
|
||||||
|
<script src="/react-comp/fpp_viewerv2/main.6924dd64.js"></script>
|
||||||
|
<!-- App Script -->
|
||||||
|
<?php
|
||||||
|
$ts = "?ts=" . Date("ymdhis");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.flex-0 {
|
||||||
|
flex: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-1 {
|
||||||
|
flex: 1 !important;
|
||||||
|
overflow: auto;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-search {
|
||||||
|
position: fixed;
|
||||||
|
top: 68px;
|
||||||
|
left: 4px;
|
||||||
|
right: 4px;
|
||||||
|
z-index: 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-search .v-card {}
|
||||||
|
|
||||||
|
.mt-6 {
|
||||||
|
margin-top: 66px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script type="module">
|
||||||
|
console.log("V18 preparasi sprema")
|
||||||
|
import {
|
||||||
|
store
|
||||||
|
} from './store.js<?php echo $ts ?>';
|
||||||
|
//for testing
|
||||||
|
let ts = '?ts=' + moment().format('YYMMDDhhmmss')
|
||||||
|
window.store = store;
|
||||||
|
Vue.directive('mask', VueTheMask.mask)
|
||||||
|
new Vue({
|
||||||
|
store,
|
||||||
|
el: '#app',
|
||||||
|
components: {
|
||||||
|
'one-navbar': httpVueLoader('../../../apps/components/oneNavbarComponent.vue' + ts),
|
||||||
|
'one-footer': httpVueLoader('../../../apps/components/oneFooter.vue' + ts),
|
||||||
|
'one-process-re-search-box': httpVueLoader('./components/oneProcessReSearchBox.vue' + ts),
|
||||||
|
'one-process-re-patient-list': httpVueLoader('./components/oneProcessRePatientList.vue' + ts),
|
||||||
|
'one-process-re-patient-detail': httpVueLoader('./components/oneProcessRePatientDetail.vue' + ts),
|
||||||
|
'one-process-re-px-list': httpVueLoader('./components/oneProcessRePxList.vue' + ts),
|
||||||
|
'one-process-re-dialog-method': httpVueLoader('./components/oneProcessReDialogMethodChange.vue' + ts),
|
||||||
|
'one-process-re-dialog-note': httpVueLoader('./components/oneProcessReDialogNote.vue' + ts),
|
||||||
|
'one-info': httpVueLoader('./components/oneInfo.vue' + ts),
|
||||||
|
'one-process-re-dialog-req': httpVueLoader('./components/oneProcessReDialogReq.vue' + ts),
|
||||||
|
|
||||||
|
// component untuk upload file
|
||||||
|
'one-process-re-dialog-upload-file': httpVueLoader('./components/oneProcessReDialogUploadFile.vue' + ts),
|
||||||
|
|
||||||
|
// component result note row dialog
|
||||||
|
// 'one-process-re-dialog-result-note-row': httpVueLoader('./components/oneProcessRePxDialogResultNoteRow.vue' + ts),
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tab_active() {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
// store.dispatch('receive_patient/search')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
[v-cloak] {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import * as api from "../api/company.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
loading: false,
|
||||||
|
company: { M_CompanyID : 0 , M_CompanyName : 'All'},
|
||||||
|
companies: [],
|
||||||
|
error: '',
|
||||||
|
token: {}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_loading(state,status) {
|
||||||
|
state.loading= status
|
||||||
|
},
|
||||||
|
update_company(state,status) {
|
||||||
|
state.company= status
|
||||||
|
},
|
||||||
|
update_companies(state,status) {
|
||||||
|
state.companies= status
|
||||||
|
},
|
||||||
|
update_error(state,status) {
|
||||||
|
state.error= status
|
||||||
|
},
|
||||||
|
update_token(state,status) {
|
||||||
|
state.token= status
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search(context,qry) {
|
||||||
|
context.commit("update_loading", true)
|
||||||
|
try {
|
||||||
|
let token = context.state.token
|
||||||
|
if (token.hasOwnProperty("token")) {
|
||||||
|
token.cancel()
|
||||||
|
}
|
||||||
|
token = axios.CancelToken.source()
|
||||||
|
context.commit("update_token",token)
|
||||||
|
|
||||||
|
let resp= await api.search(one_token(),qry, token.token)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_loading", false)
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_loading",false)
|
||||||
|
context.commit("update_error","")
|
||||||
|
context.commit('update_companies',resp.data.data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_loading",false)
|
||||||
|
context.commit("update_error",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/helper.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
loading:false,
|
||||||
|
error:''
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_calc_age_status(state,value) {
|
||||||
|
state.loading= value
|
||||||
|
},
|
||||||
|
update_error(state,value) {
|
||||||
|
state.error= value
|
||||||
|
},
|
||||||
|
update_loading(state,value) {
|
||||||
|
state.loading = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async calc_age(context,orderID) {
|
||||||
|
context.commit("update_loading", true)
|
||||||
|
try {
|
||||||
|
let prm = { orderID }
|
||||||
|
prm["token"] = one_token()
|
||||||
|
let resp = await api.calc_age(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_error", "")
|
||||||
|
let patient = context.rootState.re_patient.selected_patient
|
||||||
|
let dob = resp.data.M_PatientDOB
|
||||||
|
let age = resp.data.T_OrderHeaderM_PatientAge
|
||||||
|
patient.M_PatientDOB = dob
|
||||||
|
patient.T_OrderHeaderM_PatientAge = age
|
||||||
|
context.rootState.commit("re_patient/update_selected_patient", patient)
|
||||||
|
let patients = context.rootState.patients
|
||||||
|
for( let idx =0; idx < patients.length ; idx++) {
|
||||||
|
if (patients[idx].M_PatientID = patient.M_PatientID ) {
|
||||||
|
patients[idx] = patient
|
||||||
|
}
|
||||||
|
}
|
||||||
|
context.rootState.commit('re_patient/update_patients',patients)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_error", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,140 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_cytologi:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_cytologi:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_fna(state,value) {
|
||||||
|
state.selected_fna = value
|
||||||
|
},
|
||||||
|
update_dialog_cytologi(state,value) {
|
||||||
|
state.dialog_cytologi = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_cytologiresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
console.log(prm)
|
||||||
|
prm.token = one_token()
|
||||||
|
console.log("wweee")
|
||||||
|
let resp = await api.getcytologiresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_cytologi", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_cytologi", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_cytologi(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_cytologi(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_cytologi", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_fna:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_fna:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false,
|
||||||
|
images:[],
|
||||||
|
show_progrees_upload:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_show_progrees_upload(state,value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
update_images(state,value) {
|
||||||
|
state.images = value
|
||||||
|
},
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_fna(state,value) {
|
||||||
|
state.selected_fna = value
|
||||||
|
},
|
||||||
|
update_dialog_fna(state,value) {
|
||||||
|
state.dialog_fna = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_fnaresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getfnaresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_images", data.records['images'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_fna(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_fna(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_fna", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async uploadimage(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_images", data.records)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
import * as api from "../api/re_history.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id:0,
|
||||||
|
search_status:0,
|
||||||
|
search_error_message:'',
|
||||||
|
result: [],
|
||||||
|
selected_px:[] ,
|
||||||
|
dates: [],
|
||||||
|
pxs: [],
|
||||||
|
patient_note : "",
|
||||||
|
|
||||||
|
dialog_history: false,
|
||||||
|
selected_tab: 0
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_search_error_message(state,status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
update_search_status(state,status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
update_dates(state, dates) {
|
||||||
|
state.dates= dates
|
||||||
|
},
|
||||||
|
update_result(state, result) {
|
||||||
|
state.result= result
|
||||||
|
},
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs
|
||||||
|
},
|
||||||
|
update_selected_px(state, px) {
|
||||||
|
state.selected_px = px
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_history(state, v) {
|
||||||
|
state.dialog_history = v
|
||||||
|
},
|
||||||
|
|
||||||
|
// patient note
|
||||||
|
update_patient_note(state, v) {
|
||||||
|
state.patient_note= v
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async history(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
context.commit('update_pxs', [])
|
||||||
|
context.commit('update_result', [])
|
||||||
|
context.commit('update_dates', [])
|
||||||
|
let resp= await api.history(one_token(), context.rootState.re_patient.selected_patient.T_OrderHeaderID)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit('update_result', resp.data.result)
|
||||||
|
context.commit('update_selected_px', resp.data.pxs)
|
||||||
|
context.commit('update_pxs', resp.data.pxs)
|
||||||
|
context.commit('update_dates',resp.data.dates)
|
||||||
|
|
||||||
|
// patient note
|
||||||
|
context.commit('update_patient_note',resp.data.patient_note)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_lcprep:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_lcprep:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
adekuasi:[],
|
||||||
|
kategoriumum:[],
|
||||||
|
interpretasi:[],
|
||||||
|
maturasi:[],
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_adekuasi(state,value) {
|
||||||
|
state.adekuasi = value
|
||||||
|
},
|
||||||
|
update_kategoriumum(state,value) {
|
||||||
|
state.kategoriumum = value
|
||||||
|
},
|
||||||
|
update_interpretasi(state,value) {
|
||||||
|
state.interpretasi = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_lcprep(state,value) {
|
||||||
|
state.selected_lcprep = value
|
||||||
|
},
|
||||||
|
update_dialog_lcprep(state,value) {
|
||||||
|
state.dialog_lcprep = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_lcprepresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getlcprepresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_adekuasi", data.records['adekuasi'])
|
||||||
|
context.commit("update_kategoriumum", data.records['kategoriumum'])
|
||||||
|
context.commit("update_interpretasi", data.records['interpretasi'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_lcprep", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_lcprep(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_lcprep(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_lcprep", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_mikro:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
hasil_biakan:'',
|
||||||
|
sample_name:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
result_other:'',
|
||||||
|
selected_mikro:{},
|
||||||
|
results:{xid:'0',orderdetail_id:'0',T_BacteriaID:'0',T_BacteriaName:'',doctor_id:'0',doctor_name:'',details:[]},
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
adekuasi:[],
|
||||||
|
kategoriumum:[],
|
||||||
|
interpretasi:[],
|
||||||
|
maturasi:[],
|
||||||
|
bacteries:[],
|
||||||
|
selected_bacteria:{},
|
||||||
|
result_values:[{id:'Negatif',value:'Negatif'},{id:'Positif',value:'Positif'},{id:'other',value:'Lainnya'}],
|
||||||
|
selected_result_value:{id:'Negatif',value:'Negatif'},
|
||||||
|
disable_save:false,
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_disable_save(state,value) {
|
||||||
|
state.disable_save = value
|
||||||
|
},
|
||||||
|
update_result_other(state,value) {
|
||||||
|
state.result_other = value
|
||||||
|
},
|
||||||
|
update_result_values(state,value) {
|
||||||
|
state.result_values = value
|
||||||
|
},
|
||||||
|
update_selected_result_value(state,value) {
|
||||||
|
state.selected_result_value = value
|
||||||
|
},
|
||||||
|
update_bacteries(state,value) {
|
||||||
|
state.bacteries = value
|
||||||
|
},
|
||||||
|
update_selected_bacteria(state,value) {
|
||||||
|
state.selected_bacteria = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_adekuasi(state,value) {
|
||||||
|
state.adekuasi = value
|
||||||
|
},
|
||||||
|
update_kategoriumum(state,value) {
|
||||||
|
state.kategoriumum = value
|
||||||
|
},
|
||||||
|
update_interpretasi(state,value) {
|
||||||
|
state.interpretasi = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_mikro(state,value) {
|
||||||
|
state.selected_mikro = value
|
||||||
|
},
|
||||||
|
update_dialog_mikro(state,value) {
|
||||||
|
state.dialog_mikro = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_hasil_biakan(state,value) {
|
||||||
|
state.hasil_biakan = value
|
||||||
|
},
|
||||||
|
update_sample_name(state,value) {
|
||||||
|
state.sample_name = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_mikroresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getmikroresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_bacteria",{})
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
// context.commit("update_results", {xid:'0',orderdetail_id:'0',T_BacteriaID:'0',T_BacteriaName:'',doctor_id:'0',doctor_name:'',details:[]})
|
||||||
|
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_bacteries", data.records['bacteries'])
|
||||||
|
|
||||||
|
if(!_.isEmpty(data.records['results'])){
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
var rows = data.records['results']
|
||||||
|
context.commit("update_selected_bacteria",{id:rows['T_BacteriaID'],name:rows['T_BacteriaName']})
|
||||||
|
var selected_doctor = {
|
||||||
|
id:rows['doctor_id'],
|
||||||
|
name:rows['doctor_name']
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
var selected_result_vaue = {
|
||||||
|
id:rows['result_value'],
|
||||||
|
value:rows['result_value']
|
||||||
|
}
|
||||||
|
if(rows['result_value'] === 'other'){
|
||||||
|
selected_result_vaue = {
|
||||||
|
id:'other',
|
||||||
|
value:'Lainnya'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_selected_result_value", selected_result_vaue)
|
||||||
|
}
|
||||||
|
context.commit("update_dialog_mikro", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getantibiotics(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getantibiotics(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
var results = context.state.results
|
||||||
|
results.details = data.records
|
||||||
|
context.commit("update_results", results)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_mikro(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
//context.dispatch("update_disable_save",true)
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_mikro(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_disable_save",false)
|
||||||
|
context.commit("update_dialog_mikro", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_disable_save",false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
import * as api from "../api/re_normal.js"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
error:'',
|
||||||
|
status:0,
|
||||||
|
result: {}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_error(state,status) {
|
||||||
|
state.error = status
|
||||||
|
},
|
||||||
|
update_status(state,status) {
|
||||||
|
state.status= status
|
||||||
|
},
|
||||||
|
update_result(state,status) {
|
||||||
|
state.result= status
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async update(context,order_detail_id) {
|
||||||
|
context.commit("update_error", "")
|
||||||
|
context.commit("update_status", 1)
|
||||||
|
context.commit("update_result", {})
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
let resp= await api.update(one_token(),order_detail_id )
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_status", 3)
|
||||||
|
context.commit("update_error", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_status", 2)
|
||||||
|
context.commit("update_error","")
|
||||||
|
let data = resp.data.records
|
||||||
|
context.commit("update_result", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save(context) {
|
||||||
|
let data = []
|
||||||
|
let x = context.state.pxs
|
||||||
|
let rerun = context.state.selected_rerun
|
||||||
|
for (let i in x) {
|
||||||
|
let y = x[i]
|
||||||
|
if ((y.result != null && y.result != y.result_old) || (y.note != y.note_old)) {
|
||||||
|
let resultInstrumentID = 0
|
||||||
|
if ( y.hasOwnProperty('resultInstrumentID') ) {
|
||||||
|
resultInstrumentID = y.resultInstrumentID
|
||||||
|
}
|
||||||
|
data.push({id:y.id, result:y.result, note:y.note, test_id:y.t_testid, test_name:y.t_testname,
|
||||||
|
resultInstrumentID,
|
||||||
|
order_id:context.state.order_id})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.length < 1) {
|
||||||
|
alert('Tidak ada data yang perlu disimpan !')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp= await api.save(one_token(), ptn.lang_id, ptn.lang_si, JSON.stringify(data))
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_template(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let resp= await api.save_template(one_token(), context.state.selected_px.t_testid, context.state.template_new_value)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit('update_dup_template_error', {status:true, messages:'Value tersebut sudah ada !'})
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit("update_dialog_template_new", false)
|
||||||
|
|
||||||
|
let pxs = context.state.pxs
|
||||||
|
for (let i in pxs) {
|
||||||
|
if (pxs[i].t_testid == context.state.selected_px.t_testid)
|
||||||
|
pxs[i].template = resp.data
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit('update_dup_template_error', {status:false, messages:''})
|
||||||
|
context.commit('update_pxs', {records:pxs, total:context.state.total_px})
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async lang_export(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let sp = context.rootState.re_patient
|
||||||
|
let resp= await api.lang_export(one_token(), sp.selected_patient.T_OrderHeaderID,
|
||||||
|
sp.lang_id, sp.lang_si)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_group(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp= await api.search_group()
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records : resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_groups", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_rerun(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp= await api.search_rerun(context.state.selected_px.id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
context.commit("update_reruns", resp.data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_normal_method.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
nattest_id: 0,
|
||||||
|
|
||||||
|
search_status:0,
|
||||||
|
search_error_message:'',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
methods: [],
|
||||||
|
selected_method: null,
|
||||||
|
normals: [],
|
||||||
|
selected_normal: null,
|
||||||
|
|
||||||
|
dialog_method: false,
|
||||||
|
dialog_normal: false
|
||||||
|
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_search_dialog_is_active(state,status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state,status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state,status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nattest_id(state, id) {
|
||||||
|
state.nattest_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_methods(state, d) {
|
||||||
|
state.methods = d.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_method(state, d) {
|
||||||
|
state.selected_method = d
|
||||||
|
},
|
||||||
|
|
||||||
|
update_normals(state, d) {
|
||||||
|
state.normals = d.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_normal(state, d) {
|
||||||
|
state.selected_normal = d
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_method(state, v) {
|
||||||
|
state.dialog_method = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_normal(state, v) {
|
||||||
|
state.dialog_normal = v
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search_method(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_method(one_token(), context.state.nattest_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records : resp.data.records
|
||||||
|
}
|
||||||
|
context.commit("update_methods", data)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_method(context) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.save_method(one_token(), context.state.order_id, context.state.selected_method.Nat_MethodeID)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status",2)
|
||||||
|
context.commit("update_search_error_message","")
|
||||||
|
|
||||||
|
let x = context.rootState.re_px.selected_px
|
||||||
|
x.methode_id = resp.data.data.method_id
|
||||||
|
x.methode_name = resp.data.data.method_name
|
||||||
|
x.normal_id = resp.data.data.normal_id
|
||||||
|
x.normal_note = resp.data.data.normal_note
|
||||||
|
context.commit('re_px/update_selected_px', x, {root:true})
|
||||||
|
context.commit("update_dialog_method", false)
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
context.commit("update_search_status",3)
|
||||||
|
context.commit("update_search_error_message",e.message )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,159 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_papsmear:false,
|
||||||
|
diagnosis_klinis:'',
|
||||||
|
makroskopis:'',
|
||||||
|
mikroskopis:'',
|
||||||
|
kesimpulan:'',
|
||||||
|
saran:'',
|
||||||
|
selected_papsmear:{},
|
||||||
|
results:[],
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
checks:[],
|
||||||
|
bahans:[],
|
||||||
|
categories:[],
|
||||||
|
maturasi:[],
|
||||||
|
onprocess:false
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_maturasi(state,value) {
|
||||||
|
state.maturasi = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_checks(state,value) {
|
||||||
|
state.checks = value
|
||||||
|
},
|
||||||
|
update_bahans(state,value) {
|
||||||
|
state.bahans = value
|
||||||
|
},
|
||||||
|
update_categories(state,value) {
|
||||||
|
state.categories = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_selected_papsmear(state,value) {
|
||||||
|
state.selected_papsmear = value
|
||||||
|
},
|
||||||
|
update_dialog_papsmear(state,value) {
|
||||||
|
state.dialog_papsmear = value
|
||||||
|
},
|
||||||
|
update_diagnosis_klinis(state,value) {
|
||||||
|
state.diagnosis_klinis = value
|
||||||
|
},
|
||||||
|
update_makroskopis(state,value) {
|
||||||
|
state.makroskopis = value
|
||||||
|
},
|
||||||
|
update_mikroskopis(state,value) {
|
||||||
|
state.mikroskopis = value
|
||||||
|
},
|
||||||
|
update_kesimpulan(state,value) {
|
||||||
|
state.kesimpulan = value
|
||||||
|
},
|
||||||
|
update_saran(state,value) {
|
||||||
|
state.saran = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_papsmearresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getpapsmearresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_checks", data.records['checks'])
|
||||||
|
context.commit("update_bahans", data.records['bahans'])
|
||||||
|
context.commit("update_maturasi", data.records['maturasi'])
|
||||||
|
context.commit("update_categories", data.records['categories'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results'][0]['doctor_id'],
|
||||||
|
name:data.records['results'][0]['doctor_name']
|
||||||
|
}
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_papsmear", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_fna", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult_papsmear(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_papsmear(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_papsmear", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_patient.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
search: '',
|
||||||
|
nolab: '',
|
||||||
|
sdate: new Date().toISOString().substr(0, 10),
|
||||||
|
edate: null,
|
||||||
|
|
||||||
|
search_status: 0,
|
||||||
|
search_error_message: '',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
patients: [],
|
||||||
|
total_patient: 0,
|
||||||
|
total_patient_page: 0,
|
||||||
|
curr_patient_page: 1,
|
||||||
|
selected_patient: {},
|
||||||
|
|
||||||
|
|
||||||
|
// PX
|
||||||
|
total_px: 0,
|
||||||
|
pxs: [],
|
||||||
|
|
||||||
|
langs: [],
|
||||||
|
lang_code: "ID",
|
||||||
|
lang_id: 0,
|
||||||
|
lang_si: "N",
|
||||||
|
|
||||||
|
dialog_req: false,
|
||||||
|
dialog_note: false,
|
||||||
|
result_note: '',
|
||||||
|
info_req: { req_fo: [], req_spec_col: [], req_spec_ver: [], req_samp_ver: [], req_pre_an: [] },
|
||||||
|
|
||||||
|
// ITF
|
||||||
|
Itf: "",
|
||||||
|
BrnListBarcode: ""
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
// ITF
|
||||||
|
update_Itf(state, val) {
|
||||||
|
state.Itf = val
|
||||||
|
},
|
||||||
|
update_BrnListBarcode(state, val) {
|
||||||
|
state.BrnListBarcode = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_dialog_is_active(state, status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state, status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search(state, val) {
|
||||||
|
state.search = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nolab(state, val) {
|
||||||
|
state.nolab = val
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state, status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_patients(state, data) {
|
||||||
|
state.patients = data.records
|
||||||
|
state.total_patient = data.total
|
||||||
|
state.total_patient_page = data.total_page
|
||||||
|
},
|
||||||
|
|
||||||
|
update_curr_patient_page(state, data) {
|
||||||
|
state.curr_patient_page = data
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_patient(state, val) {
|
||||||
|
state.selected_patient = val
|
||||||
|
if (val) {
|
||||||
|
state.langs = val.lang
|
||||||
|
|
||||||
|
state.lang_code = val.lang[0].code
|
||||||
|
state.lang_id = val.lang[0].id
|
||||||
|
state.lang_si = val.lang[0].is_si
|
||||||
|
|
||||||
|
state.result_note = val.T_OrderHeaderResultNote
|
||||||
|
} else {
|
||||||
|
state.langs = []
|
||||||
|
state.lang_code =
|
||||||
|
state.lang_id =
|
||||||
|
state.lang_si = null
|
||||||
|
state.result_note = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_sdate(state, date) {
|
||||||
|
state.sdate = date
|
||||||
|
},
|
||||||
|
|
||||||
|
update_edate(state, date) {
|
||||||
|
state.edate = date
|
||||||
|
},
|
||||||
|
|
||||||
|
update_lang(state, lang) {
|
||||||
|
state.lang_code = lang.code
|
||||||
|
state.lang_id = lang.id
|
||||||
|
state.lang_si = lang.is_si
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_note(state, v) {
|
||||||
|
state.dialog_note = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result_note(state, v) {
|
||||||
|
state.result_note = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_info_req(state, v) {
|
||||||
|
state.info_req = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_req(state, v) {
|
||||||
|
state.dialog_req = v
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async search(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
if (context.rootState.re_px.selected_group)
|
||||||
|
g_id = context.rootState.re_px.selected_group.group_id
|
||||||
|
|
||||||
|
let inp_no = context.state.search
|
||||||
|
if (inp_no.length == 9 && inp_no.substr(0, 2) == "ZL") {
|
||||||
|
inp_no = await window.xno(inp_no)
|
||||||
|
}
|
||||||
|
let company_id = 0
|
||||||
|
if (context.rootState.company.company) {
|
||||||
|
company_id = context.rootState.company.company.M_CompanyID
|
||||||
|
}
|
||||||
|
let resp = await api.search(one_token(), context.state.sdate, inp_no, g_id, context.state.curr_patient_page, company_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total,
|
||||||
|
total_page: resp.data.total_page
|
||||||
|
}
|
||||||
|
|
||||||
|
// attachment obj
|
||||||
|
let objAttachment = resp.data.attachment;
|
||||||
|
console.log("DARI SERVER ATTACHMENT RE_PATIENT ", resp.data.attachment)
|
||||||
|
|
||||||
|
// update object attachment
|
||||||
|
context.commit("re_px/update_obj_attachment", objAttachment, { root: true })
|
||||||
|
|
||||||
|
context.commit("update_patients", data)
|
||||||
|
|
||||||
|
if (data.records.length < 1) {
|
||||||
|
context.commit('update_selected_patient', null)
|
||||||
|
context.commit('re_px/update_pxs', [], { root: true })
|
||||||
|
// update order_id state jika data tidak ada
|
||||||
|
context.commit('re_px/update_id', 0, { root: true })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
context.commit('update_selected_patient', data.records[0])
|
||||||
|
context.commit('re_px/update_id', data.records[0].T_OrderHeaderID, { root: true })
|
||||||
|
context.dispatch('re_px/search', null, { root: true })
|
||||||
|
|
||||||
|
context.dispatch('info_req')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_note(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let resp = await api.save_note(one_token(), context.state.selected_patient.T_OrderHeaderID, context.state.result_note)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
console.log(resp)
|
||||||
|
|
||||||
|
context.commit('update_dialog_note', false)
|
||||||
|
let x = context.state.selected_patient
|
||||||
|
let y = context.state.patients
|
||||||
|
for (let i in y)
|
||||||
|
if (x.T_OrderHeaderID == y[i].T_OrderHeaderID)
|
||||||
|
y[i].T_OrderHeaderResultNote = context.state.result_note
|
||||||
|
|
||||||
|
context.commit("update_patients", {
|
||||||
|
records: y,
|
||||||
|
total: context.state.total_patient,
|
||||||
|
total_page: context.state.total_patient_page
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async info_req(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let resp = await api.info_req(one_token(), context.state.selected_patient.T_OrderHeaderID)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit('update_info_req', resp.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
get_data_status:0,
|
||||||
|
save_status:0,
|
||||||
|
dialog_preparasisperma:false,
|
||||||
|
results:{},
|
||||||
|
doctors:[],
|
||||||
|
selected_doctor:{},
|
||||||
|
onprocess:false,
|
||||||
|
images:[],
|
||||||
|
pre_image:{},
|
||||||
|
post_image:{},
|
||||||
|
show_progrees_upload:false,
|
||||||
|
selected_preparasisperma:{}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
update_selected_preparasisperma(state,value) {
|
||||||
|
state.selected_preparasisperma = value
|
||||||
|
},
|
||||||
|
update_show_progrees_upload(state,value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
update_pre_image(state,value) {
|
||||||
|
state.pre_image = value
|
||||||
|
},
|
||||||
|
update_post_image(state,value) {
|
||||||
|
state.post_image = value
|
||||||
|
},
|
||||||
|
update_images(state,value) {
|
||||||
|
state.images = value
|
||||||
|
},
|
||||||
|
update_onprocess(state,value) {
|
||||||
|
state.onprocess = value
|
||||||
|
},
|
||||||
|
update_doctors(state,value) {
|
||||||
|
state.doctors = value
|
||||||
|
},
|
||||||
|
update_selected_doctor(state,value) {
|
||||||
|
state.selected_doctor = value
|
||||||
|
},
|
||||||
|
update_save_status(state,value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
update_results(state,value) {
|
||||||
|
state.results = value
|
||||||
|
},
|
||||||
|
update_get_data_status(state,value) {
|
||||||
|
state.get_data_status = value
|
||||||
|
},
|
||||||
|
update_dialog_preparasisperma(state,value) {
|
||||||
|
state.dialog_preparasisperma = value
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async get_preparasispermaresult(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.getpreparasispermaresult(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_results", data.records['results'])
|
||||||
|
context.commit("update_doctors", data.records['doctors'])
|
||||||
|
context.commit("update_post_image", '')
|
||||||
|
context.commit("update_pre_image", '')
|
||||||
|
if(data.records['images']){
|
||||||
|
data.records['images'].forEach(function(image) {
|
||||||
|
if(image.type == 'PRE'){
|
||||||
|
context.commit("update_pre_image", image)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
context.commit("update_post_image", image)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var selected_doctor = {
|
||||||
|
id:data.records['results']['doctor_id'],
|
||||||
|
name:data.records['results']['doctor_name']
|
||||||
|
}
|
||||||
|
console.log(selected_doctor)
|
||||||
|
context.commit("update_selected_doctor", selected_doctor)
|
||||||
|
context.commit("update_dialog_preparasisperma", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_doctors_preparasi_sperma(context,prm) {
|
||||||
|
context.commit("update_get_data_status", 1)
|
||||||
|
try {
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.get_doctors_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_get_data_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_doctors", data.records)
|
||||||
|
context.commit("update_selected_doctor", {})
|
||||||
|
context.commit("update_dialog_preparasisperma", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_get_data_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async saveresult(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.saveresult_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_onprocess", false)
|
||||||
|
context.commit("update_dialog_preparasisperma", false)
|
||||||
|
context.dispatch('re_px/search','',{root:true})
|
||||||
|
context.dispatch('re_patient/info_req','',{root:true})
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async uploadimage_preparasi_sperma(context,prm) {
|
||||||
|
context.commit("update_save_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage_preparasi_sperma(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
} else {
|
||||||
|
context.commit("update_save_status", 2)
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
if(data.records[0].type === 'PRE')
|
||||||
|
context.commit("update_pre_image", data.records[0])
|
||||||
|
else
|
||||||
|
context.commit("update_post_image", data.records[0])
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_save_status", 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,501 @@
|
|||||||
|
// 1 => LOADING
|
||||||
|
// 2 => DONE
|
||||||
|
// 3 => ERROR
|
||||||
|
import * as api from "../api/re_px.js"
|
||||||
|
window.api = api
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state: {
|
||||||
|
order_id: 0,
|
||||||
|
|
||||||
|
search_status: 0,
|
||||||
|
search_error_message: '',
|
||||||
|
search_dialog_is_active: false,
|
||||||
|
|
||||||
|
// PX
|
||||||
|
total_px: 0,
|
||||||
|
pxs: [],
|
||||||
|
selected_px: {},
|
||||||
|
selected_px_idx: 0,
|
||||||
|
|
||||||
|
// template
|
||||||
|
dialog_template_new: false,
|
||||||
|
template_new_value: "",
|
||||||
|
dup_template_error: { status: false, messages: '' },
|
||||||
|
|
||||||
|
groups: [{ group_id: '1', group_name: 'DUMMY - KIMIA' }, { group_id: '2', group_name: 'DUMMY - HEMATOLOGI' }],
|
||||||
|
selected_group: {},
|
||||||
|
|
||||||
|
reruns: [{ date: '2019-07-10 08:00', instrument: 'COBAS', result: '56' }, { date: '2019-07-10 08:20', instrument: 'COBAS', result: '68' }],
|
||||||
|
selected_rerun: {},
|
||||||
|
dialog_rerun: false,
|
||||||
|
snackbar: false,
|
||||||
|
fpp: '',
|
||||||
|
dialog_fpp: false,
|
||||||
|
dialog_barcode_list: false,
|
||||||
|
dialog_upload_file: false,
|
||||||
|
photo_64: '',
|
||||||
|
photo_64_lab: '',
|
||||||
|
show_progrees_upload: false,
|
||||||
|
save_status: 0,
|
||||||
|
save_error_message_lampiran: '',
|
||||||
|
snackbar_interface: { value: false, color: 'success', text: '' },
|
||||||
|
|
||||||
|
// attachment
|
||||||
|
dialog_attachment: false,
|
||||||
|
obj_attachment: {},
|
||||||
|
|
||||||
|
// result note row
|
||||||
|
dialog_result_note_row: false,
|
||||||
|
result_note_rows: [],
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
// result note row
|
||||||
|
update_dialog_result_note_row(state, value) {
|
||||||
|
state.dialog_result_note_row = value
|
||||||
|
},
|
||||||
|
|
||||||
|
update_result_note_rows(state, result_note_rows) {
|
||||||
|
state.result_note_rows = result_note_rows.records
|
||||||
|
},
|
||||||
|
|
||||||
|
// ATTACHMENT START
|
||||||
|
update_dialog_attachment(state, value) {
|
||||||
|
state.dialog_attachment = value
|
||||||
|
},
|
||||||
|
update_obj_attachment(state, value) {
|
||||||
|
state.obj_attachment = value
|
||||||
|
},
|
||||||
|
// ATTACHMENT END
|
||||||
|
|
||||||
|
update_save_error_message_lampiran(state, status) {
|
||||||
|
state.save_error_message_lampiran = status
|
||||||
|
},
|
||||||
|
update_save_status(state, value) {
|
||||||
|
state.save_status = value
|
||||||
|
},
|
||||||
|
// update foto state
|
||||||
|
update_show_progrees_upload(state, value) {
|
||||||
|
state.show_progrees_upload = value
|
||||||
|
},
|
||||||
|
|
||||||
|
update_photo_64(state, data) {
|
||||||
|
state.photo_64 = data
|
||||||
|
},
|
||||||
|
|
||||||
|
update_photo_64_lab(state, data) {
|
||||||
|
state.photo_64_lab = data
|
||||||
|
},
|
||||||
|
|
||||||
|
// upload file dialog
|
||||||
|
update_dialog_upload_file(state, value) {
|
||||||
|
state.dialog_upload_file = value
|
||||||
|
},
|
||||||
|
|
||||||
|
// barcode list
|
||||||
|
update_dialog_barcode_list(state, value) {
|
||||||
|
state.dialog_barcode_list = value
|
||||||
|
},
|
||||||
|
update_snackbar_interface(state, v) {
|
||||||
|
state.snackbar_interface = v
|
||||||
|
},
|
||||||
|
// end barcode list
|
||||||
|
update_dialog_fpp(state, value) {
|
||||||
|
state.dialog_fpp = value
|
||||||
|
},
|
||||||
|
update_fpp(state, value) {
|
||||||
|
state.fpp = value
|
||||||
|
},
|
||||||
|
update_search_dialog_is_active(state, status) {
|
||||||
|
state.search_dialog_is_active = status
|
||||||
|
},
|
||||||
|
update_search_error_message(state, status) {
|
||||||
|
state.search_error_message = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_search_status(state, status) {
|
||||||
|
state.search_status = status
|
||||||
|
},
|
||||||
|
|
||||||
|
update_id(state, id) {
|
||||||
|
state.order_id = id
|
||||||
|
},
|
||||||
|
|
||||||
|
update_pxs(state, pxs) {
|
||||||
|
state.pxs = pxs.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_px(state, px) {
|
||||||
|
state.selected_px = px
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_px_idx(state, idx) {
|
||||||
|
state.selected_px_idx = idx
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_group(state, group) {
|
||||||
|
state.selected_group = group
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_rerun(state, v) {
|
||||||
|
state.dialog_rerun = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_reruns(state, reruns) {
|
||||||
|
state.reruns = reruns.records
|
||||||
|
},
|
||||||
|
|
||||||
|
update_selected_rerun(state, rerun) {
|
||||||
|
state.selected_rerun = rerun
|
||||||
|
},
|
||||||
|
|
||||||
|
update_snackbar(state, v) {
|
||||||
|
state.snackbar = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dialog_template_new(state, v) {
|
||||||
|
state.dialog_template_new = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_template_new_value(state, v) {
|
||||||
|
state.template_new_value = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_dup_template_error(state, v) {
|
||||||
|
state.dup_template_error = v
|
||||||
|
},
|
||||||
|
|
||||||
|
update_groups(state, v) {
|
||||||
|
state.groups = v.records
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
// update result_note_row
|
||||||
|
async save_result_note_row(context, prm) {
|
||||||
|
try {
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp = await api.save_result_note_row(prm)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// get_result_note_by_nat_test_id
|
||||||
|
async get_result_note_by_nat_test_id(context, prm) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.get_result_note_by_nat_test_id(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
console.log("respon server ", resp.message);
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
// context.commit("update_save_error_message_lampiran", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
// context.commit("update_save_error_message_lampiran", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
// context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
// context.dispatch("search")
|
||||||
|
context.commit("update_result_note_rows", data)
|
||||||
|
context.commit("update_dialog_result_note_row", true)
|
||||||
|
// context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_dialog_result_note_row", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// upload file
|
||||||
|
async uploadimage_lampiran(context, prm) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
//prm.id = context.state.selected_fna.id
|
||||||
|
// prm.token = one_token()
|
||||||
|
let resp = await api.uploadimage_lampiran(prm)
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
console.log("respon server ", resp.message);
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_save_error_message_lampiran", "")
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_dialog_upload_file", false)
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
|
||||||
|
// if (data.records[0].type === 'PRE')
|
||||||
|
// context.commit("update_pre_image", data.records[0])
|
||||||
|
// else
|
||||||
|
// context.commit("update_post_image", data.records[0])
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_show_progrees_upload", false)
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_save_error_message_lampiran", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// import interface
|
||||||
|
async importInterface(context, prm) {
|
||||||
|
var itfNoReg = prm.ItfNoReg;
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
var prm = {};
|
||||||
|
prm.token = one_token()
|
||||||
|
let resp = await api.importInterface(prm, itfNoReg)
|
||||||
|
console.log(resp);
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_snackbar_interface", { value: true, color: "error", text: resp.message })
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_snackbar_interface", { value: true, color: "success", text: "Import Succes" })
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async search(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
let g_id = 0
|
||||||
|
if (context.state.selected_group)
|
||||||
|
g_id = context.state.selected_group.group_id
|
||||||
|
let resp = await api.search(one_token(), context.state.order_id,
|
||||||
|
context.rootState.re_patient.lang_id,
|
||||||
|
context.rootState.re_patient.lang_si,
|
||||||
|
g_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
// attachment obj
|
||||||
|
let objAttachment = resp.data.attachment;
|
||||||
|
// console.log("DARI SERVER ATTACHMENT RE_PX ",resp.data.attachment)
|
||||||
|
// update object attachment
|
||||||
|
context.commit("update_obj_attachment", objAttachment)
|
||||||
|
|
||||||
|
context.commit("update_pxs", data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save(context) {
|
||||||
|
let data = []
|
||||||
|
let x = context.state.pxs
|
||||||
|
let rerun = context.state.selected_rerun
|
||||||
|
for (let i in x) {
|
||||||
|
let y = x[i]
|
||||||
|
if ((y.result != null && y.result != y.result_old) || (y.note != y.note_old) || (y.T_OrderDetailInternalNote != y.T_OrderDetailInternalNote_old)) {
|
||||||
|
let resultInstrumentID = 0
|
||||||
|
if (y.hasOwnProperty('resultInstrumentID')) {
|
||||||
|
resultInstrumentID = y.resultInstrumentID
|
||||||
|
}
|
||||||
|
data.push({
|
||||||
|
id: y.id, result: y.result, note: y.note, T_OrderDetailInternalNote: y.T_OrderDetailInternalNote, test_id: y.t_testid, test_name: y.t_testname,
|
||||||
|
resultInstrumentID,
|
||||||
|
order_id: context.state.order_id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log("DATA KE BE : ",JSON.stringify(data));
|
||||||
|
// return;
|
||||||
|
|
||||||
|
if (data.length < 1) {
|
||||||
|
alert('Tidak ada data yang perlu disimpan !')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
// console.log("DATA KE BE : ",JSON.stringify(data));
|
||||||
|
|
||||||
|
let ptn = context.rootState.re_patient
|
||||||
|
let resp = await api.save(one_token(), ptn.lang_id, ptn.lang_si, JSON.stringify(data))
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
context.commit("update_snackbar", true)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async save_template(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let resp = await api.save_template(one_token(), context.state.selected_px.t_testid, context.state.template_new_value)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
context.commit('update_dup_template_error', { status: true, messages: 'Value tersebut sudah ada !' })
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_dialog_template_new", false)
|
||||||
|
|
||||||
|
let pxs = context.state.pxs
|
||||||
|
for (let i in pxs) {
|
||||||
|
if (pxs[i].t_testid == context.state.selected_px.t_testid)
|
||||||
|
pxs[i].template = resp.data
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit('update_dup_template_error', { status: false, messages: '' })
|
||||||
|
context.commit('update_pxs', { records: pxs, total: context.state.total_px })
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async lang_export(context) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
let sp = context.rootState.re_patient
|
||||||
|
let resp = await api.lang_export(one_token(), sp.selected_patient.T_OrderHeaderID,
|
||||||
|
sp.lang_id, sp.lang_si)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.dispatch("search")
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_group(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_group()
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
let data = {
|
||||||
|
records: resp.data.records,
|
||||||
|
total: resp.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
context.commit("update_groups", data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async search_rerun(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.search_rerun(context.state.selected_px.id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_reruns", resp.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async get_fpp(context) {
|
||||||
|
context.commit("update_search_status", 1)
|
||||||
|
try {
|
||||||
|
|
||||||
|
let resp = await api.get_fpp(one_token(), context.state.order_id)
|
||||||
|
|
||||||
|
if (resp.status != "OK") {
|
||||||
|
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", resp.message)
|
||||||
|
} else {
|
||||||
|
context.commit("update_search_status", 2)
|
||||||
|
context.commit("update_search_error_message", "")
|
||||||
|
|
||||||
|
context.commit("update_fpp", resp.data.data)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
context.commit("update_search_status", 3)
|
||||||
|
context.commit("update_search_error_message", e.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
// State
|
||||||
|
// data ...
|
||||||
|
// Mutations
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Actions
|
||||||
|
import re_patient from "./modules/re_patient.js";
|
||||||
|
import re_px from "./modules/re_px.js";
|
||||||
|
import re_fna from "./modules/re_fna.js";
|
||||||
|
import re_preparasisperma from "./modules/re_preparasisperma.js";
|
||||||
|
import re_cytologi from "./modules/re_cytologi.js";
|
||||||
|
import re_papsmear from "./modules/re_papsmear.js";
|
||||||
|
import re_lcprep from "./modules/re_lcprep.js";
|
||||||
|
import company from "./modules/company.js";
|
||||||
|
import re_history from "./modules/re_history.js";
|
||||||
|
import normal_method from "./modules/re_normal_method.js";
|
||||||
|
import re_normal from "./modules/re_normal.js";
|
||||||
|
import re_mikro from "./modules/re_mikro.js";
|
||||||
|
import helper from "./modules/helper.js";
|
||||||
|
import system from "../../../apps/modules/system/system.js";
|
||||||
|
|
||||||
|
export const store = new Vuex.Store({
|
||||||
|
state : {
|
||||||
|
tab_active : '01',
|
||||||
|
tabs : [
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
mutations : {
|
||||||
|
change_tab(state, tab) {
|
||||||
|
state.tab_active = tab;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
modules : {
|
||||||
|
helper,
|
||||||
|
re_preparasisperma:re_preparasisperma,
|
||||||
|
re_fna:re_fna,
|
||||||
|
re_cytologi:re_cytologi,
|
||||||
|
re_papsmear:re_papsmear,
|
||||||
|
re_lcprep:re_lcprep,
|
||||||
|
re_patient: re_patient,
|
||||||
|
re_px: re_px,
|
||||||
|
company: company,
|
||||||
|
re_history: re_history,
|
||||||
|
re_mikro:re_mikro,
|
||||||
|
normal_method: normal_method,
|
||||||
|
system: system,
|
||||||
|
re_normal
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
// State
|
||||||
|
// data ...
|
||||||
|
// Mutations
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Actions
|
||||||
|
import re_patient from "./modules/re_patient.js";
|
||||||
|
import re_px from "./modules/re_px.js";
|
||||||
|
import re_fna from "./modules/re_fna.js";
|
||||||
|
import re_preparasisperma from "./modules/re_preparasisperma.js";
|
||||||
|
import re_cytologi from "./modules/re_cytologi.js";
|
||||||
|
import re_papsmear from "./modules/re_papsmear.js";
|
||||||
|
import re_lcprep from "./modules/re_lcprep.js";
|
||||||
|
import company from "./modules/company.js";
|
||||||
|
import re_history from "./modules/re_history.js";
|
||||||
|
import normal_method from "./modules/re_normal_method.js";
|
||||||
|
import re_normal from "./modules/re_normal.js";
|
||||||
|
import re_mikro from "./modules/re_mikro.js";
|
||||||
|
import helper from "./modules/helper.js";
|
||||||
|
import system from "../../../apps/modules/system/system.js";
|
||||||
|
|
||||||
|
export const store = new Vuex.Store({
|
||||||
|
state : {
|
||||||
|
tab_active : '01',
|
||||||
|
tabs : [
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
mutations : {
|
||||||
|
change_tab(state, tab) {
|
||||||
|
state.tab_active = tab;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
modules : {
|
||||||
|
helper,
|
||||||
|
re_preparasisperma:re_preparasisperma,
|
||||||
|
re_fna:re_fna,
|
||||||
|
re_cytologi:re_cytologi,
|
||||||
|
re_papsmear:re_papsmear,
|
||||||
|
re_lcprep:re_lcprep,
|
||||||
|
re_patient: re_patient,
|
||||||
|
re_px: re_px,
|
||||||
|
company: company,
|
||||||
|
re_history: re_history,
|
||||||
|
re_mikro:re_mikro,
|
||||||
|
normal_method: normal_method,
|
||||||
|
system: system,
|
||||||
|
re_normal
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user