") * @ApiParams (name="param[images]", type="string", sample="", description="影像图片<选填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturnParams (name="is_remote", type="object", sample="{}", description="是否为远程诊断进入") * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'sessionid': 'a17z7a7a8f9g9rh9d89jio', 'is_remote': 1, 'info' : '' } *") **/ public function index(){ try{ log::record('-----请求值-----'); log::record($_REQUEST); log::record('-----请求值-----'); $sessionid = $_REQUEST['sessionid']; if(isset($_REQUEST['is_remote']) && !empty($_REQUEST['is_remote'])){ $is_remote = $_REQUEST['is_remote']; }else{ $is_remote = 0; } $doctor = Cache::get($sessionid); $institution = DB::table('institution')->where('id',$doctor['institution_id'])->field('name,report_subtitle')->find(); $param = $_REQUEST['param']; $id = $param['id']; $info = DB::table('exams')->where('id',$id)->field(['id','ext','study_id','exam_class','exam_status','exam_datetime','exam_sub_class','body_part','accession_num','patient_id','film_type'])->find(); $exam_class = DB::table('constant')->where('id',$info['exam_class'])->field('constant_value')->find(); $info['exam_class'] = $exam_class['constant_value']; $exam_subclass = DB::table('exam_subclass')->where('id',$info['exam_sub_class'])->field('name')->find(); $info['exam_sub_class'] = $exam_subclass['name']; $patient_info = DB::table('patient_infos')->where('id',$info['patient_id'])->field(['id','temp_patient_id','name','phone','sex','age'])->find(); $info['pid'] = $patient_info['temp_patient_id']; $info['name'] = $patient_info['name']; $info['sex'] = $patient_info['sex']; $info['age'] = $patient_info['age']; $info['phone'] = $patient_info['phone']; $info['hospital_name'] = $institution['name']; $info['hospital_title'] = $institution['report_subtitle']; $info['images'] = isset($param['images']) ? $param['images'] : ''; if(isset($param['rid']) && !empty($param['rid'])){ $remote_id = $param['rid']; $report = DB::table('report')->where('exam_id',$id)->where('remote_application_id',$remote_id)->field('qr_code,id,remote_application_id,report_result,report_datetime,report_doctor_id,review_datetime,review_doctor_id,impression,description')->find(); $sta = DB::table('remote_application')->where('id',$remote_id)->field('report_status')->find(); $info['report_status'] = $sta['report_status']; $r_id = $report['remote_application_id']; }else{ // 不存在 本地点击进入 获取本地报告 $report = DB::table('report')->where('exam_id',$id)->where('type',1)->field('qr_code,id,remote_application_id,report_result,report_datetime,report_doctor_id,review_datetime,review_doctor_id,impression,description')->find(); $info['report_status'] = ''; $r_report = DB::table('report')->where('exam_id',$id)->where('type',2)->field('remote_application_id')->find(); $r_id = $r_report['remote_application_id']; } if( $r_id == ''){ $info['remote'] = 1; }else{ $info['remote'] = 2; } $report_doctor = DB::table('doctors')->where('id',$report['report_doctor_id'])->field('realname')->find(); $info['report_doctor'] = $report_doctor['realname']; $info['report_datetime'] = $report['report_datetime']; $review_doctor = DB::table('doctors')->where('id',$report['review_doctor_id'])->field('realname')->find(); $info['review_doctor'] = $review_doctor['realname']; $info['review_datetime'] = $report['review_datetime']; $info['description'] = $report['description']; $info['impression'] = $report['impression']; $info['report_result'] = $report['report_result']; $info['report_id'] = $report['id']; $info['qr_code'] = $report['qr_code']; $cache_key = $doctor['id'].'_'.$report['id']; if(Cache::get($cache_key)){ $cache = Cache::get($cache_key); $info['description'] = isset($cache['description']) ? $cache['description'] : ''; $info['impression'] = isset($cache['impression']) ? $cache['impression'] : ''; $info['report_result'] = isset($cache['r_result']) ?$cache['r_result'] : ''; $info['name'] = isset($cache['name']) ? $cache['name'] : ''; $info['sex'] = isset($cache['sex']) ? $cache['sex'] : ''; $info['age'] = isset($cache['age']) ? $cache['age'] : ''; $info['phone'] = isset($cache['phone']) ? $cache['phone'] : ''; } return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid,'is_remote'=>$is_remote]); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } /** * 上远程申请附件 * * @ApiTitle (上远程申请附件) * @ApiSummary (上远程申请附件) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/upload) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="file", type="string", required=true, description="上传的文件<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'info' : '/upload/20180101/12346asd.jpg' } *") **/ public function upload($files){ // 获取表单上传文件 foreach($files as $file){ // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ return $info->getSaveName(); // 成功上传后 获取上传信息 // 输出 jpg // echo $info-> getExtension(); // 输出 42a79759f284b767dfcb2a0197904287.jpg // echo $info->getFilename(); }else{ // 上传失败获取错误信息 // echo $file->getError(); } } } /** * 报告保存 * * @ApiTitle (报告保存) * @ApiSummary (报告保存) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/write) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="is_remote", type="string", required=true, description="是否为远程列表进入") * @ApiParams (name="param[id]", type="string", sample="", description="exams表id值<必填>") * @ApiParams (name="param[pid]", type="string", sample="", description="患者id值<必填>") * @ApiParams (name="param[name]", type="string", sample="", description="患者姓名<必填>") * @ApiParams (name="param[age]", type="string", sample="", description="患者年龄<必填>") * @ApiParams (name="param[sex]", type="string", sample="", description="患者性别<必填>") * @ApiParams (name="param[impression]", type="string", sample="", description="影响所见<必填>") * @ApiParams (name="param[description]", type="string", sample="", description="意见建议<必填>") * @ApiParams (name="param[film_type]", type="string", sample="", description="胶片<必填>") * @ApiParams (name="param[r_result]", type="string", sample="", description="检查结果<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'sessionid': 'a17z7a7a8f9g9rh9d89jio', 'msg' : '保存成功' } *") **/ public function write(){ try{ $sessionid = $_REQUEST['sessionid']; if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ // 是远程写报告 7 $return = Verify::check_role($sessionid,7); }else{ // 本地写报告权限 2 $return = Verify::check_role($sessionid,2); } if($return != 1){ return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']); } $param = $_REQUEST['param']; if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ //远程 $status = DB::table('remote_application')->where('id',$param['rid'])->field('report_status')->find(); if($status['report_status'] == 12){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被撤回,无法进行保存填写']); }elseif($status['report_status'] > 7 && $status['report_status'] != 13){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被审核,无法再次被保存']); } }else{ //本地 $status = DB::table('exams')->where('id',$param['id'])->field('exam_status')->find(); if($status['exam_status'] > 6 && $status['exam_status'] != 13){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被保存,无法再次被修改']); } } // Verify::wreportCheck($param); $doctor = Cache::get($sessionid); // $remote_app = DB::table('remote_application')->where('exam_id',$param['id'])->field('remote_doctor_id')->find(); // if(!empty($remote_app['remote_doctor_id'])){ // if($remote_app['remote_doctor_id'] != $doctor['id']){ // return json_encode(['status'=>'fail','code'=>'1029','msg'=>'已被指定报告医生,您没有操作权限']); // } // } $this->uuids = new UUIDs(); //初步报告生成 $film_type = isset($param['film_type']) ? $param['film_type'] : ''; // $exam_status = $this->get_exam_status($doctor['id'],7); $patient_info = array(); $patient_info['id'] = isset($param['pid']) ? $param['pid'] : ''; $patient_info['name'] = isset($param['name']) ? $param['name'] : ''; $patient_info['age'] = isset($param['age']) ? $param['age'] : ''; $patient_info['phone'] = isset($param['phone']) ? $param['phone'] : ''; if(isset($param['sex']) && !empty($param['sex'])){ switch($param['sex']){ case '男'; $sex = 'M'; break; case '女'; $sex = 'F'; break; case 'm'; $sex = 'M'; break; case 'f'; $sex = 'F'; break; default : $sex = $param['sex']; } $patient_info['sex'] = $sex; } $patient = DB::table('patient_infos')->where('id',$param['pid'])->update($patient_info); $info = array(); $info['exam_id'] = $param['id']; $info['impression'] = isset($param['impression']) ? $param['impression'] : ''; $info['description'] = isset($param['description']) ? $param['description'] : ''; if(isset($param['r_result']) && $param['r_result'] == 'true'){ $info['report_result'] = 2; }else{ $info['report_result'] = 1; } DB::table('exams')->where('id',$param['id'])->update(['film_type'=>$film_type,'phone'=>isset($param['phone']) ? $param['phone'] : '','exam_report'=>$info['report_result']]); // 报告的id $report_id = $param['report_id']; if(isset($_REQUEST['is_remote']) && !empty($_REQUEST['is_remote'])){ // 远程保存 DB::table('remote_application')->where('id',$param['rid'])->update(['report_status'=>'7']); $info['type'] = 2; }else{ //本地保存 DB::table('exams')->where('id',$param['id'])->update(['exam_status'=>'7']); $info['type'] = 1; } $info['report_datetime'] = date('Y-m-d H:i:s',time()); $info['report_doctor_id'] = $doctor['id']; $info['remote_application_id'] = $param['rid']; if($report_id){ $report_info = DB::table('report')->where('id',$report_id)->find(); $report = DB::table('report')->where('id',$report_id)->update($info); $id = $report_info['id']; $cache_key = $doctor['id'].'_'.$report_id; $rid = $report_id; } else { $id = $this->uuids->uuid16(); $info['id'] = $id; $info['createdAt'] = date('Y-m-d H:i:s',time()); $report = DB::table('report')->insert($info); $cache_key = $doctor['id'].'_'.$id; $rid = $id; } if(Cache::get($cache_key)){ Cache::rm($cache_key); } //写入log日志 log::record('----日志写入----'); $log = array(); $log['id'] = UUIDs::uuid16(); $log['impression'] = isset($param['impression']) ? $param['impression'] : ''; $log['description'] = isset($param['description']) ? $param['description'] : ''; $log['report_id'] = $rid; $log['createdAt'] = date('Y-m-d H:i:s',time()); $log['doctor_id'] = $doctor['id']; $log['type'] = 1; //写报告 log::record($log); $report_log = DB::table('report_record')->insert($log); log::record($report_log); log::record('----日志写入成功----'); $application = DB::table('remote_application')->where('exam_id',$param['id'])->find(); if($application['req_doctor_id'] == 'c44663d6d3c0b535'){ $tel = '18910184804'; $type = '保存报告'; $content = $application['id']; // send_message::sendSms2Self($tel,$type,$content); } $url = 'http://wechat.pacsonline.cn/wx_patient/api/unifyGetWxQrcode?reportId='.$rid; $info = $this->curl_get($url); return json_encode(['status'=>'ok','code'=>'0000','msg'=>'保存成功','sessionid'=>$sessionid]); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } public function get_exam_status($doctorid,$status){ $doctor_class = DB::table('doctor_class')->where('doctor_id',$doctorid)->field('doctor_class')->find(); if(strpos($doctor_class['doctor_class'],'9')){ return 9; }elseif(strpos($doctor_class['doctor_class'],'8')){ return 8; }else{ return $status; } } /** * 公有模板列表 * * @ApiTitle (公有模板列表) * @ApiSummary (公有模板列表) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/public_template) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="exam_class", type="string", required=true, description="检查类id") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data=" { 'info' : '' } *") **/ public function public_template(){ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $exam = $_REQUEST['exam_class']; //第一级 公共模板 $info = $this->get_template(1,$doctor['id'],$exam); return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]); } /** * 私有模板列表 * * @ApiTitle (私有模板列表) * @ApiSummary (私有模板列表) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/private_template) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="exam_class", type="string", required=true, description="检查类id") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data=" { 'info' : '' } *") **/ public function private_template(){ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $exam = $_REQUEST['exam_class']; //私有模板 $info = $this->get_template(2,$doctor['id'],$exam); return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]); } public function get_template($public,$id,$exam){ // 查询exam_class表 $examCla = DB::table('constant')->where('id',$exam)->field('constant_value as name')->find(); if($public == 1){ $t = DB::table('templates')->where('is_public',$public)->where('exam_class_id',$examCla['name'])->field(['id','title as label','impression','description','parent_id'])->select(); }else{ // 私有模板 添加创建人条件 $t = DB::table('templates')->where('is_public',$public)->where('create_user',$id)->where('exam_class_id',$examCla['name'])->field(['id','title as label','impression','description','parent_id'])->select(); } if(!$t){ return ''; } $data = array(); foreach ($t as $k => $v) { if($v['parent_id'] == '0'){ $data[] = $v; } } foreach ($data as $k => $v) { unset($data[$k]['impression']); unset($data[$k]['description']); unset($data[$k]['parent_id']); } foreach ($t as $k => $v) { foreach ($data as $key => $value) { if($v['parent_id'] == $value['id']){ unset($t[$k]['parent_id']); $data[$key]['children'][] = $t[$k]; } } } if($data){ return $data; } } /** * 确认报告 * * @ApiTitle (确认报告) * @ApiSummary (确认报告) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/confirm) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="id", type="string", sample="", description="exams表id值<必填>") * @ApiParams (name="film_type", type="string", sample="", description="胶片类型<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'msg': '已确认', } *") **/ public function confirm(){ try{ $is_remote = $_REQUEST['is_remote']; if($is_remote == 1){ return json_encode(['status'=>'fail','code'=>'1133','msg'=>'远程无法确诊报告']); } $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $param = $_REQUEST['param']; $id = $param['id']; $report_id = $param['report_id']; $report_info = DB::table('report')->where('id',$report_id)->find(); if($report_info['type'] == 1){ //本地报告 $status = DB::table('exams')->where('id',$id)->field('exam_status')->find(); if($status['exam_status'] < 8 ){ return json_encode(['status'=>'fail','code'=>'1033','msg'=>'只能确认通过审核的报告']); }elseif($status['exam_status'] == 9){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'已经确认过该报告,不可再次确认']); } }else{ //远程 $status = DB::table('remote_application')->where('id',$report_info['remote_application_id'])->field('remote_doctor_id,report_status')->find(); if($status['report_status'] < 8 ){ return json_encode(['status'=>'fail','code'=>'1033','msg'=>'只能确认通过审核的报告']); }elseif($status['report_status'] == 9){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'已经确认过该报告,不可再次确认']); } } $rinfo = array(); if(isset($param['r_result']) && $param['r_result'] == 'true'){ $rinfo['report_result'] = 2; }else{ $rinfo['report_result'] = 1; } $rinfo['confirm_datetime'] = date('Y-m-d H:i:s',time()); $rinfo['confirm_doctor_id'] = $doctor['id']; if($report_info['type'] == 1){ //本地报告确认 DB::table('exams')->where('id',$id)->update(['exam_status'=>'9']); }else{ Message::read($doctor['id'],$report_info['remote_application_id'],4); //远程确认 DB::table('remote_application')->where('id',$report_info['remote_application_id'])->update(['report_status'=>'9']); // 添加messages消息 $t = '您的报告已确认'; $institution = DB::table('institution')->where('id',$doctor['institution_id'])->field('name')->find(); $c = '您的远程诊断申请报告,已被'.$institution['name'].$doctor['realname'].'医师确认'; $d = $status['remote_doctor_id']; $type = '6'; $url = ''; Message::insert($t,$c,$d,$type,$url,1,$report_info['remote_application_id']); } DB::table('exams')->where('id',$id)->update(['film_type'=>$_REQUEST['param']['film_type']]); DB::table('report')->where('id',$report_id)->update($rinfo); $cache_key = $doctor['id'].'_'.$report_info['id']; if(Cache::get($cache_key)){ Cache::rm($cache_key); } // 添加 确认log日志 $info = array(); $info['id'] = UUIDs::uuid16(); $info['createdAt'] = date('Y-m-d H:i:s',time()); $info['doctor_id'] = $doctor['id']; $info['type'] = 3; $info['report_id'] = $report_id; DB::table('report_record')->insert($info); return json_encode(['status'=>'ok','code'=>'0000','msg'=>'已确认']); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } /** * 审核报告 * * @ApiTitle (审核报告) * @ApiSummary (审核报告) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/examine) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="is_remote", type="string", required=true, description="是否为远程列表进入") * @ApiParams (name="id", type="string", sample="", description="exams表id值<必填>") * @ApiParams (name="param[impression]", type="string", sample="", description="检查所见<必填>") * @ApiParams (name="param[description]", type="string", sample="", description="意见建议<必填>") * @ApiParams (name="param[r_result]", type="string", sample="", description="检查结果<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'msg': '已审核', } *") **/ public function examine(){ try{ $id = $_REQUEST['id']; $param = $_REQUEST['param']; $report_id = $param['report_id']; $report = DB::table('report')->where('id',$report_id)->find(); $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ // 是远程审核报告 8 $return = Verify::check_role($sessionid,8); $status = DB::table('remote_application')->where('id',$report['remote_application_id'])->field('req_doctor_id,report_status')->find(); if($status['report_status'] < 7){ return json_encode(['status'=>'fail','code'=>'1032','msg'=>'只能审核已提交的报告']); }elseif($status['report_status']>8){ return json_encode(['status'=>'fail','code'=>'1035','msg'=>'报告已被下级医院所确认,无法进行审核']); }elseif($status['report_status'] == 8){ if($report['review_doctor_id'] != $doctor['id']){ return json_encode(['status'=>'fail','code'=>'1039','msg'=>'审核人不一致']); } } DB::table('remote_application')->where('id',$report['remote_application_id'])->update(['report_status'=>'8']); }else{ // 本地审核权限 3 $return = Verify::check_role($sessionid,3); $status = DB::table('exams')->where('id',$id)->field('exam_status')->find(); if($status['exam_status'] < 7){ return json_encode(['status'=>'fail','code'=>'1032','msg'=>'只能审核已提交的报告']); }elseif($status['exam_status']>7){ return json_encode(['status'=>'fail','code'=>'1035','msg'=>'报告已通过审核步骤,请勿重复操作']); } DB::table('exams')->where('id',$id)->update(['exam_status'=>'8']); } $report_info = array(); $report_info['impression'] = isset($param['impression']) ? $param['impression'] : ''; $report_info['description'] = isset($param['description']) ? $param['description'] : ''; if(isset($param['r_result']) && $param['r_result'] == 'true'){ $report_info['report_result'] = 2; }else{ $report_info['report_result'] = 1; } $report_info['review_datetime'] = date('Y-m-d H:i:s',time()); $report_info['review_doctor_id'] = $doctor['id']; DB::table('report')->where('id',$report['id'])->update($report_info); $cache_key = $doctor['id'].'_'.$report['id']; if(Cache::get($cache_key)){ Cache::rm($cache_key); } $info = array(); $info['id'] = UUIDs::uuid16(); $info['type'] = 2; //审核 $info['createdAt'] = date('Y-m-d H:i:s',time()); $info['doctor_id'] = $doctor['id']; $info['impression'] = isset($param['impression']) ? $param['impression'] : ''; $info['description'] = isset($param['description']) ? $param['description'] : ''; $info['report_id'] = $report['id']; DB::table('report_record')->insert($info); DB::table('exams')->where('id',$id)->update(['film_type'=>$param['film_type']]); // 已审核 发送短信 $application = DB::table('remote_application')->where('exam_id',$id)->find(); $dinfo = DB::table('doctors')->where('id',$application['req_doctor_id'])->find(); $d_phone = $dinfo['phone']; log::record('发短信的手机号为'.$d_phone); $d_name = $doctor['realname']; if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ if($dinfo['institution_id'] == '22100002' || $dinfo['send_sms'] == 1){ //魏庙下级 $repsone = send_message::sendSms2CompleteReport($d_phone,$d_name); } $tel = '18910184804'; $type = '完成并审核报告'; $content =$application['id']; // send_message::sendSms2Self($tel,$type,$content); } // 添加messages消息 if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ Message::read($doctor['id'],$report['remote_application_id'],3); $t = '您的远程诊断申请已完成'; $institution = DB::table('institution')->where('id',$doctor['institution_id'])->field('name')->find(); $c = '您的远程诊断申请,已由被'.$institution['name'].$doctor['realname'].'医师完成报告'; $d = $status['req_doctor_id']; $type = '5'; $exam_class = DB::table('exams')->where('id',$id)->field('exam_class')->find(); $url = Message::url($sessionid,$id,0,$exam_class['exam_class'],$report_id,$report['remote_application_id']); Message::insert($t,$c,$d,$type,$url,1,$report['remote_application_id']); } $url = 'http://wechat.pacsonline.cn/wx_patient/api/unifyGetWxQrcode?reportId='.$report_id; $info = $this->curl_get($url); return json_encode(['status'=>'ok','code'=>'0000','msg'=>'已审核']); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } public function curl_get($url){ //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //设置头文件的信息作为数据流输出 curl_setopt($curl, CURLOPT_HEADER, 0); //设置获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 重定向 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //执行命令 $data = curl_exec($curl); //关闭URL请求 curl_close($curl); return $data; } /** * 获取报告权限 * * @ApiTitle (获取报告权限) * @ApiSummary (获取报告权限) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/getrole) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="is_remote", type="string", required=true, description="是否为远程列表进入") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'info': '', } *") **/ public function getrole(){ try{ if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ $is_remote = $_REQUEST['is_remote']; } $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $dclass = DB::table('doctor_class')->where('doctor_id',$doctor['id'])->field('doctor_class')->find(); $doctor_class = explode(',',$dclass['doctor_class']); $info = array(); foreach ($doctor_class as $k=>$v) { switch($v){ case 2: //报告医生 if(isset($is_remote)){ //远程报告 break; } $info['bg'] = 1; break; case 7: //远程报告医生 if(!isset($is_remote)){ //远程报告 break; } $info['bg'] = 1; break; case 3: //3审核医生 if(isset($is_remote)){ //远程报告 break; } $info['sh'] = 2; break; case 8: //远程审核医生 if(!isset($is_remote)){ //远程报告 break; } $info['sh'] = 2; break; case 4: //确认医生 $info['qr'] = 3; break; } } return json_encode(['status'=>'ok','code'=>'0000','info'=>$info]); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } /** * 获取报告日志 * * @ApiTitle (获取报告日志) * @ApiSummary (获取报告日志) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/get_report_log) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="id", type="string", required=true, description="exams表id值") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'info': '', } *") **/ public function get_report_log(){ try{ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $id = $_REQUEST['id']; $exam_id = $_REQUEST['exam_id']; if(isset($_REQUEST['is_remote']) && !empty($_REQUEST['is_remote'])){ // 远程 $report = DB::table('report')->where('id',$id)->find(); }else{ // 本地 $report = DB::table('report')->where('exam_id',$exam_id)->where('type',1)->find(); } if(empty($report)){ return json_encode(['status'=>'ok','code'=>'0000','info'=>'','msg'=>'无数据']); } $log = DB::table('report_record')->where('doctor_id',$doctor['id'])->where('report_id',$report['id'])->order('createdAt asc,type asc')->select(); foreach ($log as $k => $v) { $doc = DB::table('doctors')->where('id',$v['doctor_id'])->field('realname')->find(); $log[$k]['doctor_name'] = $doc['realname']; } return json_encode(['status'=>'ok','code'=>'0000','info'=>$log]); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } /** * 打印报告 * * @ApiTitle (打印报告) * @ApiSummary (打印报告) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/print_report) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="id", type="string", required=true, description="exams表id值") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'sessionid': 'a17z7a7a8f9g9rh9d89jio', 'info': '', } *") **/ public function print_report(){ try{ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $id = $_REQUEST['id']; $is_remote = $_REQUEST['is_remote']; $report_id = $_REQUEST['report_id']; $report = DB::table('report')->where('id',$report_id)->field('qr_code,remote_application_id,report_datetime,impression,description,report_doctor_id,review_doctor_id')->find(); $info = array(); // 检查日期 住院号 床号 本地申请科室 本地申请医生 $exam_info = DB::table('exams')->where('id',$id)->field('id,ext,accession_num,exam_datetime,exam_class,hopitalized_no,bed_no,exam_project,patient_id,application_department,application_doctor')->find(); $info['id'] = $exam_info['id']; $info['ext'] = $exam_info['ext']; $info['accession_num'] = $exam_info['accession_num']; if(!empty($exam_info['exam_datetime'])){ $datetime = explode(' ',$exam_info['exam_datetime']); $info['exam_datetime'] = $datetime[0]; }else{ $info['exam_datetime'] = ''; } $info['hopitalized_no'] = $exam_info['hopitalized_no']; $info['bed_no'] = $exam_info['bed_no']; // 检查项目 $project = DB::table('exam_project')->where('id',$exam_info['exam_project'])->field('name')->find(); $info['project'] = $project['name']; //检查类 $exam_class = DB::table('constant')->where('id',$exam_info['exam_class'])->field('constant_value')->find(); $info['exam_class'] = $exam_class['constant_value']; // 病历号 姓名 年龄 性别 $patient_info = DB::table('patient_infos')->where('id',$exam_info['patient_id'])->field('temp_patient_id,name,sex,age')->find(); $remote = DB::table('remote_application')->where('id',$report['remote_application_id'])->field('req_doctor_id')->find(); $info['pnumber'] = $patient_info['temp_patient_id']; $info['name'] = $patient_info['name']; $info['sex'] = $patient_info['sex']; $info['age'] = $patient_info['age']; // 申请医生 $application_name = DB::table('doctors')->where('id',$remote['req_doctor_id'])->field('realname,department_id,autograph,is_use_autograph')->find(); if($is_remote == 1){ $info['application_name'] = $application_name['realname']; // 申请科室 $department = DB::table('department')->where('id',$application_name['department_id'])->field('department_name')->find(); $info['department_name'] = $department['department_name']; }else{ $info['application_name'] = $exam_info['application_doctor']; $info['application_department'] = $exam_info['application_department']; } $info['application_use_autograph'] = $application_name['is_use_autograph']; $info['application_autograph'] = $application_name['autograph']; // 报告时间 影像所见 意见建议 if(!empty($report['report_datetime'])){ $datetime1 = explode(' ',$report['report_datetime']); $info['report_datetime'] = $datetime1[0]; }else{ $info['report_datetime'] = ''; } $info['report_datetime_xa'] = $report['report_datetime']; $info['impression'] = $report['impression']; $info['description'] = $report['description']; $info['qr_code'] = $report['qr_code']; // 报告医生 $report_doctor = DB::table('doctors')->where('id',$report['report_doctor_id'])->field('realname,autograph,is_use_autograph,institution_id')->find(); $info['report_doctor'] = $report_doctor['realname']; $info['report_use_autograph'] = $report_doctor['is_use_autograph']; $info['report_autograph'] = $report_doctor['autograph']; //审核医生 $review_doctor = DB::table('doctors')->where('id',$report['review_doctor_id'])->field('realname,autograph,is_use_autograph')->find(); $info['review_doctor'] = $review_doctor['realname']; $info['review_use_autograph'] = $review_doctor['is_use_autograph']; $info['review_autograph'] = $review_doctor['autograph']; // $hospital = DB::table('institution')->where('id',$doctor['institution_id'])->field('name')->find(); $hospital = DB::table('institution')->where('id',$report_doctor['institution_id'])->field('name')->find(); $info['hospital'] = $hospital['name']; return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]); }catch(\Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } /** * 变更胶片 * * @ApiTitle (变更胶片) * @ApiSummary (变更胶片) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/change_film) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="id", type="string", required=true, description="exams表id值") * @ApiParams (name="film_type", type="string", required=true, description="胶片") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息") * @ApiReturn (data="z { 'status': ok, 'code': '0000', 'info': '', } *") **/ public function change_film(){ $id = $_REQUEST['id']; $film = $_REQUEST['film_type']; DB::table('exams')->where('id',$id)->update(['film_type'=>$film]); return json_encode(['status'=>'ok','info'=>$film,'code'=>'0000']); } /** * 保存草稿 * * @ApiTitle (保存草稿) * @ApiSummary (保存草稿) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/draft) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="param[report_id]", type="string", sample="", description="报告表id值<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'msg': '保存成功', } *") **/ public function draft(){ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $param = $_REQUEST['param']; $report_id = $param['report_id']; $rinfo = DB::table('report')->where('id',$report_id)->find(); if($rinfo['type'] == 2){ //远程报告 $status = DB::table('remote_application')->where('id',$rinfo['remote_application_id'])->find(); if($status['report_status'] ==6 || $status['report_status'] ==7){ $key = $doctor['id'].'_'.$report_id; Cache::set($key,$param); return json_encode(['status'=>'ok','msg'=>'保存成功','code'=>'0000']); }else{ return json_encode(['status'=>'fail','msg'=>'只能为未保存或者未审核的报告填写草稿','code'=>'0110']); } }else { //本地报告 $status = DB::table('exams')->where('id', $rinfo['exam_id'])->find(); if ($status['exam_status'] == 7 || $status['exam_status'] == 3) { $key = $doctor['id'] . '_' . $report_id; Cache::set($key, $param); return json_encode(['status' => 'ok', 'msg' => '保存成功', 'code' => '0000']); } else { return json_encode(['status' => 'fail', 'msg' => '只能为未保存或者未审核的报告填写草稿', 'code' => '0110']); } } } /** * XA类型数据获取 * * @ApiTitle (XA类型数据获取) * @ApiSummary (XA类型数据获取) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/get_rinfo) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="report_id", type="string", required=true, description="报告表id<必填>") * @ApiParams (name="id", type="string", sample="", description="exams表id值<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'msg': '已审核', } *") **/ public function get_rinfo(){ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $id = $_REQUEST['id']; $report_id = $_REQUEST['report_id']; $key = $doctor['id'].'_'.$report_id; if(Cache::get($key)){ $patient = Cache::get($key); }else{ $exam = DB::table('exams')->where('id',$id)->field('accession_num,exam_class,patient_id,ext,hopitalized_no,bed_no')->find(); $patient = DB::table('patient_infos')->where('id',$exam['patient_id'])->field(['id','temp_patient_id','name','phone','sex','age'])->find(); $report_info = DB::table('report')->where('id',$report_id)->field('description')->find(); $patient['ext'] = $exam['ext']; $patient['exam_id'] = $id; $patient['bed_no'] = $exam['bed_no']; $patient['accession_num'] = $exam['accession_num']; $patient['exam_class'] = $exam['exam_class']; $patient['hopitalized_no'] = $exam['hopitalized_no']; $patient['description'] = $report_info['description']; $patient['report_id'] = $report_id; } return json_encode(['status'=>'ok','info'=>$patient,'code'=>'0000']); } /** * XA类型保存 * * @ApiTitle (XA类型保存) * @ApiSummary (XA类型保存) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/write_info) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="is_remote", type="string", required=true, description="是否为远程列表进入") * @ApiParams (name="param[id]", type="string", sample="", description="exams表id值<必填>") * @ApiParams (name="param[name]", type="string", sample="", description="姓名<必填>") * @ApiParams (name="param[sex]", type="string", sample="", description="性别<必填>") * @ApiParams (name="param[age]", type="string", sample="", description="年龄<必填>") * @ApiParams (name="param[hospital_number]", type="string", sample="", description="住院号<必填>") * @ApiParams (name="param[bed_number]", type="string", sample="", description="病床号<必填>") * @ApiParams (name="param[ext]", type="string", sample="", description="其他<必填>") * @ApiParams (name="param[description]", type="string", sample="", description="意见建议<必填>") * @ApiParams (name="param[accession_num]", type="string", sample="", description="检查号<必填>") * @ApiParams (name="param[pid]", type="string", sample="", description="患者id<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'msg': '保存成功', } *") **/ public function write_info(){ $sessionid = $_REQUEST['sessionid']; /*if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ // 是远程写报告 7 $return = Verify::check_role($sessionid,7); }else{ // 本地写报告权限 2 $return = Verify::check_role($sessionid,2); } if($return != 1){ return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']); } $param = $_REQUEST['param']; if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote'] == 1){ //远程 $status = DB::table('remote_application')->where('id',$param['rid'])->field('report_status')->find(); if($status['report_status'] == 12){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被撤回,无法进行保存填写']); }elseif($status['report_status'] > 6){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被保存,无法再次被修改']); } }else{ //本地 $status = DB::table('exams')->where('id',$param['id'])->field('exam_status')->find(); if($status['exam_status'] > 6){ return json_encode(['status'=>'fail','code'=>'1034','msg'=>'报告已被保存,无法再次被修改']); } }*/ $doctor = Cache::get($sessionid); $is_remote = $_REQUEST['is_remote']; $patient_info['name'] = isset($param['name']) ? $param['name'] : ''; $patient_info['sex'] = isset($param['sex']) ? $param['sex'] : ''; $patient_info['age'] = isset($param['age']) ? $param['age'] : ''; $exam_info['hopitalized_no'] = isset($param['hospital_number']) ? $param['hospital_number'] : ''; $exam_info['bed_no'] = isset($param['bed_number']) ? $param['bed_number'] : ''; $exam_info['ext'] = isset($param['ext']) ? $param['ext'] : ''; $exam_info['accession_num'] = isset($param['accession_num']) ? $param['accession_num'] : ''; $report['description'] = isset($param['description']) ? $param['description'] : ''; $report['report_datetime'] = date('Y-m-d H:i:s',time()); $report['report_doctor_id'] = $doctor['id']; DB::table('patient_infos')->where('id',$param['pid'])->update($patient_info); DB::table('exams')->where('id',$param['id'])->update($exam_info); $rinfo = DB::table('report')->where('exam_id',$param['id'])->find(); if($rinfo){ DB::table('report')->where('exam_id',$param['id'])->update($report); $rinfo = DB::table('report')->where('exam_id',$param['id'])->find(); $rid = $rinfo['id']; }else{ $report['id'] = UUIDs::uuid16(); $report['exam_id'] = $param['id']; $report['createdAt'] = date('Y-m-d H:i:s',time()); DB::table('report')->insert($report); $rid = $report['id']; } $log = array(); $log['id'] = UUIDs::uuid16(); $log['impression'] = isset($param['ext']) ? $param['ext'] : ''; $log['description'] = isset($param['description']) ? $param['description'] : ''; $log['report_id'] = $rid; $log['createdAt'] = date('Y-m-d H:i:s',time()); $log['doctor_id'] = $doctor['id']; $log['type'] = 1; //写报告 log::record($log); $report_log = DB::table('report_record')->insert($log); $application = DB::table('remote_application')->where('exam_id',$param['id'])->find(); if($application['req_doctor_id'] == 'c44663d6d3c0b535'){ $tel = '18910184804'; $type = '保存报告'; $content = $application['id']; // send_message::sendSms2Self($tel,$type,$content); } if($is_remote == 1){ DB::table('remote_application')->where('exam_id',$param['id'])->update(['report_status'=>7]); }else{ DB::table('exams')->where('id',$param['id'])->update(['exam_status'=>7]); } $url = 'http://wechat.pacsonline.cn/wx_patient/api/unifyGetWxQrcode?reportId='.$rid; $info = $this->curl_get($url); return json_encode(['status'=>'ok','msg'=>'保存成功','code'=>'0000']); } /** * 获取远程报告列表 * * @ApiTitle (获取远程报告列表) * @ApiSummary (获取远程报告列表) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/writereport/get_report_list) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="param", type="string", required=true, description="参数json字符串") * @ApiParams (name="is_remote", type="string", required=true, description="是否为远程列表进入") * @ApiParams (name="param[id]", type="string", sample="", description="exams表id值<必填>") * @ApiParams (name="param[pid]", type="string", sample="", description="病历号<必填>") * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功")) * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功", description="返回消息") * @ApiReturn (data=" { 'status': ok, 'code': '0000', 'info': '', } *") **/ public function get_report_list(){ $sessionid = $_REQUEST['sessionid']; $doctor = Cache::get($sessionid); $param = $_REQUEST['param']; $rinfo = DB::table('report')->where('exam_id',$param['id'])->where('type','<>',1)->select(); $pinfo = DB::table('patient_infos')->where('temp_patient_id',$param['pid'])->field('name,temp_patient_id,sex,age,phone')->find(); $einfo = DB::table('exams')->where('id',$param['id'])->field('exam_class,exam_sub_class,exam_datetime')->find(); $info = array(); $arr = array(); foreach ($rinfo as $k => $v) { $remote_info = DB::table('remote_application')->where('id',$v['remote_application_id'])->find(); Message::read($doctor['id'],$remote_info['id'],4); if($remote_info['report_status'] == 8 || $remote_info['report_status'] == 9){ $arr = $v; $remote_did = DB::table('doctors')->where('id',$v['report_doctor_id'])->field('realname')->find(); $arr['report_doctor'] = $remote_did['realname']; $review_did = DB::table('doctors')->where('id',$v['review_doctor_id'])->field('realname')->find(); $arr['review_doctor'] = $review_did['realname']; $arr['name'] = $pinfo['name']; $arr['pid'] = $pinfo['temp_patient_id']; $arr['sex'] = $pinfo['sex']; $arr['age'] = $pinfo['age']; $arr['phone'] = $pinfo['phone']; $arr['exam_class'] = $einfo['exam_class']; $arr['exam_sub_class'] = $einfo['exam_sub_class']; $arr['exam_datetime'] = $einfo['exam_datetime']; $arr['report_status'] = $remote_info['report_status']; $arr['hospital_name'] = DB::table('institution')->where('id',$remote_info['remote_institution_id'])->value('name'); $info = $arr; }elseif($remote_info['report_status'] == 4){ //申请中 return json_encode(['status'=>'fail','code'=>'0125','msg'=>'申请单正在申请中,暂无医生接收远程报告']); }elseif($remote_info['report_status'] == 5){ // 驳回 return json_encode(['status'=>'fail','code'=>'0125','msg'=>'申请单已被驳回,没有医生完成远程报告']); }elseif($remote_info['report_status'] == 12){ // 撤回 return json_encode(['status'=>'fail','code'=>'0125','msg'=>'申请单正在申请中,暂无医生完成远程报告']); }elseif($remote_info['report_status'] == ''){ // 撤回 return json_encode(['status'=>'fail','code'=>'0126','msg'=>'没有申请单']); }else{ // 其他 return json_encode(['status'=>'fail','code'=>'0125','msg'=>'申请单还没有被完成,请等待']); } } return json_encode(['status'=>'ok','info'=>$info,'code'=>'0000']); } public function reject_examine() { $sessionid = $_REQUEST['sessionid']; //传值报告id $report_id = $_REQUEST['report_id']; $reason = $_REQUEST['reason']; $is_remote = $_REQUEST['is_remote']; $report = DB::table('report')->where('id',$report_id)->field('remote_application_id,exam_id,report_doctor_id')->find(); $exam = DB::table('exams')->where('id',$report['exam_id'])->value('exam_class'); if($is_remote == 1){ //远程 DB::table('remote_application')->where('id',$report['remote_application_id'])->update(['report_status'=>13]); }else{ // 本地 DB::table('exams')->where('id',$report['exam_id'])->update(['exam_status'=>13]); } $url = Message::url($sessionid,$report['exam_id'],0,$exam,$report_id,$report['remote_application_id']); $t = '您的报告在审核步骤已被驳回'; $c = '您保存的报告在审核步骤已被驳回,驳回的原因是:'.$reason.',请您重新更改您的报告'; $d = $report['report_doctor_id']; $type = '8'; Message::insert($t,$c,$d,$type,$url,1,$report['remote_application_id']); return json_encode(['status'=>'ok','msg'=>'审核已驳回','code'=>'0000']); } }