From 440fdcef714167f7dca63457d90ebdddcc89caec Mon Sep 17 00:00:00 2001 From: yanzai Date: Tue, 23 Jul 2024 20:40:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E5=8C=BB=E5=98=B1?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E5=92=8C?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=AE=8C=E6=88=90=E9=80=9A=E7=9F=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Third/EntrustController.php | 38 ++++-- .../app/Services/Xml/ShenQingDanService.php | 128 +++++++++++++++++- 2 files changed, 151 insertions(+), 15 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/Third/EntrustController.php b/Laravel/app/Http/Controllers/API/Third/EntrustController.php index dfda3db..661136c 100644 --- a/Laravel/app/Http/Controllers/API/Third/EntrustController.php +++ b/Laravel/app/Http/Controllers/API/Third/EntrustController.php @@ -77,20 +77,30 @@ class EntrustController extends Controller public function CreateRecordXml(Request $request) { $xmlString = $request->getContent(); // 获取请求的原始内容(XML) - // try { - $res = explode('', $xmlString)[1]; - $res = explode('', $res)[0]; - $xmlData = simplexml_load_string($res); - $jsonData = json_encode($xmlData,JSON_UNESCAPED_UNICODE); - $result = json_decode($jsonData, true); - //如果是推送的检查申请单 - if($result['action']=='T0002'){ - $service = new ShenQingDanService(); - return $service->Save($result,$jsonData); - } - // }catch (\Exception $e){ - // return \Yz::XMLReturn('SYS001', '269624', -1, '处理失败,接收数据不符合预期结构 '.$e->getMessage()); - // } + // try { + $res = explode('', $xmlString)[1]; + $res = explode('', $res)[0]; + $xmlData = simplexml_load_string($res); + $jsonData = json_encode($xmlData, JSON_UNESCAPED_UNICODE); + $result = json_decode($jsonData, true); + //如果是推送的检查申请单 + if ($result['action'] == 'T0002') { + $service = new ShenQingDanService(); + return $service->Save($result, $jsonData); + } + //如果是推送的检查申请单状态变更 + if ($result['action'] == 'T0003') { + $service = new ShenQingDanService(); + return $service->UpdateStatus($result, $jsonData); + } + //如果是 推送检查完成 + if ($result['action'] == 'MES0006') { + $service = new ShenQingDanService(); + return $service->CheckFinish($result, $jsonData); + } + // }catch (\Exception $e){ + // return \Yz::XMLReturn('SYS001', '269624', -1, '处理失败,接收数据不符合预期结构 '.$e->getMessage()); + // } } diff --git a/Laravel/app/Services/Xml/ShenQingDanService.php b/Laravel/app/Services/Xml/ShenQingDanService.php index 8bd5665..c589b83 100644 --- a/Laravel/app/Services/Xml/ShenQingDanService.php +++ b/Laravel/app/Services/Xml/ShenQingDanService.php @@ -3,11 +3,13 @@ namespace App\Services\Xml; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class ShenQingDanService { public function Save($result, $jsonData) { + date_default_timezone_set('PRC'); $Body = $result['message']['Request']["Body"]; $Header = $result['message']['Request']["Header"]; $orderList = isset($Body['AddRisAppBillRt']['OrderList']) ? $Body['AddRisAppBillRt']['OrderList'] : []; @@ -52,7 +54,7 @@ class ShenQingDanService $requiredFields = [ 'reg_num', 'user_name', 'user_sex', 'entrust', 'is_pay', 'reservation_department', 'entrust_date', 'entrust_time', - 'user_brithday', 'docotr', 'patient_type', + 'user_brithday', 'patient_type', 'implement_department', 'entrust_id', 'episodeid', 'RISRAcceptDeptCode' ]; @@ -98,6 +100,130 @@ class ShenQingDanService } } + //更新申请单状态 P缴费 D、U、C作废 + public function UpdateStatus($result, $jsonData) + { + date_default_timezone_set('PRC'); + $Body = $result['message']['Request']["Body"]; + $Header = $result['message']['Request']["Header"]; + $orderList = isset($Body['UpdateOrdersRt']['OEORIInfoList']['OEORIInfo']) ? $Body['UpdateOrdersRt']['OEORIInfoList']['OEORIInfo'] : []; + + if (!empty($orderList) && !isset($orderList[0])) { + // 如果OrderList当前不是数组的数组,则将其转换为单元素数组 + $orderList = array($orderList); + } + //dd($orderList); + $u_count = 0;//循环的数量 + try { + $msg=''; + DB::beginTransaction(); + $data=[]; + $zuofei=['D','U','C']; + $jiaofei=['P']; + foreach ($orderList as $key => $order) { + $mainInfo=DB::table('s_list')->where(['reg_num'=>$Body['UpdateOrdersRt']['PATPatientID'],'entrust_id'=>$order['OEORIOrderItemID'],'RISRAcceptDeptCode'=>$order['AcceptDeptCode']])->first(); + if(!!$mainInfo){ + if(in_array($order['OEORIStatusCode'],$zuofei)){ //如果是作废 + $data=[ + 'is_nullify'=>1, + 'updated_at'=>date('Y-m-d H:i:s') + ]; + } + if(in_array($order['OEORIStatusCode'],$jiaofei)){ //如果是完成 + $data=[ + 'is_pay'=>1, + 'updated_at'=>date('Y-m-d H:i:s') + ]; + } + $update=DB::table('s_list')->where('id',$mainInfo->id)->update($data); + }else{ + DB::rollBack(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, '更新失败:'.$order['OEORIOrderItemID'].'未找到此医嘱'); + } + + + if($update){ + $u_count++; + }else{ + $msg=$msg.$order['OEORIOrderItemID'].' 无更新;'; + } + + + + } + + if (count($orderList) == $u_count) { + DB::commit(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], 0, '成功'); + } else { + DB::rollBack(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, '更新失败:'.$msg); + } + } catch (\Exception $e) { + DB::rollBack(); + // 处理异常 + Log::error('发生错误: ' . $e->getMessage(), [ + 'exception' => $e + ]); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, $e->getMessage()); + + } + + } + + //检查完成 + public function CheckFinish($result, $jsonData) + { + date_default_timezone_set('PRC'); + $Body = $result['message']['Request']["Body"]; + $Header = $result['message']['Request']["Header"]; + $orderList = isset($Body['RisCompleteRt']['OEORIOrderItemIDList']) ? $Body['RisCompleteRt']['OEORIOrderItemIDList'] : []; + +// if (!empty($orderList) && !isset($orderList[0])) { +// // 如果OrderList当前不是数组的数组,则将其转换为单元素数组 +// $orderList = array($orderList); +// } + + //dd($orderList); + $u_count = 0;//循环的数量 + try { + $msg=''; + DB::beginTransaction(); + foreach ($orderList as $key => $order) { + $mainInfo=DB::table('s_list')->where(['reg_num'=>$Body['RisCompleteRt']['PATPatientID'],'entrust_id'=>$order['OEORIOrderItemID'],'RISRExamID'=>$Body['RisCompleteRt']['RISRExamID']])->first(); + if(!!$mainInfo){ + $data=[ + 'list_status'=>3, + 'updated_at'=>date('Y-m-d H:i:s') + ]; + $update=DB::table('s_list')->where('id',$mainInfo->id)->update($data); + if($update){ + $u_count++; + }else{ + $msg=$msg.$order['OEORIOrderItemID'].' 无更新;'; + } + }else{ + DB::rollBack(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, '更新失败:'.$order['OEORIOrderItemID'].'未找到此医嘱'); + } + } + if (count($orderList) == $u_count) { + DB::commit(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], 0, '成功'); + } else { + DB::rollBack(); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, '更新失败:'.$msg); + } + + } catch (\Exception $e) { + DB::rollBack(); + // 处理异常 + Log::error('发生错误: ' . $e->getMessage(), [ + 'exception' => $e + ]); + return \Yz::XMLReturn($Header['SourceSystem'], $Header['MessageID'], -1, $e->getMessage()); + } + } }