Application.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. $exam_application['anamnesis'] = explode(',',$exam_application['anamnesis']);
  65. $exam_application['family_ill'] = explode(',',$exam_application['family_ill']);
  66. $info['application'] = $exam_application;
  67. }else{
  68. $application['anamnesis'] = explode(',',$application['anamnesis']);
  69. $application['family_ill'] = explode(',',$application['family_ill']);
  70. $info['application'] = $application;
  71. }
  72. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid,'is_remote'=>$is_remote]);
  73. }catch(\Exception $e){
  74. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  75. }
  76. }
  77. // 提交申请
  78. public function apply(){
  79. try{
  80. log::record($_REQUEST);
  81. $sessionid = $_REQUEST['sessionid'];
  82. $doctor = Cache::get($sessionid);
  83. // 远程申请权限 6
  84. $return = Verify::check_role($sessionid,6);
  85. if($return != 1){
  86. return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']);
  87. }
  88. $param = $_REQUEST['param'];
  89. $exam_info = DB::table('exams')->where('id',$param['id'])->field('exam_status')->find();
  90. if($exam_info['exam_status'] != 3 && $exam_info['exam_status'] != 5){
  91. // 3 检查完毕 5已驳回
  92. // return json_encode(['status'=>'fail','code'=>'1029','msg'=>'未到达申请的步骤,没有操作权限']);
  93. }
  94. Verify::applicationCheck($param);
  95. $application_info = array();
  96. $application_info['exam_id'] = isset($param['id']) ? $param['id'] : '';
  97. $application_info['illness_desc'] = isset($param['illness']) ? $param['illness'] : '';
  98. $application_info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  99. $application_info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  100. if(!empty($param['anamnesis'])){
  101. $application_info['anamnesis'] = implode(',',$param['anamnesis']);
  102. }
  103. if(!empty($param['family_ill'])){
  104. $application_info['family_ill'] = implode(',',$param['family_ill']);
  105. }
  106. $application_info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  107. $application_info['local_institution_id'] = $doctor['institution_id'];
  108. $application_info['req_date_time'] = date('Y-m-d H:i:s',time());
  109. $application_info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  110. $application_info['remote_institution_id'] = isset($param['remote_institution']) ? $param['remote_institution'] : '';
  111. if(isset($param['is_urgent']) && $param['is_urgent'] == 'true' ){
  112. $application_info['is_urgent'] = 1;
  113. }else{
  114. $application_info['is_urgent'] = 0;
  115. }
  116. $application_info['application_desc'] = isset($param['description']) ? $param['description'] : '';
  117. $application_info['req_doctor_id'] = $doctor['id'];
  118. $application_info['remote_doctor_id'] = isset($param['remote_doctor_id']) ? $param['remote_doctor_id'] : '';
  119. $application_info['attachment'] = isset($param['attachment']) ? $param['attachment'] : '';
  120. if(isset($param['apply']) && !empty($param['apply'])){
  121. //保存 未申请
  122. DB::table('exams')->where('id',$param['id'])->update(['status'=>4,'updatedAt'=>date('Y-m-d H:i:s',time())]);
  123. }
  124. $remote_application = DB::table('remote_application')->where('exam_id',$param['id'])->select();
  125. // 申请远程
  126. if(empty($remote_application)){
  127. log::record('新增远程申请');
  128. $application_info['id'] = UUIDs::uuid16();
  129. $application_info['createdAt'] = date('Y-m-d H:i:s',time());
  130. DB::table('remote_application')->insert($application_info);
  131. $report = array();
  132. $report['id'] = UUIDs::uuid16();
  133. $report['exam_id'] = $param['id'];
  134. DB::table('report')->insert($report);
  135. }else{
  136. log::record('修改远程申请');
  137. DB::table('remote_application')->where('exam_id',$param['id'])->update($application_info);
  138. }
  139. DB::table('exams')->where('id',$param['id'])->update(['exam_status'=>4,'updatedAt'=>date('Y-m-d H:i:s',time())]);
  140. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  141. }catch(\Exception $e){
  142. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  143. }
  144. }
  145. //上传附件
  146. public function upload(){
  147. // 获取表单上传文件 例如上传了001.jpg
  148. $file = request()->file('file');
  149. log::record('----------上传的文件-----------');
  150. log::record($file);
  151. // 移动到框架应用根目录/public/uploads/ 目录下
  152. if($file){
  153. $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
  154. log::record($info);
  155. if($info){
  156. return json_encode(['status'=>'ok','code'=>'0000','info'=>'/'.$_SERVER["SERVER_NAME"]. '/' . 'uploads'. '/' .$info->getSaveName()]);
  157. }else{
  158. // 上传失败获取错误信息
  159. return json_encode(['status'=>'fail','code'=>'1040','info'=>$file->getError()]);
  160. }
  161. }
  162. }
  163. //驳回 7
  164. public function reject(){
  165. $sessionid = $_REQUEST['sessionid'];
  166. $doctor = Cache::get($sessionid);
  167. $param = $_REQUEST['param'];
  168. $id = $param['id'];
  169. $report = DB::table('report')->where('exam_id',$id)->field('id')->find();
  170. $info = array();
  171. $info['id'] = UUIDs::uuid16();
  172. $info['report_id'] = $report['id'];
  173. $info['description'] = $param['description'];
  174. $info['createdAt'] = date('Y-m-d H:i:s',time());
  175. $info['type'] = 4;
  176. $info['doctor_id'] = $doctor['id'];
  177. DB::table('report_record')->insert($info);
  178. $message = array();
  179. $message['id'] = UUIDs::uuid16();
  180. $message['title'] = '申请单驳回';
  181. $message['content'] = $param['description'];
  182. $message['createdAt'] = date('Y-m-d H:i:s',time());
  183. $did = DB::table('remote_application')->where('exam_id',$id)->field('req_doctor_id,local_institution_id')->find();
  184. $message['doctor_id'] = $did['req_doctor_id'];
  185. $message['institution_id'] = $did['local_institution_id'];
  186. DB::table('exams')->where('id',$id)->update(['exam_status'=>5]);
  187. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  188. }
  189. public function recive(){
  190. $sessionid = $_REQUEST['sessionid'];
  191. // $doctor = Cache::get($sessionid);
  192. $id = $_REQUEST['id'];
  193. DB::table('exams')->where('id',$id)->update(['exam_status'=>6]);
  194. return json_encode(['status'=>'ok','code'=>'0000','sessionid'=>$sessionid]);
  195. }
  196. }