1670 lines
116 KiB
Vue
1670 lines
116 KiB
Vue
<template>
|
|
<div>
|
|
<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-select class="ma-1 mini-select" :items="dialoglangs"
|
|
item-text="name"
|
|
return-object
|
|
v-model="xselectedlang"
|
|
label="Bahasa" outline hide-details>
|
|
</v-select>-->
|
|
<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"></v-switch>
|
|
</v-card-text>
|
|
<v-card-actions>
|
|
<v-spacer></v-spacer>
|
|
<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="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="xdialogdoctor" persistent max-width="350">
|
|
<v-card class="align-center justify-center">
|
|
<v-card-title primary-title dark color="warning" class="warning white--text headline">PILIH DOKTER</v-card-title>
|
|
<v-card-text>
|
|
<p v-if="requiredoctor" class="error pl-2 pr-2" style="color:#fff">Dokter harus dipilih salah satu dong</p>
|
|
|
|
<v-select class="ma-1 mini-select" :items="xdoctors"
|
|
item-text="doctor_fullname"
|
|
return-object
|
|
v-model="xselecteddoctor"
|
|
label="DOKTER" outline hide-details></v-select>
|
|
</v-card-text>
|
|
<v-card-actions>
|
|
<v-spacer></v-spacer>
|
|
<v-btn color="red darken-1" flat @click="xdialogdoctor = false">Tutup</v-btn>
|
|
<v-btn color="green darken-1" @click="savedoctor" flat >Simpan</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 pt-1 pb-1 row>
|
|
<v-flex pt-1 pb-1 pl-2 pr-2 xs12>
|
|
<span class="left" style="font-size:x-large">{{patient.ordernumber}}</span>
|
|
<span class="right">
|
|
<v-chip label color="#fa8072" text-color="white">
|
|
{{patient.deliveries}}
|
|
</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 xs3>
|
|
<v-text-field 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 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 xs4>
|
|
<v-text-field ma-1
|
|
label="UMUR"
|
|
class="text-uppercase"
|
|
:value="patient.umur"
|
|
:title="patient.dob"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
<v-flex pt-1 pb-1 pl-2 pr-1 xs3>
|
|
<v-text-field ma-1
|
|
label="PENGIRIM"
|
|
class="text-uppercase"
|
|
:value="patient.doctor_fullname"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</v-flex>
|
|
</v-layout>
|
|
<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 v-if="test.status === 'NEW'" label color="grey" text-color="white">
|
|
<v-icon left>label</v-icon>{{test.test_name}}
|
|
</v-chip>
|
|
<v-chip v-if="test.status === 'VAL1'" label color="warning" text-color="white">
|
|
<v-icon left>label</v-icon>{{test.test_name}}
|
|
</v-chip>
|
|
<v-chip v-if="test.status === 'VAL2'" label color="success" text-color="white">
|
|
<v-icon left>label</v-icon>{{test.test_name}}
|
|
</v-chip>
|
|
<v-chip @click="opendialogdoctor(test)" label color="info" outline >
|
|
<v-icon left>assignment_ind</v-icon>{{test.doctor_fullname}}
|
|
</v-chip>
|
|
<v-menu
|
|
bottom
|
|
origin="center center"
|
|
transition="scale-transition"
|
|
>
|
|
<template v-slot:activator="{ on }">
|
|
<v-btn
|
|
color="primary"
|
|
dark
|
|
small
|
|
v-on="on"
|
|
>
|
|
{{selectedlangName(test)}}
|
|
</v-btn>
|
|
</template>
|
|
|
|
<v-list>
|
|
<v-list-tile
|
|
v-for="(lang, i) in xlangs"
|
|
: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 v-if="test.template_flag_other === 'N'" row wrap>
|
|
<v-flex xs12 pa-2 mb-1 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 pa-1>
|
|
<v-textarea
|
|
filled
|
|
outline
|
|
hide-details
|
|
:label="result.result_label"
|
|
@change="changeResult()"
|
|
:disabled="test.status !== 'NEW'"
|
|
v-model="result.result_value"
|
|
rows="3"
|
|
></v-textarea>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
<v-layout v-if="test.template_flag_other === 'Y' && test.template_name.includes('UMUM')" row wrap>
|
|
<v-flex xs12>
|
|
<v-stepper style="background:#fa8072" v-model="tab">
|
|
<v-stepper-header>
|
|
<template v-for="n in tabs_fisik">
|
|
<v-stepper-step
|
|
color="red"
|
|
:key="`${n.id}-step`"
|
|
:step="n.id"
|
|
editable
|
|
>
|
|
<span style="color:#ffe4e1">{{ n.name }}</span>
|
|
</v-stepper-step>
|
|
<v-divider
|
|
class="x_step"
|
|
style="border-color:#fff"
|
|
v-if="n.id !== tabs_fisik.length"
|
|
:key="n.id"
|
|
></v-divider>
|
|
</template>
|
|
</v-stepper-header>
|
|
<v-stepper-items>
|
|
<v-stepper-content class="x_form" step="1">
|
|
<div v-for="(riwayat,idx_r) in riwayats">
|
|
<v-card class="mb-2">
|
|
<v-layout pb-2 row>
|
|
<v-flex xs12>
|
|
<v-subheader red--text text--lighten-1>
|
|
<v-btn v-if="riwayat.show_all === 'N'" @click="toggleDetailRiwayat(idx_r)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>add</v-icon></v-btn>
|
|
<v-btn v-if="riwayat.show_all === 'Y'" @click="toggleDetailRiwayat(idx_r)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>remove</v-icon></v-btn>
|
|
{{riwayat.title}}
|
|
|
|
<v-flex text-md-right>
|
|
<v-btn v-if="riwayat.flag_normal === 'N'" @click="changeFlagNormal(idx_r)" small color="error"><v-icon class="pr-1" small>close</v-icon> {{riwayat.label_flag_normal}}</v-btn>
|
|
<v-btn v-if="riwayat.flag_normal === 'Y'" @click="changeFlagNormal(idx_r)" small color="info"><v-icon class="pr-1" small>check</v-icon> {{riwayat.label_flag_normal}}</v-btn>
|
|
</v-flex>
|
|
</v-subheader>
|
|
<v-divider class="mb-2" ></v-divider>
|
|
<div v-if="riwayat.type_form === 'XV'">
|
|
<v-layout v-if="riwayat.subtitle !== ''" class="pl-2 caption pb-2" row>{{riwayat.subtitle}}</v-layout>
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(r_detail,idx_detail) in generate_rows(riwayat.details)" v-if="riwayat.show_all === 'Y'" wrap>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="r_detail[0]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="r_detail[0].chx"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{r_detail[0].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="r_detail[0].value"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="r_detail[1]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="r_detail[1].chx"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{r_detail[1].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="r_detail[1].value"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
|
|
<div v-if="riwayat.type_form === 'XVS'">
|
|
<v-layout pl-2 v-for="segment in riwayat.details" wrap>
|
|
<v-flex xs12>
|
|
<v-layout v-if="riwayat.show_all === 'Y'" row>{{segment.name}}</v-layout>
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(r_detail,idx_detail) in generate_rows(segment.details)" v-if="riwayat.show_all === 'Y'" wrap>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="r_detail[0]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="r_detail[0].chx"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{r_detail[0].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="r_detail[0].value"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="r_detail[1]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="r_detail[1].chx"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{r_detail[1].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="r_detail[1].value"
|
|
:disabled="riwayat.flag_normal === 'Y'"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</div>
|
|
|
|
|
|
</v-stepper-content>
|
|
<v-stepper-content class="x_form" step="2">
|
|
<div v-for="(fisik,idx_f) in fisiks">
|
|
<v-card class="mb-2">
|
|
<v-layout pb-2 row>
|
|
<v-flex xs12>
|
|
<v-subheader red--text text--lighten-1>
|
|
<v-btn v-if="fisik.show_all === 'N'" @click="toggleDetailFisik(idx_f)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>add</v-icon></v-btn>
|
|
<v-btn v-if="fisik.show_all === 'Y'" @click="toggleDetailFisik(idx_f)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>remove</v-icon></v-btn>
|
|
|
|
{{fisik.title}}
|
|
</v-subheader>
|
|
<v-divider class="mb-2" ></v-divider>
|
|
<div v-if="fisik.type_form === 'TOOTH'" >
|
|
<v-layout wrap v-if="fisik.show_all === 'Y'" >
|
|
<v-flex pl-2 pt-2 pb-2 pr-2 xs12>
|
|
<v-layout row>
|
|
<v-flex xs12>
|
|
<table>
|
|
<!--<tr>
|
|
<th colspan="18">Gigi Geligi</th>
|
|
</tr>-->
|
|
<tr class="bggrey">
|
|
<th></th>
|
|
<th class="text-xs-center"colspan="8">GIGI KIRI</th>
|
|
<th class="text-xs-center"colspan="8">GIGI KANAN</th>
|
|
<th></th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigiatasketiga in fisik.details[0].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigiatasketiga.value"
|
|
@change="changeToothValue('atasketiga',gigiatasketiga,idx_f)"
|
|
v-bind:class="{'background-black':gigiatasketiga.value.toUpperCase() === 'X','background-teal':gigiatasketiga.value.toUpperCase() === 'C','background-brown':gigiatasketiga.value.toUpperCase() === 'R','background-red':gigiatasketiga.value.toUpperCase() === 'O','background-yellow-accent-4':gigiatasketiga.value.toUpperCase() === 'A','background-info':gigiatasketiga.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"
|
|
/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigiataskedua in fisik.details[1].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigiataskedua.value"
|
|
@change="changeToothValue('atas',gigiataskedua,idx_f)"
|
|
v-bind:class="{'background-black':gigiataskedua.value.toUpperCase() === 'X','background-teal':gigiataskedua.value.toUpperCase() === 'C','background-brown':gigiataskedua.value.toUpperCase() === 'R','background-red':gigiataskedua.value.toUpperCase() === 'O','background-yellow-accent-4':gigiataskedua.value.toUpperCase() === 'A','background-info':gigiataskedua.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"
|
|
/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigiatas in fisik.details[2].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigiatas.value"
|
|
@change="changeToothValue('atas',gigiatas,idx_f)"
|
|
v-bind:class="{'background-black':gigiatas.value.toUpperCase() === 'X','background-teal':gigiatas.value.toUpperCase() === 'C','background-brown':gigiatas.value.toUpperCase() === 'R','background-red':gigiatas.value.toUpperCase() === 'O','background-yellow-accent-4':gigiatas.value.toUpperCase() === 'A','background-info':gigiatas.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"
|
|
/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr class="bggrey">
|
|
<th>ATAS</th>
|
|
<th v-for="gigiatas in fisik.details[0].details" class="thgigi">
|
|
{{gigiatas.label}}
|
|
</th>
|
|
<th>ATAS</th>
|
|
</tr>
|
|
<tr class="bggrey">
|
|
<th>BAWAH</th>
|
|
<th v-for="gigibawah in fisik.details[1].details" class="thgigi">
|
|
{{gigibawah.label}}
|
|
</th>
|
|
<th>BAWAH</th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigibawah in fisik.details[3].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigibawah.value"
|
|
@change="changeToothValue('bawah',gigibawah,idx_f)"
|
|
v-bind:class="{'background-black':gigibawah.value.toUpperCase() === 'X','background-teal':gigibawah.value.toUpperCase() === 'C','background-brown':gigibawah.value.toUpperCase() === 'R','background-red':gigibawah.value.toUpperCase() === 'O','background-yellow-accent-4':gigibawah.value.toUpperCase() === 'A','background-info':gigibawah.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigibawahkedua in fisik.details[4].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigibawahkedua.value"
|
|
@change="changeToothValue('bawah',gigibawahkedua,idx_f)"
|
|
v-bind:class="{'background-black':gigibawahkedua.value.toUpperCase() === 'X','background-teal':gigibawahkedua.value.toUpperCase() === 'C','background-brown':gigibawahkedua.value.toUpperCase() === 'R','background-red':gigibawahkedua.value.toUpperCase() === 'O','background-yellow-accent-4':gigibawahkedua.value.toUpperCase() === 'A','background-info':gigibawahkedua.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr>
|
|
<th>KODE</th>
|
|
<th v-for="gigibawahketiga in fisik.details[5].details" class="thgigi">
|
|
<input
|
|
type="text"
|
|
v-model="gigibawahketiga.value"
|
|
@change="changeToothValue('bawah',gigibawahketiga,idx_f)"
|
|
v-bind:class="{'background-black':gigibawahketiga.value.toUpperCase() === 'X','background-teal':gigibawahketiga.value.toUpperCase() === 'C','background-brown':gigibawahketiga.value.toUpperCase() === 'R','background-red':gigibawahketiga.value.toUpperCase() === 'O','background-yellow-accent-4':gigibawahketiga.value.toUpperCase() === 'A','background-info':gigibawahketiga.value.toUpperCase() === 'K'}"
|
|
class="input_gigi mono"/>
|
|
</th>
|
|
<th>KODE</th>
|
|
</tr>
|
|
<tr class="bggrey">
|
|
<th></th>
|
|
<th class="text-xs-center"colspan="8">GIGI KIRI</th>
|
|
<th class="text-xs-center"colspan="8">GIGI KANAN</th>
|
|
<th></th>
|
|
</tr>
|
|
</table>
|
|
</v-flex>
|
|
</v-layout>
|
|
<v-layout align-center pt-4 pl-2 row>
|
|
<v-flex d-flex><h4>KETERANGAN KODE :</h4></v-flex>
|
|
</v-layout>
|
|
<v-layout align-center pt-3 pl-2 pb-3 row>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="black">
|
|
X
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: BERLUBANG</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="teal">
|
|
C
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: TAMBALAN</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="red">
|
|
O
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: TANGGAL</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="brown">
|
|
R
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: SISA AKAR</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="yellow accent-4">
|
|
A
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: GIGI PALSU</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center row>
|
|
<v-flex xs4>
|
|
<v-btn small style="min-width:35px;margin:0" dark color="info">
|
|
K
|
|
</v-btn>
|
|
</v-flex>
|
|
<v-flex xs8>
|
|
<h5>: KARANG GIGI</h5>
|
|
</v-flex>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
<div v-if="fisik.type_form === 'XV'">
|
|
<!--<v-layout v-if="riwayat.subtitle !== ''" class="pl-2 caption pb-2" row>{{riwayat.subtitle}}</v-layout>-->
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(f_detail,kdx_detail) in generate_rows(fisik.details)" v-if="fisik.show_all === 'Y'" wrap>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="f_detail[0]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_detail[0].chx"
|
|
@change="changeXVChx(idx_f,f_detail[0])"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{f_detail[0].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="f_detail[0].value"
|
|
@change="changeXVChx(idx_f,f_detail[0])"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="f_detail[1]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_detail[1].chx"
|
|
@change="changeXVChx(idx_f,f_detail[1])"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{f_detail[1].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="f_detail[1].value"
|
|
@change="changeXVChx(idx_f,f_detail[1])"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
|
|
<div v-if="fisik.type_form === 'XVS'">
|
|
<v-layout pl-2 v-for="(segment,idx_s) in fisik.details" wrap>
|
|
<v-flex xs12>
|
|
<v-layout v-if="fisik.show_all === 'Y'" row>{{segment.name}}</v-layout>
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(f_detail,kdx_detail) in generate_rows(segment.details)" v-if="fisik.show_all === 'Y'" wrap>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="f_detail[0]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_detail[0].chx"
|
|
@change="changeXVSChx(idx_f,idx_s,f_detail[0])"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{f_detail[0].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="f_detail[0].value"
|
|
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
<v-flex xs6 pa-1>
|
|
<v-layout v-if="f_detail[1]" align-center row>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_detail[1].chx"
|
|
@change="changeXVSChx(idx_f,idx_s,f_detail[1])"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs7>
|
|
<span style="font-size:12px" >{{f_detail[1].label}}</span>
|
|
</v-flex>
|
|
<v-flex xs4 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="f_detail[1].value"
|
|
single-line
|
|
placeholder="Keterangan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
|
|
<div v-if="fisik.type_form === 'VXX'" >
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(f_detail,kdx_detail) in generate_rows(fisik.details)" v-if="fisik.show_all === 'Y'" wrap>
|
|
<v-flex v-for="f_cols in f_detail" xs6 pa-1>
|
|
<v-layout v-if="f_cols.type === 'vxx-v'" align-center row>
|
|
<v-flex xs4>
|
|
<span style="font-size:12px" >{{f_cols.label}}</span>
|
|
</v-flex>
|
|
<v-flex xs5>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
v-model="f_cols.value"
|
|
outline
|
|
@change="changeVXXValue(idx_f,f_cols)"
|
|
single-line
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
<v-flex xs3 pl-1>
|
|
<span class="mono" style="font-size:12px" >{{f_cols.unit}}</span>
|
|
</v-flex>
|
|
</v-layout>
|
|
<v-layout v-if="f_cols.type === 'vxx-xx'" align-center row>
|
|
<v-flex xs4><span style="font-size:12px" >{{f_cols.label}}</span></v-flex>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_cols.chx_y"
|
|
@change="changeVXXChx(idx_f,f_cols,'y')"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs3>
|
|
<span class="mono" style="font-size:12px" >{{f_cols.label_y}}</span>
|
|
</v-flex>
|
|
<v-flex xs1>
|
|
<v-checkbox row
|
|
class="mt-0 pt-0"
|
|
v-model="f_cols.chx_x"
|
|
@change="changeVXXChx(idx_f,f_cols,'x')"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
</v-flex>
|
|
<v-flex xs3>
|
|
<span class="mono" style="font-size:12px" >{{f_cols.label_x}}</span>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
<div v-if="fisik.type_form === 'XXV'" >
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(f_detail,kdx_detail) in fisik.details" v-if="fisik.show_all === 'Y'" wrap>
|
|
<v-flex xs12 pa-1>
|
|
<v-layout align-center row>
|
|
<v-flex xs4><span style="font-size:12px" >{{f_detail.label}}</span></v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center>
|
|
<v-checkbox
|
|
class="mt-0 pt-0 shrink mr-2"
|
|
style="width:15px"
|
|
v-model="f_detail.chx_y"
|
|
@change="changeXXVChx(idx_f,f_detail,'y')"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
<span class="mono pl-1" style="font-size:12px" >{{f_detail.label_y}}</span>
|
|
</v-layout>
|
|
</v-flex>
|
|
<v-flex xs2>
|
|
<v-layout align-center>
|
|
<v-checkbox
|
|
class="mt-0 pt-0 shrink mr-2"
|
|
style="width:15px"
|
|
v-model="f_detail.chx_x"
|
|
@change="changeXXVChx(idx_f,f_detail,'x')"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
<span class="mono pl-1" style="font-size:12px" >{{f_detail.label_x}}</span>
|
|
</v-layout>
|
|
</v-flex>
|
|
<v-flex xs4 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
v-model="f_detail.value"
|
|
:disabled="f_detail.disable_value === 'Y'"
|
|
outline
|
|
single-line
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</div>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</div>
|
|
<v-card>
|
|
<v-layout row>
|
|
<v-flex xs12>
|
|
<v-subheader red--text text--lighten-1> SARAN</v-subheader>
|
|
<v-divider></v-divider>
|
|
<v-layout row wrap>
|
|
<v-flex xs12 pa-2>
|
|
<v-text-field
|
|
v-model="umum_saran"
|
|
label="Isikan saran ..."
|
|
outline
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</v-stepper-content>
|
|
|
|
<v-stepper-content class="x_form" step="3">
|
|
<div v-for="(k3,idx_k) in k3s">
|
|
<v-card class="mb-2">
|
|
<v-layout pb-2 row>
|
|
<v-flex xs12>
|
|
<v-subheader red--text text--lighten-1>
|
|
<v-btn v-if="k3.show_all === 'N'" @click="toggleDetailK3(idx_k)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>add</v-icon></v-btn>
|
|
<v-btn v-if="k3.show_all === 'Y'" @click="toggleDetailK3(idx_k)" style="min-width:30px;" small flat color="#fa8072"><v-icon small>remove</v-icon></v-btn>
|
|
{{k3.title}}
|
|
|
|
<!--<v-flex text-md-right>
|
|
<v-btn v-if="riwayat.flag_normal === 'N'" @click="changeFlagNormal(idx_r)" small color="error"><v-icon class="pr-1" small>close</v-icon> {{riwayat.label_flag_normal}}</v-btn>
|
|
<v-btn v-if="riwayat.flag_normal === 'Y'" @click="changeFlagNormal(idx_r)" small color="info"><v-icon class="pr-1" small>check</v-icon> {{riwayat.label_flag_normal}}</v-btn>
|
|
</v-flex>-->
|
|
</v-subheader>
|
|
<v-divider class="mb-2" ></v-divider>
|
|
<div v-if="k3.type_form === 'XVV'">
|
|
<!--<v-layout v-if="riwayat.subtitle !== ''" class="pl-2 caption pb-2" row>{{riwayat.subtitle}}</v-layout>-->
|
|
<v-layout pl-2 pb-1 pt-1 v-for="(k_detail,idk_detail) in k3.details" v-if="k3.show_all === 'Y'" wrap>
|
|
<v-flex xs12>
|
|
<v-layout align-center row>
|
|
<v-flex xs6>
|
|
<v-layout align-center>
|
|
<v-checkbox
|
|
style="width:15px"
|
|
class="mt-0 pt-0 shrink mr-2"
|
|
v-model="k_detail.chx"
|
|
color="red"
|
|
hide-details
|
|
></v-checkbox>
|
|
<span class="pl-2" style="font-size:12px" >{{k_detail.label}}</span>
|
|
</v-layout>
|
|
</v-flex>
|
|
<v-flex xs3 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="k_detail.value_sumber"
|
|
single-line
|
|
placeholder="Sumber"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
<v-flex xs3 pl-1 pr-2>
|
|
<v-text-field
|
|
style="font-size:12px;margin-top:0;padding-top:0;line-height:25px!important"
|
|
outline
|
|
v-model="k_detail.value_lama"
|
|
single-line
|
|
placeholder="Lama Pajanan"
|
|
hide-details
|
|
></v-text-field>
|
|
</v-flex>
|
|
</v-layout>
|
|
|
|
</v-flex>
|
|
|
|
</v-layout>
|
|
</div>
|
|
|
|
|
|
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</div>
|
|
|
|
|
|
</v-stepper-content>
|
|
</v-stepper-items>
|
|
</v-stepper>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-flex>
|
|
</v-layout>
|
|
</v-card>
|
|
</v-flex>
|
|
</v-layout>
|
|
<one-dialog-print :title="printtitle" :width="printwidth" :height="500" :status="openprint" :urlprint="urlprint" @close-dialog-print="closePrint"></one-dialog-print>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.divider.x_step{
|
|
border-color:#fff;
|
|
}
|
|
.x_form .v-text-field--outline>.v-input__control>.v-input__slot {
|
|
align-items: stretch;
|
|
min-height: 20px!important;
|
|
margin-top:0;
|
|
line-height:25px;
|
|
}
|
|
|
|
.x_form .v-text-field--outline.v-text-field--single-line input {
|
|
margin-top: 0px!important;
|
|
font-size:14px;
|
|
}
|
|
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;
|
|
}
|
|
th, td {
|
|
padding-left: 15px;
|
|
padding-right: 15px;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
text-align: left;
|
|
}
|
|
table.tform tr:nth-child(even) {
|
|
background-color: #eee;
|
|
}
|
|
table.tform tr:nth-child(odd) {
|
|
background-color: #fff;
|
|
}
|
|
.thgigi{
|
|
width:50px!important;
|
|
padding:5px!important;
|
|
text-align:center;
|
|
}
|
|
.input_gigi{
|
|
width:100%;
|
|
border:1px solid grey;
|
|
font-size:14px;
|
|
text-align:center;
|
|
line-height: 2;
|
|
text-transform: uppercase;
|
|
}
|
|
.bggrey{
|
|
background:#eee!important;
|
|
}
|
|
.background-black{
|
|
background:black;
|
|
color:#fff;
|
|
}
|
|
.background-teal{
|
|
background:#009688;
|
|
color:#fff;
|
|
}
|
|
.background-red{
|
|
background:#f44336;
|
|
color:#fff;
|
|
}
|
|
.background-brown{
|
|
background:#795548;
|
|
color:#fff;
|
|
}
|
|
.background-yellow-accent-4{
|
|
background:#ffeb3b;
|
|
color:#fff;
|
|
}
|
|
.background-info{
|
|
background:#64b5f6;
|
|
color:#fff;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
module.exports = {
|
|
components : {
|
|
'one-dialog-print':httpVueLoader('../../common/oneDialogPrintX.vue')
|
|
},
|
|
data: () => ({
|
|
openprint:false,
|
|
urlprint:'',
|
|
printtitle:'',
|
|
printwidth:600,
|
|
requiredoctor:false,
|
|
tab:1,
|
|
cbx_1:false
|
|
}),
|
|
computed: {
|
|
tabs_fisik:{
|
|
get() {
|
|
return this.$store.state.sample.tabs_fisik
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_tabs_fisik",val)
|
|
}
|
|
},
|
|
umum_saran:{
|
|
get() {
|
|
return this.$store.state.sample.umum_saran
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_umum_saran",val)
|
|
}
|
|
},
|
|
rows_riwayat(){
|
|
return this.$store.state.sample.rows_riwayat
|
|
},
|
|
riwayats:{
|
|
get() {
|
|
return this.$store.state.sample.riwayats
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_riwayats",val)
|
|
}
|
|
},
|
|
fisiks:{
|
|
get() {
|
|
return this.$store.state.sample.fisiks
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_fisiks",val)
|
|
}
|
|
},
|
|
k3s:{
|
|
get() {
|
|
return this.$store.state.sample.k3s
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_k3s",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
|
|
},
|
|
xlangs(){
|
|
return this.$store.state.sample.langs
|
|
},
|
|
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
|
|
},
|
|
xdoctors(){
|
|
return this.$store.state.sample.doctors
|
|
},
|
|
xselecteddoctor:{
|
|
get() {
|
|
return this.$store.state.sample.selected_doctor
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_selected_doctor",val)
|
|
}
|
|
},
|
|
xdialogdoctor:{
|
|
get() {
|
|
return this.$store.state.sample.dialog_doctor
|
|
},
|
|
set(val) {
|
|
this.$store.commit("sample/update_dialog_doctor",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)
|
|
}
|
|
},
|
|
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)
|
|
}
|
|
},
|
|
},
|
|
methods : {
|
|
changeXVSChx(idx_f,idx_s,row){
|
|
var fisiks = this.fisiks
|
|
var isnormal = row.is_normal
|
|
if(isnormal === 'Y' && row.chx){
|
|
fisiks[idx_f].details[idx_s].details.forEach(function(entry,index) {
|
|
if(fisiks[idx_f].details[idx_s].details[index].is_normal === 'N'){
|
|
fisiks[idx_f].details[idx_s].details[index].chx = false
|
|
fisiks[idx_f].details[idx_s].details[index].value = ''
|
|
}
|
|
})
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
}
|
|
|
|
if(isnormal === 'N' && row.chx){
|
|
var n_idx = _.findIndex(fisiks[idx_f].details[idx_s].details, function(o) { return o.is_normal === 'Y'})
|
|
//console.log(n_idx)
|
|
fisiks[idx_f].details[idx_s].details[n_idx].chx = false
|
|
fisiks[idx_f].details[idx_s].details[n_idx].value = ''
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
}
|
|
},
|
|
changeXVChx(idx_f,row){
|
|
//console.log(idx_f)
|
|
var fisiks = this.fisiks
|
|
var isnormal = row.is_normal
|
|
if(isnormal === 'Y' && row.chx){
|
|
fisiks[idx_f].details.forEach(function(entry,index) {
|
|
if(fisiks[idx_f].details[index].is_normal === 'N'){
|
|
fisiks[idx_f].details[index].chx = false
|
|
fisiks[idx_f].details[index].value = ''
|
|
}
|
|
})
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
}
|
|
|
|
if(isnormal === 'N' && row.chx){
|
|
var n_idx = _.findIndex(fisiks[idx_f].details, function(o) { return o.is_normal === 'Y'})
|
|
//console.log(n_idx)
|
|
fisiks[idx_f].details[n_idx].chx = false
|
|
fisiks[idx_f].details[n_idx].value = ''
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
}
|
|
//console.log("detailss")
|
|
// console.log(fisiks[idx_f])
|
|
|
|
},
|
|
changeToothValue(position,tooth,icx){
|
|
var fisiks = this.fisiks
|
|
var pos = -1
|
|
if(position === 'atasketiga')
|
|
pos = 0
|
|
if(position === 'ataskedua')
|
|
pos = 1
|
|
if(position === 'atas')
|
|
pos = 2
|
|
if(position === 'bawah')
|
|
pos = 3
|
|
if(position === 'bawahkedua')
|
|
pos = 4
|
|
if(position === 'bawahketiga')
|
|
pos = 5
|
|
|
|
var idx = _.findIndex(fisiks[icx].details[pos].details, function(o) { return o.id_code == tooth.id_code})
|
|
fisiks[icx].details[pos].details[idx].value = tooth.value.toUpperCase()
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
},
|
|
changeXXVChx(idx_f,row,status){
|
|
var fisiks = this.fisiks
|
|
|
|
var idx = _.findIndex(fisiks[idx_f].details, function(o) { return o.id_code == row.id_code})
|
|
if(status == 'y'){
|
|
var now_y = fisiks[idx_f].details[idx].chx_y
|
|
fisiks[idx_f].details[idx].chx_x = now_y === true ?false:true
|
|
if(now_y)
|
|
fisiks[idx_f].details[idx].disable_value = 'Y'
|
|
else
|
|
fisiks[idx_f].details[idx].disable_value = 'N'
|
|
}
|
|
if(status == 'x'){
|
|
var now_x = fisiks[idx_f].details[idx].chx_x
|
|
fisiks[idx_f].details[idx].chx_y = now_x === true ?false:true
|
|
if(now_x)
|
|
fisiks[idx_f].details[idx].disable_value = 'N'
|
|
else
|
|
fisiks[idx_f].details[idx].disable_value = 'Y'
|
|
}
|
|
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
},
|
|
changeVXXChx(idx_f,row,status){
|
|
var fisiks = this.fisiks
|
|
//console.log(row)
|
|
var idx = _.findIndex(fisiks[idx_f].details, function(o) { return o.id_code == row.id_code})
|
|
|
|
if(status == 'y'){
|
|
var now_y = fisiks[idx_f].details[idx].chx_y
|
|
fisiks[idx_f].details[idx].chx_x = now_y?false:true
|
|
}
|
|
|
|
if(status == 'x'){
|
|
var now_x = fisiks[idx_f].details[idx].chx_x
|
|
fisiks[idx_f].details[idx].chx_y = now_x?false:true
|
|
}
|
|
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
},
|
|
changeVXXValue(idx_f,row){
|
|
var fisiks = this.fisiks
|
|
// console.log(row)
|
|
if(row.table_name === 'status_gizi'){
|
|
// console.log(row)
|
|
var idx_berat = _.findIndex(fisiks[idx_f].details, function(o) { return o.id_code == 'status_gizi_1'})
|
|
var val_berat = parseFloat(fisiks[idx_f].details[idx_berat].value)
|
|
//console.log(val_berat)
|
|
var idx_tinggi = _.findIndex(fisiks[idx_f].details, function(o) { return o.id_code == 'status_gizi_2'})
|
|
var val_tinggi = parseFloat(fisiks[idx_f].details[idx_tinggi].value)
|
|
//console.log(val_tinggi)
|
|
var idx_bmi = _.findIndex(fisiks[idx_f].details, function(o) { return o.id_code == 'status_gizi_4'})
|
|
var val_bmi = (val_berat / ((val_tinggi/100)*(val_tinggi/100))).toFixed(2)
|
|
// console.log(val_bmi)
|
|
fisiks[idx_f].details[idx_bmi].value = val_bmi
|
|
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
}
|
|
|
|
|
|
|
|
},
|
|
generate_rows(details){
|
|
//console.log(details)
|
|
var riwayats = details
|
|
var row_riwayats = []
|
|
var rows = []
|
|
riwayats.forEach(function(item,index){
|
|
rows.push(item)
|
|
if(index%2 !== 0 || index === riwayats.length - 1 ){
|
|
row_riwayats.push(rows)
|
|
rows = []
|
|
}
|
|
})
|
|
//console.log(row_riwayats)
|
|
return row_riwayats
|
|
},
|
|
changeFlagNormal(idx){
|
|
var riwayats = this.$store.state.sample.riwayats
|
|
var old_val = riwayats[idx].flag_normal
|
|
riwayats[idx].flag_normal = old_val === 'Y'?'N':'Y'
|
|
if(riwayats[idx].flag_normal === 'Y'){
|
|
riwayats[idx].details.forEach((item) => item.chx = false)
|
|
riwayats[idx].details.forEach((item) => item.value = '')
|
|
}
|
|
this.$store.commit("sample/update_riwayats",riwayats)
|
|
},
|
|
toggleDetailRiwayat(idx){
|
|
var riwayats = this.$store.state.sample.riwayats
|
|
var old_val = riwayats[idx].show_all
|
|
riwayats[idx].show_all = old_val === 'Y'?'N':'Y'
|
|
this.$store.commit("sample/update_riwayats",riwayats)
|
|
},
|
|
toggleDetailFisik(idx){
|
|
var fisiks = this.$store.state.sample.fisiks
|
|
var old_val = fisiks[idx].show_all
|
|
fisiks[idx].show_all = old_val === 'Y'?'N':'Y'
|
|
this.$store.commit("sample/update_fisiks",fisiks)
|
|
},
|
|
toggleDetailK3(idx){
|
|
var k3s = this.$store.state.sample.k3s
|
|
var old_val = k3s[idx].show_all
|
|
k3s[idx].show_all = old_val === 'Y'?'N':'Y'
|
|
this.$store.commit("sample/update_k3s",k3s)
|
|
},
|
|
selectedLang(value){
|
|
return {id:value.language_id,name:value.language_name}
|
|
},
|
|
selectedlangName(value){
|
|
return value.language_name
|
|
},
|
|
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
|
|
},
|
|
selectLang(trx,lang){
|
|
|
|
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 })
|
|
|
|
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)
|
|
},
|
|
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]})
|
|
},
|
|
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 })
|
|
var template = arr.details[0].template_name
|
|
var error_msg = []
|
|
if(template === 'UMUM' || template === 'UMUM_K3'){
|
|
var go_action = true
|
|
var riwayats = this.riwayats
|
|
riwayats.forEach(function(item,index){
|
|
//console.log(item.flag_normal)
|
|
if(item.flag_normal === 'N'){
|
|
var count_y = _.filter(item.details, function(o) { return o.chx }).length
|
|
if(item.type_form === 'XVS'){
|
|
count = 0
|
|
item.details.forEach(function(entry) {
|
|
count_y += _.filter(entry.details, function(o) { return o.chx }).length
|
|
})
|
|
}
|
|
|
|
console.log(item)
|
|
console.log(count_y)
|
|
if(count_y === 0){
|
|
go_action = false
|
|
var x_msg = ''
|
|
if(item.title === 'KELUHAN SAAT INI')
|
|
var x_msg = "Menunggu pesan tanpa jawaban, mengharap balasan meski teracuhkan, isian <span style='color:red'>"+item.title+"</span> tolong diperhatikan, kalo ada keluhan silahkan dituliskan."
|
|
if(item.title === 'RIWAYAT POBIA')
|
|
var x_msg = "Wanita itu bernama via, cantik...riang dan jenaka, isian <span style='color:red'>"+item.title+"</span> tolong dibaca, kalo benar ada pobia harap dicentang saja."
|
|
if(item.title === 'RIWAYAT PENYAKIT')
|
|
var x_msg = "Ditinggalkan sendiri memang sakit, namun jangan menyerah untuk bangkit, isian <span style='color:red'>"+item.title+"</span> jangan dulu dirakit, kalo ada riwayat penyakit tolong disungkit."
|
|
if(item.title === 'RIWAYAT PENYAKIT KELUARGA')
|
|
var x_msg = "Bahagia itu sederhana, kalo tak sederhana namanya cinta, isian <span style='color:red'>"+item.title+"</span> mungkin ada yang lupa, belum ada yang dicentang, padahal maksudnya ada."
|
|
if(item.title === 'RIWAYAT KEBIASAAN HIDUP')
|
|
var x_msg = "Berkerja siang malam, untuk kelangsungan hidup, isian <span style='color:red'>"+item.title+"</span> salah satu minta dicakup."
|
|
if(item.title === 'RIWAYAT KONSUMSI OBAT TERATUR')
|
|
var x_msg = "Minum kopi, jangan sambil tidur, isian <span style='color:red'>"+item.title+"</span> silahkan diatur, barang kali lupa tertutur."
|
|
|
|
|
|
error_msg.push(x_msg)
|
|
}
|
|
}
|
|
})
|
|
|
|
if(go_action){
|
|
this.$store.dispatch("sample/savefisik",{
|
|
template:template,
|
|
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,
|
|
trx:trx,
|
|
trx_numbering:arr.ordernumber,
|
|
riwayats:riwayats,
|
|
fisiks:this.fisiks,
|
|
umum_saran:this.umum_saran,
|
|
k3s:this.k3s,
|
|
act:template
|
|
})
|
|
}
|
|
else{
|
|
var msg = error_msg.join('</br></br>')
|
|
//var msg = "Menunggu pesan tanpa jawaban, mengharap balasan meski teracuhkan, isian <span style='color:red'>"+error_msg.join(",")+"</span> tolong diperhatikan, kalo ada keluhan tolong dituliskan"
|
|
this.$store.commit("sample/update_msg_info",msg)
|
|
this.$store.commit("sample/update_open_dialog_info",true)
|
|
}
|
|
}else{
|
|
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,
|
|
trx:trx,
|
|
trx_numbering:arr.ordernumber,
|
|
act:act
|
|
})
|
|
}
|
|
},
|
|
val1(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 verifikasi 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)
|
|
},
|
|
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 verifikasi 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)
|
|
},
|
|
lama_print(trx,act){
|
|
console.log(act)
|
|
this.$store.commit("sample/update_act",act)
|
|
this.$store.commit("sample/update_last_trx",trx)
|
|
this.printwidth = 1028
|
|
this.printtitle = ""
|
|
let idx = trx.trx_id
|
|
let user = one_user()
|
|
var d = new Date();
|
|
var n = d.getTime()
|
|
var rptname = 'rpt_hasil_so'
|
|
if(trx.language_name === 'EN')
|
|
rptname = 'rpt_hasil_so_eng'
|
|
|
|
this.urlprint = "/birt/run?__report=report/one/lab/"+rptname+".rptdesign&__format=pdf&username="+user.M_UserUsername+"&PID="+idx+'&PLang='+trx.language_id+'&tm='+n
|
|
|
|
this.openprint = true
|
|
},
|
|
doPrintAfterLang(){
|
|
this.dialogprintlang = false
|
|
var trx = this.$store.state.sample.selected_test
|
|
console.log(trx)
|
|
var idx_true = _.findIndex(this.dialoglangs, item => item.chex === 'Y')
|
|
this.xselectedlang = this.dialoglangs[idx_true]
|
|
this.printwidth = 1028
|
|
this.printtitle = ""
|
|
let idx = trx.re_id
|
|
let user = one_user()
|
|
var d = new Date();
|
|
var n = d.getTime()
|
|
var rptname = ''
|
|
var rptname = 'rpt_hasil_so_layanan'
|
|
if(trx.language_name === 'EN')
|
|
rptname = 'rpt_hasil_so_layanan_eng'
|
|
|
|
this.urlprint = "/birt/run?__report=report/one/lab/"+rptname+".rptdesign&__format=pdf&username="+user.M_UserUsername+"&PID="+idx+'&PLang='+trx.language_id+'&tm='+n
|
|
|
|
this.openprint = true
|
|
},
|
|
print(trx,act){
|
|
// console.log(trx)
|
|
this.dialogprintlang = true
|
|
var nowlang = trx.langs
|
|
console.log(trx)
|
|
_.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)
|
|
},
|
|
savedoctor(){
|
|
var prm = {}
|
|
prm.selected_detail = this.$store.state.sample.selected_detail
|
|
prm.selected_doctor = this.xselecteddoctor
|
|
this.$store.dispatch("sample/savedoctor",prm)
|
|
},
|
|
closeDialogAction(){
|
|
var trx = this.$store.state.sample.last_trx
|
|
var act = this.$store.state.sample.act
|
|
this.saveResult(trx,act)
|
|
},
|
|
opendialogdoctor(test){
|
|
this.$store.commit("sample/update_selected_detail",test)
|
|
this.$store.commit("sample/update_doctors",test.doctors)
|
|
this.xselecteddoctor = {}
|
|
if(test.doctor_id !== 0 || test.doctor_id !== '0'){
|
|
this.xselecteddoctor = {doctor_id:test.doctor_id,doctor_fullname:test.doctor_fullname}
|
|
}
|
|
this.xdialogdoctor = true
|
|
},
|
|
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("update_selected_transaction",seltrx)
|
|
this.dialogtemplates = false
|
|
}
|
|
|
|
}
|
|
}
|
|
</script>
|