From ddc4c425711f1e3246eb0e5f5cf939b2faf3bcdf Mon Sep 17 00:00:00 2001 From: wh <382379437@qq.com> Date: Thu, 1 Aug 2024 22:07:01 +0800 Subject: [PATCH] fixed --- .../api/controller/H5userbaseinfo.php | 110 ++++++ .../api/controller/Hdrmedicalreport.php | 87 +++++ .../api/controller/Hdrquestionnaireanswer.php | 83 +++++ .../controller/Hdrquestionnairequestion.php | 94 +++++ .../application/api/controller/Reporttt.php | 3 + .../application/api/controller/Reportty.php | 133 ++++--- .../application/api/logic/TychatLogic.php | 13 +- .../application/common/model/TabConf.php | 16 +- digital_doctor/public/api_docs/api_list.html | 348 ++++++++++++++++-- digital_doctor/public/api_docs/api_list.md | 209 ++++++++++- .../admin/controller/tt/Followup.php | 4 +- 11 files changed, 1002 insertions(+), 98 deletions(-) create mode 100644 digital_doctor/application/api/controller/H5userbaseinfo.php create mode 100644 digital_doctor/application/api/controller/Hdrmedicalreport.php create mode 100644 digital_doctor/application/api/controller/Hdrquestionnaireanswer.php create mode 100644 digital_doctor/application/api/controller/Hdrquestionnairequestion.php diff --git a/digital_doctor/application/api/controller/H5userbaseinfo.php b/digital_doctor/application/api/controller/H5userbaseinfo.php new file mode 100644 index 0000000..45d5761 --- /dev/null +++ b/digital_doctor/application/api/controller/H5userbaseinfo.php @@ -0,0 +1,110 @@ +input()]); + $api_desc = '新增h5问诊用户基本信息'; + Db::startTrans(); + try { + + $doctor = input('doctor'); + if(empty($doctor)){ + return json(Tools::set_fail('参数错误.0')); + } + + $name = input('name'); + if(empty($name)){ + return json(Tools::set_fail('参数错误.1')); + } + + $gender = input('gender'); + $age = input('age'); + $edu = input('edu'); + $career_year = input('career_year'); + $power = input('power'); + $satisfaction = input('satisfaction'); + $old_career_year = input('old_career_year'); + $support = input('support'); + $marriage = input('marriage'); + $live = input('live'); + $home = input('home'); + $address = input('address'); + $phone = input('phone'); + if(empty($phone)){ + return json(Tools::set_fail('参数错误.14')); + } + + $wechat_no = input('wechat_no'); + + $data = [ + 'doctor'=>$doctor?:'', + 'name'=>$name?:'', + 'gender'=>$gender?:'', + 'age'=>$age?:'', + 'edu'=>$edu?:'', + 'career_year'=>$career_year?:'', + 'power'=>$power?:'', + 'satisfaction'=>$satisfaction?:'', + 'old_career_year'=>$old_career_year?:'', + 'support'=>$support?:'', + 'marriage'=>$marriage?:'', + 'live'=>$live?:'', + 'home'=>$home?:'', + 'address'=>$address?:'', + 'phone'=>$phone?:'', + 'wechat_no'=>$wechat_no?:'', + ]; + + + $dataid = Db::table(TabConf::$fa_h5userbaseinfo)->insertGetId($data); + + $this->operateLog('新增h5问诊用户基本信息',api_user_info('id')); + Db::commit(); + return json(Tools::set_ok('ok',$dataid)); + }catch (\Exception $e){ + Db::rollback(); + Tools::log_to_write_txt([ + 'error'=>'新增h5问诊用户基本信息.异常.'.$e->getMessage(), + 'input'=>input(), + 'error_info'=>$e->getTraceAsString() + ]); + return json(Tools::set_fail()); + } + } + + +} \ No newline at end of file diff --git a/digital_doctor/application/api/controller/Hdrmedicalreport.php b/digital_doctor/application/api/controller/Hdrmedicalreport.php new file mode 100644 index 0000000..74079f9 --- /dev/null +++ b/digital_doctor/application/api/controller/Hdrmedicalreport.php @@ -0,0 +1,87 @@ +input()]); + $api_desc = '新增问诊报告存档(疼痛科、听译、h5问诊统一存放)(一个基本信息对应一个报告)'; + Db::startTrans(); + try { + + $userbaseid = input('userbaseid'); + if(empty($userbaseid)){ + return json(Tools::set_fail('参数错误.0')); + } + + $doctor = input('doctor'); + if(empty($doctor)){ + return json(Tools::set_fail('参数错误.1')); + } + + $username = input('username'); + $report_content = input('report_content'); + $name = input('name'); + if(empty($name)){ + return json(Tools::set_fail('参数错误.4')); + } + + $phone = input('phone'); + if(empty($phone)){ + return json(Tools::set_fail('参数错误.5')); + } + + $gender = input('gender'); + + $data = [ + 'userbaseid'=>$userbaseid?:'', + 'doctor'=>$doctor?:'', + 'username'=>$username?:'', + 'report_content'=>$report_content?:'', + 'name'=>$name?:'', + 'phone'=>$phone?:'', + 'gender'=>$gender?:'', + ]; + + + $dataid = Db::table(TabConf::$fa_hdrmedical_report)->insertGetId($data); + + $this->operateLog('新增问诊报告存档(疼痛科、听译、h5问诊统一存放)(一个基本信息对应一个报告)',api_user_info('id')); + Db::commit(); + return json(Tools::set_ok('ok',$dataid)); + }catch (\Exception $e){ + Db::rollback(); + Tools::log_to_write_txt([ + 'error'=>'新增问诊报告存档(疼痛科、听译、h5问诊统一存放)(一个基本信息对应一个报告).异常.'.$e->getMessage(), + 'input'=>input(), + 'error_info'=>$e->getTraceAsString() + ]); + return json(Tools::set_fail()); + } + } + + +} \ No newline at end of file diff --git a/digital_doctor/application/api/controller/Hdrquestionnaireanswer.php b/digital_doctor/application/api/controller/Hdrquestionnaireanswer.php new file mode 100644 index 0000000..170644f --- /dev/null +++ b/digital_doctor/application/api/controller/Hdrquestionnaireanswer.php @@ -0,0 +1,83 @@ +(可能有部分额外字段未在此体现): + * id ID + * hdrquestionnairequestion_id 问卷问题ID + * answer 问卷答案 + * create_time 创建时间 + * update_time 更新时间 + + * author:wh + */ + function getHdrquestionnaireanswerList(){ + Tools::log_to_write_txt(['获取科室问卷答案 入参:'=>input()]); + $api_desc = '获取科室问卷答案'; + try { + + $id = input('id'); + $hdrquestionnairequestion_id = input('hdrquestionnairequestion_id'); + $answer = input('answer'); + $create_time = input('create_time'); + + + $model_obj = Db::table(TabConf::$fa_hdrquestionnaireanswer); + + if(input('answer')){ + $model_obj->whereLike('answer','%'.input('answer').'%'); + } + + if(input('id')){ + $model_obj->where('id',input('id')); + } + if(input('hdrquestionnairequestion_id')){ + $model_obj->where('hdrquestionnairequestion_id',input('hdrquestionnairequestion_id')); + } + if(input('create_time')){ + $model_obj->where('create_time',input('create_time')); + } + $data = $model_obj->select(); + if(empty($data)){ + return json(Tools::set_ok('ok',$data)); + } + + + + + + return json(Tools::set_ok('ok',$data)); + }catch(\Exception $e){ + Tools::log_to_write_txt([ + 'error'=>'获取科室问卷答案.异常.'.$e->getMessage(), + '参数'=>input(), + 'error_info'=>$e->getTraceAsString() + ]); + return json(Tools::set_res(500,'操作异常',[])); + } + } + +} \ No newline at end of file diff --git a/digital_doctor/application/api/controller/Hdrquestionnairequestion.php b/digital_doctor/application/api/controller/Hdrquestionnairequestion.php new file mode 100644 index 0000000..53b529b --- /dev/null +++ b/digital_doctor/application/api/controller/Hdrquestionnairequestion.php @@ -0,0 +1,94 @@ +(可能有部分额外字段未在此体现): + * id ID + * hdrdepartment_id 所属科室 + * question 问卷问题 + * fit_sex 适合对象:all=全部,gg=男,mm=女 + * create_time 创建时间 + * update_time 更新时间 + + * author:wh + */ + function getHdrquestionnairequestionList(){ + Tools::log_to_write_txt(['获取科室问卷问题(一个问题对应多个答案) 入参:'=>input()]); + $api_desc = '获取科室问卷问题(一个问题对应多个答案)'; + try { + + $id = input('id'); + $hdrdepartment_id = input('hdrdepartment_id'); + $question = input('question'); + $fit_sex = input('fit_sex'); + $create_time = input('create_time'); + $update_time = input('update_time'); + + + $model_obj = Db::table(TabConf::$fa_hdrquestionnairequestion); + + if(input('question')){ + $model_obj->whereLike('question','%'.input('question').'%'); + } + + if(input('id')){ + $model_obj->where('id',input('id')); + } + if(input('hdrdepartment_id')){ + $model_obj->where('hdrdepartment_id',input('hdrdepartment_id')); + } + if(input('fit_sex')){ + $model_obj->where('fit_sex',input('fit_sex')); + } + if(input('create_time')){ + $model_obj->where('create_time',input('create_time')); + } + if(input('update_time')){ + $model_obj->where('update_time',input('update_time')); + } + $data = $model_obj->select(); + if(empty($data)){ + return json(Tools::set_ok('ok',$data)); + } + + + + + + return json(Tools::set_ok('ok',$data)); + }catch(\Exception $e){ + Tools::log_to_write_txt([ + 'error'=>'获取科室问卷问题(一个问题对应多个答案).异常.'.$e->getMessage(), + '参数'=>input(), + 'error_info'=>$e->getTraceAsString() + ]); + return json(Tools::set_res(500,'操作异常',[])); + } + } + +} \ No newline at end of file diff --git a/digital_doctor/application/api/controller/Reporttt.php b/digital_doctor/application/api/controller/Reporttt.php index 7e9245d..a397e62 100644 --- a/digital_doctor/application/api/controller/Reporttt.php +++ b/digital_doctor/application/api/controller/Reporttt.php @@ -80,6 +80,7 @@ class Reporttt 'address'=>input('address',''),//地址 'phone'=>input('phone',''),//联系方式 'wechat_no'=>input('wechat_no',''),//微信号 + 'form'=>'num_per' ]; $contentstr = input('content'); @@ -156,6 +157,8 @@ class Reporttt $DATAID = Db::table('fa_tt_userbaseinfo')->insert($basedata); $item['userbaseid'] = $DATAID; Db::table('fa_tt_medical_report')->insert($item); + //统一存档 + Db::table(TabConf::$fa_hdrmedical_report)->insert($item); } Db::commit(); diff --git a/digital_doctor/application/api/controller/Reportty.php b/digital_doctor/application/api/controller/Reportty.php index dda878d..2dbeea6 100644 --- a/digital_doctor/application/api/controller/Reportty.php +++ b/digital_doctor/application/api/controller/Reportty.php @@ -9,6 +9,7 @@ namespace app\api\controller; +use app\common\model\TabConf; use GatewayWorker\Lib\Gateway; use think\Db; use wanghua\general_utility_tools_php\gpt\chat\ChatGPT; @@ -47,23 +48,23 @@ class Reportty $answer_json_arr = []; - //$ticket = input('ticket'); - //if(empty($ticket)){ - // return json(Tools::set_fail('ticket必须')); - //} + $ticket = input('ticket'); + if(empty($ticket)){ + return json(Tools::set_fail('ticket必须')); + } $username = input('username'); if(empty($username)){ return json(Tools::set_fail('username必须')); } $user = Db::table('fa_ty_users')->where('username',$username)->find(); if(empty($user)){ - return json(Tools::set_fail('用户不存在')); + return json(Tools::set_fail('医生不存在')); } //查询历史聊天记录 //$day3 = date('Y-m-d 00:00:00',strtotime('-3 day')); $his_record = Db::table('fa_ty_chathistory') - ->where('username',$user['username']) + ->where('ticket',$ticket) ->order('id asc') //->where('createtime','>',$day3)//3天之内 ->select(); @@ -73,24 +74,21 @@ class Reportty $content = [ //["role" => "user", "content" => ''] ]; - $baseuser = []; - //Db::table('fa_ty_userbaseinfo') - //->where('phone',$user['username']) - //->where('name',$user['name']) - //->find(); + //病历 + $medicalrecord = []; - $name = isset($baseuser['name'])?$baseuser['name']:'未知'; - $gender = isset($baseuser['gender'])?$baseuser['gender']:'未知'; - $age = isset($baseuser['age'])?$baseuser['age']:'未知'; - $main_complaint = isset($baseuser['main_complaint'])?$baseuser['main_complaint']:'未知'; - $medical_history = isset($baseuser['medical_history'])?$baseuser['medical_history']:'未知'; - $past_history = isset($baseuser['past_history'])?$baseuser['past_history']:'未知'; - $allergy_history = isset($baseuser['allergy_history'])?$baseuser['allergy_history']:'未知'; - $family_history = isset($baseuser['family_history'])?$baseuser['family_history']:'未知'; - $personal_history = isset($baseuser['personal_history'])?$baseuser['personal_history']:'未知'; - $menstrual_marital_history = isset($baseuser['menstrual_marital_history'])?$baseuser['menstrual_marital_history']:'未知'; - $diagnosis = isset($baseuser['diagnosis'])?$baseuser['diagnosis']:'未知'; - $treatment = isset($baseuser['treatment'])?$baseuser['treatment']:'未知'; + $name = isset($medicalrecord['name'])?$medicalrecord['name']:'未知'; + $gender = isset($medicalrecord['gender'])?$medicalrecord['gender']:'未知'; + $age = isset($medicalrecord['age'])?$medicalrecord['age']:'未知'; + $main_complaint = isset($medicalrecord['main_complaint'])?$medicalrecord['main_complaint']:'未知'; + $medical_history = isset($medicalrecord['medical_history'])?$medicalrecord['medical_history']:'未知'; + $past_history = isset($medicalrecord['past_history'])?$medicalrecord['past_history']:'未知'; + $allergy_history = isset($medicalrecord['allergy_history'])?$medicalrecord['allergy_history']:'未知'; + $family_history = isset($medicalrecord['family_history'])?$medicalrecord['family_history']:'未知'; + $personal_history = isset($medicalrecord['personal_history'])?$medicalrecord['personal_history']:'未知'; + $menstrual_marital_history = isset($medicalrecord['menstrual_marital_history'])?$medicalrecord['menstrual_marital_history']:'未知'; + $diagnosis = isset($medicalrecord['diagnosis'])?$medicalrecord['diagnosis']:'未知'; + $treatment = isset($medicalrecord['treatment'])?$medicalrecord['treatment']:'未知'; //构建基本信息 $content[] = ["role" => "user", "content" => '【姓名】:'.$name]; $content[] = ["role" => "user", "content" => '【性别】:'.$gender]; @@ -125,16 +123,20 @@ class Reportty //病人 //'username'=>Db::table('fa_ty_users')->where('doctor',$user['username'])->value('username'), 'report_content'=>$choice['message']['content'], + 'ticket'=>$ticket, ]; $report_id = Db::table('fa_ty_medical_report')->insertGetId($data); + //统一存档 + Db::table(TabConf::$fa_hdrmedical_report)->insert($data); + $res_content[] = ['report_id'=>$report_id,'report_content'=>$choice['message']['content']]; } } //点击生成报告删除历史聊天记录 - Db::table('fa_ty_chathistory') - ->where('username',$user['username']) - ->delete(); + //Db::table('fa_ty_chathistory') + // ->where('username',$user['username']) + // ->delete(); $client_id = input('client_id'); if(empty($client_id)){ @@ -143,12 +145,11 @@ class Reportty //查询广播客户端id $arr = Db::table('fa_device') - ->where('username',$username) - ->where('clientid','neq',$client_id) + ->where('say_ticket',$ticket) ->select(); $clientid_arr = array_column($arr,'clientid'); $json = Tools::wss_json_ok('Reportty/createReport','ok',['flow_code'=>'create_report_end']); - Gateway::sendToAll($json,$clientid_arr); + Gateway::sendToAll($json,$clientid_arr,[$client_id]); return json(Tools::set_ok($res_content)); } @@ -205,14 +206,24 @@ class Reportty */ function editReport(){ return Mmodel::catchJson(function (){ - //$ticket = input('ticket'); - //if(empty($ticket)){ - // return Tools::set_fail('ticket必须'); - //} + $ticket = input('ticket'); + if(empty($ticket)){ + return Tools::set_fail('ticket必须'); + } //$user = Db::table('fa_ty_users')->where('ticket',$ticket)->find(); - //修改基本信息 + + if(empty(input('username'))){ + return Tools::set_fail('医生登录账号必须'); + } + if(empty(input('name',''))){ + return Tools::set_fail('病人姓名必须'); + } + if(empty(input('phone',''))){ + return Tools::set_fail('病人手机号必须'); + } + //听译问诊-患者病历信息 $data = [ - //'username'=>$user['username'],//医生 + 'username'=>input('username'),//医生 'name'=>input('name',''),//病人姓名 'gender'=>input('gender',''),//病人性别: M=男性, F=女性 'age'=>input('age',''),//病人年龄 @@ -225,19 +236,43 @@ class Reportty 'menstrual_marital_history'=>input('menstrual_marital_history',''),//月经婚育史 'diagnosis'=>input('diagnosis',''),//诊断 'treatment'=>input('treatment',''),//医嘱 + 'ticket'=>$ticket ]; - //查询基本信息 - $baseuser = Db::table('fa_ty_userbaseinfo') + //听译问诊-患者病历信息 + $medicalrecord = Db::table('fa_ty_usermedicalrecord') ->where('name',input('name','')) ->find(); - if(empty($baseuser)){ - //新增基本信息 - $userbaseid = Db::table('fa_ty_userbaseinfo')->insertGetId($data); + if(empty($medicalrecord)){ + $data['ticket'] = $ticket; + //新增听译病历信息 + $userbaseid = Db::table('fa_ty_usermedicalrecord')->insertGetId($data); }else{ - $userbaseid = $baseuser['id']; - Db::table('fa_ty_userbaseinfo') - ->where('id',$userbaseid) + $userbaseid = $medicalrecord['id']; + Db::table('fa_ty_usermedicalrecord') + ->where('ticket',$ticket) + ->update($data); + } + //新增统一基本信息 + $base_data = [ + 'doctor'=>input('username'), + 'form'=>'ty', + 'name'=>input('name',''), + 'gender'=>input('gender',''),//病人性别: M=男性, F=女性 + 'age'=>input('age',''),//病人年龄 + 'phone'=>input('phone',''), + ]; + $baseinfo = Db::table('fa_hdruserbaseinfo') + ->where('ticket',$ticket) + ->find(); + if(empty($baseinfo)){ + $baseinfo['ticket'] = $ticket; + //新增统一基本信息 + Db::table('fa_hdruserbaseinfo') + ->insertGetId($base_data); + }else{ + Db::table('fa_hdruserbaseinfo') + ->where('ticket',$ticket) ->update($data); } @@ -265,6 +300,18 @@ EOF; } Db::table('fa_ty_medical_report') + ->where('id',$dataid) + ->data([ + 'userbaseid'=>$userbaseid,//创建报告的时候这个字段是空,修改报告再补填这个字段 + 'report_content'=>$str, + 'name'=>$data['name'], + 'gender'=>$data['gender'], + ]) + ->update(); + + + //更新统一存档 + Db::table(TabConf::$fa_hdrmedical_report) ->where('id',$dataid) ->data([ 'userbaseid'=>$userbaseid,//创建报告的时候这个字段是空,修改报告再补填这个字段 diff --git a/digital_doctor/application/api/logic/TychatLogic.php b/digital_doctor/application/api/logic/TychatLogic.php index 9d94f05..7463585 100644 --- a/digital_doctor/application/api/logic/TychatLogic.php +++ b/digital_doctor/application/api/logic/TychatLogic.php @@ -90,7 +90,8 @@ class TychatLogic extends BaseLogic $data = [ 'chat_msg'=>$chat_content, 'username'=>$username, - 'type'=>$type//聊天角色 + 'type'=>$type,//聊天角色 + 'ticket'=>$ticket,//对话凭据 ]; Db::table('fa_ty_chathistory')->insert($data); @@ -121,12 +122,12 @@ class TychatLogic extends BaseLogic */ function getChatHistory(){ return Mmodel::catchJson(function (){ - $username = input('username'); - if(empty($username)){ - return Tools::set_fail('参数错误'); + $ticket = input('ticket'); + if(empty($ticket)){ + return Tools::set_fail('ticket参数错误'); } $list = Db::table('fa_ty_chathistory') - ->where('username',$username) + ->where('ticket',$ticket) ->order('id desc') ->select(); return Tools::set_ok('查询成功',$list); @@ -228,7 +229,7 @@ class TychatLogic extends BaseLogic 'phone'=>$data['items']['phone'], 'say_ticket'=>$data['items']['ticket'], ]; - Db::table(TabConf::$fa_dgropen_chat_room_record) + Db::table(TabConf::$fa_hdropen_chat_room_record) ->insert($data); //查询绑定的设备 diff --git a/digital_doctor/application/common/model/TabConf.php b/digital_doctor/application/common/model/TabConf.php index 9fcb8d8..6d1a32c 100644 --- a/digital_doctor/application/common/model/TabConf.php +++ b/digital_doctor/application/common/model/TabConf.php @@ -119,6 +119,12 @@ class TabConf static $fa_hdrdepartment = 'fa_hdrdepartment'; + /** + * 问诊报告存档(疼痛科、听译、h5问诊统一存放)(一个基本信息对应一个报告) + */ + static $fa_hdrmedical_report = 'fa_hdrmedical_report'; + + /** * 打开对话窗口记录(同时向患者端发送当前对话患者信息) */ @@ -155,6 +161,12 @@ class TabConf static $fa_hdrregister = 'fa_hdrregister'; + /** + * 统一问诊用户基本信息 + */ + static $fa_hdruserbaseinfo = 'fa_hdruserbaseinfo'; + + /** * 短信验证码表 */ @@ -228,9 +240,9 @@ class TabConf /** - * 听译-用户基本信息 + * 听译问诊-患者病历信息 */ - static $fa_ty_userbaseinfo = 'fa_ty_userbaseinfo'; + static $fa_ty_usermedicalrecord = 'fa_ty_usermedicalrecord'; /** diff --git a/digital_doctor/public/api_docs/api_list.html b/digital_doctor/public/api_docs/api_list.html index 7f8446c..c7b0926 100644 --- a/digital_doctor/public/api_docs/api_list.html +++ b/digital_doctor/public/api_docs/api_list.html @@ -6,7 +6,243 @@