2024-12-25 03:04:59 +00:00
< ? php
/*
* CaseController
* @ namespace frontend\modules\surgical\controllers
* @ author Manop Kongoon < kongoon @ gmail . com >
*/
namespace frontend\modules\surgical\controllers ;
use Yii ;
use yii\base\Exception ;
use yii\helpers\FileHelper ;
use common\models\SearchDate ;
use common\models\SurgicalAdd ;
use common\models\CaseSurgical ;
use frontend\models\CaseSearch ;
use common\models\HistoStaining ;
use common\models\SurgicalSlide ;
use yii\data\ActiveDataProvider ;
use common\models\ImmunoStaining ;
use common\models\SurgicalMuseum ;
use common\models\SurgicalDiscard ;
use common\models\SurgicalOperate ;
use common\models\ConstServiceCharge ;
use common\models\FinanceServiceCharge ;
use common\models\SurgicalBone ;
use common\models\SurgicalContainer ;
use DateTime ;
use frontend\modules\surgical\models\MuseumAddForm ;
use frontend\modules\surgical\models\CaseSurgicalSearch ;
use frontend\modules\surgical\models\SurgicalBoneSearch ;
use frontend\modules\surgical\models\SurgicalMuseumSearch ;
use frontend\modules\surgical\models\SurgicalDiscardViewSearch ;
class CaseSurgicalController extends \yii\web\Controller
{
public function actionAll ()
{
$modelSearch = new CaseSurgicalSearch ();
$case_surgical = $modelSearch -> search ( Yii :: $app -> request -> queryParams );
return $this -> render ( 'all' , [
'case_surgical' => $case_surgical ,
'modelSearch' => $modelSearch ,
]);
}
public function actionBlockAll ()
{
$modelSearch = new CaseSurgicalSearch ();
$case_surgical = $modelSearch -> search ( Yii :: $app -> request -> queryParams );
return $this -> render ( 'block-all' , [
'case_surgical' => $case_surgical ,
'modelSearch' => $modelSearch ,
]);
}
public function actionScan ()
{
$modelSearch = new CaseSurgicalSearch ();
$case_surgical = $modelSearch -> search ( Yii :: $app -> request -> queryParams );
//$sur_operate = new SurgicalOperate();
if ( $case_surgical -> load ( Yii :: $app -> request -> post ())) {
$transaction = Yii :: $app -> db -> beginTransaction ();
$sur_operate = SurgicalOperate :: findOne ([ 'id_case' => $case_surgical -> id_case ]);
$time_now = date ( 'Y-m-d H:i:s' );
if ( $sur_operate ) {
try {
if ( ! $case_surgical -> cut_start ) {
$case_surgical -> cut_start = $time_now ;
$alert = Yii :: $app -> session -> setFlash ( 'info' , '' . $case_surgical -> id_case . ' บันทึก วันที่เริ่มตัด เรียบร้อยแล้ว' );
} else {
$timenow_th = date ( 'd/m/' ) . ( date ( " Y " ) + 543 ) . " " . date ( 'H:i:s' ) . " .0000000 " ;
$chk_time = SurgicalOperate :: getDateTimeDiff ( $case_surgical -> cut_start , $timenow_th , " " );
if ( $chk_time <= 2 ) { // ห้ามบันทึกซ้ำภายใน 2 นาที
Yii :: $app -> session -> setFlash ( 'error' , '' . $case_surgical -> id_case . ' ลงเวลาเริ่มตัด ซ้ำ' );
} else {
if ( ! $case_surgical -> cut_end ) {
$case_surgical -> cut_end = $time_now ;
$alert = Yii :: $app -> session -> setFlash ( 'success' , '' . $case_surgical -> id_case . ' บันทึก เวลาตัดเสร็จ เรียบร้อยแล้ว' );
} else {
Yii :: $app -> session -> setFlash ( 'error' , '' . $case_surgical -> id_case . ' ลงเวลาตัดเสร็จ ซ้ำ' );
}
}
}
$sur_operate -> save ();
$transaction -> commit ();
$alert ;
return $this -> redirect ([ 'scan' ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' );
return $this -> redirect ([ 'scan' ]);
}
} else {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบข้อมูลในระบบ' );
return $this -> redirect ([ 'scan' ]);
}
}
return $this -> render ( 'scan' , [
'case_surgical' => $case_surgical ,
'modelSearch' => $modelSearch ,
//'sur_operate' => $sur_operate,
]);
}
/*
* ทิ้งเนื้อ Old
* return render view
*/
public function actionDiscardCheck ()
{
$searchModel = new SurgicalDiscardViewSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andWhere ( 'ready_at IS NULL' );
$dataProvider -> sort = [
'defaultOrder' => [
'report_at' => SORT_DESC
]
];
$dataProvider -> pagination = [
'pageSize' => 50
];
//เมื่อมีการ Get จากการเลือก
if ( Yii :: $app -> request -> get ( 'selection' )) {
$selection = Yii :: $app -> request -> get ( 'selection' );
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$time_now = date ( 'Y-m-d H:i:s' );
foreach ( $selection as $key => $val ) {
//echo $val;
$surgical_discard = SurgicalDiscard :: findOne ([ 'id_case' => $val ]);
if ( ! $surgical_discard ) {
$surgical_discard = new SurgicalDiscard ();
$surgical_discard -> id_case = $val ;
$surgical_discard -> choose_id = Yii :: $app -> user -> getId ();
$surgical_discard -> ready_at = $time_now ;
}
if ( empty ( $surgical_discard -> choose_id )) {
$surgical_discard -> choose_id = Yii :: $app -> user -> getId ();
}
if ( empty ( $surgical_discard -> ready_at )) {
$surgical_discard -> ready_at = $time_now ;
}
if ( $surgical_discard -> save ()) {
Yii :: $app -> session -> addFlash ( 'success' , 'ตรวจสอบคัดทิ้งเนื้อ ' . $val . ' เรียบร้อยแล้ว' );
}
}
$transaction -> commit ();
return $this -> redirect ([ 'discard-check' ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาด' );
//echo $e->getMessage();
//var_dump($surgical_discard->discard_id);
//die();
}
}
return $this -> render ( 'discard-check' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
]);
}
/*
* ทิ้งเนื้อ
* return render view
*/
/*
public function actionDiscardCheck ()
{
$searchModel = new SurgicalDiscardViewSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andWhere ( " ready_discard > '2020-08-18' " );
$dataProvider -> query -> andWhere ( 'choose_id IS NULL' );
$search_date = new SearchDate ();
if ( $search_date -> load ( Yii :: $app -> request -> get ())){
$dataProvider -> query -> andWhere ( " ready_discard between ' " . Yii :: $app -> pathology -> searchDateStart ( $search_date -> date_start ) . " ' and ' " . Yii :: $app -> pathology -> searchDateEnd ( $search_date -> date_end ) . " ' " );
$dataProvider -> pagination = [ 'pageSize' => false ];
} else {
$dataProvider -> pagination = [ 'pageSize' => 500 ];
}
$dataProvider -> sort = [
'defaultOrder' => [
'id_case' => SORT_DESC
]
];
//เมื่อมีการ POST จากการเลือก
if ( Yii :: $app -> request -> post ( 'selection' )){
$selection = Yii :: $app -> request -> post ( 'selection' );
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$time_now = date ( 'Y-m-d H:i:s' );
foreach ( $selection as $key => $val ) {
//echo $val;
$surgical_discard = SurgicalDiscard :: findOne ([ 'id_case' => $val ]);
if ( ! $surgical_discard ) {
$surgical_discard = new SurgicalDiscard ();
$surgical_discard -> id_case = $val ;
$surgical_discard -> ready_at = $time_now ;
$surgical_discard -> choose_id = Yii :: $app -> user -> getId ();
}
if ( $surgical_discard -> save ()){
Yii :: $app -> session -> addFlash ( 'success' , 'ตรวจสอบคัดทิ้งเนื้อ ' . $val . ' เรียบร้อยแล้ว' );
}
}
$transaction -> commit ();
return $this -> redirect ([ 'discard-check' ]);
} catch ( Exception $e ){
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาด' );
//echo $e->getMessage();
}
}
return $this -> render ( 'discard-check' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
'search_date' => $search_date ,
]);
}
*/
public function actionPrintCheck ()
{
$search_date = new SearchDate ();
if ( $search_date -> load ( Yii :: $app -> request -> get ())) {
}
return $this -> render ( 'print-check' , [
'search_date' => $search_date
]);
}
/* public function actionDiscardCheckProcess ()
{
$id_cases = explode ( ',' , Yii :: $app -> request -> post ( 'id_cases' ));
//Abc::deleteAll(['in', 'id_case', $id_cases]);
foreach ( $id_cases as $id_case => $val ){
$surgical_discard = SurgicalDiscard :: findOne ([ 'id_case' => $val ]);
if ( ! $surgical_discard ){
$surgical_discard = new SurgicalDiscard ();
$surgical_discard -> choose_id = Yii :: $app -> user -> getId ();
}
$surgical_discard -> save ();
}
return 'success' ;
} */
/*
* ทำการทั้งเนื้อ
*/
public function actionDiscardProcess ()
{
$searchModel = new SurgicalDiscardViewSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andWhere ( 'discard_at IS NULL' );
$dataProvider -> sort = [
'defaultOrder' => [
'id_case' => SORT_DESC ,
'ready_at' => SORT_DESC
]
];
$dataProvider -> pagination = [
'pageSize' => 50
];
//เมื่อมีการ Get จากการเลือก
if ( Yii :: $app -> request -> get ( 'selection' )) {
$selection = Yii :: $app -> request -> get ( 'selection' );
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$time_now = date ( 'Y-m-d H:i:s' );
foreach ( $selection as $key => $val ) {
//echo $val;
$surgical_discard = SurgicalDiscard :: findOne ([ 'id_case' => $val ]);
if ( ! $surgical_discard ) {
$surgical_discard = new SurgicalDiscard ();
$surgical_discard -> id_case = $val ;
}
$surgical_discard -> discard_id = Yii :: $app -> user -> getId ();
$surgical_discard -> discard_at = $time_now ;
if ( $surgical_discard -> save ()) {
Yii :: $app -> session -> addFlash ( 'success' , 'ทิ้งเนื้อ ' . $val . ' เรียบร้อยแล้ว' );
}
}
$transaction -> commit ();
return $this -> redirect ([ 'discard-process' ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาด' );
//echo $e->getMessage();
}
}
return $this -> render ( 'discard-process' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
]);
}
public function actionDiscard ()
{
$searchModel = new SurgicalDiscardViewSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> query -> andWhere ( 'discard_id IS NOT NULL' );
$dataProvider -> sort = [
'defaultOrder' => [
'discard_at' => SORT_DESC
]
];
$dataProvider -> pagination = [
'pageSize' => 50
];
return $this -> render ( 'discard' , [
'dataProvider' => $dataProvider ,
'searchModel' => $searchModel ,
]);
}
public function actionIndex ()
{
return $this -> render ( 'index' );
}
public function actionView ( $id_case )
{
return $this -> render ( 'view' , [
'model' => Yii :: $app -> pathology -> getCase ( $id_case )
]);
}
/**
* @ param string $id_case
* @ return \yii\web\Response | string
*/
public function actionNew ()
{
$id_case = '' ;
$case_search = new CaseSearch ();
if ( $case_search -> load ( Yii :: $app -> request -> get ())) {
$model = CaseSurgical :: findOne ([ 'id_case' => $case_search -> id_case ]); //'status_id' => 1,
} else {
if ( $id_case != null ) {
$model = CaseSurgical :: findOne ([ 'id_case' => $id_case ]); //'status_id' => 1,
} else {
$model = CaseSurgical :: findOne ([ 'status_id' => 1 ]);
}
}
if ( $model !== null ) {
$model -> scenario = 'new' ;
}
$text = '' ;
if ( isset ( $model -> gross_description ) && ! empty ( $model -> gross_description )) {
//if (empty($model->gross_description) && !isset($model->gross_description)) {
foreach ( SurgicalSlide :: find () -> where ([ 'id_case' => $model -> id_case ]) -> all () as $slide ) {
/* for ($j = 1; $j <= $slide->quantity; $j++)*/ {
//$no_quantity = [1 => 'A', 2 => 'B', 3 => 'C', 4 => 'D', 5 => 'E', 6 => 'F', 7 => 'G', 8 => 'H', 9 => 'I', 10 => 'J', 11 => 'K', 12 => 'L', 13 => 'M', 14 => 'N', 15 => 'O', 16 => 'P', 17 => 'Q', 18 => 'R', 19 => 'S', 20 => 'T', 21 => 'U', 22 => 'V', 23 => 'W', 24 => 'X', 25 => 'Y', 26 => 'Z'];
$no_quantity = [ 1 => 'A' , 2 => 'B' , 3 => 'C' , 4 => 'D' , 5 => 'E' , 6 => 'F' , 7 => 'G' , 8 => 'H' , 9 => 'I' , 10 => 'J' , 11 => 'K' , 12 => 'L' , 13 => 'M' , 14 => 'N' , 15 => 'O' , 16 => 'P' , 17 => 'Q' , 18 => 'R' , 19 => 'S' , 20 => 'T' , 21 => 'U' , 22 => 'V' , 23 => 'W' , 24 => 'X' , 25 => 'Y' , 26 => 'Z' , 27 => 'AA' , 28 => 'AB' , 29 => 'AC' , 30 => 'AD' , 31 => 'AE' , 32 => 'AF' , 33 => 'AG' , 34 => 'AH' , 35 => 'AI' , 36 => 'AJ' , 37 => 'AK' , 38 => 'AL' , 39 => 'AM' , 40 => 'AN' , 41 => 'AO' , 42 => 'AP' , 43 => 'AQ' , 44 => 'AR' , 45 => 'AS' , 46 => 'AT' , 47 => 'AU' , 48 => 'AV' , 49 => 'AW' , 50 => 'AX' , 51 => 'AY' , 52 => 'AZ' ];
$text .= isset ( $slide -> no_slide ) ? $slide -> no_slide . '<br />' : '' ;
}
}
}
if ( $case_search -> load ( Yii :: $app -> request -> post ())) {
return $this -> redirect ([ 'do' , 'id_case' => $case_search -> id_case ]);
}
if ( ! $model ) {
Yii :: $app -> session -> setFlash ( 'warning' , 'ไม่พบ Case ID: ' . $case_search -> id_case . ' ที่ค้นหา หรือไม่มี Case ใหม่' );
return $this -> redirect ([ 'all' ]);
}
//Bone
$sc_surgical_bone = new SurgicalBone ();
$sc_surgical_bone -> items = SurgicalBone :: find () -> where ([ 'id_case' => $model -> id_case ]) -> all ();
//ขนาดชิ้นเนื้อ
$sc_surgical_container = new SurgicalContainer ();
$sc_surgical_container -> items = SurgicalContainer :: find () -> where ([ 'id_case' => $model -> id_case ]) -> all ();
/* $model -> items = FinanceServiceCharge :: find ()
-> joinWith ( 'charge' )
-> where ([ 'id_case' => $model -> id_case , 'const_service_charge.lab' => 'surgical' ]) -> all (); */
$model -> charge_user_id = Yii :: $app -> user -> getId ();
if ( $model -> load ( Yii :: $app -> request -> post ()) && $model -> validate ()) {
//เช็คการให้ราคา
/* if ( empty ( $model -> items )) {
Yii :: $app -> session -> setFlash ( 'error' , 'กรุณาให้ราคา' );
$model -> addError ( 'items' , 'กรุณาให้ราคา' );
return $this -> redirect ([ 'new' , 'id_case' => $model -> id_case ]);
} */
//var_dump($surgical->items);
//die();
/* if ( $surgical -> charge_user_id > 1 && $surgical -> charge_user_id != Yii :: $app -> user -> getId ()){
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่มีสิทธิ์ในการแก้ไขข้อมูลกรุณาติดต่อเจ้าของ Case ' . $surgical -> chargeUser -> realname );
return $this -> redirect ([ '/surgical' ]);
} */
$time_now = date ( 'Y-m-d H:i:s' );
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$items = Yii :: $app -> request -> post ();
if ( isset ( $items [ 'SurgicalBone' ][ 'items' ]) && is_array ( $items [ 'SurgicalBone' ][ 'items' ]) && count ( $items [ 'SurgicalBone' ][ 'items' ]) > 0 ) {
foreach ( $items [ 'SurgicalBone' ][ 'items' ] as $key => $value ) {
$surgical_bone = SurgicalBone :: findOne ([ 'id_case' => $model -> id_case , 'id' => $value [ 'id' ]]);
if ( ! $surgical_bone ) {
$surgical_bone = new SurgicalBone ();
}
$dateStartFormatted = DateTime :: createFromFormat ( 'd/m/Y H:i:s' , Yii :: $app -> pathology -> thaiDateTime ( $value [ 'date_start' ])) -> format ( 'Y-m-d H:i:s' );
$dateEndFormatted = DateTime :: createFromFormat ( 'd/m/Y H:i:s' , Yii :: $app -> pathology -> thaiDateTime ( $value [ 'date_end' ])) -> format ( 'Y-m-d H:i:s' );
$surgical_bone -> id_case = $model -> id_case ;
$surgical_bone -> block_no = $value [ 'block_no' ];
$surgical_bone -> date_start = $dateStartFormatted ;
$surgical_bone -> date_end = $dateEndFormatted ;
$surgical_bone -> acid = $value [ 'acid' ];
if ( $surgical_bone -> save ( false )) {
// Success action if needed
}
}
}
$sc = Yii :: $app -> request -> post ();
//SurgicalContainer
if ( isset ( $sc [ 'SurgicalContainer' ][ 'items' ]) && ( is_array ( $sc [ 'SurgicalContainer' ][ 'items' ]) ? count ( $sc [ 'SurgicalContainer' ][ 'items' ]) : 0 ) > 0 ) {
foreach ( $sc [ 'SurgicalContainer' ][ 'items' ] as $key => $value ) {
$surgical_container = SurgicalContainer :: findOne ([ 'id_case' => $model -> id_case , 'id' => $value [ 'id' ]]);
if ( ! $surgical_container ) {
$surgical_container = new SurgicalContainer ();
}
$surgical_container -> id_case = $model -> id_case ;
$surgical_container -> container_type = $value [ 'container_type' ];
$surgical_container -> amount = $value [ 'amount' ];
$surgical_container -> specimen_size = $value [ 'specimen_size' ];
$surgical_container -> remark = $value [ 'remark' ];
if ( $surgical_container -> save ( false )) {
}
}
} //SurgicalContainer
//var_dump($items['SurgicalOperate']['items']);
//die();
/*
if ( isset ( $items [ 'CaseSurgical' ][ 'items' ]) && is_array ( $items [ 'CaseSurgical' ][ 'items' ]) && ( count ( $items [ 'CaseSurgical' ][ 'items' ]) > 0 )) {
//if (count($items['CaseSurgical']['items']) > 0) {
foreach ( $items [ 'CaseSurgical' ][ 'items' ] as $key => $val ) {
//var_dump($val['charge_id']);
//die();
if ( empty ( $val [ 'id' ])) {
$finance = new FinanceServiceCharge ();
} else {
$finance = FinanceServiceCharge :: findOne ( $val [ 'id' ]);
}
$finance -> id_case = $model -> id_case ;
$finance -> hospital_id = $model -> hospital_id ;
$finance -> charge_id = $val [ 'charge_id' ];
//หาราคา
//$price = ConstServiceCharge::findOne($val['charge_id']);
$finance -> price = Yii :: $app -> pathology -> getHosPrice ( $model -> hospital_id , $val [ 'charge_id' ]); //$price->price;
$finance -> df = Yii :: $app -> pathology -> getHosDF ( $model -> hospital_id , $val [ 'charge_id' ]);
$finance -> is_cash = 0 ;
$finance -> occur_at = $time_now ;
$finance -> is_able = 0 ; //คิดเงิน
$finance -> save ();
}
//ส่งเข้า Queue
//Yii::$app->queue->delay(10)->push(new FinanceApiSend());
//Yii::$app->pathology->financeApiSend();
}
*/
// if !empty()
if ( empty ( $model -> getOldAttribute ( 'charge_at' ))) {
$model -> charge_at = $time_now ;
}
if ( $model -> save ()) {
} else {
var_dump ( $model -> attributes );
var_dump ( $model -> getFirstErrors ());
die ();
}
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อย' );
return $this -> redirect ([ 'new' , 'id_case' => $model -> id_case ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
throw new Exception ( $e -> getMessage ());
}
}
return $this -> render ( 'new' , [
'model' => $model ,
'case_search' => $case_search ,
'sc_surgical_bone' => $sc_surgical_bone ,
'sc_surgical_container' => $sc_surgical_container ,
// 'tissue' => $tissue,
'text' => $text ,
]);
}
public function actionGetStaining ( $id_case = null )
{
$case = CaseSurgical :: findOne ([ 'id_case' => $id_case ]);
$time_now = date ( 'Y-m-d H:i:s' );
if ( ! $case ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้' );
return $this -> redirect ([ 'new' ]);
}
$case_type = Yii :: $app -> pathology -> getCaseType ( $id_case );
$tmp_immono_staining = new ImmunoStaining ();
$tmp_immono_staining -> items = ImmunoStaining :: find () -> where ([ 'id_case' => $case -> id_case ]) -> all ();
$tmp_histo_staining = new HistoStaining ();
$tmp_histo_staining -> items = HistoStaining :: 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 ;
//HistoStaining
if ( isset ( $im [ 'HistoStaining' ][ 'items' ]) && ( is_array ( $im [ 'HistoStaining' ][ 'items' ]) ? count ( $im [ 'HistoStaining' ][ 'items' ]) : 0 ) > 0 ) {
//if (isset($im['HistoStaining']['items']) && !empty($im['HistoStaining']['items'])) {
foreach ( $im [ 'HistoStaining' ][ 'items' ] as $key => $value ) {
$histo_staining = HistoStaining :: findOne ([ 'id_case' => $case -> id_case , 'id' => $value [ 'id' ]]);
if ( ! $histo_staining ) {
$histo_staining = new HistoStaining ();
$histo_staining -> in_at = $time_now ;
$histo_staining -> status_1 = 1 ;
} else {
if ( empty ( $histo_staining -> status_1 )) {
$histo_staining -> status_1 = 1 ;
}
}
$histo_staining -> id_case = $case -> id_case ;
$histo_staining -> block_no = $value [ 'block_no' ];
$histo_staining -> note = $value [ 'note' ];
if ( $histo_staining -> save ( false )) {
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 = $histo_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 ;
}
$finance -> save ();
}
} //foreach histo
$case -> status_id = 12 ;
$case -> save ();
} //HistoStaining
//ImmunoStaining
if ( isset ( $im [ 'ImmunoStaining' ][ 'items' ]) && ( is_array ( $im [ 'ImmunoStaining' ][ 'items' ]) ? count ( $im [ 'ImmunoStaining' ][ 'items' ]) : 0 ) > 0 ) {
//if (isset($im['ImmunoStaining']['items']) && !empty($im['ImmunoStaining']['items'])) {
foreach ( $im [ 'ImmunoStaining' ][ 'items' ] as $key => $value ) {
//เลือก ImmunoStaining
$immuno_staining = ImmunoStaining :: findOne ([ 'id_case' => $case -> id_case , 'id' => $value [ 'id' ]]);
if ( ! $immuno_staining ) {
$immuno_staining = new ImmunoStaining ();
$immuno_staining -> in_at = $time_now ; //วันเวลา Order Case
$immuno_staining -> status_1 = 1 ;
} else {
if ( empty ( $immuno_staining -> status_1 )) {
$immuno_staining -> status_1 = 1 ;
}
}
//บันทึก ImmunoStaining
$immuno_staining -> id_case = $case -> id_case ;
$immuno_staining -> block_no = $value [ 'block_no' ];
$immuno_staining -> note = $value [ 'note' ];
//$immuno_staining->disable_comment = $value['disable_comment'];
//$immuno_staining->operate_id = Yii::$app->user->getId(); หมอสั่ง
if ( $immuno_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 = $immuno_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 ;
}
$finance -> save ();
}
} ///endforeach
//if (($case == 'S' || $case == 'N' || $case == 'C') && $case->status_id != 1) {
$case -> status_id = 12 ;
$case -> save ();
//}
} //ImnunoStaining
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'get-staining' , 'id_case' => $case -> id_case ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
throw new \yii\db\Exception ( $e -> getMessage ());
}
}
return $this -> render ( 'get-staining' , [
'case' => $case ,
'tmp_histo_staining' => $tmp_histo_staining ,
'tmp_immuno_staining' => $tmp_immono_staining
]);
}
/*
* Delete Staining Test
*/
public function actionFinanceServiceChargeHistoDelete ()
{
$p = Yii :: $app -> request -> post ();
$finance = FinanceServiceCharge :: findOne ([ 'id_case' => $p [ 'id_case' ], 'from_id' => $p [ 'from_id' ]]);
//$immuno_staining_detail = ImmunoStainingDetail::findOne(['id_case' => $p['id_case'], 'id' => $p['from_id']]);
$histo_staining = HistoStaining :: findOne ([ 'id_case' => $p [ 'id_case' ], 'id' => $p [ 'hs_id' ]]);
if ( ! $finance && ! $histo_staining ) { // || !$immuno_staining_detail
echo 'error' ;
} else {
$finance ? $finance -> delete () : null ;
$histo_staining ? $histo_staining -> delete () : null ;
echo 'success' ;
}
}
/*
* Delete Staining Test
*/
public function actionFinanceServiceChargeImmunoDelete ()
{
$p = Yii :: $app -> request -> post ();
$finance = FinanceServiceCharge :: findOne ([ 'id_case' => $p [ 'id_case' ], 'from_id' => $p [ 'from_id' ]]);
//$immuno_staining_detail = ImmunoStainingDetail::findOne(['id_case' => $p['id_case'], 'id' => $p['from_id']]);
$immuno_staining = ImmunoStaining :: findOne ([ 'id_case' => $p [ 'id_case' ], 'id' => $p [ 'im_id' ]]);
if ( ! $finance && ! $immuno_staining ) { // || !$immuno_staining_detail
echo 'error' ;
} else {
$finance ? $finance -> delete () : null ;
$immuno_staining -> delete ();
echo 'success' ;
}
}
/**
* @ return string
*/
public function actionMyCase ()
{
$modelSearch = new CaseSurgicalSearch ();
//$modelSearch->charge_user_id = Yii::$app->user->getId();
$case_surgical = $modelSearch -> search ( Yii :: $app -> request -> queryParams );
$case_surgical -> query -> andFilterWhere ([ 'charge_user_id' => Yii :: $app -> user -> getId ()]);
//$case_surgical->sort->defaultOrder = ['id' => SORT_DESC];
return $this -> render ( 'my-case' , [
'case_surgical' => $case_surgical ,
'modelSearch' => $modelSearch ,
]);
}
/*
* ส่งให้ห้อง Histo
*/
public function actionSendHisto ( $id_case )
{
$transaction = Yii :: $app -> db -> beginTransaction ();
$model = CaseSurgical :: findOne ([ 'id_case' => $id_case ]);
if ( $model ) {
try {
if ( $model -> status_id != 12 ) {
$model -> status_id = 3 ; //มีปัญหาเรื่องหมอสั่งเพิ่ม
}
$model -> save ();
/*
* เพิ่มลง HistoStaining ด้วย
*/
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'ส่งห้อง Histo เรียบร้อยแล้ว' );
return $this -> redirect ([ '/surgical/case/new' ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' );
return $this -> redirect ([ '/surgical/case/new' ]);
}
} else {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่พบ Case นี้ในระบบ' );
return $this -> redirect ([ 'new' ]);
}
}
/*
* รายการชิ้นเนื้อที่ได้ลงทะเบียนเข้าพิพิธภัณฑ์
*/
public function actionMuseum ()
{
$modelSearch = new SurgicalMuseumSearch ();
$dataProvider = $modelSearch -> search ( Yii :: $app -> request -> queryParams );
$model = new MuseumAddForm ();
if ( $model -> load ( Yii :: $app -> request -> post ())) {
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$case_surgical = CaseSurgical :: findOne ([ 'id_case' => $model -> id_case ]);
if ( $case_surgical ) {
if ( $case_surgical -> status_id != 12 ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่สามารถบันทึกลงเข้าพิพิธภัณฑ์ได้ เนื่องจากชิ้นเนื้อยังไม่มีสถานะผล Final' );
return $this -> redirect ([ 'museum' ]);
}
$museum = SurgicalMuseum :: findOne ([ 'id_case' => $model -> id_case ]);
if ( $museum ) {
Yii :: $app -> session -> setFlash ( 'error' , 'Case นี้มีในพิพิธภัณฑ์แล้ว' );
return $this -> redirect ([ 'museum' ]);
}
$museum = new SurgicalMuseum ();
$museum -> id_case = $model -> id_case ;
$museum -> operate_id = Yii :: $app -> user -> getId ();
$museum -> save ();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกลงเข้าพิพิธภัณฑ์เรียบร้อยแล้ว' );
return $this -> redirect ([ 'museum-add' , 'id_case' => $model -> id_case ]);
} else {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่มี Case นี้ในระบบ' );
return $this -> redirect ([ 'museum' ]);
}
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาดกรุณาติดต่อผู้ดูแลระบบ' );
return $this -> redirect ([ 'museum' ]);
}
}
return $this -> render ( 'museum' , [
'modelSearch' => $modelSearch ,
'dataProvider' => $dataProvider ,
'model' => $model ,
]);
}
/*
* ทำการแก้ไขข้อมูลการนำเข้าพิพิธภัณฑ์
*/
public function actionMuseumAdd ( $id_case )
{
$model = SurgicalMuseum :: findOne ([ 'id_case' => $id_case ]);
if ( $model -> load ( Yii :: $app -> request -> post ())) {
$transaction = Yii :: $app -> db -> beginTransaction ();
try {
$model -> save ();
$transaction -> commit ();
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'museum-add' , 'id_case' => $model -> id_case ]);
} catch ( Exception $e ) {
$transaction -> rollBack ();
Yii :: $app -> session -> setFlash ( 'error' , 'มีข้อผิดพลาดกรุณาติดต่อผู้ดูแลระบบ' );
return $this -> redirect ([ 'museum' ]);
}
}
return $this -> render ( 'museum-add' , [
'model' => $model ,
]);
}
public function actionAdd ()
{
$dataProvider = new ActiveDataProvider ([
'query' => SurgicalAdd :: find (),
'sort' => [
'defaultOrder' => [
'id_case' => SORT_DESC ,
]
]
]);
if ( Yii :: $app -> request -> post ()) {
$comment = Yii :: $app -> request -> post ( 'comment' );
$add_id = Yii :: $app -> request -> post ( 'add_id' );
try {
foreach ( $comment as $key => $val ) {
$surgical_case_add = SurgicalAdd :: findOne ( $key );
$surgical_case_add -> comment = $val ;
$surgical_case_add -> save ();
}
foreach ( $add_id as $key => $val ) {
//echo $val;
//echo $key;
$surgical_case_add = SurgicalAdd :: findOne ( $key );
$surgical_case_add -> add_id = empty ( $val ) ? 1 : $val ;
$surgical_case_add -> add_id = empty ( $val ) ? 1 : $val ;
$surgical_case_add -> save ();
}
Yii :: $app -> session -> setFlash ( 'success' , 'บันทึกข้อมูลเรียบร้อยแล้ว' );
return $this -> redirect ([ 'add' ]);
} catch ( Exception $e ) {
Yii :: $app -> session -> setFlash ( 'error' , 'ไม่สามารถบันทึกข้อมูลได้' );
return $this -> redirect ([ 'add' ]);
}
//VarDumper::dump($is_postpone);
//VarDumper::dump($choose_id);
//VarDumper::dump($discard_id);
//die();
}
return $this -> render ( 'add' , [
'dataProvider' => $dataProvider ,
]);
}
public function actionGross ()
{
return $this -> render ( 'gross' );
}
/*
* Delete Staining Test
*/
public function actionFinanceServiceChargeDelete ()
{
$p = Yii :: $app -> request -> post ();
$finance = FinanceServiceCharge :: findOne ([ 'id_case' => $p [ 'id_case' ], 'id' => $p [ 'from_id' ]]);
$surgical = SurgicalOperate :: findOne ([ 'id_case' => $p [ 'id_case' ], 'charge_user_id' => Yii :: $app -> user -> getId ()]);
if ( ! $finance ) { // || !$surgical
echo 'error' ;
} else {
$finance -> delete ();
echo 'success' ;
}
}
public function actionSetDecal ( $id_case )
{
$surgical = SurgicalOperate :: findOne ([ 'id_case' => $id_case ]);
}
public function actionDeleteGrossImg ( $img , $id_case )
{
//$case_find = CaseSurgical::findOne(['id_case' => $id_case]);
if ( @ FileHelper :: unlink ( Yii :: getAlias ( '@webroot' ) . '/uploads/surgical/gross/' . $id_case . '/' . $img )) {
@ unlink ( Yii :: getAlias ( '@webroot' ) . '/uploads/surgical/gross/' . $id_case . '/' . $img );
Yii :: $app -> session -> setFlash ( 'success' , 'ลบไฟล์เรียบร้อย' );
}
return $this -> redirect ([ 'new' , 'CaseSearch[id_case]' => $id_case ]);
}
public function actionSurgicalContainerDelete ()
{
Yii :: $app -> response -> format = \yii\web\Response :: FORMAT_JSON ;
$s = Yii :: $app -> request -> post ();
$surgical_container = SurgicalContainer :: findOne ([ 'id_case' => $s [ 'id_case' ], 'id' => $s [ 'id' ]]);
if ( ! $surgical_container ) {
return [
'status' => 'error' ,
'message' => 'Surgical container not found' ,
];
}
if ( $surgical_container -> delete ()) {
return [
'status' => 'success' ,
'message' => 'Surgical container deleted successfully' ,
];
} else {
return [
'status' => 'error' ,
'message' => 'Failed to delete surgical container' ,
];
}
}
public function actionSurgicalBoneDelete ()
{
Yii :: $app -> response -> format = \yii\web\Response :: FORMAT_JSON ;
$s = Yii :: $app -> request -> post ();
$surgical_bone = SurgicalBone :: findOne ([ 'id_case' => $s [ 'id_case' ], 'id' => $s [ 'id' ]]);
if ( ! $surgical_bone ) {
return [
'status' => 'error' ,
'message' => 'Surgical bone not found' ,
];
}
if ( $surgical_bone -> delete ()) {
return [
'status' => 'success' ,
'message' => 'Surgical bone deleted successfully' ,
];
} else {
return [
'status' => 'error' ,
'message' => 'Failed to delete surgical bone' ,
];
}
}
public function actionDecalBlock ()
{
$searchModel = new SurgicalBoneSearch ();
$dataProvider = $searchModel -> search ( Yii :: $app -> request -> queryParams );
$dataProvider -> sort = [
'defaultOrder' => [
'date_start' => SORT_ASC
]
];
$dataProvider -> pagination = [
'pageSize' => 50
];
return $this -> render ( 'decal-block' , [
'searchModel' => $searchModel ,
'dataProvider' => $dataProvider ,
]);
}
/**
* @ return string | \yii\web\Response
*/
public function actionBlock ( $id_case )
{
$model = CaseSurgical :: 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 [ 'CaseSurgical' ][ 'slides' ])) {
foreach ( $items [ 'CaseSurgical' ][ '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' ];
2025-03-22 10:12:00 +00:00
$slide -> re_process = $val [ 're_process' ];
2025-03-27 03:34:36 +00:00
$slide -> remark = $val [ 'remark' ];
2024-12-25 03:04:59 +00:00
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' ]);
2025-03-22 10:12:00 +00:00
Yii :: $app -> session -> setFlash ( 'error' , 'เกิดข้อผิดพลาดในการบันทึกข้อมูล: ' . $e -> getMessage ());
return $this -> redirect ([ 'block' , 'id_case' => $model -> id_case ]);
2024-12-25 03:04:59 +00:00
}
}
return $this -> render ( 'block' , [
'model' => $model ,
]);
}
/**
* @ throws \Throwable
* @ throws \yii\db\StaleObjectException
*/
public function actionSurgicalSlideDelete ()
{
$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' ;
}
}
2025-03-22 10:12:00 +00:00
}