2024-12-25 03:04:59 +00:00
< ? php
namespace frontend\modules\cyto\controllers ;
use Yii ;
use kartik\mpdf\Pdf ;
use yii\helpers\Html ;
use yii\base\Exception ;
2025-04-23 09:55:03 +00:00
use common\models\Coder ;
2024-12-25 03:04:59 +00:00
use common\models\CasePap ;
use common\models\Patient ;
use common\models\CaseNonGyn ;
use common\models\IdCaseForm ;
use common\models\CytoOperate ;
2025-04-23 09:55:03 +00:00
use common\models\PatientCase ;
use Mpdf\Config\FontVariables ;
use common\models\CytoSlideQa1 ;
2025-04-01 17:03:43 +00:00
use common\models\CytoSpecimen ;
2025-04-23 09:55:03 +00:00
use common\models\ApproveStatus ;
2025-05-14 04:55:34 +00:00
use common\models\CaseSurgical ;
2025-04-23 09:55:03 +00:00
use common\models\CenterApprove ;
2025-05-14 04:55:34 +00:00
use common\models\CytoNonGynCellBlock ;
2024-12-25 03:04:59 +00:00
use common\models\HistoStaining ;
use common\models\SurgicalSlide ;
2025-04-23 09:55:03 +00:00
use Mpdf\Config\ConfigVariables ;
use yii\data\ActiveDataProvider ;
use yii\web\NotFoundHttpException ;
use common\models\CytoPapDiagnosis ;
use common\models\CytoNonGynDiagnosis ;
use common\models\PathologistTransfer ;
use common\models\FinanceServiceCharge ;
use common\models\CytoNonGynDiagnosisLog ;
2024-12-25 03:04:59 +00:00
use frontend\modules\cyto\models\CaseNonGynSearch ;
use frontend\modules\cyto\models\CaseNonGynAllSearch ;
use frontend\modules\cyto\models\CytoNonGynGrossTemplateSearch ;
use frontend\modules\cyto\models\CytoNonGynDiagnosisTemplateSearch ;
use frontend\modules\cyto\models\CytoNonGynMicroscopicTemplateSearch ;
class NonGynController extends \yii\web\Controller
{
/*
* All Case
*/
public function actionAll ()
{
$case_search = new IdCaseForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'case_send' ]) {
$session [ 'case_send' ] = [];
}
if ( $case_search -> load ( Yii :: $app -> request -> get ())) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $case_search -> id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่ค้นหา' );
return $this -> redirect ([ 'all' ]);
} else {
return $this -> redirect ([ 'process' , 'id_case' => $case_non_gyn -> id_case ]);
}
} // end of if $case_search->load()
$searchModel = new CaseNonGynSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
return $this -> render ( 'all' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
'case_search' => $case_search ,
]);
}
/**
* @ return string | \yii\web\Response
*/
public function actionNonGynNew ()
{
$searchModel = new CaseNonGynSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andFilterWhere ([ 'case_non_gyn.cytotech1_id' => Yii :: $app -> user -> getId ()]) /*->orWhere(['is', 'case_non_gyn.cytotech1_id', new Expression('NULL')])*/ ;
$dataProvider -> query -> andFilterWhere ([ '<=' , 'status_id' , 6 ]);
$dataProvider -> pagination = [
'pageSize' => 50 ,
];
$dataProvider -> sort = [
'defaultOrder' => [
'id_case' => SORT_ASC ,
]
];
return $this -> render ( 'non-gyn-new' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel
]);
}
/**
* @ return string | \yii\web\Response
*/
public function actionMyNonGynCase ()
{
$searchModel = new CaseNonGynSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
2025-04-04 08:39:49 +00:00
/* $dataProvider -> query -> andFilterWhere ([ 'case_non_gyn.cytotech1_id' => Yii :: $app -> user -> getId ()]);
$dataProvider -> query -> andFilterWhere ([ '>' , 'status_id' , 7 ]) -> andFilterWhere ([ '<' , 'status_id' , 18 ]); */ //->andWhere(['in', 'status_id', [8, 9, 15, 17, 18]]);
2024-12-25 03:04:59 +00:00
$dataProvider -> pagination = [
'pageSize' => 50 ,
];
$dataProvider -> sort = [
'defaultOrder' => [
'id_case' => SORT_ASC ,
]
];
return $this -> render ( 'my-non-gyn-case' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel
]);
}
public function actionIndex ()
{
$searchModel = new CaseNonGynAllSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> sort = [
'defaultOrder' => [
'status_id' => SORT_ASC ,
'id_case' => SORT_ASC ,
'register_at' => SORT_DESC
]
];
return $this -> render ( 'index' , [
'searchModel' => $searchModel ,
'dataProvider' => $dataProvider ,
]);
}
public function actionCellBlock ()
{
$searchModel = new CaseNonGynAllSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> sort = [
'defaultOrder' => [
'status_id' => SORT_ASC ,
'id_case' => SORT_ASC ,
'register_at' => SORT_DESC
]
];
return $this -> render ( 'cell-block' , [
'searchModel' => $searchModel ,
'dataProvider' => $dataProvider ,
]);
}
2025-05-14 04:55:34 +00:00
/**
* Surgical Add
*
* @ param string $id_case
* @ return void
*/
public function actionCellBlockAdd ( $id_case )
{
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
throw new Exception ( 'ไม่พบ Case นี้ในระบบ' );
}
$model = new CytoNonGynCellBlock ([ 'id_case' => $case_non_gyn -> id_case ]);
//$model->hit = 0;
if ( $model -> load ( Yii :: $app -> request -> post ())) {
try {
$model -> add_id = Yii :: $app -> user -> getId ();
$model -> add_at = date ( 'Y-m-d H:i:s' );
$model -> status = 1 ;
$model -> save ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'cell-block-add' , 'id_case' => $case_non_gyn -> id_case ]);
} catch ( Exception $e ) {
throw new Exception ( $e -> getMessage ());
}
}
$dataProvider = new ActiveDataProvider ([
'query' => CytoNonGynCellBlock :: find () -> where ([ 'id_case' => $id_case ]),
'sort' => [
'defaultOrder' => [
'id' => SORT_DESC
]
]
]);
return $this -> render ( 'cell-block-add' , [
'case_non_gyn' => $case_non_gyn ,
'model' => $model ,
'dataProvider' => $dataProvider
]);
}
2024-12-25 03:04:59 +00:00
/**
* @ return string | \yii\web\Response
*/
public function actionBlock ( $id_case )
{
$model = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
$model -> slides = SurgicalSlide :: find () -> where ([ 'id_case' => $model -> id_case ]) -> all ();
if (
$model -> load ( Yii :: $app -> request -> post ())
) { // เมื่อมีการ Post ค่ามา
$transaction = Yii :: $app -> db -> beginTransaction (); //เริ่ม Transaction
try {
$model -> status_id = 4 ;
if ( $model -> save ()) {
} else {
var_dump ( $model -> getFirstErrors ());
die ();
}
$items = Yii :: $app -> request -> post ();
if ( ! empty ( $items [ 'CaseNonGyn' ][ 'slides' ])) {
foreach ( $items [ 'CaseNonGyn' ][ 'slides' ] as $key => $val ) {
//var_dump($val['charge_id']);
$current = date ( 'Y-m-d H:i:s' );
//die();
if ( empty ( $val [ 'id' ])) {
$slide = new SurgicalSlide ();
} else {
$slide = SurgicalSlide :: findOne ( $val [ 'id' ]);
}
$slide -> id_case = $model -> id_case ;
$slide -> block_at = $current ;
$slide -> no_slide = $val [ 'no_slide' ];
$slide -> quantity = $val [ 'quantity' ];
if ( $slide -> save ()) {
} else {
var_dump ( $slide -> getFirstErrors ());
die ();
}
}
} // if !empty()
$transaction -> commit ();
//var_dump($model);
//unset(Yii::$app->session['gross']);
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อย' );
return $this -> redirect ([ 'block' , 'id_case' => $model -> id_case ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
unset ( Yii :: $app -> session [ 'block' ]);
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาดในการบันทึกข้อมูล' );
return $this -> redirect ([ 'block' ]);
}
}
return $this -> render ( 'block' , [
'model' => $model ,
]);
}
/**
* @ throws \Throwable
* @ throws \yii\db\StaleObjectException
*/
public function actionCytoSlideDelete ()
{
$p = Yii :: $app -> request -> post ();
$slide = SurgicalSlide :: findOne ([ 'id_case' => $p [ 'id_case' ], 'id' => $p [ 'id' ]]);
if ( ! $slide ) { // || !$surgical
echo 'error' ;
} else {
$slide -> delete ();
echo 'success' ;
}
}
/*
* My Finish Case
*/
public function actionMyFinish ()
{
$case_search = new IdCaseForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'case_send' ]) {
$session [ 'case_send' ] = [];
}
if ( $case_search -> load ( Yii :: $app -> request -> get ())) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $case_search -> id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่ค้นหา' );
return $this -> redirect ([ 'all' ]);
} else {
return $this -> redirect ([ 'process' , 'id_case' => $case_non_gyn -> id_case ]);
}
} // end of if $case_search->load()
$searchModel = new CaseNonGynSearch ();
$searchModel -> cytotech = Yii :: $app -> user -> getId ();
$searchModel -> status_id = 17 ;
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
return $this -> render ( 'my-finish' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
'case_search' => $case_search ,
]);
}
/*
* My Case
*/
public function actionMyCase ()
{
$case_search = new IdCaseForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'case_send' ]) {
$session [ 'case_send' ] = [];
}
if ( $case_search -> load ( Yii :: $app -> request -> get ())) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $case_search -> id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่ค้นหา' );
return $this -> redirect ([ 'all' ]);
} else {
//return $this->redirect(['process', 'id_case' => $case_non_gyn->id_case]);
}
} // end of if $case_search->load()
$searchModel = new CaseNonGynSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andFilterWhere ([ 'cytotech1_id' => Yii :: $app -> user -> getId ()]);
return $this -> render ( 'my-case' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
'case_search' => $case_search ,
]);
}
/*
* New Case
*/
public function actionNew ()
{
$case_search = new IdCaseForm ();
$session = Yii :: $app -> session ;
if ( ! $session [ 'case_send' ]) {
$session [ 'case_send' ] = [];
}
if ( $case_search -> load ( Yii :: $app -> request -> get ())) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $case_search -> id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่ค้นหา' );
return $this -> redirect ([ 'all' ]);
} else {
return $this -> redirect ([ 'process' , 'id_case' => $case_non_gyn -> id_case ]);
}
} // end of if $case_search->load()
$searchModel = new CaseNonGynSearch ();
$searchModel -> status_id = 1 ;
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
return $this -> render ( 'new' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
'case_search' => $case_search ,
]);
}
public function actionTransfer ( $id_case )
{
$model = CasePap :: findOne ([ 'id_case' => $id_case ]);
//$model = $this->getCase($id_case);
if ( ! $model ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้' );
return $this -> redirect ([ '/cyto' ]);
}
$transfer = PathologistTransfer :: findOne ([ 'id_case' => $model -> id_case , 'pathologist_id' => Yii :: $app -> user -> getId ()]);
if ( ! $transfer ) {
$transfer = new PathologistTransfer ();
}
$case = Yii :: $app -> pathology -> getCaseType ( $id_case );
if ( $transfer -> load ( Yii :: $app -> request -> post ())) {
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$model -> pathologist_id = NULL ;
$model -> status_id = 13 ;
if ( $model -> save ()) {
$transfer -> id_case = $model -> id_case ;
$transfer -> pathologist_id = Yii :: $app -> user -> getId ();
$transfer -> is_cytotech = 1 ;
$transfer -> transfer_at = date ( 'Y-m-d H:i:s' );
$transfer -> transfer_status = 1 ;
if ( $transfer -> validate ()) {
$transfer -> save ();
}
}
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'Transfer Case: ' . $model -> id_case . ' เรียบร้อยแล้ว' );
return $this -> redirect ([ '/cyto/non-gyn/my-case' ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาด' . $e -> getMessage ());
return $this -> redirect ([ '/cyto/non-gyn/my-case' ]);
}
}
return $this -> render ( 'transfer' , [
'model' => $model ,
'transfer' => $transfer ,
]);
}
/*
public function actionDo ( $id_case )
{
//กำหนดวันเวลาปัจจุบัน
$time_now = date ( 'Y-m-d H:i:s' );
//เลือก Case และตรวจสอบว่ามี Case หรือเปล่า
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้ในระบบ' );
return $this -> redirect ([ 'all' ]);
}
$case_non_gyn -> scenario = 'pathologist' ; //ตั้งค่า Scenario เป็น process
$patient = Patient :: findOne ([ 'id' => $case_non_gyn -> patient_id ]);
$finance_service_charge = new ActiveDataProvider ([
'pagination' => false ,
'query' => FinanceServiceCharge :: find () -> andFilterWhere ([ 'id_case' => $case_non_gyn -> id_case ])
]);
$patient_case = new ActiveDataProvider ([
'query' => PatientCase :: find () -> where ([ 'patient_name' => $case_non_gyn -> getFullname ()]) -> andWhere ([ '<>' , 'id_case' , $case_non_gyn -> id_case ]),
]); // ประวัติการส่งตรวจ
if ( $case_non_gyn -> load ( Yii :: $app -> request -> post ())) {
//ดักจับ Action ว่ากดปุ่มอะไรมา
$action = Yii :: $app -> request -> post ( 'non_gyn' );
//เริ่มต้นการทำ Transaction
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
if ( ! empty ( $case_non_gyn -> additional_diagnosis )) {
$case_non_gyn -> additional_at = $time_now ;
}
//$case_non_gyn->microscopic_img = $case_non_gyn->uploadMicro($case_non_gyn);
//บันทึก CaseNonGyn
if ( $action == 'micro' ) {
$case_non_gyn -> status_id = 8 ;
$case_non_gyn -> save ();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ '/pathologist/non-gyn-micro-img/create' , 'id_case' => $case_non_gyn -> id_case ]);
}
if ( $action == 'save' ) {
$patient -> save ();
$case_non_gyn -> status_id = 7 ;
if ( $case_non_gyn -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
} else {
var_dump ( $case_non_gyn -> getFirstErrors ());
die ();
}
$transaction -> commit ();
return $this -> redirect ([ 'non-gyn' , 'id_case' => $case_non_gyn -> id_case ]);
}
if ( $action == 'final' ) {
$mode = 'final' ;
$patient -> save ();
$case_non_gyn -> status_id = 12 ;
$case_non_gyn -> report_at = $time_now ;
if ( $case_non_gyn -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
} else {
var_dump ( $case_non_gyn -> getFirstErrors ());
die ();
}
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'ออกผล Final เรียบร้อยแล้ว' );
return $this -> redirect ([ '/report/case/non-gyn' , 'id_case' => $id_case , 'mode' => $mode ]);
}
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่สามารถบันทึกข้อมูลได้' );
return $this -> redirect ([ '/pathologist/task/my-task' ]);
}
} //if load()
return $this -> render ( 'do' , [
'case_non_gyn' => $case_non_gyn ,
'patient_case' => $patient_case ,
'patient' => $patient ,
'finance_service_charge' => $finance_service_charge ,
]);
}
*/
/**
* @ param $id_case
* @ param $cytotech
* @ return string | \yii\web\Response
* @ throws Exception
*/
public function actionDo ( $id_case )
{
$cytotech = '' ;
/*
if ( $cytotech == null ) {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case , 'cytotech1_id' => Yii :: $app -> user -> getId ()]);
} else {
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case , 'cytotech2_id' => Yii :: $app -> user -> getId ()]);
}
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'Case นี้ยังไม่นำส่ง Cytotech' );
return $this -> redirect ([ '/cyto/non-gyn/non-gyn-new' ]);
}
*/
//กำหนดวันเวลาปัจจุบัน
$time_now = date ( 'Y-m-d H:i:s' );
//เลือก Case และตรวจสอบว่ามี Case หรือเปล่า
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้ในระบบ' );
return $this -> redirect ([ 'all' ]);
}
/**
* Find previous report
*/
$patient_non_gynp = new ActiveDataProvider ([
'query' => CaseNonGyn :: find ()
-> filterWhere ([
'name' => $case_non_gyn -> getFullname (),
'birthdate' => Yii :: $app -> pathology -> thaiDate ( $case_non_gyn -> birthdate )
])
-> andFilterWhere ([ '<>' , 'id_case' , $case_non_gyn -> id_case ])
-> andFilterWhere ([ '>=' , 'status_id' , 4 ]),
]);
$patient = Patient :: findOne ( $case_non_gyn -> patient_id );
$finance_service_charge = new ActiveDataProvider ([
'pagination' => false ,
'query' => FinanceServiceCharge :: find () -> andFilterWhere ([ 'id_case' => $case_non_gyn -> id_case ])
]);
if ( $case_non_gyn -> load ( Yii :: $app -> request -> post ())) {
$transaction = Yii :: $app -> db -> beginTransaction ();
$time_now = date ( 'Y-m-d H:i:s' ); //ระบุวันเวลาปัจจุบัน
$action = Yii :: $app -> request -> post ( 'non-gyn' );
try {
if ( $action == 'cancel' ) {
//$case_surgical->save(false);
return $this -> redirect ([ '/pathologist' ]);
}
$case_non_gyn -> microscopic_img = $case_non_gyn -> uploadMicro ( $case_non_gyn );
if ( $action == 'save' ) {
$case_non_gyn -> save ();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
//return $this->redirect(['surgical', 'id_case' => $case_surgical->id_case,]);
return $this -> refresh ();
}
} catch ( Exception $e ) {
$transaction -> rollBack ();
throw new Exception ( $e -> getMessage ());
}
}
return $this -> render ( 'do' , [
'patient_non_gyn' => $patient_non_gynp ,
'case_non_gyn' => $case_non_gyn ,
]);
}
/***
* @ param $id_case
* @ param $type
* @ return string | \yii\web\Response
* @ throws NotFoundHttpException
*/
/* public function actionNonGynFinal ( $id_case , $type = 'final' )
{
//$case_non_gyn = CaseNonGyn::findOne(['id_case' => $id_case, 'cytotech1_id' => Yii::$app->user->getId()]);
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
throw new NotFoundHttpException ( 'ไม่พบ Case นี้ในระบบ' );
}
$case_non_gyn -> cytotech1_id = Yii :: $app -> user -> getId ();
//$case_non_gyn->cytotech1_at = date('Y-m-d H:i:s');
if ( $case_non_gyn -> load ( Yii :: $app -> request -> post ())) {
$action = Yii :: $app -> request -> post ( 'non-gyn' );
$time_now = date ( 'Y-m-d H:i:s' );
//var_dump($model->microscopic_img_caption);
//die();
if ( $action == 'save' ) {
$case_non_gyn -> status_id = 8 ;
//var_dump($case_non_gyn);
// die();
if ( $case_non_gyn -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
}
} /* else {
var_dump ( $case_non_gyn -> getFirstErrors ());
var_dump ( $model -> getFirstErrors ());
die ();
} */
//เมื่อกดปุ่ม ส่งแพทย์
/* if ( $action == 'pathologist' ) {
$case_non_gyn -> status_id = 6 ; //ผล final
$case_non_gyn -> save ( false );
$case_non_gyn -> cytotech1_id = Yii :: $app -> user -> getId ();
$case_non_gyn -> cytotech1_at = $time_now ;
// $operate->result_at = $time_now;
//$operate->save();
//Commit Transaction
// $transaction->commit();
if ( $case_non_gyn -> save () && $model -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'ส่งพยาธิแพทย์เพื่อออกผลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'non-gyn/do' , 'id_case' => $case_non_gyn -> id_case ]);
}
}
if ( $action == 'send' ) {
if ( empty ( $case_non_gyn -> pathologist_id )) {
$case_non_gyn -> addError ( 'pathologist_id' , 'กรุณาเลือกพยาธิแพทย์' );
}
$case_non_gyn -> cytotech1_at = date ( 'Y-m-d H:i:s' );
$case_non_gyn -> cytotech1_at = date ( 'Y-m-d H:i:s' );
$case_non_gyn -> status_id = 9 ;
if ( $case_non_gyn -> save ()) {
/* $center_approve = CenterApprove :: findOne ([
'id_case' => $model -> id_case ,
'report_type' => $model -> report_type ,
'ref_id' => $model -> id ,
]);
if ( ! $center_approve ) {
$center_approve = new CenterApprove ([
'id_case' => $model -> id_case ,
'report_type' => $model -> report_type ,
'pathologist_id' => Yii :: $app -> user -> getId (),
'approve_status' => 1
]);
}
$center_approve -> ref_id = $model -> id ;
$center_approve -> save (); */
/**
* @ todo check send email
**/
//$prefix = substr($case_non_gyn->id_case, 0, 2);
/* if ( $model -> is_critical == 1 || $case_non_gyn -> priority_code == 'S' ) {
$c = '' ;
if ( $model -> is_critical == 1 ) {
$c .= '[Critical]' ;
}
/* if ( Yii :: $app -> mailer -> compose ([ 'html' => 'pathologist-authorize-html' ], [
'id_case' => $model -> id_case ,
'report_type' => $model -> report_type ,
'model' => $case_non_gyn ])
-> setFrom ( $model -> pathologist -> email )
-> setTo ( Yii :: $app -> params [ 'adminCytoEmail' ])
-> setSubject ( 'Result complete: ' . $model -> id_case . ' [' . ucfirst ( $model -> report_type ) . ']' . $c )
-> send ()) {
Yii :: $app -> session -> addFlash ( 'success' , 'Send email to Admin Cyto success' );
}
}
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลและส่งแพทย์ เรียบร้อยแล้ว' );
return $this -> redirect ([ '/cyto/pap/pap-new' ]);
}
}
return $this -> redirect ([ 'non-gyn-final' , 'id_case' => $case_non_gyn -> id_case , 'type' => 'final' , '#' => 'report' ]);
//return $this->redirect(['index']);
}
$dataProviderReport = new ActiveDataProvider ([
'query' => CytoNonGynDiagnosis :: find () -> andFilterWhere ([
'id_case' => $case_non_gyn -> id_case ,
]) -> andFilterWhere ([ '>' , 'status_id' , 3 ]),
'sort' => [
'defaultOrder' => [
'id' => SORT_ASC
]
]
]);
return $this -> render ( 'non-gyn-final' , [
'case_non_gyn' => $case_non_gyn ,
'dataProviderReport' => $dataProviderReport ,
]);
} */
/**
* @ param $id_case
* @ param string $type
* @ return string | \yii\web\Response
* @ throws NotFoundHttpException
*/
public function actionNonGynFinal ( $id_case )
{
$type = 'final' ;
$cytotech = '' ;
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case , 'cytotech1_id' => Yii :: $app -> user -> getId ()]);
if ( ! $case_non_gyn ) {
throw new NotFoundHttpException ( 'ไม่พบ Case นี้ในระบบ' );
}
2025-04-09 03:40:52 +00:00
/* if ( $case_non_gyn -> status_id >= 9 ) {
2024-12-25 03:04:59 +00:00
Yii :: $app -> session -> setFlash ( 'error' , 'Case นี้ออกผลเบื่องต้น แล้วออกผลซ้ำไม่ได้' );
return $this -> redirect ([ '/cyto/non-gyn/do' , 'id_case' => $case_non_gyn -> id_case ]);
2025-04-09 03:40:52 +00:00
} */
2024-12-25 03:04:59 +00:00
$finance = FinanceServiceCharge :: findOne ([ 'id_case' => $case_non_gyn -> id_case ]);
//Template
$searchModelGross = new CytoNonGynGrossTemplateSearch ();
$dataProviderGross = $searchModelGross -> search ( Yii :: $app -> request -> queryParams );
2025-05-14 08:33:37 +00:00
/* $searchModelMicroscopic = new CytoNonGynMicroscopicTemplateSearch ();
$dataProviderMicroscopic = $searchModelMicroscopic -> search ( Yii :: $app -> request -> queryParams ); */
2024-12-25 03:04:59 +00:00
$searchModelDiagnosis = new CytoNonGynDiagnosisTemplateSearch ();
$dataProviderDiagnosis = $searchModelDiagnosis -> search ( Yii :: $app -> request -> queryParams );
$model = CytoNonGynDiagnosis :: find ()
-> where ([
'id_case' => $id_case ,
'report_type' => $type ,
])
-> andWhere ([ '<=' , 'status_id' , 5 ])
-> orderBy ([ 'id' => SORT_DESC ])
-> one ();
/* $cytoPapDiagnosisLog = CytoPapDiagnosisLog :: find ()
-> where ([
'id_case' => $id_case ,
'report_type' => $type ,
])
-> all (); */
if ( ! $model ) {
$model = new CytoNonGynDiagnosis ();
$model -> id_case = $id_case ;
$model -> report_type = $type ;
$model -> gross_description = $case_non_gyn -> gross_description ;
Yii :: $app -> session -> addFlash ( 'info' , 'ออกผล Final Report กรุณากรอกแบบฟอร์มด้านล่าง' );
}
$model -> scenario = 'cytotech1' ;
2025-04-09 03:40:52 +00:00
/* if ( $model -> status_id == 17 ) {
2024-12-25 03:04:59 +00:00
Yii :: $app -> session -> addFlash ( 'error' , 'Case นี้ออกผล Final Report เรียบร้อยแล้ว ไม่สามารถออกผล Final Report ซ้ำได้' );
return $this -> redirect ([ '/cyto/non-gyn/do' , 'id_case' => $case_non_gyn -> id_case ]);
2025-04-09 03:40:52 +00:00
} */
2024-12-25 03:04:59 +00:00
//ระบุ Cytotech
$model -> cytotech1_id = Yii :: $app -> user -> getId ();
if (
$model -> load ( Yii :: $app -> request -> post ())
&& $case_non_gyn -> load ( Yii :: $app -> request -> post ())
) {
$action = Yii :: $app -> request -> post ( 'non-gyn' );
//var_dump($model->microscopic_img_caption);
//die();
$time_now = date ( 'Y-m-d H:i:s' );
/* if ( $model -> getOldAttribute ( 'cytotech2_id' ) != $case_non_gyn -> cytotech2_id ) {
$model -> cytotech2_id = $case_non_gyn -> cytotech2_id ;
} */
if ( $action == 'save' ) {
$model -> status_id = 3 ;
$case_non_gyn -> status_id = 8 ;
if ( $case_non_gyn -> save () && $model -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
}
}
if ( $action == 'approve' ) {
if ( empty ( $case_non_gyn -> pathologist_id )) {
$case_non_gyn -> addError ( 'pathologist_id' , 'กรุณาเลือกพยาธิแพทย์' );
}
$model -> status_id = 3 ;
$model -> cytotech1_at = $time_now ;
$model -> cell_block_at = $time_now ;
$case_non_gyn -> cytotech1_at = $time_now ;
$case_non_gyn -> status_id = 9 ;
if ( $case_non_gyn -> save () && $model -> save ()) {
2025-04-01 19:19:32 +00:00
$log = new CytoNonGynDiagnosisLog ([
'id_case' => $model -> id_case ,
'user_id' => Yii :: $app -> user -> getId (),
'report_type' => $model -> report_type ,
'specimen_adequacy' => $model -> specimen_adequacy_1 ,
'gross_description' => $model -> gross_description ,
'diagnosis' => $model -> diagnosis ,
'comment' => $model -> comment ,
'approve_at' => date ( 'Y-m-d H:i:s' ),
]);
if ( $log -> save ()) {
}
2025-04-01 18:43:50 +00:00
2024-12-25 03:04:59 +00:00
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลและส่งให้พยาธิแพทย์ เรียบร้อยแล้ว' );
return $this -> redirect ([ '/cyto/non-gyn/non-gyn-new' ]);
}
}
return $this -> redirect ([ '/cyto/non-gyn/non-gyn-final' , 'id_case' => $case_non_gyn -> id_case , 'type' => 'final' , '#' => 'report' ]);
}
//$CytoPapDiagnosisLog = ;
$dataProviderReport = new ActiveDataProvider ([
'query' => CytoPapDiagnosis :: find () -> andFilterWhere ([
'id_case' => $case_non_gyn -> id_case ,
]) -> andFilterWhere ([ '>' , 'status_id' , 9 ]),
'sort' => [
'defaultOrder' => [
'id' => SORT_ASC
]
]
]);
$dataProviderServiceCharge = new ActiveDataProvider ([
'query' => FinanceServiceCharge :: find () -> andFilterWhere ([ 'id_case' => $case_non_gyn -> id_case ])
]);
return $this -> render ( 'non-gyn-final' , [
'case_non_gyn' => $case_non_gyn ,
'model' => $model ,
'dataProviderReport' => $dataProviderReport ,
'dataProviderServiceCharge' => $dataProviderServiceCharge ,
'finance' => $finance ,
'searchModelGross' => $searchModelGross ,
'searchModelDiagnosis' => $searchModelDiagnosis ,
'dataProviderDiagnosis' => $dataProviderDiagnosis ,
'dataProviderGross' => $dataProviderGross
]);
}
/*
* Process Case
*/
public function actionProcess ( $id_case )
{
//กำหนดวันเวลาปัจจุบัน
$time_now = date ( 'Y-m-d H:i:s' );
//เลือก Case และตรวจสอบว่ามี Case หรือเปล่า
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้ในระบบ' );
return $this -> redirect ([ 'all' ]);
}
//$case_non_gyn->scenario = 'process'; //ตั้งค่า Scenario เป็น process
// $patient = Patient::findOne($case_non_gyn->patient_id);
$patient_case = new ActiveDataProvider ([
'query' => PatientCase :: find () -> where ([ 'patient_name' => $case_non_gyn -> name ]) -> andWhere ([ '<>' , 'id_case' , $case_non_gyn -> id_case ]),
]);
/* if ( ! empty ( $case_non_gyn -> report_at ) && ( $case_non_gyn -> status_id == 12 )){
return $this -> redirect ([ 'screener-preview' , 'id_case' => $case_non_gyn -> id_case ]);
} */
//$operate = CytoOperate::findOne(['id_case' => $case_non_gyn->id_case]);
//หากไม่มี CytoOperate ให้สร้างใหม่แล้ว save ลง db
if ( ! $case_non_gyn ) {
//$case_non_gyn = new CytoOperate();
$case_non_gyn -> id_case = $case_non_gyn -> id_case ;
$case_non_gyn -> register_id = Yii :: $app -> user -> getId ();
$case_non_gyn -> register_at = $time_now ;
$case_non_gyn -> stain_id = NULL ;
$case_non_gyn -> cytotech1_id = NULL ;
$case_non_gyn -> save ();
}
if ( $case_non_gyn -> load ( Yii :: $app -> request -> post ())) //$patient->load(Yii::$app->request->post())){
{
//ดักจับ Action ว่ากดปุ่มอะไรมา
$action = Yii :: $app -> request -> post ( 'non_gyn' );
//เริ่มต้นการทำ Transaction
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
//บันทึก CaseNonGyn
if ( empty ( $case_non_gyn -> hospital_id )) {
$case_non_gyn -> hospital_id = $case_non_gyn -> patient -> hospital_id ;
}
$pathologist_id = $case_non_gyn -> pathologist_id ;
if ( $case_non_gyn -> is_histo_staining == 1 ) {
$histo_staining = HistoStaining :: findOne ([ 'id_case' => $case_non_gyn -> id_case ]);
if ( ! $histo_staining ) {
$histo_staining = new HistoStaining ();
$histo_staining -> id_case = $case_non_gyn -> id_case ;
$histo_staining -> in_at = $time_now ;
$histo_staining -> block_type_id = 1 ;
$histo_staining -> status_1 = 1 ;
$histo_staining -> save ();
}
}
########################### Submit Button Action ####################
if ( $action == 'micro' ) {
$case_non_gyn -> status_id = 8 ;
$case_non_gyn -> save ();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ '/cyto/non-gyn-micro-img/create' , 'id_case' => $case_non_gyn -> id_case ]);
}
if ( $action == 'process' ) {
//$patient->save();
$case_non_gyn -> status_id = '2' ;
$case_non_gyn -> save ();
$case_non_gyn -> cytotech1_id = Yii :: $app -> user -> getId ();
$case_non_gyn -> cytotech_at = $time_now ;
//$case_non_gyn->save();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว process' );
return $this -> redirect ([ 'screener-preview' , 'id_case' => $case_non_gyn -> id_case ]);
}
/* if ( $action == 'save' ){
echo 'test' ;
var_dump ( $action );
die ();
} */
//เมื่อกดปุ่ม Screener Sign
if ( $action == 'cytotech' ) {
$case_non_gyn -> status_id = 12 ; //ผล final
$case_non_gyn -> report_at = $time_now ;
$case_non_gyn -> save ();
//$operate->result_at = $time_now;
//$operate->save();
//Commit Transaction
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'Cytotech ออกผล Final เรียบร้อยแล้ว กรุณาพิมพ์ผล Final' );
return $this -> redirect ([ 'screener-sign' , 'id_case' => $case_non_gyn -> id_case ]);
}
//เมื่อกดปุ่ม Preview
if ( $action == 'preview' ) {
$case_non_gyn -> save ();
//$patient->save();
//$operate->save();
//Commit Transaction
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'กำลังแสดงรายงาน' );
return $this -> redirect ([ 'screener-preview' , 'id_case' => $case_non_gyn -> id_case ]);
}
//เมื่อกดปุ่ม ส่งแพทย์
if ( $action == 'pathologist' ) {
$case_non_gyn -> status_id = 5 ; //ผล final
$case_non_gyn -> save ( false );
// $operate->result_at = $time_now;
//$operate->save();
//Commit Transaction
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'ส่งพยาธิแพทย์เพื่อออกผลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'new' ]);
}
####################### End of Submit Button ########################
$case_non_gyn -> save ();
//$operate->save();
// $patient->hospital_id = $case_non_gyn->hospital_id;
//$patient->save();
/* $finance = FinanceServiceCharge :: findOne ([ 'id_case' => $case_non_gyn -> id_case ]);
$finance -> hospital_id = $case_non_gyn -> hospital_id ;
$finance -> price = Yii :: $app -> pathology -> getHosPrice ( $case_non_gyn -> hospital_id , $finance -> charge_id );
$finance -> save (); */
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว all' );
return $this -> redirect ([ 'process' , 'id_case' => $case_non_gyn -> id_case ]);
/* $transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว all' );
return $this -> redirect ([ 'process' , 'id_case' => $case_non_gyn -> id_case ]); */
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่สามารถบันทึกข้อมูลได้' );
//return $this->redirect(['process', 'id_case' => $case_non_gyn->id_case]);
var_dump ( $e -> getMessage ());
}
}
return $this -> render ( 'process' , [
'case_non_gyn' => $case_non_gyn ,
'patient_case' => $patient_case ,
//'patient' => $patient,
//'operate' => $operate
]);
}
/*
* Preview PDF
*/
public function actionScreenerPreview ( $id_case )
{
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
//หากไม่พบ Case ให้ redirect ไปหน้า all
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่เลือก' );
return $this -> redirect ([ 'all' ]);
}
// $cyto_operate = CytoOperate::findOne(['id_case' => $case_non_gyn->id_case]);
return $this -> render ( 'screener-preview' , [
'case_non_gyn' => $case_non_gyn ,
// 'cyto_operate' => $cyto_operate,
]);
}
/*
* Screener Sign PDF
*/
public function actionScreenerSign ( $id_case )
{
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
//หากไม่พบ Case ให้ redirect ไปหน้า all
if ( ! $case_non_gyn ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case ที่เลือก' );
return $this -> redirect ([ 'all' ]);
}
$cyto_operate = CytoOperate :: findOne ([ 'id_case' => $case_non_gyn -> id_case ]);
return $this -> render ( 'screener-sign' , [
'case_non_gyn' => $case_non_gyn ,
'cyto_operate' => $cyto_operate ,
]);
}
/*
* render PDF
*/
public function actionScreenerPreviewPdf ( $id_case , $mode )
{
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
$model = $case_non_gyn ;
$cyto_operate = CytoOperate :: findOne ([ 'id_case' => $case_non_gyn -> id_case ]);
$content = $this -> renderPartial ( '@frontend/modules/report/views/case/_preview_non_gyn' , [ //_pdf_screener
'case_non_gyn' => $case_non_gyn ,
'cyto_operate' => $cyto_operate ,
'mode' => $mode
]);
$pdf = new Pdf ([
'mode' => Pdf :: MODE_UTF8 ,
'format' => Pdf :: FORMAT_A4 ,
'orientation' => Pdf :: ORIENT_PORTRAIT ,
'destination' => Pdf :: DEST_BROWSER ,
'content' => $content ,
'cssFile' => '@frontend/web/css/pdf.css' ,
'cssInline' => '.title{font-size: 20px; font-weight: bold;}' ,
'options' => [ 'title' => 'Preview Screener Report Case: ' . $id_case ],
'methods' => [
'SetHtmlHeader' => [ '
< table width = " 100% " cellspacing = " 0 " cellpadding = " 0 " style = " border: 2px solid #1f3864; " bgcolor = " #f2f7fc; " >
< tr >
< td colspan = " 2 " rowspan = " 2 " width = " 70% " style = " text-align: left; " valign = " middle " >
< table width = " 100% " cellspacing = " 0 " cellpadding = " 0 " >
< tr >
< td width = " 20% " padding = " 0 " >
' . Html::img(Yii::getAlias(' @ web / img / logo . png '), [' width ' => ' 120 ', ' align ' => ' left ']) . '
</ td >
< td width = " 80% " align = " left " >
< strong style = " font-size: 39px; color: #305fbf; text-align:center; " > NARESUAN UNIVRSITY </ strong >< br />
& nbsp ; & nbsp ; & nbsp ; & nbsp ; < small style = " font-size: 20px; color: #000000; text-align:center " > 161 Tha Bo Tha Bo District , Nong Khai 43110 , Thailand </ small >< br />
& nbsp ; & nbsp ; < strong style = " font-size: 34px; color: #0a0000; ; text-align:center " > Pathology and Cytology Laboratories </ strong >< br />
& nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; < small style = " font-size: 22px; color: #000000; text-align:center " > Tel . 042 - 431015 ext . 1313 </ small >< br />
</ td >
</ tr >
</ table >
</ td >
< td colspan = " 2 " style = " border-left: 2px solid #1f3864; " >& nbsp ; & nbsp ; & nbsp ; < strong style = " font-size: 28px; " > Report No .</ strong > < strong style = " color: #ff0e1c; font-size: 28px; " > ' . $model->id_case . ' </ strong >& nbsp ; & nbsp ; </ td >
</ tr >
< tr >
< td colspan = " 2 " style = " border-left: 2px solid #1f3864; border-top: 2px solid #1f3864; " >
< table width = " 100% " >
< tr >
< td >< span > HN :</ span ></ td >
< td >< span > ' . $model->h_n . ' </ span ></ td >
</ tr >
< tr >
< td >< span > Name :</ span ></ td >
< td >< span > ' . $model->title->name . $model->name . ' </ span ></ td >
</ tr >
< tr >
< td >< span > Age :</ span ></ td >
< td >< span > ' . ($model->age > 0 ? $model->age . ' ' . $model->age_unit : ' - ') . ' </ span ></ td >
</ tr >
< tr >
< td >< span > Sex :</ span ></ td >
< td >< span > ' . Yii::$app->pathology->getGender($model->gender) . ' </ span ></ td >
</ tr >
< tr >
< td >< span > Ward / Clinic :</ span ></ td >
< td >< span > ' . $model->ward . ' </ span > ' . (!empty($model->case_reference) ? ' < strong > Ref No .</ strong > ' . $model->case_reference : ' ') . (!empty($model->hos_ref) ? ' < strong > Ref .</ strong > ' . $model->hos_ref . ' ' : ' ') . ($model->is_critical_diagnosis ? ' < span style = " color: red; font-size: 14pt; " > ( แจ้งแพทย์ด่วน ) </ span > ' : ' ') . ' </ td >
</ tr >
< tr >
< td >< span > Hospital :</ span ></ td >
< td >< span > ' . (isset($model->hospital) ? $model->hospital->name : null) . ' </ span ></ td >
</ tr >
</ table >
</ td >
</ tr >
< tbody >
< tr >
< td colspan = " 4 " width = " 100% " style = " border-top: 2px solid #1f3864; " align = " center " >
< strong style = " font-size: 28px; color: #305fbf; " > Non - gynecologic Cytological Report </ strong >
</ td >
</ tr >
< tr >
< td style = " border-right: 2px solid #1f3864; border-top: 2px solid #1f3864; " align = " center " >< strong style = " color:#75a3cf; font-size: 16px " > Collection Date :</ strong >
< br >< span style = " font-size: 14pt; " > ' . Yii::$app->pathology->engToDateOnly($model->collect_at) . ' </ span >
</ td >
< td style = " border-right: 2px solid #1f3864; border-top: 2px solid #1f3864; " align = " center " >< strong style = " color:#75a3cf; font-size: 16px; " > Received Date :</ strong >
< br >< span style = " font-size: 14pt; " > ' . Yii::$app->pathology->engToDateOnly($model->register_at) . ' </ span >
</ td >
< td style = " border-right: 2px solid #1f3864; border-top: 2px solid #1f3864; " align = " center " >< strong style = " color:#75a3cf; font-size: 16px; " > Reported Date :</ strong >
< br >< span style = " font-size: 14pt; " > ' . Yii::$app->pathology->engToDateOnly($model->report_at) . ' </ span >
</ td >
< td style = " border-top: 2px solid #1f3864; " align = " center " >< strong style = " color:#75a3cf; font-size: 16px; " > REQUEST BY :</ strong >
< br >< span style = " font-size: 14pt; " > ' . $model->clinician . ' </ span >
</ td >
</ tr >
</ tbody >
</ table >
' ],
'SetFooter' => [ '<span style="font-size: 13pt;">' . $case_non_gyn -> id_case . '|<small style="font-size: 13pt;">' . Yii :: $app -> params [ 'settings' ][ 'non_gyn_rev' ] . '</small>|<span style="font-size: 13pt;">Report Page {PAGENO}/{nbpg}</span>' ],
],
'marginLeft' => 15 ,
'marginRight' => 10 ,
'marginTop' => 90 ,
'marginBottom' => 10 ,
'marginFooter' => 5
]);
$defaultConfig = ( new ConfigVariables ()) -> getDefaults ();
$fontDirs = $defaultConfig [ 'fontDir' ];
$defaultFontConfig = ( new FontVariables ()) -> getDefaults ();
$fontData = $defaultFontConfig [ 'fontdata' ];
$pdf -> options [ 'fontDir' ] = array_merge ( $fontDirs , [
Yii :: getAlias ( '@webroot' ) . '/fonts'
]);
$pdf -> options [ 'fontdata' ] = $fontData + [
'angsananew' => [
'R' => 'AngsanaNew.ttf' ,
'TTCfontID' => [
'R' => 1 ,
],
],
'sarabun' => [
'R' => 'THSarabunNew.ttf' ,
],
'browallia' => [
'R' => 'Browallia.ttf' ,
]
];
return $pdf -> render ();
}
public function actionSend ( $id_case )
{
return $this -> render ( 'send' );
}
public function actionView ( $id_case )
{
$model = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $model ) {
Yii :: $app -> session -> setFlash ( 'success' , 'ไม่พบ Case นี้ในระบบ' );
return $this -> redirect ([ 'all' ]);
}
return $this -> render ( 'view' , [
'model' => $model ,
]);
}
/**
* Undocumented function
*
* @ param [ type ] $id_case
* @ return void
*/
/*
public function actionStaining ( $id_case )
{
$time_now = date ( 'Y-m-d H:i:s' );
$case = Yii :: $app -> pathology -> getCase ( $id_case );
if ( ! $case ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้' );
return $this -> redirect ([ '/pathologist' ]);
}
$tmp_cell_block_staining = new CellBlockCase ();
$tmp_cell_block_staining -> items = CellBlockCase :: find () -> where ([ 'id_case' => $case -> id_case ]) -> all ();
if ( Yii :: $app -> request -> post ()) {
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$im = Yii :: $app -> request -> post ();
$hospital_id = $case -> hospital_id ;
//CellBlockCase
if ( isset ( $im [ 'CellBlockCase' ][ 'items' ]) && ( is_array ( $im [ 'CellBlockCase' ][ 'items' ]) ? count ( $im [ 'CellBlockCase' ][ 'items' ]) : 0 ) > 0 ) {
//if (isset($im['CellBlockCase']['items']) && !empty($im['CellBlockCase']['items'])) {
foreach ( $im [ 'CellBlockCase' ][ 'items' ] as $key => $value ) {
//เลือก CellBlockCase
$cell_staining = CellBlockCase :: findOne ([ 'id_case' => $case -> id_case , 'id' => $value [ 'id' ]]);
if ( ! $cell_staining ) {
$cell_staining = new CellBlockCase ();
$cell_staining -> in_at = $time_now ; //วันเวลา Order Case
$cell_staining -> status_1 = 1 ;
} else {
if ( empty ( $cell_staining -> status_1 )) {
$cell_staining -> status_1 = 1 ;
}
}
//บันทึก CellBlockCase
$cell_staining -> id_case = $case -> id_case ;
$cell_staining -> block_no = $value [ 'block_no' ];
$cell_staining -> note = $value [ 'note' ];
//$cell_staining->disable_comment = $value['disable_comment'];
//$cell_staining->operate_id = Yii::$app->user->getId(); หมอสั่ง
if ( $cell_staining -> save ( false )) {
//var_dump($value['id']);
if ( empty ( $value [ 'from_id' ])) {
$finance = new FinanceServiceCharge ();
$finance -> occur_at = $time_now ;
} else {
$finance = FinanceServiceCharge :: findOne ([ 'id_case' => $case -> id_case , 'from_id' => $value [ 'from_id' ]]);
}
if ( $case == 'S' ) {
$finance -> is_able = 1 ;
} else {
$finance -> is_able = 0 ;
}
$finance -> from_id = $cell_staining -> id ;
$finance -> id_case = $case -> id_case ;
$finance -> hospital_id = $hospital_id ;
$finance -> charge_id = $value [ 'charge_id' ];
//หาราคา รัฐ/เอกชน
$price = ConstServiceCharge :: findOne ( $value [ 'charge_id' ]);
$finance -> price = Yii :: $app -> pathology -> getHosPrice ( $hospital_id , $value [ 'charge_id' ]); //$price->price;
$finance -> is_cash = 0 ;
if ( $case == 'S' ) {
$finance -> is_able = 1 ;
} else {
$finance -> is_able = 0 ;
}
if ( $finance -> save ()) {
if ( $finance -> isNewRecord ) {
//ส่ง Order ไปยัง HIS
if ( Yii :: $app -> pathology -> requestHisOrderItem ( $case -> id_case , $finance -> id , 'create' )) {
Yii :: $app -> session -> setFlash ( 'success' , 'ส่ง Order ไปยัง HIS เรียบร้อยแล้ว' );
} else {
Yii :: $app -> session -> setFlash ( 'error' , 'ส่ง Order ไปยัง HIS ไม่สำเร็จ' );
}
}
}
}
} ///endforeach
//if (($case == 'S' || $case == 'N' || $case == 'C') && $case->status_id != 1) {
//$case->status_id = 12;
$case -> save ();
//}
} //CellBlockCase
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'staining' , 'id_case' => $case -> id_case ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
var_dump ( $e -> getMessage ());
die ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาดระหว่างบันทึกข้อมูล' );
return $this -> redirect ([ 'staining' , 'id_case' => $case -> id_case ]);
}
}
return $this -> render ( 'staining' , [
'case' => $case ,
'tmp_cell_block_staining' => $tmp_cell_block_staining ,
]);
}
*/
2025-04-23 09:55:03 +00:00
/**
* @ param $id_case
* @ param string $type
* @ return string | \yii\web\Response
* @ throws NotFoundHttpException
*/
public function actionNonGynAddendum ( $id_case )
{
$type = 'addendum' ;
//CytoNonGynDiagnosis status_id = 6
$case_non_gyn = CaseNonGyn :: findOne ([ 'id_case' => $id_case ]);
if ( ! $case_non_gyn ) {
throw new NotFoundHttpException ( 'Cannot find this case.' );
}
$model = CytoNonGynDiagnosis :: find ()
-> where ([
'id_case' => $id_case ,
'report_type' => $type
])
-> andWhere ([ '<' , 'status_id' , 6 ])
-> orderBy ([ 'id' => SORT_DESC ])
-> one ();
$final = CytoNonGynDiagnosis :: findOne ([ 'id_case' => $id_case , 'report_type' => 'final' ]);
if ( ! $model ) {
$model = new CytoNonGynDiagnosis ();
$model -> id_case = $id_case ;
$model -> report_type = $type ;
$model -> gross_description = $final -> gross_description ;
$model -> microscopic_description = $final -> microscopic_description ;
//$model->diagnosis = $final->diagnosis;
Yii :: $app -> session -> addFlash ( 'warning' , 'ออกผล Addendum กรุณากรอกแบบฟอร์มด้านล่าง' );
} else {
$approve = ApproveStatus :: findOne ([
'id_case' => $model -> id_case ,
'report_type' => $model -> report_type ,
'ref_id' => $model -> id ,
]);
if ( $approve && $approve -> approve_status < 4 ) {
Yii :: $app -> session -> setFlash ( 'error' , 'Case นี้รอตรวจสอบผลการตรวจไม่สามารถวินิจฉัยใหม่ได้' );
return $this -> redirect ([ '/pathologist' ]);
}
Yii :: $app -> session -> addFlash ( 'warning' , 'Case นี้ออกผล Addendum Report เรียบร้อยแล้ว' );
}
//$model->scenario = 'pathologist';
//Assign Pathologist to surgical diagnosis case
$model -> pathologist_id = Yii :: $app -> user -> getId ();
$model -> icdos = Coder :: find () -> where ([ 'id_case' => $model -> id_case ]) -> all ();
//Template Gross
$searchModelGross = new CytoNonGynGrossTemplateSearch ();
$dataProviderGross = $searchModelGross -> search ( Yii :: $app -> request -> queryParams );
//Template Micro
2025-05-14 08:33:37 +00:00
/* $searchModelMicroscopic = new CytoNonGynMicroscopicTemplateSearch ();
$dataProviderMicroscopic = $searchModelMicroscopic -> search ( Yii :: $app -> request -> queryParams ); */
2025-04-23 09:55:03 +00:00
//Template Diagnosis
$searchModelDiagnosis = new CytoNonGynDiagnosisTemplateSearch ();
$dataProviderDiagnosis = $searchModelDiagnosis -> search ( Yii :: $app -> request -> queryParams );
//ระบุ Cytotech
$model -> cytotech1_id = Yii :: $app -> user -> getId ();
if (
$model -> load ( Yii :: $app -> request -> post ())
&& $case_non_gyn -> load ( Yii :: $app -> request -> post ())
) {
$action = Yii :: $app -> request -> post ( 'non-gyn' );
$time_now = date ( 'Y-m-d H:i:s' );
if ( $action == 'save' ) {
$model -> status_id = 3 ;
$case_non_gyn -> status_id = 8 ;
if ( $case_non_gyn -> save () && $model -> save ()) {
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
}
}
if ( $action == 'approve' ) {
if ( empty ( $case_non_gyn -> pathologist_id )) {
$case_non_gyn -> addError ( 'pathologist_id' , 'กรุณาเลือกพยาธิแพทย์' );
}
$model -> status_id = 6 ;
$model -> cytotech1_at = $time_now ;
$model -> cell_block_at = $time_now ;
$case_non_gyn -> cytotech1_at = $time_now ;
$case_non_gyn -> status_id = 9 ;
if ( $case_non_gyn -> save () && $model -> save ()) {
$log = new CytoNonGynDiagnosisLog ([
'id_case' => $model -> id_case ,
'user_id' => Yii :: $app -> user -> getId (),
'report_type' => $model -> report_type ,
'specimen_adequacy' => $model -> specimen_adequacy_1 ,
'gross_description' => $model -> gross_description ,
'diagnosis' => $model -> diagnosis ,
'comment' => $model -> comment ,
'approve_at' => date ( 'Y-m-d H:i:s' ),
]);
if ( $log -> save ()) {
}
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลและส่งให้พยาธิแพทย์ เรียบร้อยแล้ว' );
return $this -> redirect ([ '/cyto/non-gyn/non-gyn-new' ]);
}
}
return $this -> redirect ([ '/cyto/non-gyn/non-gyn-addendum' , 'id_case' => $case_non_gyn -> id_case , 'type' => 'addendum' , '#' => 'report' ]);
}
$dataProviderReport = new ActiveDataProvider ([
'query' => CytoNonGynDiagnosis :: find ()
-> andFilterWhere ([
'id_case' => $case_non_gyn -> id_case ,
])
-> andFilterWhere ([ '>' , 'status_id' , 3 ]),
'sort' => [
'defaultOrder' => [
'id' => SORT_ASC
]
]
]);
return $this -> render ( 'non-gyn-addendum' , [
'model' => $model ,
'case_non_gyn' => $case_non_gyn ,
//'coder' => $coder,
'dataProviderReport' => $dataProviderReport ,
//'cyto_slide_qa_1' => $cyto_slide_qa_1,
'searchModelGross' => $searchModelGross ,
'dataProviderGross' => $dataProviderGross ,
2025-05-14 08:33:37 +00:00
/* 'searchModelMicroscopic' => $searchModelMicroscopic ,
'dataProviderMicroscopic' => $dataProviderMicroscopic , */
2025-04-23 09:55:03 +00:00
'searchModelDiagnosis' => $searchModelDiagnosis ,
'dataProviderDiagnosis' => $dataProviderDiagnosis
]);
}
2025-04-01 17:03:43 +00:00
}