增加 医嘱状态更新接口和检查完成通知接口

main
yanzai 1 year ago
parent eeac5794a7
commit 440fdcef71

@ -88,6 +88,16 @@ class EntrustController extends Controller
$service = new ShenQingDanService(); $service = new ShenQingDanService();
return $service->Save($result, $jsonData); 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){ // }catch (\Exception $e){
// return \Yz::XMLReturn('SYS001', '269624', -1, '处理失败,接收数据不符合预期结构 '.$e->getMessage()); // return \Yz::XMLReturn('SYS001', '269624', -1, '处理失败,接收数据不符合预期结构 '.$e->getMessage());
// } // }

@ -3,11 +3,13 @@
namespace App\Services\Xml; namespace App\Services\Xml;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class ShenQingDanService class ShenQingDanService
{ {
public function Save($result, $jsonData) public function Save($result, $jsonData)
{ {
date_default_timezone_set('PRC');
$Body = $result['message']['Request']["Body"]; $Body = $result['message']['Request']["Body"];
$Header = $result['message']['Request']["Header"]; $Header = $result['message']['Request']["Header"];
$orderList = isset($Body['AddRisAppBillRt']['OrderList']) ? $Body['AddRisAppBillRt']['OrderList'] : []; $orderList = isset($Body['AddRisAppBillRt']['OrderList']) ? $Body['AddRisAppBillRt']['OrderList'] : [];
@ -52,7 +54,7 @@ class ShenQingDanService
$requiredFields = [ $requiredFields = [
'reg_num', 'user_name', 'user_sex', 'entrust', 'is_pay', 'reg_num', 'user_name', 'user_sex', 'entrust', 'is_pay',
'reservation_department', 'entrust_date', 'entrust_time', 'reservation_department', 'entrust_date', 'entrust_time',
'user_brithday', 'docotr', 'patient_type', 'user_brithday', 'patient_type',
'implement_department', 'entrust_id', 'episodeid', 'RISRAcceptDeptCode' '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());
}
}
} }

Loading…
Cancel
Save