Inspectregister.php 13 KB

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