Files
FE_CPONE/test/vuex/one-resultentry-so-xray-v4/components/oneResultEntrySoForm.vue
2026-04-27 10:13:31 +07:00

962 lines
42 KiB
Vue

<template>
<div>
<v-dialog v-model="dialognote" width="40%">
<v-card>
<v-card-title class="headline white--text error" primary-title>
</v-card-title>
<v-card-text>
<v-layout v-if="patient.fo_note && patient.fo_note !== ''" 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;">{{patient.fo_note_user}}</code>
<div class="v-markdown">
<p style="margin-top:2px;margin-bottom:0">
{{patient.fo_note}}
</p>
</div>
</v-flex>
</v-layout>
</v-flex>
</v-layout>
<v-layout v-if="patient.fo_ver_note && patient.fo_ver_note !== ''" mb-2 row>
<v-flex mb-2 xs3>
<span style="color: #0f80db" class="mono name">FO Verifikasi</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;">{{patient.fo_ver_note_user}}</code>
<div class="v-markdown">
<p style="margin-top:2px;margin-bottom:0">{{patient.fo_ver_note}}</p>
</div>
</v-flex>
</v-layout>
</v-flex>
</v-layout>
<v-layout v-if="patient.sampling_note && patient.sampling_note !== ''" 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;">{{patient.sampling_note_user}}</code>
<div class="v-markdown">
<p style="margin-top:2px;margin-bottom:0">{{patient.sampling_note}}</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="dialognote = false">
Tutup
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="dialogtemplates" persistent max-width="450">
<v-card class="align-center justify-center">
<v-card-title style="padding:0px;" primary-title dark color="primary" class="primary white--text">
<v-subheader style="color:#fff!important">PILIH TEMPLATE</v-subheader>
</v-card-title>
<v-card-text>
<v-select class="ma-1 mini-select" :items="xtemplates" item-text="label" return-object
v-model="xselectedtemplate" label="Template" outline hide-details>
</v-select>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="grey ligthen-1" flat @click="dialogtemplates = false">Batal</v-btn>
<v-btn color="blue-grey" flat @click="doPasteTemplate()">Terapkan</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="dialoghistories" persistent max-width="80%">
<v-card class="align-center justify-center">
<v-card-title style="padding:0px;" primary-title dark color="info" class="info white--text">
<v-subheader style="color:#fff!important">
RIWAYAT PEMERIKSAAN
</v-subheader>
</v-card-title>
<v-card-text class="pa-1" style=" background: rgb(245, 232, 223) !important;">
<v-layout pl-2 pr-2 pt-2 pb-2 row>
<v-flex pa-1 xs6>
<v-card class="pa-2">
<v-data-table :headers="headers" :items="xhistories" :loading="isLoading" hide-actions
class="elevation-1">
<template slot="items" slot-scope="props">
<td class="text-xs-left pl-2 pr-2 pb-1 pt-1"
v-bind:class="{'amber lighten-4':isSelected(props.item)}"
@click="selectMe(props.item)">{{ props.item.noreg }}</td>
<td class="text-xs-left pl-2 pr-2 pb-1 pt-1"
v-bind:class="{'amber lighten-4':isSelected(props.item)}"
@click="selectMe(props.item)">{{ props.item.order_date}}</td>
<td class="text-xs-left pl-2 pr-2 pb-1 pt-1"
v-bind:class="{'amber lighten-4':isSelected(props.item)}"
@click="selectMe(props.item)">{{props.item.tests}}</td>
</template>
</v-data-table>
<v-divider></v-divider>
<v-pagination style="margin-top:10px;margin-bottom:10px" v-model="curr_page_histories"
:length="xtotal_page_histories"></v-pagination>
</v-card>
</v-flex>
<v-flex pa-1 xs7>
<v-card v-for="(test,index) in xselectedhistory.details">
<v-layout mb-2 row>
<v-flex xs12>
<v-subheader red--text text--lighten-1>
<v-chip color="blue grey" label text-color="white">
{{test.test_name}}
</v-chip>
<v-chip label outline>
<v-icon left>assignment_ind</v-icon>{{test.doctor_fullname}}
</v-chip>
<v-flex text-md-right>
<v-icon @click="showMore(index)" style="cursor:pointer">more_horiz</v-icon>
</v-flex>
</v-subheader>
<v-divider></v-divider>
<v-layout v-if="test.xshow === 'Y'" pl-2 row wrap>
<v-flex v-for="result in test.details" xs12 pa-2>
<div style="font-weight:bold;font-size:10px!important">
{{result.result_label.toUpperCase()}}</div>
<div class="v-markdown pl-2">
<p class="mono" style="margin-bottom:0;font-size:14px">{{result.result_value}}
</p>
</div>
</v-flex>
</v-layout>
</v-flex>
</v-layout>
</v-card>
</v-flex>
</v-layout>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="grey ligthen-1" flat @click="dialoghistories = false">Tutup</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="dialogprintlang" persistent max-width="450">
<v-card class="align-center justify-center">
<v-card-title style="padding:0px;" primary-title dark color="blue-grey" class="blue-grey white--text">
<v-subheader style="color:#fff!important">PILIH BAHASA</v-subheader>
</v-card-title>
<v-card-text>
<v-switch style="margin-top:0;padding-top:0" @change="changeSwitch(lang.chex,index)"
v-for="(lang,index) in dialoglangs" v-model="lang.chex === 'Y'" :label="lang.name"
:disabled="lang.chex === 'N'">
</v-switch>
<hr>
<v-radio-group v-model="print_format" row>
<v-radio label="Format 1" value="format-1"></v-radio>
<v-radio label="Format 2" value="format-2"></v-radio>
</v-radio-group>
<div class="emailbox" style="padding:15px;background-color: #f1fab4;border-radius:5px;">
<span class="title">Format Email
<!--<span v-if="email_format==''" style='color:red'> [ belum di pilih !!! ] </span>-->
</span>
<v-radio-group v-model="email_format" row>
<v-radio label="Format 1" value="format-1"></v-radio>
<v-radio label="Format 2" value="format-2"></v-radio>
</v-radio-group>
<span style="font-style:italic;color:brown">*) format yang akan digunakan dalam pengiriman
email</span>
</div>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="blue-grey" flat @click="doSaveEmailFormat()">Simpan Format Email</v-btn>
<v-btn color="grey ligthen-1" flat @click="dialogprintlang = false">Batal</v-btn>
<v-btn color="blue-grey" flat @click="doPrintAfterLang()">Cetak</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="xdialogaction" persistent max-width="350">
<v-card>
<v-card-title color="warning" class="headline">Konfirmasi</v-card-title>
<v-card-text v-html="xmsgaction">
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary darken-1" flat @click="closeDialogAction()">Ya</v-btn>
<v-btn color="error darken-1" flat @click="xdialogaction = false">Tutup</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="xdialogimage" persistent max-width="650" max-height="500">
<v-card color="amber lighten-5">
<v-container grid-list-sm fluid>
<v-layout row wrap>
<v-flex>
<v-card flat tile class="d-flex">
<v-img :src="ximage" aspect-ratio="1" class="grey lighten-2">
<template v-slot:placeholder>
<v-layout fill-height align-center justify-center ma-0>
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-layout>
</template>
</v-img>
</v-card>
</v-flex>
</v-layout>
</v-container>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="black" dark @click="xdialogimage = false">Tutup</v-btn>
</v-card-actions>
<v-card>
</v-dialog>
<v-layout row mb-2 wrap>
<v-flex xs12 pr-1>
<v-card>
<v-layout class="align-center" pt-1 pb-1 row>
<v-flex pt-1 pb-1 pl-2 pr-2 xs12>
<span class="left" style="font-size:x-large;padding-top: 3px;">
<v-icon title="riwayat" v-if="parseInt(patient.has_histories) > 0" @click="showHistories()"
style="font-size:28px;cursor:pointer" large>today</v-icon>
{{patient.ordernumber}}
<v-icon title="catatan" @click="dialognote = true"
v-if="(patient.fo_note && patient.fo_note != '') || (patient.sampling_note && patient.sampling_note != '')"
style="font-size:20px;cursor:pointer" large color="error">info</v-icon>
</span>
<span class="right">
<v-chip v-for="delivery in patient.deliveries" :title="delivery.destination" label
:color="delivery.color" text-color="white">
{{delivery.label}}
</v-chip>
</span>
</v-flex>
</v-layout>
<v-divider></v-divider>
<v-layout pt-1 pb-2 row>
<v-flex pt-1 pb-1 pl-2 xs4>
<v-text-field style="font-size:12px" ma-1 label="NAMA PASIEN" class="text-uppercase" :value="patient.patient_fullname"
hide-details></v-text-field>
</v-flex>
<v-flex pt-1 pb-1 pl-2 xs2>
<v-text-field style="font-size:12px" ma-1 label="JENIS KELAMIN" class="text-uppercase" :value="patient.sexname"
hide-details></v-text-field>
</v-flex>
<v-flex pt-1 pb-1 pl-2 pr-1 xs4>
<v-text-field ma-1 style="font-size:12px" label="UMUR" class="text-uppercase" :value="patient.umur" hide-details
:title="patient.dob"></v-text-field>
</v-flex>
<v-flex pt-1 pb-1 pl-2 pr-1 xs3>
<v-text-field ma-1 style="font-size:12px" label="PENGIRIM" class="text-uppercase" :value="patient.doctor_sender"
hide-details></v-text-field>
</v-flex>
</v-layout>
</v-card>
</v-flex>
</v-layout>
<div style="overflow-y:auto;max-height:635px">
<v-layout mb-2 row v-for="(test,index) in xtests" wrap>
<v-flex xs12 pr-1>
<v-card>
<v-layout row>
<v-flex xs12>
<v-subheader red--text text--lighten-1>
<v-chip :title="test.test_name" v-if="test.status === 'NEW'" label color="grey"
text-color="white">
<v-icon left>label</v-icon>{{testfullname(test.test_name)}}
</v-chip>
<v-chip :title="test.test_name" v-if="test.status === 'VAL1'" label color="warning"
text-color="white">
<v-icon left>label</v-icon>{{testfullname(test.test_name)}}
</v-chip>
<v-chip :title="test.test_name" v-if="test.status === 'VAL2'" label color="success"
text-color="white">
<v-icon left>label</v-icon>{{test.test_name}}
</v-chip>
<v-chip :title="test.test_name" label color="info" outline>
<v-icon left>assignment_ind</v-icon>{{testfullname(test.doctor_fullname)}}
</v-chip>
<v-menu bottom origin="center center" transition="scale-transition">
<template v-slot:activator="{ on }">
<v-btn color="primary" dark depressed style="margin-left:4px;height:32px;padding:2px 8px"
small v-on="on">
{{selectedlangName(test)}}
</v-btn>
</template>
<v-list>
<v-list-tile v-for="(lang, i) in xlangs(test)" :key="i" @click="selectLang(test,lang)">
<v-list-tile-title>{{ lang.name }}</v-list-tile-title>
</v-list-tile>
</v-list>
</v-menu>
<v-tooltip left>
<template v-slot:activator="{ on }">
<v-icon v-on="on" @click="pasteTemplate(test,index)" style="cursor: pointer;" large>
assignment</v-icon>
</template>
<span>pasang template</span>
</v-tooltip>
<v-flex text-md-right>
<span v-if="test.status === 'VAL1' || test.status === 'VAL2'" @click="print(test,'print')"
class="icon-medium-fill-base-small xs1 white--text blue-grey icon-print"></span>
<span v-if="test.status === 'VAL1'" @click="unval1(test,'unval1')"
class="icon-medium-fill-base-small xs1 white--text warning icon-unval"></span>
<span v-if="test.status === 'NEW' && check_saved(test)" @click="val1(test,'val1')"
class="icon-medium-fill-base-small xs1 white--text warning icon-v"></span>
<span v-if="test.status === 'NEW'" @click="saveResult(test,'save')"
class="icon-medium-fill-base-small xs1 white--text info icon-save"></span>
</v-flex>
</v-subheader>
<v-divider></v-divider>
<v-layout row wrap>
<v-flex xs12 pa-2 pt-1>
<v-layout align-center justify-center v-for="(result,idxresult) in test.details" row>
<v-flex pl-2 class="text-xs-center" xs1>
<v-switch v-model="result.flag_print === 'Y'"
@change="changeFlagPrint(result.flag_print,idxresult,index)"></v-switch>
</v-flex>
<v-flex xs11 pr-2 pb-2>
<v-textarea filled outline hide-details :label="result.result_label"
auto-grow
@change="changeResult(result.result_value,idxresult,index)"
:disabled="test.status !== 'NEW' || test.doctor_id === '0'"
v-model="result.result_value" rows="3"></v-textarea>
</v-flex>
</v-layout>
</v-flex>
</v-layout>
<v-divider v-if="test.is_mcu === 'Y'"></v-divider>
<v-layout v-if="test.is_mcu === 'Y'" align-center justify-end row>
<v-flex xs8 class="text-xs-right">
</v-flex>
<v-flex xs4 pr-3 pt-2 pb-2 class="text-xs-right justify-end ">
<v-select
:disabled="test.status !== 'NEW'"
:items="status_results"
v-model="test.status_result"
return-object
hide-details
outline
class="mini-select"
item-text="name"
label="Kategori Hasil"
></v-select>
</v-flex>
</v-layout>
</v-flex>
</v-layout>
</v-card>
</v-flex>
</v-layout>
</div>
<one-dialog-print :title="printtitle" :width="printwidth" :height="500" :status="openprint" :urlprint="urlprint"
@close-dialog-print="closePrint"></one-dialog-print>
</div>
</template>
<style scoped>
table,
td,
th {
border: 1px solid #ddd;
text-align: left;
}
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 8px;
padding-right: 5px;
}
.mini-input .v-input {
margin-top: 0px;
}
.mini-input .v-input,
.mini-input .v-input--selection-controls,
.mini-input .v-input__slot {
margin-top: 0px;
margin-bottom: 0px;
margin-left: 3px;
}
.mini-input .v-messages {
min-height: 0px;
}
input.fhm-input {
border: 1px solid black;
border-radius: 2px;
-webkit-box-shadow:
inset 0 0 2px rgba(0, 0, 0, 0.1),
0 0 4px rgba(0, 0, 0, 0.1);
-moz-box-shadow:
inset 0 0 2px rgba(0, 0, 0, 0.1),
0 0 4px rgba(0, 0, 0, 0.1);
box-shadow:
inset 0 0 2px rgba(0, 0, 0, 0.1),
0 0 4px rgba(0, 0, 0, 0.1);
padding: 2px 4px;
background: rgba(255, 255, 255, 0.5);
margin: 0 0 1px 0;
width: 30px;
text-align: center;
}
code, kbd {
white-space: normal;
}
</style>
<script>
module.exports = {
components: {
'one-dialog-print': httpVueLoader('../../common/oneDialogPrintX.vue')
},
data: () => ({
openprint: false,
urlprint: '',
isLoading: false,
printtitle: '',
printwidth: 600,
selected_template: {},
status_results:[{id:'X',name:'Belum ditentukan'},{id:'Y',name:'Normal'},{id:'N',name:'Tidak Normal'}],
idx_test: 0,
print_format: 'format-1',
headers: [{
text: "NO REG",
align: "left",
sortable: false,
width: "10%",
class: "pl-2 pr-2 pb-1 pt-1 blue lighten-3 white--text"
},
{
text: "TANGGAL ORDER",
align: "left",
sortable: false,
width: "10%",
class: "pl-2 pr-2 pb-1 pt-1 blue lighten-3 white--text"
},
{
text: "PEMRIKSAAN",
align: "left",
sortable: false,
width: "35%",
class: "pl-2 pr-2 pb-1 pt-1 blue lighten-3 white--text"
},
],
}),
computed: {
email_format: {
get() {
let format = this.$store.state.email.format
if (format) return format
return ''
},
set(val) {
this.$store.commit("email/update_format", val)
}
},
xhistories: {
get() {
return this.$store.state.sample.histories
},
set(val) {
this.$store.commit("sample/update_histories", val)
}
},
dialoghistories: {
get() {
return this.$store.state.sample.dialog_histories
},
set(val) {
this.$store.commit("sample/update_dialog_histories", val)
}
},
dialognote: {
get() {
return this.$store.state.sample.dialog_note
},
set(val) {
this.$store.commit("sample/update_dialog_note", val)
}
},
dialogtemplates: {
get() {
return this.$store.state.sample.dialog_template
},
set(val) {
this.$store.commit("sample/update_dialog_template", val)
}
},
xtemplates() {
return this.$store.state.sample.templates
},
xselectedtemplate: {
get() {
return this.$store.state.sample.selected_template
},
set(val) {
this.$store.commit("sample/update_selected_template", val)
}
},
xdialogaction: {
get() {
return this.$store.state.sample.dialog_action
},
set(val) {
this.$store.commit("sample/update_dialog_action", val)
}
},
xmsgaction: {
get() {
return this.$store.state.sample.msg_action
},
set(val) {
this.$store.commit("sample/update_msg_action", val)
}
},
xtests() {
return this.$store.state.sample.selected_transaction.details
},
patient() {
return this.$store.state.sample.selected_transaction
},
xdialogimage: {
get() {
return this.$store.state.sample.dialog_image
},
set(val) {
this.$store.commit("sample/update_dialog_image", val)
}
},
ximage() {
return this.$store.state.sample.image
},
dialoglangs: {
get() {
return this.$store.state.sample.langs
},
set(val) {
this.$store.commit("sample/update_item_langs", val)
}
},
xselectedlang: {
get() {
return this.$store.state.sample.selected_lang
},
set(val) {
this.$store.commit("sample/update_selected_lang", val)
}
},
dialogprintlang: {
get() {
return this.$store.state.sample.dialog_print_lang
},
set(val) {
this.$store.commit("sample/update_dialog_print_lang", val)
}
},
curr_page_histories: {
get() {
return this.$store.state.sample.current_page_histories
},
set(val) {
this.$store.commit("sample/update_current_page_histories", val)
this.$store.dispatch("sample/search_histories", {
search: '',
patientid: this.patient.patientid,
orderid: this.patient.trx_id,
current_page: val,
lastid: -1
})
}
},
xtotal_page_histories: {
get() {
return this.$store.state.sample.total_page_histories
},
set(val) {
this.$store.commit("sample/update_total_page_histories", val)
}
},
xselectedhistory() {
return this.$store.state.sample.selected_history
}
},
methods: {
testfullname(value) {
var xx = value.length
if (xx > 25)
return value.substring(0, 25) + '...'
else
return value
},
showMore(index) {
var selected_history = this.$store.state.sample.selected_history
var old_value = selected_history.details[index].xshow
selected_history.details[index].xshow = old_value === 'Y' ? 'N' : 'Y'
},
showHistories() {
this.xhistories = []
this.dialoghistories = true
this.curr_page_histories = 1
this.xtotal_page_histories = 0
},
isSelected(p) {
return p.orderid == this.$store.state.sample.selected_history.orderid
},
selectMe(trx) {
this.$store.commit("sample/update_selected_history", trx)
this.$store.commit("sample/update_details_histories", trx.details)
},
changeSwitch(value, idx) {
//console.log(value)
_.forEach(this.dialoglangs, function (num) {
num.chex = 'N'
})
this.dialoglangs[idx].chex = value === 'Y' ? 'N' : 'Y'
},
changeFlagPrint(value, rst_idx, test_idx) {
var selected_patient = this.$store.state.sample.selected_transaction
//console.log(selected_patient)
selected_patient.details[test_idx].details[rst_idx].flag_print = value === 'Y' ? 'N' : 'Y'
//console.log(selected_patient[test_idx][rst_idx])
this.$store.dispatch("sample/save_flagprint", {
selected_trx: selected_patient,
row: selected_patient.details[test_idx].details[rst_idx]
})
},
changeResult(value, rst_idx, test_idx) {
var value = JSON.stringify(value)
value = JSON.parse(value)
var transactions = this.$store.state.sample.transactions
var selected_patient = this.$store.state.sample.selected_transaction
var idx = _.filter(transactions, function (o) {
return o.trx_id === selected_patient.trx_id
})
//console.log(selected_patient)
selected_patient.details[test_idx].details[rst_idx].result_value = value
this.$store.commit("sample/update_transactions", transactions)
//console.log(selected_patient[test_idx][rst_idx])
//this.$store.dispatch("sample/save_flagprint",{selected_trx:selected_patient,row:selected_patient.details[test_idx].details[rst_idx]})
},
xlangs(test) {
return test.langs
},
check_saved(test) {
var arrdetails = test.details
var notempty = _.filter(arrdetails, function (o) {
return o.result_value_before !== ''
})
//console.log(notempty)
if (notempty.length === 0)
return false
else
return true
},
selectedLang(value) {
return {
id: value.language_id,
name: value.language_name
}
},
selectedlangName(value) {
return value.language_name
},
selectLang(trx, lang) {
console.log(trx)
var arr = this.$store.state.sample.selected_transaction
var arrdetails = arr.details
let idx = _.findIndex(arrdetails, function (o) {
return o.trx_id == trx.trx_id
})
console.log("aye")
this.$store.dispatch("sample/getrstbylang", {
trx: trx,
lang: lang,
selected_trx: this.$store.state.sample.selected_transaction,
idx: idx,
detail: arrdetails[idx]
})
},
changeResult() {
this.$store.commit("sample/update_no_save", 1)
},
saveResult(trx, act) {
var ar = this.$store.state.sample.transactions
var arr = this.$store.state.sample.selected_transaction
let idx = _.findIndex(ar, function (o) {
return o.trx_id == arr.trx_id
})
this.$store.dispatch("sample/saveresult", {
startdate: this.$store.state.sample.start_date,
enddate: this.$store.state.sample.end_date,
search: this.$store.state.sample.name_lab,
stationid: this.$store.state.sample.selected_station.id,
groupid: this.$store.state.sample.select_item_group.id,
subgroupid: this.$store.state.sample.select_item_subgroup.id,
lastid: arr.trx_id,
current_page: this.$store.state.sample.current_page,
trx: trx,
trx_numbering: arr.ordernumber,
act: act
})
},
val1(trx, act) {
console.log(act)
var go_cat = true
if(trx.is_mcu === 'Y' && trx.status_result.id === 'X')
go_cat = false
if(go_cat){
this.$store.commit("sample/update_act", act)
this.$store.commit("sample/update_last_trx", trx)
var arr = this.$store.state.sample.selected_transaction
var msg = "Anda yakin akan melakukan validasi untuk pemeriksaan " + trx.test_name + " dari pasien " + arr
.patient_fullname + " ?"
this.$store.commit("sample/update_msg_action", msg)
this.$store.commit("sample/update_dialog_action", true)
}
else{
var msg = "<p class='mb-0'>Belajar menggambar pakai pensil, menggambar daun pohon kelapa, tolong dilihat kategori hasil, pilih salah satu jangan lupa</p>"
msg += "<p class='mb-1 mono caption' style='color:red' >*) Kategori hasil untuk rekap mcu</p>"
this.$store.commit("sample/update_msg_info", msg)
this.$store.commit("sample/update_open_dialog_info", true)
}
},
unval1(trx, act) {
console.log(act)
this.$store.commit("sample/update_act", act)
this.$store.commit("sample/update_last_trx", trx)
var arr = this.$store.state.sample.selected_transaction
var msg = "Anda yakin akan membatalkan validasi untuk pemeriksaan " + trx.test_name + " dari pasien " +
arr.patient_fullname + " ?"
this.$store.commit("sample/update_msg_action", msg)
this.$store.commit("sample/update_dialog_action", true)
},
val2(trx, act) {
console.log(act)
this.$store.commit("sample/update_act", act)
this.$store.commit("sample/update_last_trx", trx)
var arr = this.$store.state.sample.selected_transaction
var msg = "Anda yakin akan melakukan validasi untuk pemeriksaan " + trx.test_name + " dari pasien " + arr
.patient_fullname + " ?"
this.$store.commit("sample/update_msg_action", msg)
this.$store.commit("sample/update_dialog_action", true)
},
unval2(trx, act) {
console.log(act)
this.$store.commit("sample/update_act", act)
this.$store.commit("sample/update_last_trx", trx)
var arr = this.$store.state.sample.selected_transaction
var msg = "Anda yakin akan membatalkan validasi untuk pemeriksaan " + trx.test_name + " dari pasien " +
arr.patient_fullname + " ?"
this.$store.commit("sample/update_msg_action", msg)
this.$store.commit("sample/update_dialog_action", true)
},
async doSaveEmailFormat() {
var trx = this.$store.state.sample.selected_test
var idx_true = _.findIndex(this.dialoglangs, item => item.chex === 'Y')
this.xselectedlang = this.dialoglangs[idx_true]
let idx = trx.orderid
let user = one_user()
var d = new Date();
var n = d.getTime()
var rptname = ''
if (trx.type === 'xray')
rptname = 'rpt_hasil_so_xray_email'
if (trx.type === 'usg') {
rptname = 'rpt_hasil_so_usg_email'
idx = trx.trx_id
}
if (trx.type === 'bdm')
rptname = 'rpt_hasil_so_bdm_email'
if (trx.type === 'xray' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_xray_2_email'
if (trx.type === 'usg' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_usg_2_email'
if (trx.type === 'bdm' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_bdm_2_email'
if (this.xselectedlang.code === 'EN') {
if (trx.type === 'xray')
rptname = 'rpt_hasil_so_xray_eng_email'
if (trx.type === 'usg')
rptname = 'rpt_hasil_so_usg_eng_email'
if (trx.type === 'bdm')
rptname = 'rpt_hasil_so_bdm_eng_email'
if (trx.type === 'xray' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_xray_eng_2_email'
if (trx.type === 'usg' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_usg_eng_2_email'
if (trx.type === 'bdm' && this.email_format === 'format-2')
rptname = 'rpt_hasil_so_bdm_eng_2_email'
}
let url = "/birt/run?__report=report/one/lab/" + rptname + ".rptdesign&__format=pdf&username=" + user
.M_UserUsername + "&PID=" + idx + '&PLang=' + trx.language_id + '&tm=' + n
let prm_email = {
orderID: trx.orderid,
type: trx.type,
url: url,
format: this.email_format
}
await this.$store.dispatch("email/save", prm_email)
this.dialogprintlang = false
},
async doPrintAfterLang() {
//console.log(this.print_format)
this.dialogprintlang = false
var trx = this.$store.state.sample.selected_test
var idx_true = _.findIndex(this.dialoglangs, item => item.chex === 'Y')
this.xselectedlang = this.dialoglangs[idx_true]
this.printwidth = 1028
this.printtitle = ""
let idx = trx.orderid
let user = one_user()
var d = new Date();
var n = d.getTime()
var rptname = ''
if (trx.type === 'xray')
rptname = 'rpt_hasil_so_xray'
if (trx.type === 'usg') {
rptname = 'rpt_hasil_so_usg'
idx = trx.trx_id
}
if (trx.type === 'bdm')
rptname = 'rpt_hasil_so_bdm'
if (trx.type === 'xray' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_xray_2'
if (trx.type === 'usg' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_usg_2'
if (trx.type === 'bdm' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_bdm_2'
if (this.xselectedlang.code === 'EN') {
if (trx.type === 'xray')
rptname = 'rpt_hasil_so_xray_eng'
if (trx.type === 'usg')
rptname = 'rpt_hasil_so_usg_eng'
if (trx.type === 'bdm')
rptname = 'rpt_hasil_so_bdm_eng'
if (trx.type === 'xray' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_xray_eng_2'
if (trx.type === 'usg' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_usg_eng_2'
if (trx.type === 'bdm' && this.print_format === 'format-2')
rptname = 'rpt_hasil_so_bdm_eng_2'
}
// rptname = 'rpt_hasil_so_eng'
this.urlprint = "/birt/run?__report=report/one/lab/" + rptname + ".rptdesign&__format=pdf&username=" +
user.M_StaffName + "&PID=" + idx + '&PLang=' + trx.language_id + '&tm=' + n
this.openprint = true
},
print(trx, act) {
// console.log(trx)
this.print_format = 'format-1'
this.dialogprintlang = true
var nowlang = trx.langs
_.forEach(nowlang, function (num) {
num.chex = 'N'
})
var lang_idx = _.findIndex(nowlang, function (o) {
return o.id == trx.language_id
})
nowlang[lang_idx].chex = 'Y'
this.$store.commit("sample/update_item_langs", nowlang)
this.xselectedlang = trx.langs[0]
this.$store.commit("sample/update_selected_test", trx)
this.$store.commit("sample/update_act", act)
this.$store.commit("sample/update_last_trx", trx)
},
closePrint() {
this.openprint = false
var prm = this.$store.state.sample.last_trx
this.$store.dispatch("sample/printcount", prm)
},
closeDialogAction() {
var trx = this.$store.state.sample.last_trx
var act = this.$store.state.sample.act
this.saveResult(trx, act)
},
openImage(value) {
this.$store.commit("sample/update_selected_photo", value)
this.$store.commit("sample/update_image", value.newname)
this.$store.commit("sample/update_dialog_image", true)
},
pasteTemplate(rst, idx) {
this.idx_test = idx
var seltrx = this.$store.state.sample.selected_transaction
var datax = seltrx.details[idx]
if (datax.status === 'NEW') {
var prm = {
idx: idx,
template_id: datax.template_id,
doctor_id: datax.doctor_id,
language_id: datax.language_id,
test_id: datax.test_id
}
this.$store.dispatch("sample/gettemplate", prm)
}
},
doPasteTemplate() {
var seltrx = this.$store.state.sample.selected_transaction
//console.log(seltrx)
var temp_val = this.$store.state.sample.selected_template.details
var test_idx = this.idx_test
seltrx.details[test_idx].details.forEach(function (temp, index) {
var template_detail_id = seltrx.details[test_idx].details[index].template_detail_id
var value_now = seltrx.details[test_idx].details[index].result_value
var filter_temp = _.filter(temp_val, function (o) {
return o.template_detail_id === template_detail_id
})
//console.log(filter_temp)
if (filter_temp.length > 0 && (!value_now || value_now === '')) {
seltrx.details[test_idx].details[index].result_value = filter_temp[0].value
}
})
this.$store.commit("sample/update_selected_transaction", seltrx)
this.dialogtemplates = false
}
}
}
</script>