2024-12-25 03:04:59 +00:00
< ? php
use common\models\CaseNonGyn ;
use common\models\CenterApprove ;
use common\models\ConstStatus ;
use common\models\CytoNonGynDiagnosis ;
use common\models\PatientCase ;
use yii\grid\GridView ;
use yii\helpers\Html ;
use yii\helpers\ArrayHelper ;
use yii\widgets\MaskedInput ;
$this -> title = Html :: encode ( 'My Non-Gyn Case' );
$this -> params [ 'breadcrumbs' ][] = [ 'url' => '/pathologist/task/non-gyn' , 'label' => 'Pathologist' ];
$this -> params [ 'breadcrumbs' ][] = $this -> title ;
?>
< div class = " card mb-3 bg-2 " >
< div class = " card-body " >
< div class = " py-4 px-3 text-white " >
< h6 >< ? = Yii :: $app -> pathology -> sayHello () ?> ,</h6>
< h2 >< ? = isset ( Yii :: $app -> user -> identity -> realname ) ? Html :: encode ( Yii :: $app -> user -> identity -> realname ) : '' ?>
</ h2 >
< div class = " mt-4 d-flex gap-3 " >
< div class = " d-flex align-items-center " >
< div class = " icon-box lg bg-warning rounded-3 me-3 " >
< i class = " ri-file-text-line fs-4 " ></ i >
</ div >
< div class = " d-flex flex-column " >
< h2 class = " m-0 lh-1 " >
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'like' , 'id_case' , 'S%' , false ]) -> count ()) ?>
</ h2 >
< p class = " m-0 " > Case Surgical </ p >
</ div >
</ div >
< div class = " d-flex align-items-center " >
< div class = " icon-box lg bg-warning rounded-3 me-3 " >
< i class = " ri-file-text-line fs-4 " ></ i >
</ div >
< div class = " d-flex flex-column " >
< h2 class = " m-0 lh-1 " >
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'like' , 'id_case' , 'C%' , false ]) -> count ()) ?>
</ h2 >
< p class = " m-0 " > Case Non Gyn </ p >
</ div >
</ div >
< div class = " d-flex align-items-center " >
< div class = " icon-box lg bg-warning rounded-3 me-3 " >
< i class = " ri-file-text-line fs-4 " ></ i >
</ div >
< div class = " d-flex flex-column " >
< h2 class = " m-0 lh-1 " >
2025-03-26 03:12:10 +00:00
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'like' , 'id_case' , 'G%' , false ]) -> count ()) ?>
2024-12-25 03:04:59 +00:00
</ h2 >
< p class = " m-0 " > Case Gyn </ p >
</ div >
</ div >
< div class = " d-flex align-items-center " >
< div class = " icon-box lg bg-warning rounded-3 me-3 " >
< i class = " ri-file-text-line fs-4 " ></ i >
</ div >
< div class = " d-flex flex-column " >
< h2 class = " m-0 lh-1 " >
2025-03-26 03:12:10 +00:00
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'or' , [ 'like' , 'id_case' , 'F' ], [ 'like' , 'id_case' , 'X' ]]) -> count ()) ?>
2024-12-25 03:04:59 +00:00
</ h2 >
2025-03-26 03:12:10 +00:00
< p class = " m-0 " > Case Frozen </ p >
2024-12-25 03:04:59 +00:00
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = " card md-3 " >
< div class = " card-header d-flex align-items-center justify-content-between " >
< h5 class = " card-title " >< i class = " ri-file-edit-line " ></ i >
< ? = $this -> title ?> </h5>
</ div >
< div class = " card-body " >
< ? = GridView :: widget ([
'dataProvider' => $dataProvider ,
'pager' => [ 'class' => 'yii\bootstrap5\LinkPager' ],
'filterModel' => $searchModel ,
'tableOptions' => [ 'class' => 'table align-middle truncate m-0' ],
'layout' => " { summary}<div class='table-outer'><div class='table-responsive'> \n { items} \n </div></div><div class='d-flex justify-content-between align-items-center mt-4'> { pager}</div> " ,
'columns' => [
[ 'class' => 'yii\grid\SerialColumn' ],
[
'class' => 'yii\grid\ActionColumn' ,
'template' => '{transfer} {do-task}' ,
'visibleButtons' => [
'transfer' => function ( $model ) {
return $model -> status_id <= 7 ;
},
],
'buttons' => [
'do-task' => function ( $url , $model ) {
return Html :: a ( '<i class="ri-file-text-line"></i> Diagnosis' , [ 'do' , 'id_case' => $model [ 'id_case' ]], [ 'class' => 'btn btn-sm btn-primary btn-block' ]) . ' ' ;
},
'transfer' => function ( $url , $model ) {
return Html :: a ( '<i class="ri-repeat-line"></i> Transfer' , [ 'transfer' , 'id_case' => $model [ 'id_case' ]], [ 'class' => 'btn btn-sm btn-warning btn-block' , 'data' => [ 'confirm' => 'ต้องการ Transfer Case นี้?' ]]);
}
]
],
2025-05-27 04:03:51 +00:00
[
'attribute' => 'is_cell_block' ,
'label' => 'รายการสั่ง Cell Block' ,
'filter' => [ 1 => 'สั่ง Cell Block' , 2 => 'ไม่ได้สั่ง Cell Block' ],
'format' => 'raw' ,
'value' => function ( $model ) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $model ]);
//return $case_non_gyn->is_cell_block == 1 ? '<span class="badge badge-success">ทำได้</span>' : '<span class="badge badge-danger">ทำไม่ได้</span>';
if ( $case_non_gyn !== null ) {
if ( $case_non_gyn -> is_cell_block == 1 ) {
return '<span class="badge border border-success bg-success-subtle text-success">สั่ง Cell Block</span>' ;
} elseif ( $case_non_gyn -> is_cell_block == 0 ) {
return '<span class="badge border border-danger bg-danger-subtle text-danger">ไม่ได้สั่ง Cell Block</span>' ;
} else {
return null ;
}
} else {
return null ;
}
}
],
2024-12-25 03:04:59 +00:00
[
'attribute' => 'status_id' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 180;' ],
'filter' => ArrayHelper :: map ( ConstStatus :: find () -> all (), 'id' , 'status' ),
'format' => 'raw' ,
'value' => function ( $model ) {
//return $model->status->status;
return Yii :: $app -> pathology -> getStatus ( $model -> status_id );
}
],
[
'label' => 'Report Status' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 150;' ],
'format' => 'raw' ,
'value' => function ( $model ) {
$case_type = Yii :: $app -> pathology -> getCaseType ( $model -> id_case );
$rt = '' ;
if ( $case_type == 'non-gyn' ) {
$non_gyn_count = CytoNonGynDiagnosis :: find ()
-> where ([
'id_case' => $model -> id_case
]) -> count ();
if ( $non_gyn_count > 0 ) {
$rt .= '<div class="table-outer"><table style="font-size: 11px;" class="table table-striped truncate m-0">' ;
$rt .= '<thead>' ;
2025-04-21 08:38:53 +00:00
$rt .= '<tr><td>Report Type</td><td>Status</td><td>Authorised At</td><td>Approved At</td><td>Release By</td><td>Release At</td></tr>' ;
2024-12-25 03:04:59 +00:00
$rt .= '</thead>' ;
$rt .= '<tbody>' ;
foreach (
CytoNonGynDiagnosis :: find ()
-> where ([
'id_case' => $model -> id_case
])
-> all () as $case
) {
$center_approve = CenterApprove :: findOne ([
'id_case' => $case -> id_case ,
'report_type' => $case -> report_type ,
'ref_id' => $case -> id ,
]);
if ( ! $center_approve ) {
$check = '<span class="badge border border-info bg-info-subtle text-info">รอแพทย์ Authorized</span>' ;
} else {
$arr = [ 1 => '<span class="badge border border-danger bg-danger-subtle text-danger">ยังไม่ตรวจสอบ</span>' , 2 => '<span class="badge border border-warning bg-warning-subtle text-warning">รอแก้ไข</span>' , 3 => '<span class="badge border border-info bg-info-subtle text-info">แพทย์แก้ไขผลแล้ว</span>' , 4 => '<span class="badge border border-success bg-success-subtle text-success">ตรวจสอบแล้ว</span>' ];
$check = $arr [ $center_approve -> approve_status ];
}
$rt .= '<tr>' ;
$rt .= '<td>' . Html :: encode ( ucfirst ( $case -> report_type )) . '</td>' ;
$rt .= '<td>' . ( isset ( $case -> status ) ? Html :: encode ( $case -> status -> name ) : '' ) . '</td>' ;
$rt .= '<td>' . Html :: encode ( $case -> pathologist_at ) . '</td>' ;
$rt .= '<td>' . $check . '</td>' ;
2025-04-21 08:38:53 +00:00
$rt .= '<td>' . ( isset ( $center_approve -> releaseBy ) ? $center_approve -> releaseBy -> realname : '' ) . '</td>' ;
2024-12-25 03:04:59 +00:00
$rt .= '<td>' . ( isset ( $center_approve -> release_at ) ? $center_approve -> release_at : '' ) . '</td>' ;
$rt .= '</tr>' ;
}
$rt .= '</tbody>' ;
$rt .= '</table></div>' ;
} //surgical count
}
return $rt ;
}
],
//'register_at',
[
'attribute' => 'id_case' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 180;' ],
'contentOptions' => [ 'style' => 'vertical-align: middle;' ],
'format' => 'raw' ,
'value' => function ( $model ) {
$case = Yii :: $app -> pathology -> getCase ( $model -> id_case );
$case_type = Yii :: $app -> pathology -> getCaseType ( $model -> id_case );
$c = '' ;
$rt = '' ;
if ( isset ( $case ) && ! empty ( $case -> previous_report )) {
$c .= '<br /><small>(' . $case -> previous_report . ')</small>' ;
}
if ( $case_type == 'non-gyn' ) {
$case = CaseNonGyn :: findOne ([ 'id_case' => $model -> id_case ]);
$rt .= ( ! empty ( $case -> decal_end_date ) ? '<small><br />Decal end:' . $case -> decal_end_date . '</small>' : '' );
}
return Html :: a ( Html :: encode ( $model -> id_case ), [ 'do' , 'id_case' => $model -> id_case ]) . $c . '<br>' . Yii :: $app -> pathology -> getExpress ( $model ) . ' ' . Yii :: $app -> pathology -> getCaseDate ( $model -> id_case ) . $rt ;
}
],
//'title',
[
'attribute' => 'h_n' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 100;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
'format' => 'raw' ,
'value' => function ( $model ) {
return Html :: encode ( $model -> h_n );
}
],
[
'attribute' => 'patient_name' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 250;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
'label' => 'ชื่อ - นามสกุล' ,
'value' => function ( $model ) {
return isset ( $model ) ? Html :: encode ( $model -> getFullname ()) : null ;
}
],
[
'attribute' => 'is_outlab' ,
'filter' => [ 1 => 'Case Outlab' ],
'format' => 'raw' ,
'value' => function ( $model ) {
return $model -> is_outlab == 1 ? '<span class="badge border border-danger bg-danger-subtle text-danger">Case Outlab</span>' : '' ;
}
],
[
'attribute' => 'age' ,
'headerOptions' => [ 'style' => 'text-align:center;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
'value' => function ( $model ) {
return intval ( $model -> age );
}
],
[
'attribute' => 'age_unit' ,
'headerOptions' => [ 'style' => 'text-align:center;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
],
[
'attribute' => 'hospital_name' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 180;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
'label' => 'หน่วยงาน' ,
'value' => function ( $model ) {
return Html :: encode ( $model -> hospital -> name );
}
],
[
'attribute' => 'register_at' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 150;' ],
'contentOptions' => [ 'style' => 'text-align:center; vertical-align: middle;' ],
'filter' => MaskedInput :: widget ([
'model' => $searchModel ,
'attribute' => 'register_at' ,
'mask' => '99/99/9999'
]),
'value' => function ( $model ) {
return $model -> register_at ;
}
],
]
]) ?>
</ div >
</ div >
< ? php $this -> registerCss ( "
. grid - view td {
white - space : nowrap ;
}
" ) ?>