Inspectregister.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610
  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'])->field('id','department_name')->select();
  49. $info['department'] = $department;
  50. // 机构
  51. $doctor_department = DB::table('department')->where('id',$doctor['department_id'])->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('institution_id',$doctor['institution_id'])->field('id,department_name')->select();
  286. return json_encode(['status'=>'ok','code'=>'0000','info'=>$department]);
  287. }
  288. public function doctors()
  289. {
  290. $param = $_REQUEST['param'];
  291. $doctor = DB::table('doctors')->where('department_id',$param['id'])->field('realname')->select();
  292. return $doctor;
  293. }
  294. /**
  295. * 预约登记保存
  296. *
  297. * @ApiTitle (预约登记保存)
  298. * @ApiSummary (预约登记保存)
  299. * @ApiSector (远程诊断)
  300. * @ApiMethod (POST)
  301. * @ApiRoute (/inter/inspectregister/save)
  302. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  303. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  304. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  305. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串")
  306. * @ApiParams (name="param", type="string", required=true, description="参数json字符串")
  307. * @ApiParams (name="param[exam_id]", type="string", sample="", description="预约登记exams表id值<必填>")
  308. * @ApiParams (name="param[pnum]", type="string", sample="", description="病历号<必填>")
  309. * @ApiParams (name="param[name]", type="string", sample="", description="患者姓名<选填>")
  310. * @ApiParams (name="param[phone]", type="string", sample="", description="手机号<选填>")
  311. * @ApiParams (name="param[sex]", type="string", sample="", description="性别<选填>")
  312. * @ApiParams (name="param[age]", type="string", sample="", description="年龄<选填>")
  313. * @ApiParams (name="param[card_num]", type="string", sample="", description="身份证号<选填>")
  314. * @ApiParams (name="param[anamnesis]", type="string", sample="", description="既往史<选填>")
  315. * @ApiParams (name="param[family_ill]", type="string", sample="", description="家族史<选填>")
  316. * @ApiParams (name="param[birthday]", type="string", sample="", description="生日<选填>")
  317. * @ApiParams (name="param[checknum]", type="string", sample="", description="检查号<必填>")
  318. * @ApiParams (name="param[checkclass]", type="string", sample="", description="检查类<选填>")
  319. * @ApiParams (name="param[checkchild]", type="string", sample="", description="检查子类<选填>")
  320. * @ApiParams (name="param[body]", type="string", sample="", description="检查部位<选填>")
  321. * @ApiParams (name="param[device]", type="string", sample="", description="检查设备<选填>")
  322. * @ApiParams (name="param[checktime]", type="string", sample="", description="检查时间<选填>")
  323. * @ApiParams (name="param[department]", type="string", sample="", description="检查科室(执行科室)<选填>")
  324. * @ApiParams (name="param[cost]", type="string", sample="", description="实际费用<选填>")
  325. * @ApiParams (name="param[project]", type="string", sample="", description="检查项目<选填>")
  326. * @ApiParams (name="param[illness]", type="string", sample="", description="主诉<选填>")
  327. * @ApiParams (name="param[phys_sign]", type="string", sample="", description="体征<选填>")
  328. * @ApiParams (name="param[clin_symp]", type="string", sample="", description="临床症状<选填>")
  329. * @ApiParams (name="param[remark]", type="string", sample="", description="备注<选填>")
  330. * @ApiParams (name="param[clin_diag]", type="string", sample="", description="临床诊断<选填>")
  331. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  332. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  333. * @ApiReturnParams (name="msg", type="integer", required=true, sample="0", description="返回消息")
  334. * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key")
  335. * @ApiReturn (data="
  336. {
  337. 'status': ok,
  338. 'code': '0000',
  339. 'msg' : '保存成功',
  340. 'sessionid': 'a17z7a7a8f9g9rh9d89jio'
  341. }
  342. *")
  343. **/
  344. public function save(){
  345. try{
  346. log::record('--------数据保存-----------------');
  347. log::record($_REQUEST);
  348. log::record('-------------------------');
  349. // 登记医生 5
  350. $sessionid = Request::instance()->param('sessionid');
  351. $return = Verify::check_role($sessionid,5);
  352. if($return != 1){
  353. return json_encode(['status'=>'fail','code'=>'1029','msg'=>'没有操作权限']);
  354. }
  355. $doctor = Cache::get($sessionid);
  356. $param = $_REQUEST['param'];
  357. Verify::registerCheck($param);
  358. //基本信息
  359. $patient_info = array();
  360. $patient_info['temp_patient_id'] = isset($param['pnum']) ? $param['pnum'] : '';
  361. $patient_info['name'] = isset($param['name']) ? $param['name'] : '';
  362. $patient_info['phone'] = isset($param['phone']) ? $param['phone'] : '';
  363. $patient_info['sex'] = isset($param['sex']) ? $param['sex'] : '';
  364. $patient_info['age'] = isset($param['age']) ? $param['age'] : '';
  365. $patient_info['card_num'] = isset($param['card_num']) ? $param['card_num'] : '';
  366. $exam_info = array();
  367. if(isset($param['anamnesis']) && !empty($param['anamnesis'])){
  368. $ana = implode(',',$param['anamnesis']);
  369. $exam_info['anamnesis'] = $ana;
  370. }
  371. if(isset($param['family_ill']) && !empty($param['family_ill'])){
  372. $fam = implode(',',$param['family_ill']);
  373. $exam_info['family_ill'] = $fam;
  374. }
  375. if(isset($param['birthday']) && !empty($param['birthday'])){
  376. $patient_info['birthday'] = str_replace('-', '', $param['birthday']);
  377. }
  378. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  379. $pid = DB::table('exams')->where('id',$param['exam_id'])->field('patient_id,exam_status')->find();
  380. /*if($pid['exam_status'] >= 3){
  381. return json_encode(['status'=>'fail','code'=>'1130','msg'=>'已经检查完毕,不允许在此修改']);
  382. }*/
  383. //存在并且有值 则修改
  384. $patient = DB::table('patient_infos')->where('temp_patient_id',$pid['patient_id'])->update($patient_info);
  385. }else{
  386. $p = DB::table('patient_infos')->where('temp_patient_id',$param['pnum'])->find();
  387. if($p){
  388. return json_encode(['status'=>'fail','code'=>'1030','msg'=>'病历号已存在,请更改']);
  389. }
  390. $patient_info['id'] = UUids::uuid16();
  391. //不存在或者没有值则添加
  392. $patient = DB::table('patient_infos')->insert($patient_info);
  393. $exam_info['patient_id'] = $patient_info['id'];
  394. }
  395. //检查信息和申请信息
  396. $exam_info['id'] = UUIDs::uuid16();
  397. $exam_info['institution_id'] = $doctor['institution_id'];
  398. $exam_info['exam_status'] = 1; // 登记完成
  399. $exam_info['register_datetime'] = date('Y-m-d : H:i:s');
  400. $exam_info['phone'] = $doctor['phone'];
  401. $exam_info['patient_num'] = isset($param['pnum']) ? $param['pnum'] : '';
  402. // $exam_info['hopitalized_no'] = isset($param['hopitalized_no']) ? $param['hopitalized_no'] : '';
  403. // $exam_info['bed_no'] = isset($param['bed_no']) ? $param['bed_no'] : '';
  404. $exam_info['accession_num'] = isset($param['checknum']) ? $param['checknum'] : '';
  405. $exam_info['exam_class'] = isset($param['checkclass']) ? $param['checkclass'] : '';
  406. $exam_info['exam_sub_class'] = isset($param['checkchild']) ? $param['checkchild'] : '';
  407. $exam_info['body_part'] = isset($param['body']) ? $param['body'] : '';
  408. $exam_info['device'] = isset($param['device']) ? $param['device'] : '';
  409. if(isset($param['checktime']) && !empty($param['checktime'])){
  410. $exam_info['exam_datetime'] = str_replace('-', '', $param['checktime']);
  411. }
  412. $exam_info['dept_id'] = isset($param['department']) ? $param['department'] : '';
  413. $exam_info['charge'] = isset($param['cost']) ? $param['cost'] : '';
  414. $exam_info['exam_project'] = isset($param['project']) ? $param['project'] : '';
  415. $exam_info['illness_desc'] = isset($param['illness']) ? $param['illness'] : '';
  416. $exam_info['phys_sign'] = isset($param['phys_sign']) ? $param['phys_sign'] : '';
  417. $exam_info['clin_symp'] = isset($param['clin_symp']) ? $param['clin_symp'] : '';
  418. $exam_info['remark'] = isset($param['remark']) ? $param['remark'] : '';
  419. $exam_info['clin_diag'] = isset($param['clin_diag']) ? $param['clin_diag'] : '';
  420. $exam_info['register'] = $doctor['id'];
  421. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  422. $exam_info['application_department'] = isset($param['application_department']) ? $param['application_department'] : '';
  423. $exam_info['application_doctor'] = isset($param['application_doctor']) ? $param['application_doctor'] : '';
  424. if(isset($param['exam_id']) && !empty($param['exam_id'])){
  425. $exam = DB::table('exams')->where('id',$param['exam_id'])->update($exam_info);
  426. }else{
  427. $exam_info['createdAt'] = date('Y-m-d H:i:s',time());
  428. $exam = DB::table('exams')->insert($exam_info);
  429. }
  430. return json_encode(['status'=>'ok','code'=>'0000','msg'=>'保存成功','sessionid'=>$sessionid]);
  431. }catch(\Exception $e ){
  432. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  433. }
  434. }
  435. /**
  436. * 生成病历号
  437. *
  438. * @ApiTitle (生成病历号)
  439. * @ApiSummary (生成病历号)
  440. * @ApiSector (远程诊断)
  441. * @ApiMethod (POST)
  442. * @ApiRoute (/inter/inspectregister/build_patient_num)
  443. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  444. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  445. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  446. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  447. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  448. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  449. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  450. * @ApiReturn (data="
  451. {
  452. 'status': ok,
  453. 'code': '0000',
  454. 'info' : 'P1810250010'
  455. }
  456. *")
  457. **/
  458. public function build_patient_num(){
  459. $sessionid = $_REQUEST['sessionid'];
  460. if(Cache::get('P_'.$sessionid)){
  461. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get('P_'.$sessionid)]);
  462. }
  463. $num = $this->getNum('P');
  464. Cache::set('P_'.$sessionid,$num,5);
  465. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  466. }
  467. /**
  468. * 生成检查号
  469. *
  470. * @ApiTitle (生成检查号)
  471. * @ApiSummary (生成检查号)
  472. * @ApiSector (远程诊断)
  473. * @ApiMethod (POST)
  474. * @ApiRoute (/inter/inspectregister/build_check_num)
  475. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  476. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  477. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  478. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  479. * @ApiParams (name="check_class", type="string", required=true, description="检查类")
  480. * @ApiParams (name="pnum", type="string", required=true, description="病历号")
  481. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  482. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  483. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  484. * @ApiReturn (data="
  485. {
  486. 'status': ok,
  487. 'code': '0000',
  488. 'info' : 'CT1810250010'
  489. }
  490. *")
  491. **/
  492. public function build_check_num(){
  493. $sessionid = $_REQUEST['sessionid'];
  494. $front = $_REQUEST['check_class'];
  495. $pnum = $_REQUEST['pnum'];
  496. if(Cache::get($front.'_'.$pnum)){
  497. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$pnum)]);
  498. }
  499. if(Cache::get($front.'_'.$sessionid)){
  500. return json_encode(['status'=>'ok','code'=>'0000','info'=>Cache::get($front.'_'.$sessionid)]);
  501. }
  502. $cname = DB::table('constant')->where('id',$front)->cache(300)->field('constant_value as name')->find();
  503. $num = $this->getNum($cname['name']);
  504. Cache::set($front.'_'.$sessionid,$num,5);
  505. Cache::set($front.'_'.$pnum,$num,600);
  506. return json_encode(['status'=>'ok','code'=>'0000','info'=>$num]);
  507. }
  508. public function getNum($head){
  509. if(!Cache::get('lock')){
  510. //没有锁
  511. Cache::set('lock','11');
  512. $date = $head.date('ymd',time());
  513. if(!Cache::get($date)){
  514. Cache::set($date,1,86400);
  515. $datenum = 1;
  516. }else{
  517. //自增
  518. Cache::inc($date);
  519. $datenum = Cache::get($date);
  520. }
  521. $dnum = '';
  522. switch(strlen($datenum)){
  523. case 1:
  524. $dnum = $date.'000'.$datenum;
  525. break;
  526. case 2:
  527. $dnum = $date.'00'.$datenum;
  528. break;
  529. case 3:
  530. $dnum = $date.'0'.$datenum;
  531. break;
  532. default:
  533. $dnum =$date.$datenum;
  534. break;
  535. }
  536. Cache::rm('lock');
  537. return $dnum;
  538. }else{
  539. //当接口被其他人占用时 调用自身重新获取字符串
  540. sleep(1);
  541. self::getNum();
  542. }
  543. }
  544. /**
  545. * 家族病史
  546. *
  547. * @ApiTitle (家族病史)
  548. * @ApiSummary (家族病史)
  549. * @ApiSector (远程诊断)
  550. * @ApiMethod (POST)
  551. * @ApiRoute (/inter/inspectregister/family_ill)
  552. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  553. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  554. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  555. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  556. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  557. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  558. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  559. * @ApiReturn (data="
  560. {
  561. 'status': ok,
  562. 'code': '0000',
  563. 'info' : ['头疼','通风']
  564. }
  565. *")
  566. **/
  567. public function family_ill(){
  568. $family_ill = DB::table('constant')->where('parent_id','family_ill')->cache(300)->field('constant_key,constant_value')->select();
  569. return json_encode(['status'=>'ok','code'=>'0000','info'=>$family_ill]);
  570. }
  571. /**
  572. * 疾病史
  573. *
  574. * @ApiTitle (疾病史)
  575. * @ApiSummary (疾病史)
  576. * @ApiSector (远程诊断)
  577. * @ApiMethod (POST)
  578. * @ApiRoute (/inter/inspectregister/illness)
  579. * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
  580. * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
  581. * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
  582. * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串,缓存的数据key")
  583. * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
  584. * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
  585. * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
  586. * @ApiReturn (data="
  587. {
  588. 'status': ok,
  589. 'code': '0000',
  590. 'info' : [头疼','中风']
  591. }
  592. *")
  593. **/
  594. public function illness(){
  595. $illness = DB::table('constant')->where('parent_id','illness')->cache(300)->field('constant_key,constant_value')->select();
  596. return json_encode(['status'=>'ok','code'=>'0000','info'=>$illness]);
  597. }
  598. }