You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
9.7 KiB
PHP
211 lines
9.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API\Admin\YeWu;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class SignInController extends Controller
|
|
{
|
|
//签到
|
|
public function SignIn(Request $request)
|
|
{
|
|
$userid = $request->get('userid');//中间件产生的参数
|
|
date_default_timezone_set('PRC');
|
|
$MainListIds = request('MainListIds');
|
|
if(empty($MainListIds)) return \Yz::echoError1('id参数不能为空');
|
|
$mainInfos=DB::table('s_list as a')
|
|
->select('a.*','b.period_begin_time','b.period_end_time')
|
|
->leftJoin('s_period as b','a.reservation_time','=','b.id')
|
|
->whereIn('a.id',$MainListIds)->where(['a.is_del'=>0])->get();
|
|
//遍历判断所有要预约的医嘱是否符合条件
|
|
foreach ($mainInfos as $key=>$mainInfo){
|
|
//判断状态
|
|
if($mainInfo->list_status<>1) return \Yz::echoError1($mainInfo->entrust.' 不是预约状态,不可签到');
|
|
if($mainInfo->patient_type<>0 and $mainInfo->is_pay<>1) return \Yz::echoError1($mainInfo->entrust.' 未支付,不可签到');
|
|
if($mainInfo->is_nullify<>0) return \Yz::echoError1($mainInfo->entrust.' 已作废,不可签到');
|
|
//判断时间,当前判断只要是当天就可签到
|
|
$now=date('Y-m-d');
|
|
//判断是否过期
|
|
if($mainInfo->reservation_date<$now) return \Yz::echoError1($mainInfo->entrust.' 预约已过期');
|
|
//判断是否是预约的时间
|
|
if($mainInfo->reservation_date<>$now) return \Yz::echoError1($mainInfo->entrust.' 未到预约时间,请于'.$mainInfo->reservation_date.'签到');
|
|
//获取检查项目类名
|
|
$type=DB::table('s_check_item as a')
|
|
->select('a.*','b.item_class_name')
|
|
->leftJoin('s_check_item_class as b','a.item_class_id','=','b.id')
|
|
->where(['a.item_code'=>$mainInfo->entrust_code])->first();
|
|
if(!$type) return \Yz::echoError1($mainInfo->entrust.' 获取分类失败,不可签到');
|
|
$mainInfo->entrust_type=$type->item_class_name;
|
|
//获取预约的检查室
|
|
$checkroom=DB::table('s_department_resources')->where(['id'=>$mainInfo->reservation_sources])->first();
|
|
if(!$checkroom) return \Yz::echoError1($mainInfo->entrust.' 未获取到检查室信息,不可签到');
|
|
$mainInfo->reservation_sources_name=$checkroom->department_resources_name;
|
|
}
|
|
//如果以上都通过,调用盈谷接口进行签到
|
|
$success_item=[];
|
|
$fail_item=[];
|
|
foreach ($mainInfos as $key=>$mainInfo){
|
|
if($mainInfo->patient_type==2){
|
|
$mainInfo->patient_type=3;
|
|
}elseif ($mainInfo->patient_type==3){
|
|
$mainInfo->patient_type=2;
|
|
}
|
|
$p=[];
|
|
$checkroom=$mainInfo->reservation_sources_name;
|
|
if($mainInfo->RISRAcceptDeptCode=='FY2003.00'){//超声科
|
|
|
|
$checkroom_array = explode("_", $checkroom);
|
|
if(count($checkroom_array)!=2) {
|
|
$fail_item[]=$mainInfo->entrust.' 签到失败:未正确关联学组,学组名称:'.$checkroom;
|
|
continue;
|
|
}
|
|
$p=[
|
|
'isStudyGroupRegistration'=>'Y',
|
|
'studyGroupName'=>$checkroom_array[0],
|
|
'studyGroupCode'=>$checkroom_array[1],
|
|
];
|
|
}
|
|
if($mainInfo->RISRAcceptDeptCode=='FY2004.00'){//放射科
|
|
$p=[
|
|
'videoRoomName'=>$checkroom,
|
|
];
|
|
}
|
|
$data=[
|
|
'hisId'=>$mainInfo->reg_num,
|
|
'yizhuId'=>$mainInfo->entrust_id,
|
|
'isAppt'=>'Y',
|
|
'appointmentTime'=>$mainInfo->reservation_date.' '.$mainInfo->period_begin_time,
|
|
'enrolDoctorName'=>'医技预约',
|
|
'enrolDoctorCode'=>'FYYJYY',
|
|
'admIdIss'=>$mainInfo->patient_type,
|
|
'patientName'=>$mainInfo->user_name,
|
|
'accessionNo'=>$mainInfo->app_num,
|
|
'modalityName'=> $mainInfo->entrust_type,
|
|
'hospitalId'=>1
|
|
];
|
|
$data= array_merge($data,$p);
|
|
$yg_signin= self::YG_SignIn('?CfgItem=JH1738预约签到',$data);
|
|
if($yg_signin['status']==true){
|
|
//盈谷返回成功,更新本地状态
|
|
$u=DB::table('s_list')->where(['id'=>$mainInfo->id])->update([
|
|
'list_status'=>2,
|
|
'check_num'=>$yg_signin['data'][0]['checkNo']
|
|
]);
|
|
if($u){
|
|
$success_item[]=['entrust'=>$mainInfo->entrust,'signInData'=>$yg_signin['data']];
|
|
//记录日志
|
|
$data = [
|
|
'list_id' => $mainInfo->id,
|
|
'reg_num' => $mainInfo->reg_num,
|
|
'new_status' => 2,
|
|
'create_user' => $userid,
|
|
'note' => '登记',
|
|
'data' => null,//原始数据
|
|
];
|
|
$insertLog = DB::table('s_list_log')->insert($data);
|
|
}else{
|
|
$fail_item[]=$mainInfo->entrust.' 签到失败:记录未更新';
|
|
// return \Yz::echoError1($mainInfo->entrust.' 签到失败:记录未更新');
|
|
}
|
|
|
|
}else{
|
|
$fail_item[]=$mainInfo->entrust.' 调用检查系统签到接口失败:'.$yg_signin['msg'];
|
|
// return \Yz::echoError1($mainInfo->entrust.' 调用检查系统签到接口失败:'.$yg_signin['msg']);
|
|
}
|
|
}
|
|
|
|
return \Yz::Return(true,'操作完成',['success'=>$success_item,'fail'=>$fail_item]);
|
|
|
|
|
|
}
|
|
//盈谷签到
|
|
public function YG_SignIn($url,$data)
|
|
{
|
|
$baseUrl=config('app.globals.YingGuBaseUrl');
|
|
$data=json_encode($data,JSON_UNESCAPED_UNICODE);
|
|
$r=\Tools::PostSoap($baseUrl.$url,$data,'盈谷签到');
|
|
if (!json_decode($r, true)) {
|
|
return ['status'=>false,'msg'=>"解析'删除签到接口'数据出错:".$r];
|
|
}
|
|
$res = json_decode($r, true);
|
|
if($res['isSuccess']==true){
|
|
return ['status'=>true,'msg'=>$res['resultMsg'],'data'=>$res['resultDatas']];
|
|
}else{
|
|
return ['status'=>false,'msg'=>$res['resultMsg']];
|
|
}
|
|
}
|
|
|
|
//取消签到
|
|
public function CancelSign(Request $request)
|
|
{
|
|
$userid = $request->get('userid');//中间件产生的参数
|
|
date_default_timezone_set('PRC');
|
|
$MainListIds = request('MainListIds');
|
|
if(empty($MainListIds)) return \Yz::echoError1('id参数不能为空');
|
|
$mainInfos=DB::table('s_list as a')
|
|
->select('a.*','b.period_begin_time','b.period_end_time')
|
|
->leftJoin('s_period as b','a.reservation_time','=','b.id')
|
|
->whereIn('a.id',$MainListIds)->where(['a.is_del'=>0])->get();
|
|
//遍历判断所有要预约的医嘱是否符合条件
|
|
foreach ($mainInfos as $key=>$mainInfo) {
|
|
//判断状态
|
|
if ($mainInfo->list_status <> 2) return \Yz::echoError1($mainInfo->entrust . ' 不是 已签到 状态,不可取消签到');
|
|
if ($mainInfo->is_nullify <> 0) return \Yz::echoError1($mainInfo->entrust . ' 已作废,不可取消签到');
|
|
}
|
|
//如果以上都通过,调用盈谷接口进行取消签到
|
|
$success_item=[];
|
|
$fail_item=[];
|
|
foreach ($mainInfos as $key=>$mainInfo) {
|
|
$data=[
|
|
'checkNo'=>$mainInfo->check_num,
|
|
'hisId '=>$mainInfo->reg_num,
|
|
'hospitalId'=>1
|
|
];
|
|
$yg_cancelsign= self::YG_CancelSign('?CfgItem=JH1739取消预约签到',$data);
|
|
if($yg_cancelsign['status']==true){
|
|
//盈谷返回成功,更新本地状态
|
|
$u=DB::table('s_list')->where(['id'=>$mainInfo->id])->update([
|
|
'list_status'=>1
|
|
]);
|
|
if($u){
|
|
$success_item[]=$mainInfo->entrust;
|
|
//记录日志
|
|
$data = [
|
|
'list_id' => $mainInfo->id,
|
|
'reg_num' => $mainInfo->reg_num,
|
|
'new_status' => 1,
|
|
'create_user' => $userid,
|
|
'note' => '取消登记',
|
|
'data' => null,//原始数据
|
|
];
|
|
$insertLog = DB::table('s_list_log')->insert($data);
|
|
}else{
|
|
$fail_item[]=$mainInfo->entrust.' 取消签到失败:记录未更新';
|
|
}
|
|
}else{
|
|
$fail_item[]=$mainInfo->entrust.' 调用检查系统删除签到接口失败:'.$yg_cancelsign['msg'];
|
|
}
|
|
}
|
|
return \Yz::Return(true,'操作完成',['success'=>$success_item,'fail'=>$fail_item]);
|
|
}
|
|
//调用盈谷取消接口
|
|
public function YG_CancelSign($url,$data)
|
|
{
|
|
$baseUrl=config('app.globals.YingGuBaseUrl');
|
|
$data=json_encode($data,JSON_UNESCAPED_UNICODE);
|
|
$r=\Tools::PostSoap($baseUrl.$url,$data,'盈谷删除签到');
|
|
|
|
if (!json_decode($r, true)) {
|
|
return ['status'=>false,'msg'=>"解析'删除签到接口'数据出错:".$r];
|
|
}
|
|
$res = json_decode($r, true);
|
|
if($res['isSuccess']==true){
|
|
return ['status'=>true,''];
|
|
}else{
|
|
return ['status'=>false,'msg'=>$res['resultMsg']];
|
|
}
|
|
}
|
|
}
|