2025-03-31 15:51:06 +00:00
< ? php
use yii\helpers\Url ;
use yii\helpers\Html ;
use yii\jui\AutoComplete ;
use yii\web\JsExpression ;
use kartik\select2\Select2 ;
2025-04-01 09:27:47 +00:00
use common\models\ConstRace ;
2025-04-20 11:36:44 +00:00
use common\models\ConstWard ;
2025-03-31 15:51:06 +00:00
use yii\helpers\ArrayHelper ;
use yii\widgets\MaskedInput ;
2025-04-20 15:44:51 +00:00
use common\models\ConstDoctor ;
2025-04-20 11:36:44 +00:00
use common\models\ConstRights ;
2025-03-31 15:51:06 +00:00
use yii\bootstrap5\ActiveForm ;
use common\models\PatientTitle ;
use common\models\ConstHospital ;
2025-04-01 09:27:47 +00:00
use common\models\ConstNationality ;
2025-04-20 15:44:51 +00:00
use common\models\ConstServiceCharge ;
use unclead\multipleinput\MultipleInput ;
use unclead\multipleinput\MultipleInputColumn ;
2025-03-31 15:51:06 +00:00
?>
< div class = " card " >
< div class = " card-header " >
< h4 class = " card-title " >< i class = " fa fa-file-text " ></ i > < ? = $this -> title ?> </h4>
</ div >
< div class = " card-body " >
< ? php $form = ActiveForm :: begin ([
'enableAjaxValidation' => true ,
'enableClientValidation' => false ,
'validateOnChange' => true ,
'validateOnSubmit' => true ,
'validateOnBlur' => false ,
]) ?>
2025-04-20 15:44:51 +00:00
< ? = $form -> errorSummary ([ $model , /*$patient*/ ]) ?>
2025-03-31 15:51:06 +00:00
2025-04-20 15:44:51 +00:00
< div class = " row mb-4 " >
2025-03-31 15:51:06 +00:00
< div class = " col-md-6 " >
< div class = " row " >
< div class = " col-md-4 " >< ? = $form -> field ( $model , 'id_case' ) -> widget ( MaskedInput :: class , [
'mask' => 'A99-99999' ,
'options' => [
'class' => 'form-control input-lg' ,
'style' => 'font-weight: bold' ,
'readonly' => $model -> isNewRecord ? false : true ,
]
]) ?>
</ div >
< div class = " col-md-6 " >
< ? = $form -> field ( $model , 'hospital_id' ) -> widget ( Select2 :: classname (), [
'data' => ArrayHelper :: map ( ConstHospital :: find () -> orderBy ([ 'name' => SORT_ASC ]) -> all (), 'id' , 'name' ), //->where('id > 1')
'options' => [
'placeholder' => 'เลือกหน่วยงาน ....' ,
],
'theme' => Select2 :: THEME_BOOTSTRAP ,
//'initValueText' => (!$model->isNewRecord ? ConstHospital::findOne($model->hospital_id)->name : ''),
'pluginOptions' => [
'allowClear' => true ,
//'minimumInputLength' => 3,
/* 'ajax' => [
'url' => Url :: to ([ '/site/hospital-list' ]),
'dataType' => 'json' , 1
'data' => new JsExpression ( 'function(params) { return {q:params.term}; }' )
], */
],
]) ?>
</ div >
</ div >
</ div >
< div class = " col-md-6 " >
< ? php if ( ! $model -> isNewRecord ) { ?>
< embed src = " <?= Url::to(['sticker/print', 'id_case' => $model->id_case ], true) ?>#view=fit "
type = " application/pdf " width = " 100% " height = " 252 " >
< ? php } ?>
</ div >
</ div >
< div class = " row " >
< div class = " col-md-2 " >< ? = $form -> field ( $model , 'block_amount' ) ?> </div>
< div class = " col-md-2 " >< ? = $form -> field ( $model , 'slide_amount' ) ?> </div>
< div class = " col-md-4 " >< ? = $form -> field ( $model , 'block_ex' ) ?> </div>
</ div >
< div class = " row " >
2025-04-21 03:30:12 +00:00
< div class = " col-md-3 " >< ? = $form -> field ( $model , 'is_histo_staining' ) -> checkbox () ?> </div>
< div class = " col-md-3 " >< ? = $form -> field ( $model , 'is_immuno_staining' ) -> checkbox () ?> </div>
2025-03-31 15:51:06 +00:00
</ div >
< div class = " row " >
< div class = " col-md-12 " >< ? = $form -> field ( $model , 'note' ) -> textarea () ?> </div>
</ div >
2025-04-21 03:30:12 +00:00
< ? php if ( ! $model -> isNewRecord ) { ?>
< div class = " mt-4 " >
< h5 >< i class = " fa fa-dollar-sign " ></ i > รายการตรวจ </ h5 >
</ div >
< ? php $this -> registerJs ( '
$ . fn . init_charge = function (){
//$(".charge_class").on("change", function(e) {
var cid = $ ( this ) . attr ( " id " );
var charge_id = $ ( this ) . val ();
var hospital_id = $ ( " #hospital_id " ) . val ();
var sid = cid . split ( " - " );
//alert(cid);
$ . get (
" ' . Url::toRoute('/site/hospital-service-charge') . ' " ,
{
charge_id : charge_id ,
hospital_id : hospital_id
},
function ( data )
{
var result = data . split ( " -- " );
$ ( " #caseexternal-items- " + sid [ 2 ] + " -charge_id " ) . val ( result [ 0 ]);
$ ( " .field-caseexternal-items- " + sid [ 2 ] + " -code " ) . text ( result [ 1 ]);
$ ( " .field-caseexternal-items- " + sid [ 2 ] + " -testing " ) . text ( result [ 2 ]);
$ ( " .field-caseexternal-items- " + sid [ 2 ] + " -price " ) . text ( result [ 3 ]);
}
);
};
' ) ?>
< ? = $form -> errorSummary ([ $model ]) ?>
< ? = Html :: hiddenInput ( 'hospital_id' , $model -> hospital_id , [ 'id' => 'hospital_id' ]) ?>
< h5 class = " mt-4 " > ชื่อ - นามสกุล : < ? = $model -> getFullname () ?> </h5>
< div class = " table-responsive " >
< ? = $form -> field ( $model , 'items' ) -> label ( false ) -> widget ( MultipleInput :: class , [
'allowEmptyList' => true ,
//'min' => 1,
'id' => Html :: getInputId ( $model , 'items' ),
'addButtonPosition' => MultipleInput :: POS_FOOTER ,
'addButtonOptions' => [ 'class' => 'btn btn-success' ],
'removeButtonOptions' => [ 'class' => 'btn btn-sm btn-danger' ],
'iconSource' => 'fa' ,
'iconMap' => [
'fa' => [
'drag-handle' => 'fa fa-bars' ,
'remove' => 'fa fa-times' ,
'add' => 'fa fa-plus' ,
'clone' => 'fa fa-files-o' ,
],
],
'columns' => [
[
'name' => 'from_id' ,
'title' => 'ID' ,
'value' => function ( $data ) {
return isset ( $data [ 'id' ]) ? $data [ 'id' ] : '' ;
},
'enableError' => true ,
'type' => MultipleInputColumn :: TYPE_HIDDEN_INPUT ,
],
[
'name' => 'id' ,
'title' => 'ID' ,
'enableError' => true ,
'type' => MultipleInputColumn :: TYPE_HIDDEN_INPUT ,
],
[
'name' => 'hospital_id' ,
'value' => $model -> hospital_id ,
'enableError' => true ,
'type' => MultipleInputColumn :: TYPE_HIDDEN_INPUT ,
],
[
'name' => 'id_case' ,
'value' => $model -> id_case ,
'enableError' => true ,
'type' => MultipleInputColumn :: TYPE_HIDDEN_INPUT ,
],
[
'name' => 'charge_id' ,
'title' => 'ID' ,
'enableError' => true ,
'type' => MultipleInputColumn :: TYPE_HIDDEN_INPUT ,
'value' => function ( $data ) {
return isset ( $data [ 'charge_id' ]) ? $data [ 'charge_id' ] : null ;
},
],
[
'name' => 'code' ,
'title' => 'Code Test' ,
'type' => \yii\jui\AutoComplete :: class ,
'value' => function ( $data ) {
return isset ( $data [ 'charge' ]) ? $data [ 'charge' ][ 'code' ] : null ;
},
'enableError' => true ,
'options' => [
'options' => [
'class' => 'form-control'
],
'clientOptions' => [
'source' => ConstServiceCharge :: find () -> select ([ 'id as id' , 'code as value' , 'CONCAT(code, \' \', name) as label' ]) -> where ([ 'lab' => 'surgical' ]) -> orderBy ([ 'code' => SORT_ASC ]) -> asArray () -> all (),
'change' => 'function(){$(this).init_charge();}' ,
'select' => new JsExpression ( " function( event, ui ) {
$ ( this ) . val ( ui . item . id );
$ ( this ) . init_charge ();
} " )
],
'class' => 'charge_class' ,
]
],
[
'name' => 'testing' ,
'type' => MultipleInputColumn :: TYPE_STATIC ,
'title' => 'ชื่อ' ,
'value' => function ( $data ) {
return isset ( $data [ 'charge' ]) ? $data [ 'charge' ][ 'name' ] : null ;
},
'enableError' => true ,
],
[
'name' => 'price' ,
'type' => MultipleInputColumn :: TYPE_STATIC ,
'title' => 'ราคาค่าตรวจ(บาท)' ,
'value' => function ( $data ) {
return isset ( $data [ 'price' ]) ? number_format ( $data [ 'price' ], 2 ) : null ;
},
'enableError' => true ,
],
]
]) ?>
</ div >
< ? php
$this -> registerJs ( "
$ ( '#caseexternal-items' ) . on ( 'afterInit' , function (){
//console.log('calls on after initialization event');
}) . on ( 'beforeAddRow' , function ( e ) {
//console.log('calls on before add row event');
}) . on ( 'afterAddRow' , function ( e ) {
//console.log('calls on after add row event');
}) . on ( 'beforeDeleteRow' , function ( e , item ){
//console.log(item);
return confirm ( 'คุณแน่ใจนะว่าต้องการลบ?' );
}) . on ( 'afterDeleteRow' , function ( e , item ){
var id_case = item . find ( '.list-cell__code' ) . find ( 'input[id*=\"caseexternal-items-\"][id$=\"-id_case\"' ) . val ();
var from_id = item . find ( '.list-cell__code' ) . find ( 'input[id*=\"caseexternal-items-\"][id$=\"-from_id\"]' ) . val ();
//alert(id_case + from_id);
$ . post ( \ " " . Url :: to ([ 'finance-service-charge-delete' ]) . " \" ,
{
id_case : id_case ,
from_id : from_id
},
function ( data , status ){
if ( data == 'error' ){
alert ( 'ยังไม่ได้บันทึกข้อมูล หรือไม่มีสิทธิในการแก้ไข กรุณาติดต่อเจ้าของ Case' );
}
if ( data == 'success' ) {
alert ( 'ลบข้อมูลเรียบร้อยแล้ว' );
}
//alert(\"Data: \" + data + \"Status: \" + status);
}
);
});
" ) ?>
< ? php } ?>
2025-04-20 15:44:51 +00:00
2025-04-20 11:36:44 +00:00
< div class = " mt-4 " >
< h5 >< i class = " ri-file-user-line " ></ i > ข้อมูลผู้ป่วย ( Patient ) </ h5 >
</ div >
< ? php if ( $model -> isNewRecord ) { ?>
< ? = $form -> field ( $model , 'patient_id' ) -> label ( false ) -> hiddenInput () ?>
< ? php } ?>
2025-03-31 15:51:06 +00:00
< div class = " row " >
< div class = " col-md-2 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'title_id' ) -> dropDownList ( ArrayHelper :: map ( PatientTitle :: find () -> all (), 'id' , 'name' ), [ 'prompt' => 'เลือกคำนำหน้า' ]) ?>
2025-03-31 15:51:06 +00:00
</ div >
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'given_name' ) ?>
2025-04-01 09:27:47 +00:00
</ div >
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'surname' ) ?>
2025-04-01 09:27:47 +00:00
</ div >
2025-04-20 11:36:44 +00:00
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'id_card' ) -> widget ( MaskedInput :: class , [
2025-04-20 11:36:44 +00:00
'mask' => '9-9999-99999-99-9'
]) ?>
</ div >
2025-04-20 15:44:51 +00:00
< div class = " col-md-2 " >< ? = $form -> field ( $model , 'birthdate' ) -> widget ( MaskedInput :: class , [
2025-04-20 11:36:44 +00:00
'mask' => '99/99/9999' ,
'options' => [
'id' => 'patient-birthdate' ,
],
])
?>
</ div >
2025-04-01 09:27:47 +00:00
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'gender' ) -> dropDownList ([ 'U' => '' , 'ช' => 'ชาย' , 'ญ' => 'หญิง' ]) ?>
</ div >
< div class = " col-md-2 " >
< ? = $form -> field ( $model , 'nation' ) -> dropDownList ( ArrayHelper :: map ( ConstNationality :: find () -> all (), 'id' , 'name' ), [ 'prompt' => 'Select Nationalily...' ]) ?>
</ div >
< div class = " col-md-2 " >
< ? = $form -> field ( $model , 'race' ) -> dropDownList ( ArrayHelper :: map ( ConstRace :: find () -> all (), 'id' , 'name' ), [ 'prompt' => 'Select Race...' ]) ?>
</ div >
< div class = " col-md-2 " >
< ? = $form -> field ( $model , 'age' ) -> textInput ([ 'id' => 'patient-age' ]) ?>
</ div >
< div class = " col-md-2 " >
< ? = $form -> field ( $model , 'age_unit' ) -> dropDownList ([ 'ปี' => 'ปี' , 'เดือน' => 'เดือน' , 'วัน' => 'วัน' ], [ 'id' => 'patient-age_unit' ]) ?>
</ div >
< div class = " col-md-2 " >
< ? = $form -> field ( $model , 'h_n' ) -> textInput () ?>
2025-04-01 09:27:47 +00:00
</ div >
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'a_n' ); ?>
2025-04-01 09:27:47 +00:00
</ div >
< div class = " col-md-3 " >
2025-04-20 15:44:51 +00:00
< ? = $form -> field ( $model , 'v_n' ); ?>
2025-03-31 15:51:06 +00:00
</ div >
2025-04-20 15:44:51 +00:00
< div class = " col-md-3 " >
< ? = $form -> field ( $model , 'ward_id' ) -> widget ( Select2 :: class , [
'data' => ArrayHelper :: map ( ConstWard :: find () -> where ([ 'status' => 1 ]) -> orderBy ([ 'name' => SORT_ASC ]) -> all (), 'id' , 'name' ), //->where('id > 1')
/* 'options' => [
'placeholder' => 'เลือกสิทธิ์การรักษา ....' ,
], */
'theme' => Select2 :: THEME_BOOTSTRAP ,
'pluginOptions' => [
'allowClear' => true ,
'placeholder' => 'เลือกแผนก....'
],
]) ?>
2025-03-31 15:51:06 +00:00
</ div >
2025-04-20 15:44:51 +00:00
< div class = " col-md-3 " >
< ? = $form -> field ( $model , 'doctor_id' ) -> widget ( Select2 :: class , [
'data' => ArrayHelper :: map (
ConstDoctor :: find () -> where ([ 'status' => 1 ]) -> orderBy ([ 'surname' => SORT_ASC ]) -> all (),
'id' ,
function ( $model ) {
//return $model->prefix . ' ' . $model->surname . ' ' . $model->lastname;
return empty ( $model -> surname ) ? $model -> fullname : ( ! empty ( $model -> fullname ) ? $model -> fullname : " { $model -> prefix } { $model -> surname } { $model -> lastname } " );
}
), //->where('id > 1')
'theme' => Select2 :: THEME_BOOTSTRAP ,
'pluginOptions' => [
'allowClear' => true ,
//'minimumInputLength' => 3,
'placeholder' => 'เลือกแพทย์เจ้าของคนไข้....'
],
]) ?>
2025-03-31 15:51:06 +00:00
</ div >
</ div >
< ? = Html :: submitButton ( '<span class="fa fa-save"></span> บันทึกข้อมูล' , [ 'class' => 'btn btn-success' ]) ?>
< ? php ActiveForm :: end () ?>
</ div >
</ div >
< ? php $this -> render ( '_js' ) ?>