Application.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. namespace app\inter\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use think\Session;
  6. use app\common\library\UUIDs;
  7. use think\Cache;
  8. use think\Log;
  9. use app\common\library\Verify;
  10. use think\File;
  11. class Application extends Base
  12. {
  13. public function index(){
  14. try{
  15. $sessionid = $_REQUEST['sessionid'];
  16. $param = $_REQUEST['param'];
  17. $id = $param['id'];
  18. $is_remote = 0;
  19. if(isset($_REQUEST['is_remote']) && $_REQUEST['is_remote']==1){
  20. $is_remote = 1;
  21. }
  22. $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')->find();
  23. $exam_class = DB::table('constant')->where('id',$info['exam_class'])->field('constant_value')->find();
  24. $exam_subclass = DB::table('exam_subclass')->where('id',$info['exam_sub_class'])->cache(300)->find();
  25. $exam_project = DB::table('exam_project')->where('id',$info['exam_project'])->cache(300)->find();
  26. $device = DB::table('device')->where('id',$info['device'])->cache(300)->find();
  27. $info['exam_class_name'] = $exam_class['constant_value'];
  28. $info['exam_subclass_name'] = $exam_subclass['name'];
  29. $info['exam_project_name'] = $exam_project['name'];
  30. $info['device_name'] = $device['name'];
  31. $patient_info = DB::table('patient_infos')->where('id',$info['patient_id'])->field(['id','name','sex','age','birthday'])->find();
  32. $info['pid'] = $patient_info['id'];
  33. $info['name'] = $patient_info['name'];
  34. $info['sex'] = $patient_info['sex'];
  35. $info['age'] = $patient_info['age'];
  36. if(!empty($patient_info['birthday'])){
  37. $info['birthday'] = $patient_info['birthday'];
  38. }
  39. $doctor = Cache::get($sessionid);
  40. $institution_id = $doctor['institution_id'];
  41. $hospital = DB::table('institution')->where('id',$institution_id)->find();
  42. $parent_hosp = explode(',',$hospital['parent_institution']);
  43. $parent_name = array();
  44. foreach($parent_hosp as $v){
  45. $phname = DB::table("institution")->where('id',$v)->cache(300)->field(['id','name'])->find();
  46. $doctor_info = DB::table('doctors')->where('institution_id',$v)->field('id,realname')->select();
  47. $phname['doctor'] = $doctor_info;
  48. $parent_name[] =$phname;
  49. }
  50. $info['parent_hospital'] = $parent_name;
  51. //申请信息
  52. $application = DB::table('remote_application')->where('exam_id',$id)->field(['req_doctor_id','illness_desc','phys_sign','clin_symp','anamnesis','family_ill','remark','clin_diag'])->find();
  53. if($is_remote == 1){
  54. //远程申请点击进入
  55. $dinfo = DB::table('doctors')->where('id',$application['req_doctor_id'])->field('department_id')->find();
  56. $dep = DB::table('department')->where('id',$dinfo['department_id'])->field('department_name')->find();
  57. }else{
  58. //本地远程申请中
  59. $dep = DB::table('department')->where('id',$doctor['department_id'])->field('department_name')->find();
  60. }
  61. $info['department_name'] = $dep['department_name'];
  62. if(empty($application)){
  63. $exam_application = DB::table('exams')->where('id',$id)->field(['illness_desc','phys_sign','clin_symp','remark','clin_diag','anamnesis','family_ill'])->find();
  64. $info['application'] = $exam_application;
  65. }else{
  66. $info['application'] = $application;
  67. }
  68. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid,'is_remote'=>$is_remote]);
  69. }catch(\Exception $e){
  70. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  71. }
  72. }
  73. // 提交申请
  74. public function apply(){
  75. try{
  76. log::record($_REQUEST);
  77. $sessionid = $_REQUEST['sessionid'];
  78. $doctor = Cache::get($sessionid);
  79. // 远程申请权限 6
  80. $return = Verify::check_role($sessionid,6);
  81. if($return != 1){
  82. return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']);
  83. }
  84. $param = $_REQUEST['param'];
  85. $exam_info = DB::table('exams')->where('id',$param['id'])->field('exam_status')->find();
  86. if($exam_info['exam_status'] != 3 && $exam_info['exam_status'] != 5){
  87. // 3 检查完毕 5已驳回
  88. // return json_encode(['status'=>'fail','code'=>'1029','msg'=>'未到达申请的步骤,没有操作权限']);
  89. }
  90. Verify::applicationCheck($param);
  91. $application_info = array();
  92. $application_info['exam_id'] = isset($param['id']) ? $param['id'] : '';
  93. $application_info['illness_desc'] = isset($param['illness']) ? $param['illness'] : '';
  94. $application_info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  95. $application_info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  96. if(!empty($param['anamnesis'])){
  97. $application_info['anamnesis'] = implode(',',$param['anamnesis']);
  98. }
  99. if(!empty($param['family_ill'])){
  100. $application_info['family_ill'] = implode(',',$param['family_ill']);
  101. }
  102. $application_info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  103. $application_info['local_institution_id'] = $doctor['institution_id'];
  104. $application_info['req_date_time'] = date('Y-m-d H:i:s',time());
  105. $application_info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  106. $application_info['remote_institution_id'] = isset($param['remote_institution']) ? $param['remote_institution'] : '';
  107. if(isset($param['is_urgent']) && $param['is_urgent'] == 'true' ){
  108. $application_info['is_urgent'] = 1;
  109. }else{
  110. $application_info['is_urgent'] = 0;
  111. }
  112. $application_info['application_desc'] = isset($param['description']) ? $param['description'] : '';
  113. $application_info['req_doctor_id'] = $doctor['id'];
  114. $application_info['remote_doctor_id'] = isset($param['remote_doctor_id']) ? $param['remote_doctor_id'] : '';
  115. $application_info['attachment'] = isset($param['attachment']) ? $param['attachment'] : '';
  116. if(isset($param['apply']) && !empty($param['apply'])){
  117. //保存 未申请
  118. DB::table('exams')->where('id',$param['id'])->update(['status'=>4]);
  119. }
  120. $remote_application = DB::table('remote_application')->where('exam_id',$param['id'])->select();
  121. // 申请远程
  122. if(empty($remote_application)){
  123. log::record('新增远程申请');
  124. $application_info['id'] = UUIDs::uuid16();
  125. $application_info['ctime'] = date('Y-m-d H:i:s',time());
  126. DB::table('remote_application')->insert($application_info);
  127. $report = array();
  128. $report['id'] = UUIDs::uuid16();
  129. $report['exam_id'] = $param['id'];
  130. DB::table('report')->insert($report);
  131. }else{
  132. log::record('修改远程申请');
  133. DB::table('remote_application')->where('exam_id',$param['id'])->update($application_info);
  134. }
  135. DB::table('exams')->where('id',$param['id'])->update(['exam_status'=>4]);
  136. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  137. }catch(\Exception $e){
  138. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  139. }
  140. }
  141. //上传附件
  142. public function upload(){
  143. // 获取表单上传文件 例如上传了001.jpg
  144. $file = request()->file('file');
  145. log::record('----------上传的文件-----------');
  146. log::record($file);
  147. // 移动到框架应用根目录/public/uploads/ 目录下
  148. if($file){
  149. $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
  150. log::record($info);
  151. if($info){
  152. return json_encode(['status'=>'ok','code'=>'0000','info'=>'/'.$_SERVER["SERVER_NAME"]. '/' . 'uploads'. '/' .$info->getSaveName()]);
  153. }else{
  154. // 上传失败获取错误信息
  155. return json_encode(['status'=>'fail','code'=>'1040','info'=>$file->getError()]);
  156. }
  157. }
  158. }
  159. //驳回 7
  160. public function reject(){
  161. $sessionid = $_REQUEST['sessionid'];
  162. $doctor = Cache::get($sessionid);
  163. $param = $_REQUEST['param'];
  164. $id = $param['id'];
  165. $report = DB::table('report')->where('exam_id',$id)->field('id')->find();
  166. $info = array();
  167. $info['id'] = UUIDs::uuid16();
  168. $info['report_id'] = $report['id'];
  169. $info['description'] = $param['description'];
  170. $info['ctime'] = date('Y-m-d H:i:s',time());
  171. $info['type'] = 4;
  172. $info['doctor_id'] = $doctor['id'];
  173. DB::table('report_record')->insert($info);
  174. $message = array();
  175. $message['id'] = UUIDs::uuid16();
  176. $message['title'] = '申请单驳回';
  177. $message['content'] = $param['description'];
  178. $message['ctime'] = date('Y-m-d H:i:s',time());
  179. $did = DB::table('remote_application')->where('exam_id',$id)->field('req_doctor_id,local_institution_id')->find();
  180. $message['doctor_id'] = $did['req_doctor_id'];
  181. $message['institution_id'] = $did['local_institution_id'];
  182. DB::table('exams')->where('id',$id)->update(['exam_status'=>5]);
  183. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  184. }
  185. public function recive(){
  186. $sessionid = $_REQUEST['sessionid'];
  187. // $doctor = Cache::get($sessionid);
  188. $id = $_REQUEST['id'];
  189. DB::table('exams')->where('id',$id)->update(['exam_status'=>6]);
  190. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  191. }
  192. }