Inspectregister.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <?php
  2. namespace app\inter\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use app\common\library\UUIDs;
  6. use think\Session;
  7. use app\common\library\ResultTools;
  8. use think\Log;
  9. use think\Cache;
  10. use think\Request;
  11. use app\common\library\Verify;
  12. class Inspectregister extends Base
  13. {
  14. public function index(){
  15. try{
  16. $sessionid = $_REQUEST['sessionid'];
  17. log::record('-------------------------');
  18. log::record($_REQUEST);
  19. log::record('-------------------------');
  20. $doctor = Cache::get($sessionid);
  21. $info = array();
  22. // 科室
  23. $department = DB::table('department')->where('institution_id',$doctor['institution_id'])->cache(300)->field('id','department_name')->select();
  24. $info['department'] = $department;
  25. // 机构
  26. $doctor_department = DB::table('department')->where('id',$doctor['department_id'])->cache(300)->field('id,department_name')->find();
  27. $info['execute_department'] = $doctor_department;
  28. log::record('--------返回信息-----------------');
  29. log::record($info);
  30. log::record('-----------返回信息--------------');
  31. // Cache::set('inspectregister_index',$info);
  32. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]);
  33. }catch(\Exception $e ){
  34. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  35. }
  36. }
  37. public function exam_info(){
  38. try{
  39. $sessionid = $_REQUEST['sessionid'];
  40. $examid = $_REQUEST['param']['id'];
  41. $examinfo = DB::table('exams')->where('id',$examid)->field(['id','accession_num','exam_class','exam_sub_class','body_part','device','exam_datetime','anamnesis','family_ill','dept_id','charge','exam_project','illness_desc','phys_sign','clin_symp','remark','clin_diag','hopitalized_no','bed_no','patient_id'])->find();
  42. $examinfo['family_ill'] = explode(',',$examinfo['family_ill']);
  43. $examinfo['anamnesis'] = explode(',',$examinfo['anamnesis']);
  44. $exam_class = DB::table('constant')->where('id',$examinfo['exam_class'])->field('constant_value as name')->cache(300)->find();
  45. $department = DB::table('department')->where('id',$examinfo['dept_id'])->field('department_name')->find();
  46. $examinfo['dept_name'] = $department['department_name'];
  47. $examinfo['exam_class_name'] = $exam_class['name'];
  48. $exam_sub_class = DB::table('exam_subclass')->where('id',$examinfo['exam_sub_class'])->field('name')->cache(300)->find();
  49. $examinfo['exam_subclass_name'] = $exam_sub_class['name'];
  50. $body_part = DB::table('bodypart')->where('id',$examinfo['body_part'])->field('name')->cache(300)->find();
  51. $examinfo['bodypart_name'] = $body_part['name'];
  52. $device = DB::table('device')->where('id',$examinfo['device'])->field('name')->cache(300)->find();
  53. $examinfo['device_name'] = $device['name'];
  54. $exam_project = DB::table('exam_project')->where('id',$examinfo['exam_project'])->field('name')->find();
  55. $examinfo['exam_project_name'] = $exam_project['name'];
  56. $patientinfo = DB::table('patient_infos')->where('id',$examinfo['patient_id'])->field(['name','sex','age','phone','birthday',' temp_patient_id'])->find();
  57. $info = array_merge($examinfo,$patientinfo);
  58. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]);
  59. }catch(\Exception $e ){
  60. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  61. }
  62. }
  63. //检查类别
  64. public function exam_class(){
  65. // $sessionid = $_REQUEST['sessionid'];
  66. // $doctor = Cache::get($sessionid);
  67. $exam_class = DB::table('constant')->where('parent_id','exam_class')->field(['id','constant_value as name'])->select();
  68. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_class]);
  69. }
  70. //检查子类
  71. public function exam_sub_class(){
  72. $exam_subclass = DB::table('exam_subclass')->cache(300)->select();
  73. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_subclass]);
  74. }
  75. //检查部位
  76. public function bodypart(){
  77. $bodypart = DB::table('bodypart')->cache(300)->select();
  78. return json_encode(['status'=>'ok','code'=>'0000','info'=>$bodypart]);
  79. }
  80. //检查设备
  81. public function device(){
  82. $device = DB::table('device')->where('status',1)->cache(300)->select();
  83. return json_encode(['status'=>'ok','code'=>'0000','info'=>$device]);
  84. }
  85. //检查项目
  86. public function exam_project(){
  87. $exam_project = DB::table('exam_project')->cache(300)->select();
  88. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_project]);
  89. }
  90. //执行科室
  91. public function department(){
  92. $sessionid = $_REQUEST['sessionid'];
  93. $doctor = Cache::get($sessionid);
  94. $department = DB::table('department')->where('is_report',1)->where('institution_id',$doctor['institution_id'])->cache(300)->select();
  95. return json_encode(['status'=>'ok','code'=>'0000','info'=>$department]);
  96. }
  97. public function save(){
  98. try{
  99. log::record('--------数据保存-----------------');
  100. log::record($_REQUEST);
  101. log::record('-------------------------');
  102. // 登记医生 5
  103. $sessionid = Request::instance()->param('sessionid');
  104. $return = Verify::check_role($sessionid,5);
  105. if($return != 1){
  106. return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']);
  107. }
  108. $doctor = Cache::get($sessionid);
  109. $param = $_REQUEST['param'];
  110. Verify::registerCheck($param);
  111. //基本信息
  112. $patient_info = array();
  113. $patient_info['temp_patient_id'] = isset($param['pnum']) ? $param['pnum'] : '';
  114. $patient_info['name'] = isset($param['name']) ? $param['name'] : '';
  115. $patient_info['phone'] = isset($param['phone']) ? $param['phone'] : '';
  116. $patient_info['sex'] = isset($param['sex']) ? $param['sex'] : '';
  117. $patient_info['age'] = isset($param['age']) ? $param['age'] : '';
  118. if(isset($param['anamnesis']) && !empty($param['anamnesis'])){
  119. $ana = implode(',',$param['anamnesis']);
  120. $patient_info['anamnesis'] = $ana;
  121. }
  122. if(isset($patient_info['family_ill']) && !empty($patient_info['family_ill'])){
  123. $fam = implode(',',$patient_info['family_ill']);
  124. $patient_info['family_ill'] = $fam;
  125. }
  126. if(isset($param['birthday']) && !empty($param['birthday'])){
  127. $patient_info['birthday'] = str_replace('-', '', $param['birthday']);
  128. }
  129. $exam_info = array();
  130. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  131. $pid = DB::table('exams')->where('id',$param['exam_id'])->field('patient_id')->find();
  132. //存在并且有值 则修改
  133. $patient = DB::table('patient_infos')->where('temp_patient_id',$pid['patient_id'])->update($patient_info);
  134. }else{
  135. $p = DB::table('patient_infos')->where('temp_patient_id',$param['pnum'])->find();
  136. if($p){
  137. return json_encode(['status'=>'fail','code'=>'1030','msg'=>'病历号已存在,请更改']);
  138. }
  139. $patient_info['id'] = UUids::uuid16();
  140. //不存在或者没有值则添加
  141. $patient = DB::table('patient_infos')->insert($patient_info);
  142. $exam_info['patient_id'] = $patient_info['id'];
  143. }
  144. //检查信息和申请信息
  145. $exam_info['id'] = UUIDs::uuid16();
  146. $exam_info['institution_id'] = $doctor['institution_id'];
  147. $exam_info['exam_status'] = 1; // 登记完成
  148. $exam_info['register_datetime'] = date('Y-m-d : H:i:s');
  149. $exam_info['phone'] = $doctor['phone'];
  150. $exam_info['patient_num'] = isset($param['pnum']) ? $param['pnum'] : '';
  151. $exam_info['hopitalized_no'] = isset($param['hopitalized_no']) ? $param['hopitalized_no'] : '';
  152. $exam_info['bed_no'] = isset($param['bed_no']) ? $param['bed_no'] : '';
  153. $exam_info['accession_num'] = isset($param['checknum']) ? $param['checknum'] : '';
  154. $exam_info['exam_class'] = isset($param['checkclass']) ? $param['checkclass'] : '';
  155. $exam_info['exam_sub_class'] = isset($param['checkchild']) ? $param['checkchild'] : '';
  156. $exam_info['body_part'] = isset($param['body']) ? $param['body'] : '';
  157. $exam_info['device'] = isset($param['device']) ? $param['device'] : '';
  158. if(isset($param['checktime']) && !empty($param['checktime'])){
  159. $exam_info['exam_datetime'] = str_replace('-', '', $param['checktime']);
  160. }
  161. $exam_info['dept_id'] = isset($param['department']) ? $param['department'] : '';
  162. $exam_info['charge'] = isset($param['cost']) ? $param['cost'] : '';
  163. $exam_info['exam_project'] = isset($param['project']) ? $param['project'] : '';
  164. $exam_info['illness_desc'] = isset($param['illness']) ? $param['illness'] : '';
  165. $exam_info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  166. $exam_info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  167. $exam_info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  168. $exam_info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  169. $exam_info['register'] = $doctor['id'];
  170. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  171. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  172. $exam = DB::table('exams')->where('id',$param['exam_id'])->update($exam_info);
  173. }else{
  174. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  175. $exam = DB::table('exams')->insert($exam_info);
  176. }
  177. return json_encode(['status'=>'ok','code'=>'0000','msg'=>'保存成功','sessionid'=>$sessionid]);
  178. }catch(\Exception $e ){
  179. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  180. }
  181. }
  182. public function build_patient_num(){
  183. $sessionid = $_REQUEST['sessionid'];
  184. if(Cache::get('P_'.$sessionid)){
  185. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get('P_'.$sessionid)]);
  186. }
  187. $num = $this->getNum('P');
  188. Cache::set('P_'.$sessionid,$num,5);
  189. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  190. }
  191. public function build_check_num(){
  192. $sessionid = $_REQUEST['sessionid'];
  193. $front = $_REQUEST['check_class'];
  194. $pnum = $_REQUEST['pnum'];
  195. if(Cache::get($front.'_'.$pnum)){
  196. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$pnum)]);
  197. }
  198. if(Cache::get($front.'_'.$sessionid)){
  199. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$sessionid)]);
  200. }
  201. $cname = DB::table('constant')->where('id',$front)->cache(300)->field('constant_value as name')->find();
  202. $num = $this->getNum($cname['name']);
  203. Cache::set($front.'_'.$sessionid,$num,5);
  204. Cache::set($front.'_'.$pnum,$num,600);
  205. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  206. }
  207. public function getNum($head){
  208. if(!Cache::get('lock')){
  209. //没有锁
  210. Cache::set('lock','11');
  211. $date = $head.date('ymd',time());
  212. if(!Cache::get($date)){
  213. Cache::set($date,1,86400);
  214. $datenum = 1;
  215. }else{
  216. //自增
  217. Cache::inc($date);
  218. $datenum = Cache::get($date);
  219. }
  220. $dnum = '';
  221. switch(strlen($datenum)){
  222. case 1:
  223. $dnum = $date.'000'.$datenum;
  224. break;
  225. case 2:
  226. $dnum = $date.'00'.$datenum;
  227. break;
  228. case 3:
  229. $dnum = $date.'0'.$datenum;
  230. break;
  231. default:
  232. $dnum =$date.$datenum;
  233. break;
  234. }
  235. Cache::rm('lock');
  236. return $dnum;
  237. }else{
  238. //当接口被其他人占用时 调用自身重新获取字符串
  239. sleep(1);
  240. self::getNum();
  241. }
  242. }
  243. public function family_ill(){
  244. $family_ill = DB::table('constant')->where('parent_id','family_ill')->cache(300)->field('constant_key,constant_value')->select();
  245. return json_encode(['status'=>'ok','code'=>'0000','info'=>$family_ill]);
  246. }
  247. public function illness(){
  248. $illness = DB::table('constant')->where('parent_id','illness')->cache(300)->field('constant_key,constant_value')->select();
  249. return json_encode(['status'=>'ok','code'=>'0000','info'=>$illness]);
  250. }
  251. }