Inspectregister.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  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. /**
  15. * 预约登记
  16. *
  17. * @ApiTitle (预约登记)
  18. * @ApiSummary (预约登记)
  19. * @ApiSector (远程诊断)
  20. * @ApiMethod (POST)
  21. * @ApiRoute (/inter/inspectregister/index)
  22. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  23. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  24. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  25. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串")
  26. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  27. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  28. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  29. * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key")
  30. * @ApiReturn (data="
  31. {
  32. 'status': ok,
  33. 'code': '0000',
  34. 'sessionid': 'a17z7a7a8f9g9rh9d89jio',
  35. 'info' : ''
  36. }
  37. *")
  38. **/
  39. public function index(){
  40. try{
  41. $sessionid = $_REQUEST['sessionid'];
  42. log::record('-------------------------');
  43. log::record($_REQUEST);
  44. log::record('-------------------------');
  45. $doctor = Cache::get($sessionid);
  46. $info = array();
  47. // 科室
  48. $department = DB::table('department')->where('institution_id',$doctor['institution_id'])->cache(300)->field('id','department_name')->select();
  49. $info['department'] = $department;
  50. // 机构
  51. $doctor_department = DB::table('department')->where('id',$doctor['department_id'])->cache(300)->field('id,department_name')->find();
  52. $info['execute_department'] = $doctor_department;
  53. log::record('--------返回信息-----------------');
  54. log::record($info);
  55. log::record('-----------返回信息--------------');
  56. // Cache::set('inspectregister_index',$info);
  57. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]);
  58. }catch(\Exception $e ){
  59. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  60. }
  61. }
  62. /**
  63. * 预约登记用户信息
  64. *
  65. * @ApiTitle (预约登记用户信息)
  66. * @ApiSummary (预约登记用户信息)
  67. * @ApiSector (远程诊断)
  68. * @ApiMethod (POST)
  69. * @ApiRoute (/inter/inspectregister/exam_info)
  70. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  71. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  72. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  73. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串")
  74. * @ApiParams (name="param", type="string", required=true, description="参数json字符串")
  75. * @ApiParams (name="param[id]", type="string", sample="", description="预约登记exams表id值<必填>")
  76. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  77. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  78. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  79. * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key")
  80. * @ApiReturn (data="
  81. {
  82. 'status': ok,
  83. 'code': '0000',
  84. 'sessionid': 'a17z7a7a8f9g9rh9d89jio',
  85. 'info' : ''
  86. }
  87. *")
  88. **/
  89. public function exam_info(){
  90. try{
  91. $sessionid = $_REQUEST['sessionid'];
  92. $examid = $_REQUEST['param']['id'];
  93. $examinfo = DB::table('exams')->where('id',$examid)->field(['id','exam_status','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();
  94. $examinfo['family_ill'] = explode(',',$examinfo['family_ill']);
  95. $examinfo['anamnesis'] = explode(',',$examinfo['anamnesis']);
  96. $exam_class = DB::table('constant')->where('id',$examinfo['exam_class'])->field('constant_value as name')->cache(300)->find();
  97. $department = DB::table('department')->where('id',$examinfo['dept_id'])->field('department_name')->find();
  98. $examinfo['dept_name'] = $department['department_name'];
  99. $examinfo['exam_class_name'] = $exam_class['name'];
  100. $exam_sub_class = DB::table('exam_subclass')->where('id',$examinfo['exam_sub_class'])->field('name')->cache(300)->find();
  101. $examinfo['exam_subclass_name'] = $exam_sub_class['name'];
  102. $body_part = DB::table('bodypart')->where('id',$examinfo['body_part'])->field('name')->cache(300)->find();
  103. $examinfo['bodypart_name'] = $body_part['name'];
  104. $device = DB::table('device')->where('id',$examinfo['device'])->field('name')->cache(300)->find();
  105. $examinfo['device_name'] = $device['name'];
  106. $exam_project = DB::table('exam_project')->where('id',$examinfo['exam_project'])->field('name')->find();
  107. $examinfo['exam_project_name'] = $exam_project['name'];
  108. $patientinfo = DB::table('patient_infos')->where('id',$examinfo['patient_id'])->field(['name','sex','age','phone','birthday',' temp_patient_id'])->find();
  109. $info = array_merge($examinfo,$patientinfo);
  110. return json_encode(['status'=>'ok','code'=>'0000','info'=>$info,'sessionid'=>$sessionid]);
  111. }catch(\Exception $e ){
  112. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  113. }
  114. }
  115. /**
  116. * 检查类别
  117. *
  118. * @ApiTitle (检查类别)
  119. * @ApiSummary (检查类别)
  120. * @ApiSector (远程诊断)
  121. * @ApiMethod (POST)
  122. * @ApiRoute (/inter/inspectregister/exam_class)
  123. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  124. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  125. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  126. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  127. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  128. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  129. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  130. * @ApiReturn (data="
  131. {
  132. 'status': ok,
  133. 'code': '0000',
  134. 'info' : ['CT','CR',','MR']
  135. }
  136. *")
  137. **/
  138. public function exam_class(){
  139. // $sessionid = $_REQUEST['sessionid'];
  140. // $doctor = Cache::get($sessionid);
  141. $exam_class = DB::table('constant')->where('parent_id','exam_class')->field(['id','constant_value as name'])->select();
  142. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_class]);
  143. }
  144. /**
  145. * 检查子类
  146. *
  147. * @ApiTitle (检查子类)
  148. * @ApiSummary (检查子类)
  149. * @ApiSector (远程诊断)
  150. * @ApiMethod (POST)
  151. * @ApiRoute (/inter/inspectregister/exam_sub_class)
  152. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  153. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  154. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  155. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  156. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  157. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  158. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  159. * @ApiReturn (data="
  160. {
  161. 'status': ok,
  162. 'code': '0000',
  163. 'info' : ['CR平片','CR造影']
  164. }
  165. *")
  166. **/
  167. public function exam_sub_class(){
  168. $exam_subclass = DB::table('exam_subclass')->cache(300)->select();
  169. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_subclass]);
  170. }
  171. /**
  172. * 检查部位
  173. *
  174. * @ApiTitle (检查部位)
  175. * @ApiSummary (检查部位)
  176. * @ApiSector (远程诊断)
  177. * @ApiMethod (POST)
  178. * @ApiRoute (/inter/inspectregister/bodypart)
  179. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  180. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  181. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  182. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  183. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  184. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  185. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  186. * @ApiReturn (data="
  187. {
  188. 'status': ok,
  189. 'code': '0000',
  190. 'info' : ['头部','腿部']
  191. }
  192. *")
  193. **/
  194. public function bodypart(){
  195. $bodypart = DB::table('bodypart')->cache(300)->select();
  196. return json_encode(['status'=>'ok','code'=>'0000','info'=>$bodypart]);
  197. }
  198. /**
  199. * 检查设备
  200. *
  201. * @ApiTitle (检查设备)
  202. * @ApiSummary (检查设备)
  203. * @ApiSector (远程诊断)
  204. * @ApiMethod (POST)
  205. * @ApiRoute (/inter/inspectregister/device)
  206. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  207. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  208. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  209. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  210. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  211. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  212. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  213. * @ApiReturn (data="
  214. {
  215. 'status': ok,
  216. 'code': '0000',
  217. 'info' : ['西门子']
  218. }
  219. *")
  220. **/
  221. public function device(){
  222. $device = DB::table('device')->where('status',1)->cache(300)->select();
  223. return json_encode(['status'=>'ok','code'=>'0000','info'=>$device]);
  224. }
  225. /**
  226. * 检查项目
  227. *
  228. * @ApiTitle (检查项目)
  229. * @ApiSummary (检查项目)
  230. * @ApiSector (远程诊断)
  231. * @ApiMethod (POST)
  232. * @ApiRoute (/inter/inspectregister/exam_project)
  233. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  234. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  235. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  236. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  237. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  238. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  239. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  240. * @ApiReturn (data="
  241. {
  242. 'status': ok,
  243. 'code': '0000',
  244. 'info' : ['五官颈部','骨关节',]
  245. }
  246. *")
  247. **/
  248. public function exam_project(){
  249. $exam_project = DB::table('exam_project')->cache(300)->select();
  250. return json_encode(['status'=>'ok','code'=>'0000','info'=>$exam_project]);
  251. }
  252. /**
  253. * 执行科室
  254. *
  255. * @ApiTitle (执行科室)
  256. * @ApiSummary (执行科室)
  257. * @ApiSector (远程诊断)
  258. * @ApiMethod (POST)
  259. * @ApiRoute (/inter/inspectregister/department)
  260. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  261. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  262. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  263. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  264. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  265. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  266. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  267. * @ApiReturn (data="
  268. {
  269. 'status': ok,
  270. 'code': '0000',
  271. 'info' : ['内科','外科',]
  272. }
  273. *")
  274. **/
  275. public function department(){
  276. $sessionid = $_REQUEST['sessionid'];
  277. $doctor = Cache::get($sessionid);
  278. $department = DB::table('department')->where('is_report',1)->where('institution_id',$doctor['institution_id'])->cache(300)->select();
  279. return json_encode(['status'=>'ok','code'=>'0000','info'=>$department]);
  280. }
  281. /**
  282. * 预约登记保存
  283. *
  284. * @ApiTitle (预约登记保存)
  285. * @ApiSummary (预约登记保存)
  286. * @ApiSector (远程诊断)
  287. * @ApiMethod (POST)
  288. * @ApiRoute (/inter/inspectregister/save)
  289. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  290. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  291. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  292. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串")
  293. * @ApiParams (name="param", type="string", required=true, description="参数json字符串")
  294. * @ApiParams (name="param[exam_id]", type="string", sample="", description="预约登记exams表id值<必填>")
  295. * @ApiParams (name="param[pnum]", type="string", sample="", description="病历号<必填>")
  296. * @ApiParams (name="param[name]", type="string", sample="", description="患者姓名<选填>")
  297. * @ApiParams (name="param[phone]", type="string", sample="", description="手机号<选填>")
  298. * @ApiParams (name="param[sex]", type="string", sample="", description="性别<选填>")
  299. * @ApiParams (name="param[age]", type="string", sample="", description="年龄<选填>")
  300. * @ApiParams (name="param[card_num]", type="string", sample="", description="身份证号<选填>")
  301. * @ApiParams (name="param[anamnesis]", type="string", sample="", description="既往史<选填>")
  302. * @ApiParams (name="param[family_ill]", type="string", sample="", description="家族史<选填>")
  303. * @ApiParams (name="param[birthday]", type="string", sample="", description="生日<选填>")
  304. * @ApiParams (name="param[checknum]", type="string", sample="", description="检查号<必填>")
  305. * @ApiParams (name="param[checkclass]", type="string", sample="", description="检查类<选填>")
  306. * @ApiParams (name="param[checkchild]", type="string", sample="", description="检查子类<选填>")
  307. * @ApiParams (name="param[body]", type="string", sample="", description="检查部位<选填>")
  308. * @ApiParams (name="param[device]", type="string", sample="", description="检查设备<选填>")
  309. * @ApiParams (name="param[checktime]", type="string", sample="", description="检查时间<选填>")
  310. * @ApiParams (name="param[department]", type="string", sample="", description="检查科室(执行科室)<选填>")
  311. * @ApiParams (name="param[cost]", type="string", sample="", description="实际费用<选填>")
  312. * @ApiParams (name="param[project]", type="string", sample="", description="检查项目<选填>")
  313. * @ApiParams (name="param[illness]", type="string", sample="", description="主诉<选填>")
  314. * @ApiParams (name="param[phys_sign]", type="string", sample="", description="体征<选填>")
  315. * @ApiParams (name="param[clin_symp]", type="string", sample="", description="临床症状<选填>")
  316. * @ApiParams (name="param[remark]", type="string", sample="", description="备注<选填>")
  317. * @ApiParams (name="param[clin_diag]", type="string", sample="", description="临床诊断<选填>")
  318. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  319. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  320. * @ApiReturnParams (name="msg", type="integer", required=true, sample="0", description="返回消息")
  321. * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key")
  322. * @ApiReturn (data="
  323. {
  324. 'status': ok,
  325. 'code': '0000',
  326. 'msg' : '保存成功',
  327. 'sessionid': 'a17z7a7a8f9g9rh9d89jio'
  328. }
  329. *")
  330. **/
  331. public function save(){
  332. try{
  333. log::record('--------数据保存-----------------');
  334. log::record($_REQUEST);
  335. log::record('-------------------------');
  336. // 登记医生 5
  337. $sessionid = Request::instance()->param('sessionid');
  338. $return = Verify::check_role($sessionid,5);
  339. if($return != 1){
  340. return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']);
  341. }
  342. $doctor = Cache::get($sessionid);
  343. $param = $_REQUEST['param'];
  344. Verify::registerCheck($param);
  345. //基本信息
  346. $patient_info = array();
  347. $patient_info['temp_patient_id'] = isset($param['pnum']) ? $param['pnum'] : '';
  348. $patient_info['name'] = isset($param['name']) ? $param['name'] : '';
  349. $patient_info['phone'] = isset($param['phone']) ? $param['phone'] : '';
  350. $patient_info['sex'] = isset($param['sex']) ? $param['sex'] : '';
  351. $patient_info['age'] = isset($param['age']) ? $param['age'] : '';
  352. $patient_info['card_num'] = isset($param['card_num']) ? $param['card_num'] : '';
  353. $exam_info = array();
  354. if(isset($param['anamnesis']) && !empty($param['anamnesis'])){
  355. $ana = implode(',',$param['anamnesis']);
  356. $exam_info['anamnesis'] = $ana;
  357. }
  358. if(isset($param['family_ill']) && !empty($param['family_ill'])){
  359. $fam = implode(',',$param['family_ill']);
  360. $exam_info['family_ill'] = $fam;
  361. }
  362. if(isset($param['birthday']) && !empty($param['birthday'])){
  363. $patient_info['birthday'] = str_replace('-', '', $param['birthday']);
  364. }
  365. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  366. $pid = DB::table('exams')->where('id',$param['exam_id'])->field('patient_id,exam_status')->find();
  367. if($pid['exam_status'] >= 3){
  368. return json_encode(['status'=>'fail','code'=>'1130','msg'=>'已经检查完毕,不允许在此修改']);
  369. }
  370. //存在并且有值 则修改
  371. $patient = DB::table('patient_infos')->where('temp_patient_id',$pid['patient_id'])->update($patient_info);
  372. }else{
  373. $p = DB::table('patient_infos')->where('temp_patient_id',$param['pnum'])->find();
  374. if($p){
  375. return json_encode(['status'=>'fail','code'=>'1030','msg'=>'病历号已存在,请更改']);
  376. }
  377. $patient_info['id'] = UUids::uuid16();
  378. //不存在或者没有值则添加
  379. $patient = DB::table('patient_infos')->insert($patient_info);
  380. $exam_info['patient_id'] = $patient_info['id'];
  381. }
  382. //检查信息和申请信息
  383. $exam_info['id'] = UUIDs::uuid16();
  384. $exam_info['institution_id'] = $doctor['institution_id'];
  385. $exam_info['exam_status'] = 1; // 登记完成
  386. $exam_info['register_datetime'] = date('Y-m-d : H:i:s');
  387. $exam_info['phone'] = $doctor['phone'];
  388. $exam_info['patient_num'] = isset($param['pnum']) ? $param['pnum'] : '';
  389. // $exam_info['hopitalized_no'] = isset($param['hopitalized_no']) ? $param['hopitalized_no'] : '';
  390. // $exam_info['bed_no'] = isset($param['bed_no']) ? $param['bed_no'] : '';
  391. $exam_info['accession_num'] = isset($param['checknum']) ? $param['checknum'] : '';
  392. $exam_info['exam_class'] = isset($param['checkclass']) ? $param['checkclass'] : '';
  393. $exam_info['exam_sub_class'] = isset($param['checkchild']) ? $param['checkchild'] : '';
  394. $exam_info['body_part'] = isset($param['body']) ? $param['body'] : '';
  395. $exam_info['device'] = isset($param['device']) ? $param['device'] : '';
  396. if(isset($param['checktime']) && !empty($param['checktime'])){
  397. $exam_info['exam_datetime'] = str_replace('-', '', $param['checktime']);
  398. }
  399. $exam_info['dept_id'] = isset($param['department']) ? $param['department'] : '';
  400. $exam_info['charge'] = isset($param['cost']) ? $param['cost'] : '';
  401. $exam_info['exam_project'] = isset($param['project']) ? $param['project'] : '';
  402. $exam_info['illness_desc'] = isset($param['illness']) ? $param['illness'] : '';
  403. $exam_info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  404. $exam_info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  405. $exam_info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  406. $exam_info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  407. $exam_info['register'] = $doctor['id'];
  408. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  409. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  410. $exam = DB::table('exams')->where('id',$param['exam_id'])->update($exam_info);
  411. }else{
  412. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  413. $exam = DB::table('exams')->insert($exam_info);
  414. }
  415. return json_encode(['status'=>'ok','code'=>'0000','msg'=>'保存成功','sessionid'=>$sessionid]);
  416. }catch(\Exception $e ){
  417. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  418. }
  419. }
  420. /**
  421. * 生成病历号
  422. *
  423. * @ApiTitle (生成病历号)
  424. * @ApiSummary (生成病历号)
  425. * @ApiSector (远程诊断)
  426. * @ApiMethod (POST)
  427. * @ApiRoute (/inter/inspectregister/build_patient_num)
  428. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  429. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  430. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  431. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  432. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  433. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  434. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  435. * @ApiReturn (data="
  436. {
  437. 'status': ok,
  438. 'code': '0000',
  439. 'info' : 'P1810250010'
  440. }
  441. *")
  442. **/
  443. public function build_patient_num(){
  444. $sessionid = $_REQUEST['sessionid'];
  445. if(Cache::get('P_'.$sessionid)){
  446. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get('P_'.$sessionid)]);
  447. }
  448. $num = $this->getNum('P');
  449. Cache::set('P_'.$sessionid,$num,5);
  450. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  451. }
  452. /**
  453. * 生成检查号
  454. *
  455. * @ApiTitle (生成检查号)
  456. * @ApiSummary (生成检查号)
  457. * @ApiSector (远程诊断)
  458. * @ApiMethod (POST)
  459. * @ApiRoute (/inter/inspectregister/build_check_num)
  460. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  461. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  462. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  463. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  464. * @ApiParams (name="check_class", type="string", required=true, description="检查类")
  465. * @ApiParams (name="pnum", type="string", required=true, description="病历号")
  466. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  467. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  468. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  469. * @ApiReturn (data="
  470. {
  471. 'status': ok,
  472. 'code': '0000',
  473. 'info' : 'CT1810250010'
  474. }
  475. *")
  476. **/
  477. public function build_check_num(){
  478. $sessionid = $_REQUEST['sessionid'];
  479. $front = $_REQUEST['check_class'];
  480. $pnum = $_REQUEST['pnum'];
  481. if(Cache::get($front.'_'.$pnum)){
  482. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$pnum)]);
  483. }
  484. if(Cache::get($front.'_'.$sessionid)){
  485. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$sessionid)]);
  486. }
  487. $cname = DB::table('constant')->where('id',$front)->cache(300)->field('constant_value as name')->find();
  488. $num = $this->getNum($cname['name']);
  489. Cache::set($front.'_'.$sessionid,$num,5);
  490. Cache::set($front.'_'.$pnum,$num,600);
  491. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  492. }
  493. public function getNum($head){
  494. if(!Cache::get('lock')){
  495. //没有锁
  496. Cache::set('lock','11');
  497. $date = $head.date('ymd',time());
  498. if(!Cache::get($date)){
  499. Cache::set($date,1,86400);
  500. $datenum = 1;
  501. }else{
  502. //自增
  503. Cache::inc($date);
  504. $datenum = Cache::get($date);
  505. }
  506. $dnum = '';
  507. switch(strlen($datenum)){
  508. case 1:
  509. $dnum = $date.'000'.$datenum;
  510. break;
  511. case 2:
  512. $dnum = $date.'00'.$datenum;
  513. break;
  514. case 3:
  515. $dnum = $date.'0'.$datenum;
  516. break;
  517. default:
  518. $dnum =$date.$datenum;
  519. break;
  520. }
  521. Cache::rm('lock');
  522. return $dnum;
  523. }else{
  524. //当接口被其他人占用时 调用自身重新获取字符串
  525. sleep(1);
  526. self::getNum();
  527. }
  528. }
  529. /**
  530. * 家族病史
  531. *
  532. * @ApiTitle (家族病史)
  533. * @ApiSummary (家族病史)
  534. * @ApiSector (远程诊断)
  535. * @ApiMethod (POST)
  536. * @ApiRoute (/inter/inspectregister/family_ill)
  537. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  538. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  539. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  540. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  541. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  542. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  543. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  544. * @ApiReturn (data="
  545. {
  546. 'status': ok,
  547. 'code': '0000',
  548. 'info' : ['头疼','通风']
  549. }
  550. *")
  551. **/
  552. public function family_ill(){
  553. $family_ill = DB::table('constant')->where('parent_id','family_ill')->cache(300)->field('constant_key,constant_value')->select();
  554. return json_encode(['status'=>'ok','code'=>'0000','info'=>$family_ill]);
  555. }
  556. /**
  557. * 疾病史
  558. *
  559. * @ApiTitle (疾病史)
  560. * @ApiSummary (疾病史)
  561. * @ApiSector (远程诊断)
  562. * @ApiMethod (POST)
  563. * @ApiRoute (/inter/inspectregister/illness)
  564. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  565. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  566. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  567. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  568. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  569. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  570. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  571. * @ApiReturn (data="
  572. {
  573. 'status': ok,
  574. 'code': '0000',
  575. 'info' : [头疼','中风']
  576. }
  577. *")
  578. **/
  579. public function illness(){
  580. $illness = DB::table('constant')->where('parent_id','illness')->cache(300)->field('constant_key,constant_value')->select();
  581. return json_encode(['status'=>'ok','code'=>'0000','info'=>$illness]);
  582. }
  583. }