2024-12-25 03:04:59 +00:00
< ? php
use common\models\AutopsyDiagnosis ;
2025-01-20 08:50:40 +00:00
use common\models\CaseAutopsy ;
2024-12-25 03:04:59 +00:00
use yii\helpers\Html ;
use yii\grid\GridView ;
use common\models\CasePap ;
use yii\helpers\ArrayHelper ;
use yii\widgets\MaskedInput ;
use common\models\CaseNonGyn ;
use common\models\ConstStatus ;
use common\models\PatientCase ;
use common\models\CaseSurgical ;
use common\models\CenterApprove ;
use common\models\CytoNonGynDiagnosis ;
use common\models\CytoPapDiagnosis ;
use common\models\SurgicalDiagnosis ;
2025-01-06 06:33:24 +00:00
$this -> title = 'All My Case' ;
2024-12-25 03:04:59 +00:00
//$this->params['breadcrumbs'][] = ['url' => '/pathologist/task/my-task', 'label' => 'Pathologist'];
$this -> params [ 'breadcrumbs' ][] = $this -> title ;
?>
<!-- Row starts -->
< 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 " >
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'like' , 'id_case' , 'P%' , false ]) -> count ()) ?>
</ 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 " >
< ? = number_format ( PatientCase :: find () -> where ([ 'DATE(register_at)' => date ( 'Y-m-d' )]) -> andWhere ([ 'pathologist_id' => Yii :: $app -> user -> getId ()]) -> andFilterWhere ([ 'like' , 'id_case' , 'A%' , false ]) -> count ()) ?>
</ h2 >
2025-03-26 05:48:04 +00:00
< p class = " m-0 " > Case Frozen </ p >
2024-12-25 03:04:59 +00:00
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
<!-- Row ends -->
< 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' ],
'tableOptions' => [ 'class' => ' table truncate align-middle' ],
'filterModel' => $searchModel ,
'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 <= 6 ;
},
],
'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' ]) . ' ' ;
},
'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' , 'data' => [ 'confirm' => 'ต้องการ Transfer Case นี้?' ]]);
}
]
],
[
'attribute' => 'status' ,
'filter' => ArrayHelper :: map ( ConstStatus :: find () -> all (), 'status' , 'status' ),
'format' => 'raw' ,
'value' => function ( $model ) {
return Yii :: $app -> pathology -> getStatus ( $model -> status_id );
}
],
[
//'attribute' => 'report_at',
'label' => 'Report Status' ,
'headerOptions' => [ 'style' => 'text-align:center; width: 100;' ],
'format' => 'raw' ,
'value' => function ( $model ) {
$case_type = Yii :: $app -> pathology -> getCaseType ( $model -> id_case );
$rt = '' ;
if ( $case_type == 'surgical' ) {
$surgical_count = SurgicalDiagnosis :: find ()
-> where ([
'id_case' => $model -> id_case
]) -> count ();
if ( $surgical_count > 0 ) {
$rt .= '<div class="table-outer"><table style="font-size: 11px;" class="table table-striped truncate m-0">' ;
$rt .= '<thead>' ;
$rt .= '<tr><td>Report Type</td><td>Status</td><td>Authorised At</td><td>Approved At</td><td>Release At</td></tr>' ;
$rt .= '</thead>' ;
$rt .= '<tbody>' ;
foreach (
SurgicalDiagnosis :: 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>' ;
$rt .= '<td>' . ( isset ( $center_approve -> release_at ) ? $center_approve -> release_at : '' ) . '</td>' ;
$rt .= '</tr>' ;
}
$rt .= '</tbody>' ;
$rt .= '</table></div>' ;
} //surgical count
}
if ( $case_type == 'pap' ) {
$gyn_count = CytoPapDiagnosis :: find ()
-> where ([
'id_case' => $model -> id_case
]) -> count ();
if ( $gyn_count > 0 ) {
$rt .= '<div class="table-outer"><table style="font-size: 11px;" class="table table-striped truncate m-0">' ;
$rt .= '<thead>' ;
$rt .= '<tr><td>Report Type</td><td>Status</td><td>Authorised At</td><td>Approved At</td><td>Release At</td></tr>' ;
$rt .= '</thead>' ;
$rt .= '<tbody>' ;
foreach (
CytoPapDiagnosis :: 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>' ;
$rt .= '<td>' . ( isset ( $center_approve -> release_at ) ? $center_approve -> release_at : '' ) . '</td>' ;
$rt .= '</tr>' ;
}
$rt .= '</tbody>' ;
$rt .= '</table></div>' ;
} //gyn_count
}
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>' ;
$rt .= '<tr><td>Report Type</td><td>Status</td><td>Authorised At</td><td>Approved At</td><td>Release At</td></tr>' ;
$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>' ;
$rt .= '<td>' . ( isset ( $center_approve -> release_at ) ? $center_approve -> release_at : '' ) . '</td>' ;
$rt .= '</tr>' ;
}
$rt .= '</tbody>' ;
$rt .= '</table></div>' ;
} //non_gyn_count
}
if ( $case_type == 'autopsy' ) {
$autopsy_count = AutopsyDiagnosis :: find ()
-> where ([
'id_case' => $model -> id_case
]) -> count ();
if ( $autopsy_count > 0 ) {
$rt .= '<div class="table-outer"><table style="font-size: 11px;" class="table table-striped truncate m-0">' ;
$rt .= '<thead>' ;
$rt .= '<tr><td>Report Type</td><td>Status</td><td>Authorised At</td><td>Approved At</td><td>Release At</td></tr>' ;
$rt .= '</thead>' ;
$rt .= '<tbody>' ;
foreach (
AutopsyDiagnosis :: 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>' ;
$rt .= '<td>' . ( isset ( $center_approve -> release_at ) ? $center_approve -> release_at : '' ) . '</td>' ;
$rt .= '</tr>' ;
}
$rt .= '</tbody>' ;
$rt .= '</table>' ;
} //autopsy_count
}
return $rt ;
}
],
//'register_at',
[
'attribute' => 'id_case' ,
'format' => 'raw' ,
'value' => function ( $model ) {
$case_type = Yii :: $app -> pathology -> getCaseType ( $model -> id_case );
$rt = '' ;
if ( $case_type == 'surgical' ) {
$case = CaseSurgical :: findOne ([ 'id_case' => $model -> id_case ]);
$rt .= ( ! empty ( $case -> decal_end_date ) ? '<small><br />Decal end:' . $case -> decal_end_date . '</small>' : '' );
}
if ( $case_type == 'pap' ) {
$case = CasePap :: findOne ([ 'id_case' => $model -> id_case ]);
$rt .= ( ! empty ( $case -> decal_end_date ) ? '<small><br />Decal end:' . $case -> decal_end_date . '</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>' : '' );
}
2025-01-20 08:50:40 +00:00
if ( $case_type == 'autopsy' ) {
$case = CaseAutopsy :: findOne ([ 'id_case' => $model -> id_case ]);
$rt .= ( ! empty ( $case -> decal_end_date ) ? '<small><br />Decal end:' . $case -> decal_end_date . '</small>' : '' );
}
2024-12-25 03:04:59 +00:00
2025-01-20 08:50:40 +00:00
//return '<strong>' . $model->id_case . '</strong> ' . Yii::$app->pathology->getExpress($model) . ' ' . Yii::$app->pathology->getCaseDate($model->id_case) . $rt;
return '<strong>' . $model -> id_case . '</strong> '
. ( $case_type == 'autopsy' ? Yii :: $app -> pathology -> getExpressAutopsy ( $model ) : Yii :: $app -> pathology -> getExpress ( $model )) . ' '
. Yii :: $app -> pathology -> getCaseDate ( $model -> id_case )
. $rt ;
2024-12-25 03:04:59 +00:00
}
],
'h_n' ,
//'title',
[
'attribute' => 'patient_name' ,
'value' => function ( $model ) {
return $model -> patient_name ;
}
],
[
'attribute' => 'is_outlab' ,
'filter' => [ 1 => 'ใช่' ],
'format' => 'raw' ,
'value' => function ( $model ) {
return $model -> is_outlab == 1 ? '<span class="badge bg-danger">ใช่</span>' : '' ;
}
],
[
'attribute' => 'age' ,
'value' => function ( $model ) {
return intval ( $model -> age );
}
],
'age_unit' ,
[
'attribute' => 'hospital_name' ,
'value' => function ( $model ) {
return $model -> hospital_name ;
}
],
//'hospital_name',
/* [
'attribute' => 'status_id' ,
'filter' => ArrayHelper :: map ( ConstStatus :: find () -> all (), 'id' , 'status' ),
'value' => function ( $model ){
return $model -> status ;
}
], */
[
'attribute' => 'register_at' ,
'filter' => MaskedInput :: widget ([
'model' => $searchModel ,
'attribute' => 'register_at' ,
'mask' => '99/99/9999'
]),
'value' => function ( $model ) {
return Yii :: $app -> pathology -> thaiDateTime ( $model -> register_at );
}
],
'remark' ,
/* [
'label' => 'Remark' ,
'format' => 'raw' ,
'value' => function ( $model ) {
$decal = " " ;
$remark = " " ;
$remark = PathologistRemark :: getRemark ( $model -> id_case );
if ( $remark ) {
$remark = " <br><small class='text text-danger'> " . $remark . " </small> " ;
}
$case_type = Yii :: $app -> pathology -> getCaseType ( $model -> id_case );
//$cc = substr($model->id_case, 0, 2);
if ( $case_type == " surgical " ) {
$case_surgical = CaseSurgical :: findOne ([ 'id_case' => $model -> id_case ]);
if ( $case_surgical -> decal_block != '' and $model -> status_id < 16 ) {
$decal = " <br><span class='badge badge-primary'>รอ Decalcification</span> " ;
} else {
$decal = '' ;
}
}
return Yii :: $app -> pathology -> getCaseDate ( $model -> id_case , " patho " ) . $decal ;
}
], */
]
]) ?>
</ div >
</ div >
< ? php /* $this -> registerCss ( "
. grid - view td {
white - space : nowrap ;
}
" ) */ ?>