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());
+ }
+ }
}