(可能有部分额外字段未在此体现):
* id ID
* date 日期
* doctor 所属医生
* hdrdepartment_id 科室
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
* name 病人姓名
* gender 病人性别
* age 病人年龄
* edu 教育程度
* career_year 职业及年限
* power 体力要求
* satisfaction 经济满意度
* old_career_year 过往职业及年限
* old_career_power 过往职业体力要求
* support 社会支持度
* marriage 婚姻状况
* live 居住情况
* home 家庭关系
* address 地址
* phone 联系方式
* wechat_no 微信号
* ticket 对话票据(数据隔离)
* create_time 创建时间
* is_flow 是否接受随访:yes=是,no=否
* author:wh
*/
function getHdruserbaseinfoList(){
Tools::log_to_write_txt(['获取统一问诊用户基本信息列表(后台病历管理列表) 入参:'=>input()]);
$api_desc = '获取统一问诊用户基本信息列表(后台病历管理列表)';
try {
$id = input('id');
$date = input('date');
$doctor = input('doctor');
$hdrdepartment_id = input('hdrdepartment_id');
$from = input('from');
$name = input('name');
$model_obj = Db::table(TabConf::$fa_tt_userbaseinfo);
if(input('doctor')){
$model_obj->whereLike('doctor','%'.input('doctor').'%');
}
if(input('id')){
$model_obj->where('id',input('id'));
}
if(input('date')){
$model_obj->where('date',input('date'));
}
if(input('hdrdepartment_id')){
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
}
if(input('from')){
$model_obj->where('from',input('from'));
}
if(input('name')){
$model_obj->where('name',input('name'));
}
$data = $model_obj->paginate(['page'=>input('current_page',1),'list_rows'=>input('list_rows',15)])
->each(function($item, $key){
return $item;
});
// ['total'] => int(30)
// ['per_page'] => int(15)
// ['current_page'] => int(1)
// ['last_page''] => int(2)
$data = $data->toArray();//包含 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,'操作异常',[]));
}
}
/**
* desc:获取统一问诊用户基本信息详情(后台病历管理详情)
*
* api/Hdruserbaseinfo/getHdruserbaseinfoDetailById
*
* 参数:
* id ID ID 必须
*
* 所有字段说明(可能有部分额外字段未在此体现):
* id ID
* date 日期
* doctor 所属医生
* hdrdepartment_id 科室
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
* name 病人姓名
* gender 病人性别
* age 病人年龄
* edu 教育程度
* career_year 职业及年限
* power 体力要求
* satisfaction 经济满意度
* old_career_year 过往职业及年限
* old_career_power 过往职业体力要求
* support 社会支持度
* marriage 婚姻状况
* live 居住情况
* home 家庭关系
* address 地址
* phone 联系方式
* wechat_no 微信号
* ticket 对话票据(数据隔离)
* create_time 创建时间
* is_flow 是否接受随访:yes=是,no=否
* author:wh
*/
function getHdruserbaseinfoDetailById(){
Tools::log_to_write_txt(['获取统一问诊用户基本信息详情(后台病历管理详情) 入参:'=>input()]);
$api_desc = '获取统一问诊用户基本信息详情(后台病历管理详情)';
try {
$id = input('id');
if(empty($id)){
return json(Tools::set_fail('id参数错误'));
}
$model_obj = Db::table(TabConf::$fa_tt_userbaseinfo);
if(input('id')){
$model_obj->where('id',input('id'));
}
$item = $model_obj->find();
$data = $item;
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,'操作异常',[]));
}
}
/**
* 根据id修改统一问诊用户基本信息
* 参数:
* id ID 【必须】
* name 病人姓名
* gender 病人性别
* age 病人年龄
* edu 教育程度
* career_year 职业及年限
* power 体力要求
* satisfaction 经济满意度
* old_career_year 过往职业及年限
* old_career_power 过往职业体力要求
* support 社会支持度
* marriage 婚姻状况
* live 居住情况
* home 家庭关系
* address 地址
* phone 联系方式
* wechat_no 微信号
* api/Hdruserbaseinfo/updateHdruserbaseinfoById
*/
function updateHdruserbaseinfoById(){
Tools::log_to_write_txt(['修改统一问诊用户基本信息'=>input()]);
$api_desc = '修改统一问诊用户基本信息';
Db::startTrans();
try {
$name = input('name');
$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');
$old_career_power = input('old_career_power');
$support = input('support');
$marriage = input('marriage');
$live = input('live');
$home = input('home');
$address = input('address');
$phone = input('phone');
$wechat_no = input('wechat_no');
if(empty(input('id'))){
return json(Tools::set_fail('参数错误。0',['error_msg'=>'错误信息:id错误']));
}
//存在则修改
$data = [];
if($name){
$data['name'] = $name;
}
if($gender){
$data['gender'] = $gender;
}
if($age){
$data['age'] = $age;
}
if($edu){
$data['edu'] = $edu;
}
if($career_year){
$data['career_year'] = $career_year;
}
if($power){
$data['power'] = $power;
}
if($satisfaction){
$data['satisfaction'] = $satisfaction;
}
if($old_career_year){
$data['old_career_year'] = $old_career_year;
}
if($old_career_power){
$data['old_career_power'] = $old_career_power;
}
if($support){
$data['support'] = $support;
}
if($marriage){
$data['marriage'] = $marriage;
}
if($live){
$data['live'] = $live;
}
if($home){
$data['home'] = $home;
}
if($address){
$data['address'] = $address;
}
if($phone){
$data['phone'] = $phone;
}
if($wechat_no){
$data['wechat_no'] = $wechat_no;
}
$hdrdepartment = input('hdrdepartment');
if($hdrdepartment){
$data['hdrdepartment'] = $hdrdepartment;
}
$hdrdepartment_id = input('hdrdepartment_id');
if($hdrdepartment_id){
$data['hdrdepartment_id'] = $hdrdepartment_id;
}
$dataid = Db::table(TabConf::$fa_tt_userbaseinfo)
->data($data)
->where('id',input('id'))
->update();
//$this->operateLog('修改统一问诊用户基本信息',api_user_info('id'));
Db::commit();
return json(Tools::set_ok('ok',$dataid));
}catch (\Exception $e){
Db::rollback();
Tools::log_to_write_txt([
'error'=>'修改统一问诊用户基本信息.异常.'.$e->getMessage(),
'input'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_fail());
}
}
/**
* 新增统一问诊用户基本信息
*
* 参数:
* date 日期 【必须】
* doctor 所属医生 【必须】
* hdrdepartment_id 科室 【必须】
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊,doc_add=医生添加 【必须】
* name 病人姓名 【必须】
* gender 病人性别 【必须】
* age 病人年龄 【必须】
* edu 教育程度
* career_year 职业及年限
* power 体力要求
* satisfaction 经济满意度
* old_career_year 过往职业及年限
* old_career_power 过往职业体力要求
* support 社会支持度
* marriage 婚姻状况
* live 居住情况
* home 家庭关系
* address 地址
* phone 联系方式 【必须】
* wechat_no 微信号
* ticket 对话票据(数据隔离)
* diagnosis 诊断
*/
function addHdruserbaseinfo(){
Tools::log_to_write_txt(['新增统一问诊用户基本信息'=>input()]);
$api_desc = '新增统一问诊用户基本信息';
Db::startTrans();
try {
$date = input('date');
if(empty($date)){
return json(Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:date错误']));
}
$doctor = input('doctor');
if(empty($doctor)){
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:doctor错误']));
}
$hdrdepartment_id = input('hdrdepartment_id');
if(empty($hdrdepartment_id)){
return json(Tools::set_fail('参数错误.2',['error_msg'=>'错误信息:hdrdepartment_id错误']));
}
$from = input('from');
if(empty($from)){
return json(Tools::set_fail('参数错误.3',['error_msg'=>'错误信息:from错误']));
}
$name = input('name');
if(empty($name)){
return json(Tools::set_fail('参数错误.4',['error_msg'=>'错误信息:name错误']));
}
$gender = input('gender');
if(empty($gender)){
return json(Tools::set_fail('参数错误.5',['error_msg'=>'错误信息:gender错误']));
}
$age = input('age');
if(empty($age)){
return json(Tools::set_fail('参数错误.6',['error_msg'=>'错误信息:age错误']));
}
$edu = input('edu');
$career_year = input('career_year');
$power = input('power');
$satisfaction = input('satisfaction');
$old_career_year = input('old_career_year');
$old_career_power = input('old_career_power');
$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('参数错误.18',['error_msg'=>'错误信息:phone错误']));
}
$wechat_no = input('wechat_no');
$ticket = input('ticket');
$diagnosis = input('diagnosis');
$data = [
'date'=>$date?:'',
'doctor'=>$doctor?:'',
'hdrdepartment_id'=>$hdrdepartment_id?:'',
'from'=>$from?:'',
'name'=>$name?:'',
'gender'=>$gender?:'',
'age'=>$age?:'',
'edu'=>$edu?:'',
'career_year'=>$career_year?:'',
'power'=>$power?:'',
'satisfaction'=>$satisfaction?:'',
'old_career_year'=>$old_career_year?:'',
'old_career_power'=>$old_career_power?:'',
'support'=>$support?:'',
'marriage'=>$marriage?:'',
'live'=>$live?:'',
'home'=>$home?:'',
'address'=>$address?:'',
'phone'=>$phone?:'',
'wechat_no'=>$wechat_no?:'',
'ticket'=>$ticket?:'',
'diagnosis'=>$diagnosis?:'',
];
$dataid = Db::table(TabConf::$fa_tt_userbaseinfo)->insertGetId($data);
//$this->operateLog('新增统一问诊用户基本信息',api_user_info('id'));
Db::commit();
return json(Tools::set_ok('ok',$dataid));
}catch (\Exception $e){
Db::rollback();
Tools::log_to_write_txt([
'error'=>'新增统一问诊用户基本信息.异常.'.$e->getMessage(),
'input'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_fail());
}
}
/**
* desc:保存用户基本信息,没有就新增
*
* * 参数:
* doctor 所属医生 【必须】
* hdrdepartment_id 科室 【必须】
* name 病人姓名 【必须】
* gender 病人性别 【必须】
* age 病人年龄 【必须】
* phone 图片识别联系方式
* user_phone 当前用户登录的手机号 【必须】
*
*
* author:wh
*/
function saveBaseinfo(){
Tools::log_to_write_txt(['保存用户基本信息,没有就新增'=>input()]);
$api_desc = '保存用户基本信息,没有就新增';
Db::startTrans();
try {
$hdrdepartment_id = input('hdrdepartment_id');
if(empty($hdrdepartment_id)){
return json(Tools::set_fail('参数错误.2',['error_msg'=>'错误信息:hdrdepartment_id错误']));
}
$name = input('name');
if(empty($name)){
return json(Tools::set_fail('参数错误.4',['error_msg'=>'错误信息:name错误']));
}
$gender = input('gender');
if(empty($gender)){
return json(Tools::set_fail('参数错误.5',['error_msg'=>'错误信息:gender错误']));
}
$age = input('age');
if(empty($age)){
return json(Tools::set_fail('参数错误.6',['error_msg'=>'错误信息:age错误']));
}
$doctor = input('doctor');
if(empty($doctor)){
return json(Tools::set_fail('参数错误.3',['error_msg'=>'错误信息:doctor手机号错误']));
}
$hdrdepartment = input('hdrdepartment');
$phone = input('phone');
if(empty($phone)){
return json(Tools::set_fail('参数错误.18',['error_msg'=>'错误信息:phone错误']));
}
$data = [
'hdrdepartment_id'=>$hdrdepartment_id?:'',
'name'=>$name?:'',
'gender'=>$gender?:'',
'age'=>$age?:'',
'phone'=>$phone?:'',
'hdrdepartment'=>$hdrdepartment?:'',
'user_phone'=>api_user_info('username')
];
//同步科室(没有则新增)
$department_data = [
'name'=>$hdrdepartment,
];
$insert_hdrdepartment_id = Mmodel::existsUpdateInsert(TabConf::$fa_hdrdepartment,[
'name'=>$hdrdepartment
],$department_data);
if($insert_hdrdepartment_id){
$data['hdrdepartment_id'] = $insert_hdrdepartment_id;
}
//同步基本信息到fa_tt_userbaseinfo表
$base_info_data = [
'date'=>Tools::get_now_date(),
'doctor'=>$doctor,
'hdrdepartment_id'=>$hdrdepartment_id,
'hdrdepartment'=>$hdrdepartment,
'name'=>$name,
'gender'=>$gender,
'age'=>$age,
'phone'=>$phone,
'user_phone'=>api_user_info('username'),
'from'=>'h5',
];
//只能新增基本信息,不能修改
$base_info_data_id = Db::table(TabConf::$fa_tt_userbaseinfo)
->insertGetId($base_info_data);
//$this->operateLog('保存用户基本信息,没有就新增',api_user_info('id'));
Db::commit();
return json(Tools::set_ok('ok',['base_info_data_id'=>$base_info_data_id]));
}catch (\Exception $e){
Db::rollback();
Tools::log_to_write_txt([
'error'=>'保存用户基本信息,没有就新增.异常.'.$e->getMessage(),
'input'=>input(),
'error_info'=>$e->getTraceAsString()
]);
return json(Tools::set_fail());
}
}
/**
* desc:根据手机号码获取统一问诊用户基本信息,查询最新的一条数据
*
* api/Hdruserbaseinfo/getHdruserbaseinfoByPhone
*
* 参数:
* phone 联系方式 【必须】
*
* 所有字段说明(可能有部分额外字段未在此体现):
* id ID
* hdrdepartment_id 科室
* hdrdepartment 科室名称
* name 病人姓名
* gender 病人性别
* age 病人年龄
* phone 联系方式
* author:wh
*/
function getHdruserbaseinfoByPhone(){
Tools::log_to_write_txt(['根据手机号码获取统一问诊用户基本信息 入参:'=>input()]);
$api_desc = '根据手机号码获取统一问诊用户基本信息';
try {
$phone = input('phone');
if(empty($phone)){
return json(Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:phone错误']));
}
$model_obj = Db::table(TabConf::$fa_ty_userbaseinfo);
$model_obj->order('id desc');
if(input('phone')){
$model_obj->where('user_phone',input('phone'));
}
$item = $model_obj->find();
$data = $item;
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,'操作异常',[]));
}
}
/**
* 基本信息读取
* 基本信息读取接口(传图片地址)
*
* 参数:
* phone 患者手机号码
*
* 文件上传控件name值设置为:file_upload,否则无法上传
*
*/
public function getBaseInfoUploadRead(){
return Mmodel::catchJson(function (){
//基本信息读取接口(传图片地址)【一张图片一个chatid】
$phone = input('phone');
if(empty($phone)){
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:phone错误']);
}
$sessionid = input('sessionid');
if(empty($sessionid)){
return Tools::set_fail( '参数错误.1',['error_msg'=>'错误信息:sessionid错误']);
}
$oss_config = config('aliyun_oss_config');
$file_obj = new FileUpload();
$file_res = $file_obj->fileUploadToAliCloudOss($oss_config);
Tools::log_to_write_txt(['文件上传结果'=>$file_res]);
if($file_res['code']!=200){
return Tools::set_fail($file_res['msg']);
}
$upload_data = $file_res['data'][0];
$upload_data['sessionid'] = $sessionid;
//保存图片信息,存在则更新
$hdruserbaseinfo_upload_id = Db::table(TabConf::$fa_hdruserbaseinfo_upload)
->insertGetId($upload_data);
//ai分析
$ai_config = config('basic_information_read_config');
$chatobj = new ChatGPT();
$chatobj->url = $ai_config['base_url'];
$chatobj->model = '';
$chatobj->apiKey = $ai_config['APIKey'];
$answer_json_arr = [];
$config = [
'stream'=>false,
'chatId'=>Tools::getMillisecond(),
];
$sub_content_msg = [
[
"role" => "user",
"content" => [
[
"type" => "image_url",
"image_url" => [
"url" => $file_res['data'][0]['outer_req_url']
]
]
]
]
];
//chatGpt设置前置聊天上下文
$chatobj->setBefore($sub_content_msg);
$question = '';
//回答
$chatobj->returnAnswer($question,$config,$answer_json_arr);
Tools::log_to_write_txt(['请求gpt'=>$chatobj->post_msg_body]);
Tools::log_to_write_txt(['gpt回复'=>$answer_json_arr]);
//保存处理结果
$answer_result = json_decode($answer_json_arr[0],true);
$ai_result_data = [
'result'=>$answer_result['choices'][0]['message']['content']
];
//保存ai分析结果
Db::table(TabConf::$fa_hdruserbaseinfo_upload)
->where('id',$hdruserbaseinfo_upload_id)
->data($ai_result_data)
->update();
unset($file_res['data'][0]['real_path']);
//返回分析结果
return Tools::set_ok('ok',['result'=>$answer_result['choices'][0]['message']['content'],'file_info'=>$file_res['data']]);
});
}
}