lgy 6 년 전
부모
커밋
5170e90342
3개의 변경된 파일100개의 추가작업 그리고 23개의 파일을 삭제
  1. 34 11
      application/inter/controller/Application.php
  2. 13 4
      application/inter/controller/Report.php
  3. 53 8
      application/inter/controller/Writereport.php

+ 34 - 11
application/inter/controller/Application.php

@@ -27,6 +27,7 @@ class Application extends Base
  * @ApiParams         (name="param",                     type="string",      required=true,      description="参数json字符串")
  * @ApiParams         (name="is_remote",                 type="string",      required=true,      description="参数json字符串")
  * @ApiParams         (name="param[id]",                  type="string",      sample="",          description="预约登记exams表id值<必填>")
+ * @ApiParams         (name="param[rid]",                  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="info",                       type="string",      required=true,      sample="返回成功", description="返回信息")
@@ -38,7 +39,8 @@ class Application extends Base
 'code': '0000',
 'sessionid': 'a17z7a7a8f9g9rh9d89jio',
 'is_remote': 1,
-'info' : ''
+'info' : '',
+'rid' : ''
 }
  *")
  **/
@@ -51,7 +53,7 @@ class Application extends Base
             if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote']==1){
                 $is_remote = 1;
             }
-            $info = DB::table('exams')->where('id',$id)->field('id,study_id,patient_id,register_datetime,exam_class,exam_sub_class,exam_project,device,exam_datetime,exam_status')->find();
+            $info = DB::table('exams')->where('id',$id)->field('id,urgent,study_id,patient_id,register_datetime,exam_class,exam_sub_class,exam_project,device,exam_datetime,exam_status')->find();
             $exam_class = DB::table('constant')->where('id',$info['exam_class'])->field('constant_value')->find();
             $exam_subclass = DB::table('exam_subclass')->where('id',$info['exam_sub_class'])->cache(300)->find();
             $exam_project = DB::table('exam_project')->where('id',$info['exam_project'])->cache(300)->find();
@@ -84,10 +86,10 @@ class Application extends Base
             //申请信息
             if(isset($param['rid']) && !empty($param['rid'])){
                 $rid = $param['rid'];
-                $application = DB::table('remote_application')->where('id',$rid)->field(['report_status,id,remote_doctor_id','application_desc','attachment','req_doctor_id','illness_desc','phys_sign','clin_symp','anamnesis','family_ill','remark','clin_diag'])->find();
+                $application = DB::table('remote_application')->where('id',$rid)->field(['report_status,id,remote_doctor_id','application_desc','attachment','req_doctor_id','illness_desc','phys_sign','is_urgent','clin_symp','anamnesis','family_ill','remark','clin_diag'])->find();
             }else{
                 $rid = '';
-                $application = DB::table('remote_application')->where('exam_id',$id)->field(['report_status,id,remote_doctor_id','application_desc','attachment','req_doctor_id','illness_desc','phys_sign','clin_symp','anamnesis','family_ill','remark','clin_diag'])->find();
+                $application = DB::table('remote_application')->where('exam_id',$id)->field(['report_status,id,remote_doctor_id','application_desc','attachment','req_doctor_id','illness_desc','phys_sign','clin_symp','is_urgent','anamnesis','family_ill','remark','clin_diag'])->find();
             }
             if($is_remote == 1){
                 //远程申请点击进入
@@ -102,6 +104,7 @@ class Application extends Base
                 $exam_application = DB::table('exams')->where('id',$id)->field(['illness_desc','phys_sign','clin_symp','remark','clin_diag','anamnesis','family_ill'])->find();
                 $exam_application['anamnesis'] = explode(',',$exam_application['anamnesis']);
                 $exam_application['family_ill'] = explode(',',$exam_application['family_ill']);
+                $exam_application['report_status'] = '';
                 $info['application'] = $exam_application;
             }else{
                 $remote_name = DB::table('doctors')->where('id',$application['remote_doctor_id'])->field('realname')->find();
@@ -204,12 +207,12 @@ class Application extends Base
             $where['req_doctor_id'] = $doctor['id'];
             $where['remote_institution_id'] = $application_info['remote_institution_id'];
             //  只允许有一个申请     ----------------------------- 暂时添加
-            $r = DB::table('remote_application')->where('exam_id',$param['id'])->find();
+            $r = DB::table('remote_application')->where('exam_id',$param['id'])->where('report_status','not in','5,12')->find();
             if($r){
                 return json_encode(['status'=>'fail','code'=>'1120','msg'=>'每个医院同一个检查只能申请一次']);
             }
             //不等于9  代表
-            $a_info = DB::table('remote_application')->where($where)->where('exam_id',$param['id'])->where('report_status','<>','9')->find();
+            $a_info = DB::table('remote_application')->where($where)->where('exam_id',$param['id'])->where('report_status','not in','12,5,9')->find();
             if($a_info){
                 return json_encode(['status'=>'fail','code'=>'1120','msg'=>'该申请目标医院存在未完成报告,只有报告完成后才能再次发起申请']);
             }
@@ -244,11 +247,19 @@ class Application extends Base
             // 申请远程
 //            if(empty($remote_application)){
             log::record('新增远程申请');
-            $application_info['id'] = UUIDs::uuid16();
-            $application_info['createdAt'] = date('Y-m-d H:i:s',time());
             $application_info['report_status'] = 4;
-            DB::table('remote_application')->insert($application_info);
-            $aid = $application_info['id'];
+            $re = DB::table('remote_application')->where('exam_id',$param['id'])->find();
+            if($re){
+                // 存在被驳回申请  再次申请时则为驳回后发起的申请
+                DB::table('remote_application')->where('exam_id',$param['id'])->update($application_info);
+                $app_id = $re['id'];
+            }else{
+                $application_info['id'] = UUIDs::uuid16();
+                $application_info['createdAt'] = date('Y-m-d H:i:s',time());
+                DB::table('remote_application')->insert($application_info);
+                $app_id = $application_info['id'];
+            }
+            $aid = $app_id;
             $r_info = DB::table('report')->where('exam_id',$param['id'])->find();
             if(empty($r_info)){
                 $report = array();
@@ -381,7 +392,7 @@ class Application extends Base
         $application = DB::table('remote_application')->where('exam_id',$id)->find();
 //        $message['doctor_id'] = $application['req_doctor_id'];
 //        $message['institution_id'] = $application['local_institution_id'];
-        DB::table('exams')->where('id',$id)->update(['exam_status'=>5]);
+        DB::table('remote_application')->where('id',$id)->update(['report_status'=>5]);
         // 驳回发短信
 //        if($application['req_doctor_id'] == 'c44663d6d3c0b535'){
         $dinfo = DB::table('doctors')->where('id',$application['req_doctor_id'])->find();
@@ -498,4 +509,16 @@ class Application extends Base
             }
         }
     }
+
+
+    public  function revoke(){
+        $id = $_REQUEST['id'];
+        $status = DB::table('remote_application')->where('exam_id',$id)->field('report_status')->find();
+        if($status['report_status'] == 4){
+            DB::table('remote_application')->where('exam_id',$id)->update(['report_status'=>12]);
+        }else{
+            return json_encode(['status'=>'ok','code'=>'0100','msg'=>'只能撤回申请中状态的申请单']);
+        }
+        return json_encode(['status'=>'ok','code'=>'0000','msg'=>'撤回成功']);
+    }
 }

+ 13 - 4
application/inter/controller/Report.php

@@ -136,6 +136,11 @@ class Report extends Base
                             $ex = implode('\',\'',$v);
                             $where .= " and a.exam_class in ('".$ex."')";
                             break;
+                        case 'report_status':
+                            if($v != 10 && !empty($v)){
+                                $where .= " and ra.report_status=".$v;
+                            }
+                            break;
                         default :
                             if(empty($v)){
                                 break;
@@ -158,10 +163,10 @@ class Report extends Base
 
                 $sql = '('.$sql1.') union ('.$sql2.') union ('.$sql3.')'.$limit;
             }else{*/
-                $sql = "SELECT a.id,a.urgent,a.is_remote,a.accession_num,a.exam_report,a.study_id,a.exam_datetime,a.exam_project,a.exam_status,a.exam_class,p.name,p.sex,p.age FROM exams as a,patient_infos as p where a.institution_id='".$doctor['institution_id']."' and p.id=a.patient_id ".$where." order by a.createdAt desc".$limit;
+                $sql = "SELECT a.id,a.urgent,a.is_remote,a.accession_num,a.exam_report,a.study_id,a.exam_datetime,a.exam_project,a.exam_status,a.exam_class,p.name,p.sex,p.age,ra.report_status FROM (exams as a,patient_infos as p) LEFT JOIN remote_application as ra on ra.exam_id=a.id where a.institution_id='".$doctor['institution_id']."' and p.id=a.patient_id ".$where." order by a.createdAt desc".$limit;
 //            }
             $list = DB::query($sql);
-            $csql = "SELECT count(1) FROM exams as a,patient_infos as p where a.institution_id='".$doctor['institution_id']."' and p.id=a.patient_id ".$where;
+            $csql = "SELECT count(1) FROM (exams as a,patient_infos as p) LEFT JOIN remote_application as ra on ra.exam_id=a.id where a.institution_id='".$doctor['institution_id']."' and p.id=a.patient_id ".$where;
             $count = DB::query($csql);
             log::record('请求的sql语句');
             log::record($sql);
@@ -181,9 +186,11 @@ class Report extends Base
                     $project = DB::table('exam_project')->where('id',$v['exam_project'])->field('name')->find();
                     $list[$k]['exam_project_name'] = $project['name'];
                     $list[$k]['report_app_name'] = $remote_name['name'];
-                    $report = DB::table('report')->where('exam_id',$v['id'])->field('report_datetime,report_doctor_id')->find();
+                    $report = DB::table('report')->where('exam_id',$v['id'])->field('report_datetime,report_doctor_id,review_doctor_id')->find();
                     if($report){
                         $report_doctor = DB::table('doctors')->where('id',$report['report_doctor_id'])->field('realname')->find();
+                        $review_doctor = DB::table('doctors')->where('id',$report['review_doctor_id'])->field('realname')->find();
+                        $list[$k]['review_doctor'] = $review_doctor['realname'];
                         $list[$k]['report_doctor'] = $report_doctor['realname'];
                         $list[$k]['report_datetime'] = $report['report_datetime'];
                     }
@@ -192,9 +199,11 @@ class Report extends Base
                     $list[$k]['report_app_name'] = $remote_name['name'];
                     $project = DB::table('exam_project')->where('id',$v['exam_project'])->field('name')->find();
                     $list[$k]['exam_project_name'] = $project['name'];
-                    $report = DB::table('report')->where('exam_id',$v['id'])->field('report_datetime,report_doctor_id')->find();
+                    $report = DB::table('report')->where('exam_id',$v['id'])->field('report_datetime,report_doctor_id,review_doctor_id')->find();
                     if($report){
                         $report_doctor = DB::table('doctors')->where('id',$report['report_doctor_id'])->field('realname')->find();
+                        $review_doctor = DB::table('doctors')->where('id',$report['review_doctor_id'])->field('realname')->find();
+                        $list[$k]['review_doctor'] = $review_doctor['realname'];
                         $list[$k]['report_doctor'] = $report_doctor['realname'];
                         $list[$k]['report_datetime'] = $report['report_datetime'];
                     }else{

+ 53 - 8
application/inter/controller/Writereport.php

@@ -75,13 +75,21 @@ class Writereport extends Base
             $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('id,report_result,report_datetime,report_doctor_id,review_datetime,review_doctor_id,impression,description')->find();
+                $report = DB::table('report')->where('exam_id',$id)->where('remote_application_id',$remote_id)->field('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('id,report_result,report_datetime,report_doctor_id,review_datetime,review_doctor_id,impression,description')->find();
+                $report = DB::table('report')->where('exam_id',$id)->where('type',1)->field('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'];
@@ -204,12 +212,14 @@ class Writereport extends Base
             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'] > 6){
+                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'])->where('type',1)->field('exam_status')->find();
+                $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'=>'报告已被保存,无法再次被修改']);
                 }
@@ -480,7 +490,7 @@ class Writereport extends Base
                 DB::table('remote_application')->where('id',$report_info['remote_application_id'])->update(['report_status'=>'9']);
             }
             DB::table('exams')->where('id',$id)->update(['film_type'=>$_REQUEST['param']['film_type']]);
-            DB::table('report')->where('exam_id',$id)->update($rinfo);
+            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);
@@ -866,9 +876,29 @@ class Writereport extends Base
         $doctor = Cache::get($sessionid);
         $param = $_REQUEST['param'];
         $report_id = $param['report_id'];
-        $key = $doctor['id'].'_'.$report_id;
-        Cache::set($key,$param);
-        return json_encode(['status'=>'ok','msg'=>'保存成功','code'=>'0000']);
+        $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类型数据获取
@@ -977,6 +1007,21 @@ class Writereport extends Base
                 $arr['exam_datetime'] = $einfo['exam_datetime'];
                 $arr['report_status'] = $remote_info['report_status'];
                 $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']);