Inspectregister.php 35 KB

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