update
This commit is contained in:
@@ -1,103 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/11/27} {10:11}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\http\Curl;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Drugsimagesmedicaltasknotify extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:药品,CT,病例上传AI分析任务回调地址
|
||||
*
|
||||
* 回调地址会在请求ai接口时传递:
|
||||
*(参考):
|
||||
* 线上域名:https://ybx_prediagnosis.excn.top
|
||||
* /api/Drugsimagesmedicaltasknotify/notify
|
||||
*
|
||||
* method: post
|
||||
*
|
||||
* 数据结构建议:
|
||||
* {
|
||||
* "code":200,//500(失败、异常、错误),可以是其它有意义的值
|
||||
* "msg":'提示信息',//eg:处理成功、请求失败,处理中等
|
||||
* "data":[],//该值可以是任意数据,eg:数组、字符串等
|
||||
* }
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function notify(){
|
||||
return Mmodel::catchJson(function (){
|
||||
Tools::log_to_write_txt(['药品,CT,病例上传AI分析任务回调,入参'=>input()]);
|
||||
|
||||
|
||||
$this->notify_test();
|
||||
});
|
||||
}
|
||||
|
||||
private function notify_test(){
|
||||
$jsondecode = input();
|
||||
|
||||
$task_id = $jsondecode['task_id'];
|
||||
$result = $jsondecode['result'];
|
||||
|
||||
|
||||
if(empty($task_id)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:task_id错误']);
|
||||
}
|
||||
//$log_file_name = 'drugs_images_medical';
|
||||
//$header = [
|
||||
// //'Accept: application/json',
|
||||
// "Content-Type: application/json"
|
||||
//];
|
||||
//$url = "https://image_fastapi.excn.vip/imgs-task/{$task_id}";
|
||||
//Tools::log_to_write_txt(['异步查询图片处理结果,请求地址'=>$url,'task_id'=>$task_id],$log_file_name);
|
||||
//$process_images_res = Curl::curl_request($url,'GET',[],$header);
|
||||
//Tools::log_to_write_txt(['异步查询图片处理结果,返回结果'=>$process_images_res],$log_file_name);
|
||||
|
||||
//if(isset($process_images_res['status']) && $process_images_res['status'] == 'error'){
|
||||
// return Tools::set_fail($process_images_res['message']);
|
||||
//}
|
||||
if(isset($result['detail']) && $result['detail'] == '未知的任务 ID'){
|
||||
return Tools::set_fail($result['detail']);
|
||||
}
|
||||
if(isset($result['status']) && $result['status'] == 'pending'){
|
||||
return Tools::set_fail('处理中请等待');
|
||||
}
|
||||
//if(!isset($result['result']) || $result['result'] == ''){
|
||||
// return Tools::set_fail('未查询到结果');
|
||||
//}
|
||||
|
||||
//保存处理结果
|
||||
Db::table(TabConf::$fa_drugs_images_medical_task)
|
||||
->data([
|
||||
'result'=>json_encode($jsondecode),
|
||||
])
|
||||
->where('task_id',$task_id)
|
||||
->update();
|
||||
|
||||
//遍历二维数组,将每张图片的分析同步到
|
||||
foreach ($result as $item){
|
||||
Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('imageid',$item['id'])
|
||||
->data([
|
||||
'ai_result'=>$item['result'],
|
||||
'type'=>$item['type'],
|
||||
])
|
||||
->update();
|
||||
}
|
||||
|
||||
return Tools::set_ok('ok',$result);
|
||||
}
|
||||
}
|
||||
@@ -1,249 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/11/27} {15:10}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\http\Curl;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\SundryConfig;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Drugsimagesmedicalupload extends BaseHttpApi
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* 药品、影像、病历上传(多文件)
|
||||
*
|
||||
* 流程:前端上传图片,发给ai,不等待分析结果,异步查询结果
|
||||
*
|
||||
* 参数:
|
||||
* phone 患者手机号码
|
||||
*
|
||||
* 文件上传控件name值设置为:file_upload,否则无法上传
|
||||
*
|
||||
* 返回task_id,前端手机号查询处理任务列表
|
||||
*
|
||||
* /api/Drugsimagesmedicalupload/uploadDrugsImagesMedical
|
||||
*/
|
||||
public function uploadDrugsImagesMedical(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$sessionid = input('sessionid');
|
||||
if(empty($sessionid)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:sessionid错误']);
|
||||
}
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:phone错误']);
|
||||
}
|
||||
//存在没有生成报告的上传的基本信息就删除
|
||||
Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('phone',$phone)
|
||||
->where('reportid','eq','')
|
||||
->delete();
|
||||
|
||||
$ai_config = config('medicine_image_report_config');
|
||||
|
||||
$oss_config = config('aliyun_oss_config');
|
||||
$file_obj = new FileUpload();
|
||||
$file_res = $file_obj->filesUploadToAliCloudOss($oss_config);
|
||||
Tools::log_to_write_txt(['文件上传结果'=>$file_res]);
|
||||
if($file_res['code']!=200){
|
||||
return Tools::set_fail($file_res['msg']);
|
||||
}
|
||||
|
||||
//发现之前存在没生成报告的附件则清理掉
|
||||
Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('phone',$phone)
|
||||
->where('reportid','eq','')
|
||||
->delete();
|
||||
|
||||
$sub_content_imgarr = ['images'=>[],'webhooks'=>[$ai_config['notify_url']]];
|
||||
foreach ($file_res['data'] as $key=>$item){
|
||||
$md5id = md5($item['outer_req_url'].Tools::rand_str());
|
||||
$sub_content_imgarr['images'][$md5id] = $item['outer_req_url'];
|
||||
|
||||
$item['phone'] = $phone;
|
||||
$item['imageid'] = $md5id;
|
||||
$item['sessionid'] = $sessionid;
|
||||
//新增
|
||||
Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->data($item)
|
||||
->insert();
|
||||
}
|
||||
$header = [
|
||||
'Accept: application/json',
|
||||
"Content-Type: application/json"
|
||||
];
|
||||
$url = "https://image_fastapi.excn.vip/imgs-task";
|
||||
Tools::log_to_write_txt(['药品、影像、病历上传图片处理,请求地址'=>$url,'请求参数'=>$sub_content_imgarr]);
|
||||
$process_images_res = Curl::curl_request($url,'POST',json_encode($sub_content_imgarr),$header);
|
||||
Tools::log_to_write_txt(['药品、影像、病历上传图片处理,返回结果'=>$process_images_res]);
|
||||
|
||||
//保存处理任务
|
||||
$task_res = json_decode($process_images_res,true);
|
||||
$task_data = [
|
||||
'phone'=>$phone,
|
||||
'task_id'=>$task_res['task_id'],
|
||||
'msg'=>$task_res['msg'],
|
||||
];
|
||||
//每次都是新任务
|
||||
Db::table(TabConf::$fa_drugs_images_medical_task)
|
||||
->data($task_data)
|
||||
->insert();
|
||||
//返回分析结果
|
||||
return Tools::set_ok('任务处理中,等待处理结果',['result'=>$process_images_res,'file_info'=>$file_res['data']]);
|
||||
});
|
||||
}
|
||||
|
||||
//public function testUploadFiles(){
|
||||
// return Mmodel::catchJson(function (){
|
||||
// $phone = input('phone');
|
||||
// if(empty($phone)){
|
||||
// return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:phone错误']);
|
||||
// }
|
||||
//
|
||||
// $res = (new FileUpload())->files();
|
||||
// Tools::log_to_write_txt(['文件上传结果'=>$res]);
|
||||
// return Tools::set_ok('测试结果',$res);
|
||||
// });
|
||||
//}
|
||||
|
||||
/**
|
||||
* 消费者队列【wh专用】
|
||||
*
|
||||
* /api/Drugsimagesmedicalupload/queryDrugsImagesMedicalTask
|
||||
*/
|
||||
public function queryDrugsImagesMedicalTask(){
|
||||
//查询
|
||||
$obj = Db::table(TabConf::$fa_drugs_images_medical_task);
|
||||
$res_lists = $obj
|
||||
->whereNull('result')
|
||||
//时间在10分钟之内
|
||||
->where('create_time','>=',date('Y-m-d H:i:s',time()-600))
|
||||
->select();
|
||||
//Tools::log_to_write_txt(['查询结果'=>$res_lists,'sql:'=>$obj->getLastSql()]);
|
||||
//消费者队列终止开关
|
||||
$consumer_switch = SundryConfig::val('drugs_images_medical_task_consumer_switch');
|
||||
if(empty($res_lists)){
|
||||
return json(Tools::set_fail('无数据可处理',$consumer_switch));
|
||||
}
|
||||
foreach ($res_lists as $item){
|
||||
$this->querySaveTaskProcessByTaskId($item['task_id']);
|
||||
}
|
||||
|
||||
return json(Tools::set_ok('处理成功,数量:'.count($res_lists),$consumer_switch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据报告id查询附件
|
||||
*
|
||||
* 参数:
|
||||
* reportid 数字人报告id
|
||||
* type 类型,如:影像报告 病历报告
|
||||
*
|
||||
*/
|
||||
public function queryDrugsImagesMedicalReportId(){
|
||||
return Mmodel::catchJson(function (){
|
||||
//$phone = input('phone');
|
||||
//if(empty($phone)){
|
||||
// return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:phone错误']);
|
||||
//}
|
||||
$type = input('type');
|
||||
if(empty($type)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:type错误']);
|
||||
}
|
||||
$reportid = input('reportid');
|
||||
if( empty($reportid)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:reportid错误']);
|
||||
}
|
||||
//根据报告id查询附件列表
|
||||
$lists = Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
//->field('id,phone,imageid,ai_result')
|
||||
//->where('phone',$phone)
|
||||
->where('reportid',$reportid)
|
||||
->where('type',$type)
|
||||
->select();
|
||||
|
||||
return Tools::set_ok('ok',$lists);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:查询并更新ai分析结果
|
||||
* author:wh
|
||||
*
|
||||
* api/Drugsimagesmedicalupload/querySaveTaskProcessByTaskId
|
||||
*/
|
||||
function querySaveTaskProcessByTaskId($taskid=''){
|
||||
return Mmodel::catchJson(function () use ($taskid){
|
||||
$task_id = '';
|
||||
if($taskid){
|
||||
$task_id = $taskid;
|
||||
}
|
||||
if(input('task_id')){
|
||||
$task_id = input('task_id');
|
||||
}
|
||||
if(empty($task_id)){
|
||||
return Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:task_id错误']);
|
||||
}
|
||||
//$log_file_name = 'drugs_images_medical';
|
||||
//$header = [
|
||||
// //'Accept: application/json',
|
||||
// "Content-Type: application/json"
|
||||
//];
|
||||
//$url = "https://image_fastapi.excn.vip/imgs-task/{$task_id}";
|
||||
//Tools::log_to_write_txt(['异步查询图片处理结果,请求地址'=>$url,'task_id'=>$task_id],$log_file_name);
|
||||
//$process_images_res = Curl::curl_request($url,'GET',[],$header);
|
||||
//Tools::log_to_write_txt(['异步查询图片处理结果,返回结果'=>$process_images_res],$log_file_name);
|
||||
|
||||
//if(isset($process_images_res['status']) && $process_images_res['status'] == 'error'){
|
||||
// return Tools::set_fail($process_images_res['message']);
|
||||
//}
|
||||
//$jsondec = json_decode($process_images_res,true);
|
||||
//if(isset($jsondec['detail']) && $jsondec['detail'] == '未知的任务 ID'){
|
||||
// return Tools::set_fail($jsondec['detail']);
|
||||
//}
|
||||
//if(isset($jsondec['status']) && $jsondec['status'] == 'pending'){
|
||||
// return Tools::set_fail('处理中请等待');
|
||||
//}
|
||||
//if(!isset($jsondec['result']) || $jsondec['result'] == ''){
|
||||
// return Tools::set_fail('未查询到结果');
|
||||
//}
|
||||
|
||||
//保存处理结果
|
||||
//Db::table(TabConf::$fa_drugs_images_medical_task)
|
||||
// ->data([
|
||||
// 'result'=>$process_images_res
|
||||
// ])
|
||||
// ->where('task_id',$task_id)
|
||||
// ->update();
|
||||
|
||||
//遍历二维数组,将每张图片的分析同步到
|
||||
//foreach ($jsondec as $item){
|
||||
// Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
// ->where('imageid',$item['id'])
|
||||
// ->data([
|
||||
// 'ai_result'=>$item['result'],
|
||||
// 'type'=>$item['type'],
|
||||
// ])
|
||||
// ->update();
|
||||
//}
|
||||
|
||||
$process_images_res = Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('task_id',$task_id)
|
||||
->find();
|
||||
return Tools::set_ok('ok',json_decode($process_images_res,true));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,253 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use think\Controller;
|
||||
|
||||
class Guliangqarecord extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '估量-问答记录';
|
||||
|
||||
/**
|
||||
* desc:估量,量表会话记录ai处理
|
||||
*
|
||||
* api/Guliangqarecord/guliangSessionDeal
|
||||
* 参数:
|
||||
* sessionid 会话id
|
||||
* phone 手机
|
||||
* name 姓名
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function guliangSessionDeal(){
|
||||
return Mmodel::catch(function (){
|
||||
//会话id
|
||||
$sessionid = input('sessionid');
|
||||
if(empty($sessionid)){
|
||||
return json(Tools::set_fail('参数错误.0',['error_msg'=>'sessionid(会话id)不能为空,通过getUniqueId接口获取']));
|
||||
}
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'phone(手机号)不能为空']));
|
||||
}
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.2',['error_msg'=>'name(姓名)不能为空']));
|
||||
}
|
||||
|
||||
//content
|
||||
//根据会话id查询对话记录
|
||||
$guliang_record_list = Db::table(TabConf::$fa_guliangqarecord)
|
||||
->where('sessionid',$sessionid)
|
||||
->select();
|
||||
if(empty($guliang_record_list)){
|
||||
return json(Tools::set_fail('参数错误.3',['error_msg'=>'未查询到对话记录']));
|
||||
}
|
||||
|
||||
|
||||
//ai生成报告
|
||||
$report_config = config('scale_processing_ai_config');
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $report_config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $report_config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$date = date('Y-m-d');
|
||||
$ctn_msg_str = <<<EOF
|
||||
用户姓名:{$name} 用户手机号:{$phone}
|
||||
日期:{$date} 会话ID:{$sessionid}
|
||||
|
||||
EOF;
|
||||
foreach ($guliang_record_list as $k=>$val){
|
||||
$ctn_msg_str .= "\n 问题($k):".$val['guliangquestion'];
|
||||
$ctn_msg_str .= "\n 答案选项:".$val['choose'];
|
||||
$ctn_msg_str .= "\n 用户选择项:".$val['answer']?:'未回答';
|
||||
}
|
||||
$sub_content_msg = [
|
||||
["role" => "user", "content" => $ctn_msg_str]
|
||||
];
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
'chatId'=>Tools::getMillisecond(),
|
||||
];
|
||||
|
||||
//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);
|
||||
$data = [
|
||||
'sessionid'=>$sessionid,//不可以重复
|
||||
'phone'=>$guliang_record_list[0]['phone'],//可以重复
|
||||
'name'=>$guliang_record_list[0]['name'],//可以重复
|
||||
'content'=>$answer_result['choices'][0]['message']['content'],
|
||||
];
|
||||
|
||||
//一个手机可以有多个处理结果,但一个会话只能有一个处理结果
|
||||
Mmodel::existsUpdateInsert(TabConf::$fa_guliang_ai_deal_result,['sessionid'=>$sessionid],$data);
|
||||
|
||||
return json(Tools::set_ok());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增估量-问答记录
|
||||
*
|
||||
* 参数:
|
||||
* sessionid 会话id
|
||||
* gulianguser_id 估量-用户ID
|
||||
* name 用户姓名
|
||||
* phone 手机号
|
||||
* guliangquestion 用户选择的问题
|
||||
* choose 可选项
|
||||
* answer 回答选项(逗号隔开)
|
||||
* api/Guliangqarecord/addGuliangqarecord
|
||||
*/
|
||||
function addGuliangqarecord(){
|
||||
Tools::log_to_write_txt(['新增估量-问答记录'=>input()]);
|
||||
$api_desc = '新增估量-问答记录';
|
||||
Db::startTrans();
|
||||
try {
|
||||
//会话id
|
||||
$sessionid = input('sessionid');
|
||||
if(empty($sessionid)){
|
||||
return json(Tools::set_fail('参数错误.0',['error_msg'=>'sessionid(会话id)不能为空,通过getUniqueId接口获取']));
|
||||
}
|
||||
|
||||
$gulianguser_id = input('gulianguser_id');
|
||||
$guliangquestion = input('guliangquestion');
|
||||
$choose = input('choose');
|
||||
$answer = input('answer');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('姓名不能为空'));
|
||||
}
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('手机号不能为空'));
|
||||
}
|
||||
|
||||
$data = [
|
||||
'gulianguser_id'=>$gulianguser_id?:'',
|
||||
'guliangquestion'=>$guliangquestion?:'',
|
||||
'choose'=>$choose?:'',
|
||||
'answer'=>$answer?:'',
|
||||
'name'=>$name?:'',
|
||||
'phone'=>$phone?:'',
|
||||
'sessionid'=>$sessionid?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_guliangqarecord)->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:获取估量-问答记录
|
||||
*
|
||||
* api/Guliangqarecord/getGuliangqarecordList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* guliangquestion 用户选择的问题
|
||||
* gulianguser_id 估量-用户ID
|
||||
* guliangquestion 用户选择的问题
|
||||
* name 姓名
|
||||
* phone 手机号
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* gulianguser_id 估量-用户ID
|
||||
* guliangquestion 用户选择的问题
|
||||
* choose 回答选项
|
||||
* answer 回答选项(逗号隔开)
|
||||
* name 姓名
|
||||
* phone 手机号
|
||||
* create_time 创建时间
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getGuliangqarecordList(){
|
||||
Tools::log_to_write_txt(['获取估量-问答记录 入参:'=>input()]);
|
||||
$api_desc = '获取估量-问答记录';
|
||||
try {
|
||||
|
||||
$gulianguser_id = input('gulianguser_id');
|
||||
$guliangquestion = input('guliangquestion');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_guliangqarecord);
|
||||
|
||||
if(input('guliangquestion')){
|
||||
$model_obj->whereLike('guliangquestion','%'.input('guliangquestion').'%');
|
||||
}
|
||||
|
||||
if(input('gulianguser_id')){
|
||||
$model_obj->where('gulianguser_id',input('gulianguser_id'));
|
||||
}
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('phone')){
|
||||
$model_obj->where('phone',input('phone'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Guliangquestion extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '估量-问答配置';
|
||||
|
||||
/**
|
||||
* desc:获取估量-问答配置
|
||||
*
|
||||
* api/Guliangquestion/getGuliangquestionList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* name 问题
|
||||
* answer 答案
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* name 问题
|
||||
* answer 答案
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getGuliangquestionList(){
|
||||
Tools::log_to_write_txt(['获取估量-问答配置 入参:'=>input()]);
|
||||
$api_desc = '获取估量-问答配置';
|
||||
try {
|
||||
|
||||
$name = input('name');
|
||||
$answer = input('answer');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_guliangquestion);
|
||||
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('answer')){
|
||||
$model_obj->where('answer',input('answer'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,128 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use think\Controller;
|
||||
|
||||
class Gulianguser extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '估量-用户';
|
||||
|
||||
|
||||
/**
|
||||
* 新增估量-用户
|
||||
*
|
||||
* 参数:
|
||||
* name 姓名 【必须】
|
||||
* phone 手机号 【必须】
|
||||
* api/Gulianguser/addGulianguser
|
||||
*/
|
||||
function addGulianguser(){
|
||||
Tools::log_to_write_txt(['新增估量-用户'=>input()]);
|
||||
$api_desc = '新增估量-用户';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.0',['error_msg'=>'错误信息:name错误']));
|
||||
}
|
||||
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:phone错误']));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'name'=>$name?:'',
|
||||
'phone'=>$phone?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Mmodel::existsUpdateInsert(TabConf::$fa_gulianguser,['phone'=>$phone],$data);
|
||||
//$dataid = Db::table(TabConf::$fa_gulianguser)->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:获取估量-用户
|
||||
*
|
||||
* api/Gulianguser/getGulianguserList
|
||||
*
|
||||
* 参数:
|
||||
* name 姓名
|
||||
* phone 手机号
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* name 姓名
|
||||
* phone 手机号
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getGulianguserList(){
|
||||
Tools::log_to_write_txt(['获取估量-用户 入参:'=>input()]);
|
||||
$api_desc = '获取估量-用户';
|
||||
try {
|
||||
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_gulianguser);
|
||||
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('phone')){
|
||||
$model_obj->where('phone',input('phone'));
|
||||
}
|
||||
//$model_obj->field('name,phone');
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/8/7} {13:50}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Hdradmin extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:管理员登录
|
||||
* api/Hdradmin/adminLogin
|
||||
* author:wh
|
||||
*/
|
||||
function adminLogin(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return Tools::set_fail('参数错误:1');
|
||||
}
|
||||
$password = input('password');
|
||||
if(empty($password)){
|
||||
return Tools::set_fail('参数错误:2');
|
||||
}
|
||||
$user = Db::table(TabConf::$fa_hdradmin)
|
||||
->where('username',$username)
|
||||
->find();
|
||||
if(empty($user)){
|
||||
return Tools::set_fail('用户不存在');
|
||||
}
|
||||
if($password != $user['password']){
|
||||
return Tools::set_fail('密码错误');
|
||||
}
|
||||
|
||||
//session('api_user_info',$user);
|
||||
|
||||
unset($user['password']);
|
||||
|
||||
$expires = 7*86400+time();//报告完成之后重新获取票据
|
||||
|
||||
|
||||
//返回票据
|
||||
$ticketstr = md5($user['username'].$expires);
|
||||
|
||||
//修改有效期
|
||||
Db::table('fa_hdradmin')
|
||||
->data([
|
||||
'ticket'=>$ticketstr,
|
||||
'expires'=>$expires,//7天
|
||||
])
|
||||
->where('username',$username)
|
||||
->update();
|
||||
return Tools::set_ok('登录成功',['ticket'=>$ticketstr,'user'=>$user]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrdepartment extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '科室';
|
||||
|
||||
/**
|
||||
* desc:获取科室
|
||||
*
|
||||
* api/Hdrdepartment/getHdrdepartmentList
|
||||
*
|
||||
* 参数:
|
||||
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* name 科室名称
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrdepartmentList(){
|
||||
Tools::log_to_write_txt(['获取科室 入参:'=>input()]);
|
||||
$api_desc = '获取科室';
|
||||
try {
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrdepartment);
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,291 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrdoctorusers extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '医生账户信息';
|
||||
|
||||
|
||||
/**
|
||||
* 新增医生账户信息
|
||||
*
|
||||
* 参数:
|
||||
* doctor 医生昵称(杨教授) 医生昵称(杨教授) 必须
|
||||
* username 用户名(手机号) 用户名(手机号) 必须
|
||||
* hdrdepartment_id 科室 科室 必须
|
||||
* name 姓名(杨玉环) 姓名(杨玉环) 必须
|
||||
* password 密码a123456 密码a123456 必须
|
||||
* api/Hdrdoctorusers/addHdrdoctorusers
|
||||
*/
|
||||
function addHdrdoctorusers(){
|
||||
Tools::log_to_write_txt(['新增医生账户信息'=>input()]);
|
||||
$api_desc = '新增医生账户信息';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$doctor = input('doctor');
|
||||
if(empty($doctor)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
if(empty($hdrdepartment_id)){
|
||||
return json(Tools::set_fail('参数错误.2'));
|
||||
}
|
||||
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.3'));
|
||||
}
|
||||
|
||||
$password = input('password');
|
||||
if(empty($password)){
|
||||
return json(Tools::set_fail('参数错误.4'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'doctor'=>$doctor?:'',
|
||||
'username'=>$username?:'',
|
||||
'hdrdepartment_id'=>$hdrdepartment_id?:'',
|
||||
'name'=>$name?:'',
|
||||
'password'=>$password?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrdoctorusers)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改医生账户信息
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
* doctor 医生昵称(杨教授)
|
||||
* username 用户名(手机号)
|
||||
* hdrdepartment_id 科室
|
||||
* name 姓名(杨玉环)
|
||||
* password 密码a123456
|
||||
* sex 性别
|
||||
* age 年龄
|
||||
* address 住址
|
||||
* api/Hdrdoctorusers/updateHdrdoctorusers
|
||||
*/
|
||||
function updateHdrdoctorusers(){
|
||||
Tools::log_to_write_txt(['修改医生账户信息'=>input()]);
|
||||
|
||||
$api_desc = '修改医生账户信息';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$doctor = input('doctor');
|
||||
$username = input('username');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$name = input('name');
|
||||
$password = input('password');
|
||||
$sex = input('sex');
|
||||
$age = input('age');
|
||||
$address = input('address');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'doctor'=>$doctor?:'',
|
||||
'username'=>$username?:'',
|
||||
'hdrdepartment_id'=>$hdrdepartment_id?:'',
|
||||
'name'=>$name?:'',
|
||||
'password'=>$password?:'',
|
||||
'sex'=>$sex?:'',
|
||||
'age'=>$age?:'',
|
||||
'address'=>$address?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrdoctorusers)
|
||||
->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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:获取医生账户信息
|
||||
*
|
||||
* api/Hdrdoctorusers/getHdrdoctorusersList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* doctor 医生昵称(杨教授)
|
||||
* name 姓名(杨玉环)
|
||||
* doctor 医生昵称(杨教授)
|
||||
* username 用户名(手机号)
|
||||
* hdrdepartment_id 科室
|
||||
* name 姓名(杨玉环)
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* doctor 医生昵称(杨教授)
|
||||
* username 用户名(手机号)
|
||||
* hdrdepartment_id 科室
|
||||
* name 姓名(杨玉环)
|
||||
* password 密码a123456
|
||||
* sex 性别
|
||||
* age 年龄
|
||||
* type 用户类型:user=用户,doc=医生
|
||||
* address 住址
|
||||
* clientid 客户端ID
|
||||
* expires 有效期
|
||||
* ticket 票据
|
||||
* create_time 创建时间
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrdoctorusersList(){
|
||||
Tools::log_to_write_txt(['获取医生账户信息 入参:'=>input()]);
|
||||
$api_desc = '获取医生账户信息';
|
||||
try {
|
||||
|
||||
$doctor = input('doctor');
|
||||
$username = input('username');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$name = input('name');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrdoctorusers);
|
||||
|
||||
if(input('doctor')){
|
||||
$model_obj->whereLike('doctor','%'.input('doctor').'%');
|
||||
}
|
||||
|
||||
if(input('name')){
|
||||
$model_obj->whereLike('name','%'.input('name').'%');
|
||||
}
|
||||
|
||||
if(input('doctor')){
|
||||
$model_obj->where('doctor',input('doctor'));
|
||||
}
|
||||
if(input('username')){
|
||||
$model_obj->where('username',input('username'));
|
||||
}
|
||||
if(input('hdrdepartment_id')){
|
||||
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
|
||||
}
|
||||
|
||||
$data = $model_obj->paginate(['page'=>input('current_page',1),'list_rows'=>input('list_rows',15)])
|
||||
->each(function($item, $key){
|
||||
$ret_field_name_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id--name,,,,,,,,,,');
|
||||
|
||||
//处理为外键字段+外键对应数据的字段名 eg:users_id=>nickname
|
||||
$ret_field_name2 = [];
|
||||
foreach ($ret_field_name_arr as $ret_typ_field) {
|
||||
$exp_arr = explode('--',$ret_typ_field);
|
||||
//$exp_arr[0] 主表字段,$exp_arr[1] 副表字段
|
||||
$ret_field_name2[$exp_arr[0]] = [$exp_arr[0],$exp_arr[1]];
|
||||
}
|
||||
|
||||
//返回数据类型处理
|
||||
$return_type_exp_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id==field_val,,,,,,,,,,');
|
||||
//处理为类型+字段
|
||||
$return_type_exp_arr2 = [];
|
||||
foreach ($return_type_exp_arr as $ret_type_field) {
|
||||
$exp_arr = explode('==',$ret_type_field);
|
||||
$return_type_exp_arr2[$exp_arr[0]] = $exp_arr[1];
|
||||
}
|
||||
|
||||
//返回数组 eg: [id-fa_goods_deal==goods_id,id-fa_goods_deal==goods_id]
|
||||
$rel_table_arr = Tools::delete_str_empty_ele(',,,hdrdepartment_id-fa_hdrdepartment==id,,,,,,,,,,');
|
||||
//关联的字段和表
|
||||
$rel_field_table_arr2 = [];
|
||||
//关系
|
||||
foreach ($rel_table_arr as $rel_str) {
|
||||
$exp_arr = explode('-',$rel_str);
|
||||
$rel_field_table_arr2[$exp_arr[0]] = [explode('==',$exp_arr[1])[0],explode('==',$exp_arr[1])[1]];
|
||||
}
|
||||
|
||||
|
||||
foreach($item as $it_key=>$it_val){
|
||||
if(empty($rel_field_table_arr2[$it_key])){
|
||||
continue;
|
||||
}
|
||||
foreach($return_type_exp_arr as $key=>$val){
|
||||
$val_arr = explode('==',$val);
|
||||
if($it_key == $val_arr[0]){
|
||||
switch($val_arr[1]){
|
||||
case 'two_arr':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->select();
|
||||
break;
|
||||
case 'one_arr':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->find();
|
||||
break;
|
||||
case 'field_val':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->value("{$ret_field_name2[$it_key][1]}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,328 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrfollowup extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '统一随访记录';
|
||||
|
||||
|
||||
/**
|
||||
* 删除随访
|
||||
* 参数:
|
||||
* id ID
|
||||
* api/Hdrfollowup/del
|
||||
*/
|
||||
function del(){
|
||||
Tools::log_to_write_txt(['删除统一随访记录'=>input()]);
|
||||
|
||||
$api_desc = '删除统一随访记录';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
if(empty($id)){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
Db::table(TabConf::$fa_hdrfollowup)
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
|
||||
return json(Tools::set_ok('ok'));
|
||||
} catch (\Exception $e) {
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'删除统一随访记录.异常.'.$e->getMessage(),
|
||||
'input'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* desc:获取统一随访记录
|
||||
*
|
||||
* api/Hdrfollowup/getHdrfollowupList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* id ID
|
||||
* report_dataid 报告ID
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* userbaseid 基本信息ID
|
||||
* name 姓名
|
||||
* phone 电话
|
||||
* status 状态:0=待发送,1=已发送
|
||||
* hdrfollowuptemplate_id 随访模板ID
|
||||
* flow 诊断流程:0=初诊,1=复诊
|
||||
* send_time 发送时间
|
||||
* create_time 创建时间
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* report_dataid 报告ID
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* userbaseid 基本信息ID
|
||||
* name 姓名
|
||||
* phone 电话
|
||||
* content 随访内容
|
||||
* status 状态:0=待发送,1=已发送
|
||||
* hdrfollowuptemplate_id 随访模板ID
|
||||
* flow 诊断流程:0=初诊,1=复诊
|
||||
* send_time 发送时间
|
||||
* create_time 创建时间
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrfollowupList(){
|
||||
Tools::log_to_write_txt(['获取统一随访记录 入参:'=>input()]);
|
||||
$api_desc = '获取统一随访记录';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
$report_dataid = input('report_dataid');
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
$userbaseid = input('userbaseid');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
$status = input('status');
|
||||
$hdrfollowuptemplate_id = input('hdrfollowuptemplate_id');
|
||||
$flow = input('flow');
|
||||
$send_time = input('send_time');
|
||||
$create_time = input('create_time');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrfollowup);
|
||||
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('report_dataid')){
|
||||
$model_obj->where('report_dataid',input('report_dataid'));
|
||||
}
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_id'));
|
||||
}
|
||||
if(input('userbaseid')){
|
||||
$model_obj->where('userbaseid',input('userbaseid'));
|
||||
}
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('phone')){
|
||||
$model_obj->where('phone',input('phone'));
|
||||
}
|
||||
if(input('status')){
|
||||
$model_obj->where('status',input('status'));
|
||||
}
|
||||
if(input('hdrfollowuptemplate_id')){
|
||||
$model_obj->where('hdrfollowuptemplate_id',input('hdrfollowuptemplate_id'));
|
||||
}
|
||||
if(input('flow')){
|
||||
$model_obj->where('flow',input('flow'));
|
||||
}
|
||||
if(input('send_time')){
|
||||
$model_obj->where('send_time',input('send_time'));
|
||||
}
|
||||
if(input('create_time')){
|
||||
$model_obj->where('create_time',input('create_time'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增统一随访记录
|
||||
*
|
||||
* 参数:
|
||||
* hdruserbaseinfo_id 统一基本信息 统一基本信息 必须
|
||||
* name 姓名 姓名 必须
|
||||
* phone 电话 电话 必须
|
||||
* content 随访内容 随访内容 必须
|
||||
* hdrfollowuptemplate_id 随访模板ID 随访模板ID 必须
|
||||
* send_time 发送时间
|
||||
* api/Hdrfollowup/addHdrfollowup
|
||||
*/
|
||||
function addHdrfollowup(){
|
||||
Tools::log_to_write_txt(['新增统一随访记录'=>input()]);
|
||||
$api_desc = '新增统一随访记录';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('参数错误.2'));
|
||||
}
|
||||
|
||||
$content = input('content');
|
||||
if(empty($content)){
|
||||
return json(Tools::set_fail('参数错误.3'));
|
||||
}
|
||||
|
||||
$hdrfollowuptemplate_id = input('hdrfollowuptemplate_id');
|
||||
if(empty($hdrfollowuptemplate_id)){
|
||||
return json(Tools::set_fail('参数错误.4'));
|
||||
}
|
||||
|
||||
$send_time = input('send_time');
|
||||
|
||||
$data = [
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id?:'',
|
||||
'name'=>$name?:'',
|
||||
'phone'=>$phone?:'',
|
||||
'content'=>$content?:'',
|
||||
'hdrfollowuptemplate_id'=>$hdrfollowuptemplate_id?:'',
|
||||
'send_time'=>$send_time?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrfollowup)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改统一随访记录
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* name 姓名
|
||||
* phone 电话
|
||||
* content 随访内容
|
||||
* status 状态:0=待发送,1=已发送
|
||||
* hdrfollowuptemplate_id 随访模板ID
|
||||
* flow 诊断流程:0=初诊,1=复诊
|
||||
* send_time 发送时间
|
||||
* api/Hdrfollowup/updateHdrfollowup
|
||||
*/
|
||||
function updateHdrfollowup(){
|
||||
Tools::log_to_write_txt(['修改统一随访记录'=>input()]);
|
||||
|
||||
$api_desc = '修改统一随访记录';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
$content = input('content');
|
||||
$status = input('status');
|
||||
$hdrfollowuptemplate_id = input('hdrfollowuptemplate_id');
|
||||
$flow = input('flow');
|
||||
$send_time = input('send_time');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
//'hdruserbaseinfo_id'=>$hdruserbaseinfo_id?:'',
|
||||
//'name'=>$name?:'',
|
||||
//'phone'=>$phone?:'',
|
||||
//'content'=>$content?:'',
|
||||
//'hdrfollowuptemplate_id'=>$hdrfollowuptemplate_id?:'',
|
||||
////'flow'=>$flow?:'',
|
||||
//'send_time'=>$send_time?:'',
|
||||
];
|
||||
|
||||
if(isset($hdruserbaseinfo_id)){
|
||||
$data['hdruserbaseinfo_id'] = $hdruserbaseinfo_id;
|
||||
}
|
||||
if(isset($name)){
|
||||
$data['name'] = $name;
|
||||
}
|
||||
if(isset($phone)){
|
||||
$data['phone'] = $phone;
|
||||
}
|
||||
if(isset($content)){
|
||||
$data['content'] = $content;
|
||||
}
|
||||
if(isset($hdrfollowuptemplate_id)){
|
||||
$data['hdrfollowuptemplate_id'] = $hdrfollowuptemplate_id;
|
||||
}
|
||||
if(isset($send_time)){
|
||||
$data['send_time'] = $send_time;
|
||||
}
|
||||
|
||||
if(isset($status)){
|
||||
$data['status'] = $status;
|
||||
}
|
||||
//'status'=>$status?:'',
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrfollowup)
|
||||
->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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,217 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrfollowuptemplate extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '随访模板';
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增随访模板
|
||||
*
|
||||
* 参数:
|
||||
* name 模板名称 模板名称 必须
|
||||
* content 模板内容 模板内容 必须
|
||||
* api/Hdrfollowuptemplate/addHdrfollowuptemplate
|
||||
*/
|
||||
function addHdrfollowuptemplate(){
|
||||
Tools::log_to_write_txt(['新增随访模板'=>input()]);
|
||||
$api_desc = '新增随访模板';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$content = input('content');
|
||||
if(empty($content)){
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'name'=>$name?:'',
|
||||
'content'=>$content?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrfollowuptemplate)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改随访模板
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
* name 模板名称
|
||||
* content 模板内容
|
||||
* api/Hdrfollowuptemplate/updateHdrfollowuptemplate
|
||||
*/
|
||||
function updateHdrfollowuptemplate(){
|
||||
Tools::log_to_write_txt(['修改随访模板'=>input()]);
|
||||
|
||||
$api_desc = '修改随访模板';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$name = input('name');
|
||||
$content = input('content');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'name'=>$name?:'',
|
||||
'content'=>$content?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrfollowuptemplate)
|
||||
->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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:获取随访模板
|
||||
*
|
||||
* api/Hdrfollowuptemplate/getHdrfollowuptemplateList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* id ID
|
||||
* name 模板名称
|
||||
* content 模板内容
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* name 模板名称
|
||||
* content 模板内容
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrfollowuptemplateList(){
|
||||
Tools::log_to_write_txt(['获取随访模板 入参:'=>input()]);
|
||||
$api_desc = '获取随访模板';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
$name = input('name');
|
||||
$content = input('content');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrfollowuptemplate);
|
||||
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('content')){
|
||||
$model_obj->where('content',input('content'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板
|
||||
*
|
||||
* api/Hdrfollowuptemplate/del
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
*/
|
||||
function del(){
|
||||
Tools::log_to_write_txt(['删除随访模板 入参:'=>input()]);
|
||||
$api_desc = '删除随访模板';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
if(empty($id)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$data = Db::table(TabConf::$fa_hdrfollowuptemplate)
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
Db::commit();
|
||||
return json(Tools::set_ok('ok',$data));
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'删除随访模板.异常.'.$e->getMessage(),
|
||||
'参数'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrhealthinsight extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '患者健康洞察';
|
||||
|
||||
/**
|
||||
* desc:获取患者健康洞察
|
||||
*
|
||||
* api/Hdrhealthinsight/getHdrhealthinsightList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* id ID
|
||||
* hdruserbaseinfo_id 统一基本信息 【必须】
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* content 洞察内容
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrhealthinsightList(){
|
||||
Tools::log_to_write_txt(['获取患者健康洞察 入参:'=>input()]);
|
||||
$api_desc = '获取患者健康洞察';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:hdruserbaseinfo_id错误']));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrhealth_insight);
|
||||
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_id'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,220 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrquestionnaireanswer extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '科室问卷答案';
|
||||
|
||||
/**
|
||||
* desc:获取科室问卷答案
|
||||
*
|
||||
* api/Hdrquestionnaireanswer/getHdrquestionnaireanswerList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* id ID
|
||||
* hdrquestionnairequestion_id 问卷问题ID
|
||||
* answer 问卷答案
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrquestionnaireanswer);
|
||||
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('hdrquestionnairequestion_id')){
|
||||
$model_obj->where('hdrquestionnairequestion_id',input('hdrquestionnairequestion_id'));
|
||||
}
|
||||
if(input('answer')){
|
||||
$model_obj->where('answer',input('answer'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增一个问卷答案
|
||||
*
|
||||
* 参数:
|
||||
* hdrquestionnairequestion_id 问卷问题ID 问卷问题ID 必须
|
||||
* answer 问卷答案 问卷答案 必须
|
||||
* api/Hdrquestionnaireanswer/addHdrquestionnaireanswer
|
||||
*/
|
||||
function addHdrquestionnaireanswer(){
|
||||
Tools::log_to_write_txt(['新增一个问卷答案'=>input()]);
|
||||
$api_desc = '新增一个问卷答案';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$hdrquestionnairequestion_id = input('hdrquestionnairequestion_id');
|
||||
if(empty($hdrquestionnairequestion_id)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$answer = input('answer');
|
||||
if(empty($answer)){
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'hdrquestionnairequestion_id'=>$hdrquestionnairequestion_id?:'',
|
||||
'answer'=>$answer?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrquestionnaireanswer)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改科室问卷答案
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
* hdrquestionnairequestion_id 问卷问题ID
|
||||
* answer 问卷答案
|
||||
* api/Hdrquestionnaireanswer/updateHdrquestionnaireanswer
|
||||
*/
|
||||
function updateHdrquestionnaireanswer(){
|
||||
Tools::log_to_write_txt(['修改科室问卷答案'=>input()]);
|
||||
|
||||
$api_desc = '修改科室问卷答案';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$hdrquestionnairequestion_id = input('hdrquestionnairequestion_id');
|
||||
$answer = input('answer');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'hdrquestionnairequestion_id'=>$hdrquestionnairequestion_id?:'',
|
||||
'answer'=>$answer?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrquestionnaireanswer)
|
||||
->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc: 删除科室问卷答案
|
||||
* author:wh
|
||||
*
|
||||
* 参数:
|
||||
* id 数据id 必须
|
||||
* api/Hdrquestionnaireanswer/del
|
||||
*/
|
||||
function del(){
|
||||
Tools::log_to_write_txt(['删除科室问卷答案'=>input()]);
|
||||
|
||||
$api_desc = '删除科室问卷答案';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
if(empty($id)){
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
Db::table(TabConf::$fa_hdrquestionnairequestion)
|
||||
->where('id',$id)
|
||||
->delete();
|
||||
|
||||
|
||||
return json(Tools::set_ok('ok'));
|
||||
} catch (\Exception $e) {
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'删除科室问卷答案.异常.'.$e->getMessage(),
|
||||
'input'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,452 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrquestionnairequestion extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '科室问卷问题(一个问题对应多个答案)';
|
||||
|
||||
/**
|
||||
* 新增科室问卷问题(一个问题对应多个答案)
|
||||
*
|
||||
* 参数:
|
||||
* hdrdepartment_id 所属科室 所属科室 必须
|
||||
* question 问卷问题 问卷问题 必须
|
||||
* is_common 是否通用:yes=是,no=否 是否通用:yes=是,no=否 必须
|
||||
* is_only_boy 只适合男:yes=是,no=否 只适合男:yes=是,no=否 必须
|
||||
* is_only_girl 只适合女:yes=是,no=否 只适合女:yes=是,no=否 必须
|
||||
* type 选项类型:one=单选,more=多选 选项类型:one=单选,more=多选 必须
|
||||
* api/Hdrquestionnairequestion/addHdrquestionnairequestion
|
||||
*/
|
||||
function addHdrquestionnairequestion()
|
||||
{
|
||||
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('参数错误.0'));
|
||||
}
|
||||
|
||||
$question = input('question');
|
||||
if (empty($question)) {
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
$is_common = input('is_common');
|
||||
if (empty($is_common)) {
|
||||
return json(Tools::set_fail('参数错误.2'));
|
||||
}
|
||||
|
||||
$is_only_boy = input('is_only_boy');
|
||||
if (empty($is_only_boy)) {
|
||||
return json(Tools::set_fail('参数错误.3'));
|
||||
}
|
||||
|
||||
$is_only_girl = input('is_only_girl');
|
||||
if (empty($is_only_girl)) {
|
||||
return json(Tools::set_fail('参数错误.4'));
|
||||
}
|
||||
|
||||
$type = input('type');
|
||||
if (empty($type)) {
|
||||
return json(Tools::set_fail('参数错误.5'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'hdrdepartment_id' => $hdrdepartment_id ?: '',
|
||||
'question' => $question ?: '',
|
||||
'is_common' => $is_common ?: '',
|
||||
'is_only_boy' => $is_only_boy ?: '',
|
||||
'is_only_girl' => $is_only_girl ?: '',
|
||||
'type' => $type ?: '',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrquestionnairequestion)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改科室问卷问题(一个问题对应多个答案)
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
* hdrdepartment_id 所属科室
|
||||
* question 问卷问题
|
||||
* is_common 是否通用:yes=是,no=否
|
||||
* is_only_boy 只适合男:yes=是,no=否
|
||||
* is_only_girl 只适合女:yes=是,no=否
|
||||
* type 选项类型:one=单选,more=多选
|
||||
* api/Hdrquestionnairequestion/updateHdrquestionnairequestion
|
||||
*/
|
||||
function updateHdrquestionnairequestion()
|
||||
{
|
||||
Tools::log_to_write_txt(['修改科室问卷问题(一个问题对应多个答案)' => input()]);
|
||||
|
||||
$api_desc = '修改科室问卷问题(一个问题对应多个答案)';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$question = input('question');
|
||||
$is_common = input('is_common');
|
||||
$is_only_boy = input('is_only_boy');
|
||||
$is_only_girl = input('is_only_girl');
|
||||
$type = input('type');
|
||||
if (empty(input('id'))) {
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'hdrdepartment_id' => $hdrdepartment_id ?: '',
|
||||
'question' => $question ?: '',
|
||||
'is_common' => $is_common ?: '',
|
||||
'is_only_boy' => $is_only_boy ?: '',
|
||||
'is_only_girl' => $is_only_girl ?: '',
|
||||
'type' => $type ?: '',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrquestionnairequestion)
|
||||
->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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc: 删除科室问卷问题(一个问题对应多个答案)
|
||||
* author:wh
|
||||
*
|
||||
* 参数:
|
||||
* id 数据id 必须
|
||||
*
|
||||
* api/Hdrquestionnairequestion/del
|
||||
*/
|
||||
function del()
|
||||
{
|
||||
Tools::log_to_write_txt(['删除科室问卷问题(一个问题对应多个答案)' => input()]);
|
||||
|
||||
$api_desc = '删除科室问卷问题(一个问题对应多个答案)';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
if (empty($id)) {
|
||||
return json(Tools::set_fail('参数错误。0'));
|
||||
}
|
||||
|
||||
|
||||
Db::table(TabConf::$fa_hdrquestionnairequestion)
|
||||
->where('id', $id)
|
||||
->delete();
|
||||
|
||||
|
||||
return json(Tools::set_ok('ok'));
|
||||
} catch (\Exception $e) {
|
||||
Tools::log_to_write_txt([
|
||||
'error' => '删除科室问卷问题(一个问题对应多个答案).异常.' . $e->getMessage(),
|
||||
'input' => input(),
|
||||
'error_info' => $e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:获取科室问卷问题(一个问题对应多个答案)
|
||||
*
|
||||
* api/Hdrquestionnairequestion/getHdrquestionnairequestionList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* id ID
|
||||
* hdrdepartment_id 所属科室 【必须】
|
||||
* group 题目分组
|
||||
* question 问卷问题
|
||||
* is_common 是否通用:yes=是,no=否
|
||||
* is_only_boy 只适合男:yes=是,no=否
|
||||
* is_only_girl 只适合女:yes=是,no=否
|
||||
* type 选项类型:one=单选,more=多选
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* hdrdepartment_id 所属科室
|
||||
* question 问卷问题
|
||||
* is_common 是否通用:yes=是,no=否
|
||||
* is_only_boy 只适合男:yes=是,no=否
|
||||
* is_only_girl 只适合女:yes=是,no=否
|
||||
* type 选项类型:one=单选,more=多选
|
||||
* 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');
|
||||
if(empty($hdrdepartment_id)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:hdrdepartment_id错误']));
|
||||
}
|
||||
|
||||
$question = input('question');
|
||||
$is_common = input('is_common');
|
||||
$is_only_boy = input('is_only_boy');
|
||||
$is_only_girl = input('is_only_girl');
|
||||
$type = input('type');
|
||||
//$uniqueid = input('uniqueid');
|
||||
//if(empty($uniqueid)){
|
||||
// return json(Tools::set_fail('参数错误.2',['error_msg'=>'错误信息:uniqueid当次请求唯一标识不能为空,答题前获取,api调用地址:api/Common/getUniqueId']));
|
||||
//}
|
||||
$group = input('group');
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrquestionnairequestion);
|
||||
|
||||
if(isset($group) && $group!=''){
|
||||
$model_obj->whereLike('group',"%{$group}%");
|
||||
}else{
|
||||
$model_obj->where('group',$group);
|
||||
}
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('hdrdepartment_id')){
|
||||
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
|
||||
}
|
||||
if(input('question')){
|
||||
$model_obj->where('question',input('question'));
|
||||
}
|
||||
if(input('is_common')){
|
||||
$model_obj->where('is_common',input('is_common'));
|
||||
}
|
||||
if(input('is_only_boy')){
|
||||
$model_obj->where('is_only_boy',input('is_only_boy'));
|
||||
}
|
||||
if(input('is_only_girl')){
|
||||
$model_obj->where('is_only_girl',input('is_only_girl'));
|
||||
}
|
||||
if(input('type')){
|
||||
$model_obj->where('type',input('type'));
|
||||
}
|
||||
//过滤已答过的题目
|
||||
|
||||
$data = $model_obj->paginate(['page'=>input('current_page',1),'list_rows'=>input('list_rows',15)])
|
||||
->each(function($item, $key){
|
||||
$ret_field_name_arr = Tools::delete_str_empty_ele('id--testname,hdrdepartment_id--name,,,,,,,');
|
||||
|
||||
//处理为外键字段+外键对应数据的字段名 eg:users_id=>nickname
|
||||
$ret_field_name2 = [];
|
||||
foreach ($ret_field_name_arr as $ret_typ_field) {
|
||||
$exp_arr = explode('--',$ret_typ_field);
|
||||
//$exp_arr[0] 主表字段,$exp_arr[1] 副表字段
|
||||
$ret_field_name2[$exp_arr[0]] = [$exp_arr[0],$exp_arr[1]];
|
||||
}
|
||||
|
||||
//返回数据类型处理
|
||||
$return_type_exp_arr = Tools::delete_str_empty_ele('id==two_arr,hdrdepartment_id==field_val,,,,,,,');
|
||||
//处理为类型+字段
|
||||
$return_type_exp_arr2 = [];
|
||||
foreach ($return_type_exp_arr as $ret_type_field) {
|
||||
$exp_arr = explode('==',$ret_type_field);
|
||||
$return_type_exp_arr2[$exp_arr[0]] = $exp_arr[1];
|
||||
}
|
||||
|
||||
//返回数组 eg: [id-fa_goods_deal==goods_id,id-fa_goods_deal==goods_id]
|
||||
$rel_table_arr = Tools::delete_str_empty_ele('id-fa_hdrquestionnaireanswer==hdrquestionnairequestion_id,hdrdepartment_id-fa_hdrdepartment==id,,,,,,,');
|
||||
//关联的字段和表
|
||||
$rel_field_table_arr2 = [];
|
||||
//关系
|
||||
foreach ($rel_table_arr as $rel_str) {
|
||||
$exp_arr = explode('-',$rel_str);
|
||||
$rel_field_table_arr2[$exp_arr[0]] = [explode('==',$exp_arr[1])[0],explode('==',$exp_arr[1])[1]];
|
||||
}
|
||||
|
||||
|
||||
foreach($item as $it_key=>$it_val){
|
||||
if(empty($rel_field_table_arr2[$it_key])){
|
||||
continue;
|
||||
}
|
||||
foreach($return_type_exp_arr as $key=>$val){
|
||||
$val_arr = explode('==',$val);
|
||||
if($it_key == $val_arr[0]){
|
||||
switch($val_arr[1]){
|
||||
case 'two_arr':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->select();
|
||||
break;
|
||||
case 'one_arr':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->find();
|
||||
break;
|
||||
case 'field_val':
|
||||
$item[$it_key.'_data'] = Db::table($rel_field_table_arr2[$it_key][0])->where("{$rel_field_table_arr2[$it_key][1]}",$it_val)->value("{$ret_field_name2[$it_key][1]}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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/Hdrquestionnairequestion/getHdrQuestionTotal
|
||||
*
|
||||
* 参数与查询裂变接口保持一致
|
||||
*
|
||||
* 返回总数
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrQuestionTotal(){
|
||||
Tools::log_to_write_txt(['获取科室问卷问题(一个问题对应多个答案) 入参:'=>input()]);
|
||||
$api_desc = '获取科室问卷问题(一个问题对应多个答案)';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
if(empty($hdrdepartment_id)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:hdrdepartment_id错误']));
|
||||
}
|
||||
|
||||
$question = input('question');
|
||||
$is_common = input('is_common');
|
||||
$is_only_boy = input('is_only_boy');
|
||||
$is_only_girl = input('is_only_girl');
|
||||
$type = input('type');
|
||||
//$uniqueid = input('uniqueid');
|
||||
//if(empty($uniqueid)){
|
||||
// return json(Tools::set_fail('参数错误.2',['error_msg'=>'错误信息:uniqueid当次请求唯一标识不能为空,答题前获取,api调用地址:api/Common/getUniqueId']));
|
||||
//}
|
||||
$group = input('group');
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrquestionnairequestion);
|
||||
|
||||
if(isset($group) && $group!=''){
|
||||
$model_obj->whereLike('group',"%{$group}%");
|
||||
}else{
|
||||
$model_obj->where('group',$group);
|
||||
}
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('hdrdepartment_id')){
|
||||
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
|
||||
}
|
||||
if(input('question')){
|
||||
$model_obj->where('question',input('question'));
|
||||
}
|
||||
if(input('is_common')){
|
||||
$model_obj->where('is_common',input('is_common'));
|
||||
}
|
||||
if(input('is_only_boy')){
|
||||
$model_obj->where('is_only_boy',input('is_only_boy'));
|
||||
}
|
||||
if(input('is_only_girl')){
|
||||
$model_obj->where('is_only_girl',input('is_only_girl'));
|
||||
}
|
||||
if(input('type')){
|
||||
$model_obj->where('type',input('type'));
|
||||
}
|
||||
|
||||
$data = $model_obj->count();
|
||||
|
||||
|
||||
|
||||
|
||||
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:根据id查询问题
|
||||
*
|
||||
* api/Hdrquestionnairequestion/findQuestionById
|
||||
*
|
||||
* 参数:id 问题id
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function findQuestionById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$res = Db::table(TabConf::$fa_hdrquestionnairequestion)->where('id',input('id'))->find();
|
||||
return Tools::set_ok('ok',$res);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,194 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use think\Controller;
|
||||
|
||||
class Hdrregister extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '患者挂号列表(可重复挂号)';
|
||||
|
||||
|
||||
/**
|
||||
* 新增患者挂号列表(可重复挂号)
|
||||
*
|
||||
* 参数:
|
||||
* date 挂号日期
|
||||
* name 患者姓名(可重复挂号)
|
||||
* doctor_name 医生名称
|
||||
* age 病人年龄
|
||||
* gender 病人性别
|
||||
* phone 手机号
|
||||
* qa_type 问答类型(患者定):1=自由问答,2=固定问答,3=健康问答
|
||||
* ticket 对话凭据(便于查询)
|
||||
* api/Hdrregister/addHdrregister
|
||||
*/
|
||||
function addHdrregister(){
|
||||
Tools::log_to_write_txt(['新增患者挂号列表(可重复挂号)'=>input()]);
|
||||
$api_desc = '新增患者挂号列表(可重复挂号)';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$date = input('date');
|
||||
if(empty($date)){
|
||||
return json(Tools::set_fail('参数错误.0'));
|
||||
}
|
||||
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.1'));
|
||||
}
|
||||
|
||||
$doctor_name = input('doctor_name');
|
||||
if(empty($doctor_name)){
|
||||
return json(Tools::set_fail('参数错误.2'));
|
||||
}
|
||||
|
||||
$age = input('age');
|
||||
if(empty($age)){
|
||||
return json(Tools::set_fail('参数错误.3'));
|
||||
}
|
||||
|
||||
$gender = input('gender');
|
||||
if(empty($gender)){
|
||||
return json(Tools::set_fail('参数错误.4'));
|
||||
}
|
||||
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('参数错误.5'));
|
||||
}
|
||||
|
||||
$qa_type = input('qa_type');
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return json(Tools::set_fail('参数错误.7'));
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'date'=>$date?:'',
|
||||
'name'=>$name?:'',
|
||||
'doctor_name'=>$doctor_name?:'',
|
||||
'age'=>$age?:'',
|
||||
'gender'=>$gender?:'',
|
||||
'phone'=>$phone?:'',
|
||||
'qa_type'=>$qa_type?:'',
|
||||
'ticket'=>$ticket?:'',
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_hdrregister)->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:获取患者挂号列表(可重复挂号)
|
||||
*
|
||||
* api/Hdrregister/getHdrregisterList
|
||||
*
|
||||
* 参数:
|
||||
* name 患者姓名(可重复挂号)
|
||||
* phone 手机号
|
||||
* id ID
|
||||
* date 挂号日期
|
||||
* name 患者姓名(可重复挂号)
|
||||
* gender 病人性别
|
||||
* phone 手机号
|
||||
* status 状态:0=挂号中,1=结束诊断
|
||||
* qa_type 问答类型(患者定):1=自由问答,2=固定问答,3=健康问答
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* date 挂号日期
|
||||
* name 患者姓名(可重复挂号)
|
||||
* doctor_name 医生名称
|
||||
* age 病人年龄
|
||||
* gender 病人性别
|
||||
* phone 手机号
|
||||
* create_time 创建时间
|
||||
* status 状态:0=挂号中,1=结束诊断
|
||||
* qa_type 问答类型(患者定):1=自由问答,2=固定问答,3=健康问答
|
||||
* ticket 对话凭据(便于查询)
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getHdrregisterList(){
|
||||
Tools::log_to_write_txt(['获取患者挂号列表(可重复挂号) 入参:'=>input()]);
|
||||
$api_desc = '获取患者挂号列表(可重复挂号)';
|
||||
try {
|
||||
|
||||
$id = input('id');
|
||||
$date = input('date');
|
||||
$name = input('name');
|
||||
$gender = input('gender');
|
||||
$phone = input('phone');
|
||||
$status = input('status');
|
||||
$qa_type = input('qa_type');
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_hdrregister);
|
||||
|
||||
if(input('name')){
|
||||
$model_obj->whereLike('name','%'.input('name').'%');
|
||||
}
|
||||
|
||||
if(input('phone')){
|
||||
$model_obj->whereLike('phone','%'.input('phone').'%');
|
||||
}
|
||||
|
||||
if(input('id')){
|
||||
$model_obj->where('id',input('id'));
|
||||
}
|
||||
if(input('date')){
|
||||
$model_obj->where('date',input('date'));
|
||||
}
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('gender')){
|
||||
$model_obj->where('gender',input('gender'));
|
||||
}
|
||||
if(input('status')){
|
||||
$model_obj->where('status',input('status'));
|
||||
}
|
||||
if(input('qa_type')){
|
||||
$model_obj->where('qa_type',input('qa_type'));
|
||||
}
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,727 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\http\Curl;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\SundryConfig;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
|
||||
/**
|
||||
* 数字人修改基本信息
|
||||
*
|
||||
* Class Hdruserbaseinfo
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Hdruserbaseinfo extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '统一问诊用户基本信息';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:获取统一问诊用户基本信息列表(后台病历管理列表)
|
||||
*
|
||||
* api/Hdruserbaseinfo/getHdruserbaseinfoList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* doctor 所属医生
|
||||
* id ID
|
||||
* date 日期
|
||||
* doctor 所属医生
|
||||
* hdrdepartment_id 科室
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* name 病人姓名
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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 联系方式 【必须】
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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']]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,731 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\http\Curl;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\SundryConfig;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
|
||||
/**
|
||||
* 听译用户基本信息
|
||||
*
|
||||
* Class Hdruserinfotingyi
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Hdruserinfotingyi extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '统一问诊用户基本信息';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:获取统一问诊用户基本信息列表(后台病历管理列表)
|
||||
*
|
||||
* api/Hdruserinfotingyi/getHdruserbaseinfoList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* doctor 所属医生
|
||||
* id ID
|
||||
* date 日期
|
||||
* doctor 所属医生
|
||||
* hdrdepartment_id 科室
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* name 病人姓名
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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_ty_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/Hdruserinfotingyi/getHdruserbaseinfoDetailById
|
||||
*
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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_ty_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/Hdruserinfotingyi/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_ty_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_ty_userbaseinfo)
|
||||
->insertGetId($base_info_data);
|
||||
|
||||
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/Hdruserinfotingyi/getHdruserbaseinfoByPhone
|
||||
*
|
||||
* 参数:
|
||||
* phone 联系方式 【必须】
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* 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错误']);
|
||||
}
|
||||
//存在没有生成报告的上传的基本信息就删除
|
||||
Db::table(TabConf::$fa_hdruserbaseinfo_upload)
|
||||
->where('user_phone',$phone)
|
||||
->where('status','new')
|
||||
->delete();
|
||||
|
||||
|
||||
$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;
|
||||
$upload_data['phone'] = $phone;
|
||||
$upload_data['user_phone'] = $phone;
|
||||
//保存图片信息,存在则更新
|
||||
$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']]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/12} {17:01}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\api\logic\TychatLogic;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* 健康洞察
|
||||
*
|
||||
* Class HealthInsights
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class HealthInsights
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* desc:健康洞察
|
||||
* 实时输出
|
||||
*
|
||||
* /api/HealthInsights/getHealthInsight
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getHealthInsight(){
|
||||
//return Mmodel::catch(function (){
|
||||
// $obj = new TychatLogic();
|
||||
// return $obj->getHealthInsight();
|
||||
//});
|
||||
}
|
||||
}
|
||||
@@ -1,413 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/12} {11:29}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* h5-数字人-报告
|
||||
* Class Reporth5
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Reporth5 extends BaseHttpApi
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
//if(!Usersh5::checkLogin()){
|
||||
// echo json_encode(['code'=>591,'msg'=>'未登录']);exit;
|
||||
//}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:h5-数字人-生成听诊报告(同时提交固定问答聊天记录)
|
||||
*
|
||||
* api/Reporth5/createReport
|
||||
*
|
||||
* name 病人姓名
|
||||
gender 病人性别
|
||||
age 病人年龄
|
||||
edu 教育程度
|
||||
career_year 职业及年限
|
||||
power 体力要求
|
||||
satisfaction 经济满意度
|
||||
old_career_year 过往职业及年限
|
||||
support 社会支持度
|
||||
marriage 婚姻状况
|
||||
live 居住情况
|
||||
home 家庭关系
|
||||
address 地址
|
||||
phone 联系方式
|
||||
wechat_no 微信号
|
||||
ticket 登录票据
|
||||
hdrdepartment_id 科室
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
*
|
||||
* content 对话内容;格式:
|
||||
* $content = [
|
||||
["role" => "user", "content" => '医生说:xxxxx'],
|
||||
["role" => "user", "content" => '患者说:xxxxx'],
|
||||
];
|
||||
* author:wh
|
||||
*/
|
||||
function createReport(){
|
||||
//header('Content-Type: text/event-stream');
|
||||
//header('Cache-Control: no-cache');
|
||||
//header('Connection: keep-alive');
|
||||
//header('X-Accel-Buffering: no');
|
||||
|
||||
$uniqueid = input('uniqueid');
|
||||
if(empty($uniqueid)){
|
||||
return json(Tools::set_fail('uniqueid必须'));
|
||||
}
|
||||
|
||||
|
||||
Tools::log_to_write_txt(['input'=>input()]);
|
||||
$config = config('ai_num_report_config');
|
||||
|
||||
$question = '';//input('question','');
|
||||
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return json(Tools::set_fail('对话票据ticket必须(用于隔离用户聊天历史记录),登陆时返回票据,每次诊断结束重新生成票据!'));
|
||||
}
|
||||
|
||||
if(empty(input('from'))){
|
||||
return json(Tools::set_fail('from必须'));
|
||||
}
|
||||
|
||||
$from = 'h5';
|
||||
$qa_type = 'fix';
|
||||
if(empty($qa_type)){
|
||||
return json(Tools::set_fail('qa_type问答模式必须,可选项:问答模式:free=自由问答,fix=固定问答'));
|
||||
}
|
||||
//用户
|
||||
$user = Db::table(TabConf::$fa_hdrusersh5)->where('ticket',$ticket)->find();
|
||||
if(empty($user)){
|
||||
return json(Tools::set_res(531,'用户不存在'));
|
||||
}
|
||||
//查询医生所属部门
|
||||
$hdrdoctorusers = Db::table(TabConf::$fa_hdrdoctorusers)
|
||||
->where('username',$user['doctor'])
|
||||
->find();
|
||||
if(empty($hdrdoctorusers)){
|
||||
return json(Tools::set_fail('医生不存在'));
|
||||
}
|
||||
//部门id
|
||||
$hdrdepartment_id = $hdrdoctorusers['hdrdepartment_id'];
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
'chatId'=>Tools::getMillisecond(),
|
||||
];
|
||||
|
||||
//验证参数
|
||||
if(empty(input('name'))){
|
||||
return json(Tools::set_fail('name必须'));
|
||||
}
|
||||
if(empty(input('gender'))){
|
||||
return json(Tools::set_fail('gender必须'));
|
||||
}
|
||||
if(empty(input('age'))){
|
||||
return json(Tools::set_fail('age必须'));
|
||||
}
|
||||
if(empty(input('phone'))){
|
||||
return json(Tools::set_fail('phone必须'));
|
||||
}
|
||||
if(empty(input('hdrdepartment_id'))){
|
||||
return json(Tools::set_fail('hdrdepartment_id必须'));
|
||||
}
|
||||
|
||||
$basedata = [
|
||||
'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',''),//微信号
|
||||
'from'=>$from,//来源
|
||||
'ticket'=>$ticket,//登录票据'
|
||||
'date'=>date('Y-m-d'),
|
||||
'hdrdepartment_id'=>$hdrdepartment_id,//科室
|
||||
];
|
||||
//$uniqueid = md5(json_encode($basedata));
|
||||
//查询报告
|
||||
$report = Db::table('fa_tt_medical_report')
|
||||
->where('uniqueid',$uniqueid)
|
||||
->find();
|
||||
if($report){
|
||||
return json(Tools::set_fail('报告重复'));
|
||||
}
|
||||
|
||||
$contentstr = input('content');
|
||||
if(empty($contentstr)){
|
||||
return json(Tools::set_fail('content必须'));
|
||||
}
|
||||
|
||||
$content['name'] = '【姓名】:'.$basedata['name'];
|
||||
$content['gender'] = '【性别】:'.$basedata['gender'];
|
||||
$content['age'] = '【年龄】:'.$basedata['age'];
|
||||
$content['edu'] = '【教育程度】:'.$basedata['edu'];
|
||||
$content['career_year'] = '【职业及年限】:'.$basedata['career_year'];
|
||||
$content['power'] = '【体力要求】:'.$basedata['power'];
|
||||
$content['satisfaction'] = '【经济满意度】:'.$basedata['satisfaction'];
|
||||
$content['old_career_year'] = '【过往职业及年限】:'.$basedata['old_career_year'];
|
||||
$content['old_career_power'] = '【过往体力要求】:'.$basedata['old_career_power'];
|
||||
$content['support'] = '【社会支持度】:'.$basedata['support'];
|
||||
$content['marriage'] = '【婚姻状况】:'.$basedata['marriage'];
|
||||
$content['live'] = '【居住情况】:'.$basedata['live'];
|
||||
$content['home'] = '【家庭关系】:'.$basedata['home'];
|
||||
$content['address'] = '【地址】:'.$basedata['address'];
|
||||
$content['phone'] = '【联系方式】:'.$basedata['phone'];
|
||||
$content['wechat_no'] = '【微信号】:'.$basedata['wechat_no'];
|
||||
//
|
||||
////设置基本信息
|
||||
//$chatobj->setBefore($content);
|
||||
|
||||
$sub_content = json_decode($contentstr,true);
|
||||
if(empty($sub_content)){
|
||||
return json(Tools::set_fail('没有对话诊断信息'));
|
||||
}
|
||||
Tools::log_to_write_txt(['聊天记录content:'=>$sub_content]);
|
||||
//$content = [
|
||||
// //["role" => "user", "content" => '']
|
||||
//];
|
||||
//$sub_content = array_merge($content,$sub_content);
|
||||
|
||||
$ctn_msg_str = implode('',array_column($sub_content,'content'));
|
||||
foreach ($content as $val){
|
||||
$ctn_msg_str .= ','.$val;
|
||||
}
|
||||
$sub_content_msg = [
|
||||
["role" => "user", "content" => $ctn_msg_str]
|
||||
];
|
||||
//chatGpt设置前置聊天上下文
|
||||
$chatobj->setBefore($sub_content_msg);
|
||||
|
||||
//回答
|
||||
$chatobj->returnAnswer($question,$config,$answer_json_arr);
|
||||
//dump($answer_json_arr);die;
|
||||
|
||||
$res_content = [];
|
||||
$data = [];
|
||||
Tools::log_to_write_txt(['gpt回复'=>$answer_json_arr]);
|
||||
//把返回的报告保存起来
|
||||
foreach ($answer_json_arr as $josn){
|
||||
$item = json_decode($josn,true);
|
||||
if(empty($item['choices'])){
|
||||
return json(Tools::set_fail('choices is empty',$answer_json_arr));
|
||||
}
|
||||
$choices = $item['choices'];
|
||||
foreach ($choices as $choice){
|
||||
$data[] = [
|
||||
'username'=>$hdrdoctorusers['username'],//登录的医生
|
||||
'report_content'=>$choice['message']['content'],
|
||||
'name'=>$basedata['name'],
|
||||
'phone'=>$basedata['phone'],
|
||||
];
|
||||
$res_content[] = $choice['message']['content'];
|
||||
}
|
||||
}
|
||||
if(empty($data)){
|
||||
return json(Tools::set_fail('没有获取到报告'));
|
||||
}
|
||||
|
||||
Db::startTrans();
|
||||
try {
|
||||
foreach ($data as $item){
|
||||
|
||||
//新增统一基本信息
|
||||
$hdruserbaseinfo_id = Db::table('fa_tt_userbaseinfo')->insertGetId($basedata);
|
||||
//只新增不修改
|
||||
$userbaseinfo_id = Db::table('fa_tt_userbaseinfo')->insert($basedata);
|
||||
//保存疼痛科聊天记录
|
||||
$this->setTtChatHistory($sub_content,$hdrdoctorusers['username'],$hdruserbaseinfo_id,$userbaseinfo_id,$ticket);
|
||||
$item['userbaseid'] = $userbaseinfo_id;
|
||||
$item['hdruserbaseinfo_id'] = $hdruserbaseinfo_id;//统一病历基本信息ID
|
||||
$item['hdrdepartment_id'] = $hdrdepartment_id;
|
||||
$item['from'] = $from;//来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
$item['doctor'] = $hdrdoctorusers['name'];
|
||||
$item['qa_type'] = $qa_type;
|
||||
$item['uniqueid'] = $uniqueid;
|
||||
//保存报告
|
||||
Db::table('fa_tt_medical_report')->insert($item);
|
||||
//日期
|
||||
//$item['date'] = date('Y-m-d');
|
||||
|
||||
|
||||
////统一存档(暂时不用)
|
||||
//Db::table(TabConf::$fa_hdrmedical_report)->insert($item);
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
return json(Tools::set_ok(['base_data'=>$content,'res_content'=>$res_content]));
|
||||
}catch (\Exception $e){
|
||||
Db::rollback();
|
||||
Tools::error_txt_log($e);
|
||||
return json(Tools::set_fail('新增报告失败.'.$e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:保存疼痛科聊天记录
|
||||
* author:wh
|
||||
* @param $sub_content
|
||||
*/
|
||||
private function setTtChatHistory($sub_content,$username,$hdruserbaseinfo_id,$userbaseinfo_id,$ticket){
|
||||
//$content = [
|
||||
// //["role" => "user", "content" => '']
|
||||
//];
|
||||
$data = [];
|
||||
foreach ($sub_content as $item){
|
||||
//$content = explode(':',$item['content']);
|
||||
$d = [
|
||||
'username'=>$username,
|
||||
//'type'=>empty($content[0])?'':$content[0],
|
||||
'chat_msg'=>$item['content'],
|
||||
'ticket'=>$ticket,
|
||||
'userbaseinfo_id'=>$userbaseinfo_id,
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
'type'=>$item['type'],
|
||||
];
|
||||
$data[] = $d;
|
||||
}
|
||||
Db::table(TabConf::$fa_tt_chathistory)->insertAll($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:查询报告详情
|
||||
*
|
||||
* api/Reporth5/getReportById
|
||||
* 参数:dataid 报告id
|
||||
* ticket:用户ticket
|
||||
* author:wh
|
||||
*/
|
||||
function getReportById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$info = Db::table('fa_tt_medical_report')
|
||||
->where('id',input('dataid'))
|
||||
->find();
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
/**
|
||||
* desc:查询报告列表
|
||||
*
|
||||
* api/Reporth5/getReportList
|
||||
* 参数:username
|
||||
* ticket:用户ticket
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getReportList(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$info = Db::table('fa_tt_medical_report')
|
||||
->select();
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报告
|
||||
* api/Reporth5/editReport
|
||||
* 参数:dataid 报告数据id
|
||||
name 病人姓名
|
||||
gender 病人性别: M=男性, F=女性
|
||||
age 病人年龄
|
||||
main_complaint 主诉
|
||||
medical_history 病史
|
||||
past_history 既往史
|
||||
allergy_history 过敏史
|
||||
family_history 家族史
|
||||
personal_history 个人史
|
||||
menstrual_marital_history 月经婚育史
|
||||
diagnosis 诊断
|
||||
treatment 医嘱
|
||||
*/
|
||||
function editReport(){
|
||||
return Mmodel::catchJson(function (){
|
||||
//$ticket = input('ticket');
|
||||
//if(empty($ticket)){
|
||||
// return Tools::set_fail('ticket必须');
|
||||
//}
|
||||
//修改基本信息
|
||||
$data = [
|
||||
//'username'=>$hdrdoctorusers['username'],//医生
|
||||
'name'=>input('name',''),//病人姓名
|
||||
'gender'=>input('gender',''),//病人性别: M=男性, F=女性
|
||||
'age'=>input('age',''),//病人年龄
|
||||
'main_complaint'=>input('main_complaint',''),//主诉
|
||||
'medical_history'=>input('medical_history',''),//病史
|
||||
'past_history'=>input('past_history',''),//既往史
|
||||
'allergy_history'=>input('allergy_history',''),//过敏史
|
||||
'family_history'=>input('family_history',''),//家族史
|
||||
'personal_history'=>input('personal_history',''),//个人史
|
||||
'menstrual_marital_history'=>input('menstrual_marital_history',''),//月经婚育史
|
||||
'diagnosis'=>input('diagnosis',''),//诊断
|
||||
'treatment'=>input('treatment',''),//医嘱
|
||||
];
|
||||
//修改基本信息
|
||||
Mmodel::existsUpdateInsert('fa_tt_userbaseinfo',[
|
||||
//'username'=>input('username',''),
|
||||
'name'=>input('name',''),
|
||||
],$data);
|
||||
|
||||
//修改报告
|
||||
$str = <<<EOF
|
||||
【姓名】:{$data['name']}
|
||||
【年龄】:{$data['age']}
|
||||
【性别】:{$data['gender']}
|
||||
【主诉】:{$data['main_complaint']}
|
||||
【病史】:{$data['medical_history']}
|
||||
【既往史】:{$data['past_history']}
|
||||
【过敏史】:{$data['allergy_history']}
|
||||
【家族史】:{$data['family_history']}
|
||||
【个人史】:{$data['personal_history']}
|
||||
【月经婚育史】:{$data['menstrual_marital_history']}
|
||||
【诊断】:{$data['diagnosis']}
|
||||
【医嘱】:{$data['treatment']}
|
||||
EOF;
|
||||
|
||||
|
||||
|
||||
$dataid = input('dataid');
|
||||
if(empty($dataid)){
|
||||
return Tools::set_fail('dataid必须');
|
||||
}
|
||||
|
||||
Db::table('fa_tt_medical_report')
|
||||
->where('id',$dataid)
|
||||
->data(['report_content'=>$str])
|
||||
->update();
|
||||
|
||||
return Tools::set_ok();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,462 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/12} {11:29}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
|
||||
/**
|
||||
* 疼痛科-数字人-报告
|
||||
* Class Reporttt
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Reporttt extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:疼痛科-数字人-生成听诊报告(同时提交固定问答聊天记录)
|
||||
*
|
||||
* api/Reporttt/createReport
|
||||
* username 用户名
|
||||
*
|
||||
* name 病人姓名
|
||||
gender 病人性别
|
||||
age 病人年龄
|
||||
edu 教育程度
|
||||
career_year 职业及年限
|
||||
power 体力要求
|
||||
satisfaction 经济满意度
|
||||
old_career_year 过往职业及年限
|
||||
support 社会支持度
|
||||
marriage 婚姻状况
|
||||
live 居住情况
|
||||
home 家庭关系
|
||||
address 地址
|
||||
phone 联系方式
|
||||
wechat_no 微信号
|
||||
ticket 对话票据
|
||||
hdrdepartment_id 科室
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* hdrdepartment 科室名称
|
||||
*
|
||||
* content 对话内容;格式:
|
||||
* $content = [
|
||||
["role" => "user", "content" => '医生说:xxxxx'],
|
||||
["role" => "user", "content" => '患者说:xxxxx'],
|
||||
];
|
||||
* author:wh
|
||||
*/
|
||||
function createReport(){
|
||||
//header('Content-Type: text/event-stream');
|
||||
//header('Cache-Control: no-cache');
|
||||
//header('Connection: keep-alive');
|
||||
//header('X-Accel-Buffering: no');
|
||||
Tools::log_to_write_txt(['input'=>input()]);
|
||||
$report_config = config('ai_num_report_config');
|
||||
$h5_login_user_phone = input('h5_login_user_phone');//h5端上传附件登录号码
|
||||
//if (empty($h5_login_user_phone)){
|
||||
// return json(Tools::set_fail('h5_login_user_phone必须','使用h5端上传附件那个号码'));
|
||||
//}
|
||||
|
||||
$question = '';//input('question','');
|
||||
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $report_config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $report_config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return json(Tools::set_fail('对话票据ticket必须(用于隔离用户聊天历史记录),登陆时返回票据,每次诊断结束重新生成票据!'));
|
||||
}
|
||||
|
||||
if(empty(input('from'))){
|
||||
return json(Tools::set_fail('from必须'));
|
||||
}
|
||||
|
||||
$from = input('from');
|
||||
|
||||
$qa_type = input('qa_type');
|
||||
if($from=='h5'){
|
||||
$qa_type = 'fix';
|
||||
}
|
||||
if(empty($qa_type)){
|
||||
return json(Tools::set_fail('qa_type问答模式必须,可选项:问答模式:free=自由问答,fix=固定问答'));
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')->where('ticket',$ticket)->find();
|
||||
if(empty($user)){
|
||||
return json(Tools::set_res(531,'医生不存在,请登录'));
|
||||
}
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
'chatId'=>Tools::getMillisecond(),
|
||||
];
|
||||
|
||||
//验证参数
|
||||
if(empty(input('name'))){
|
||||
return json(Tools::set_fail('name必须'));
|
||||
}
|
||||
if(empty(input('gender'))){
|
||||
return json(Tools::set_fail('gender必须'));
|
||||
}
|
||||
if(empty(input('age'))){
|
||||
return json(Tools::set_fail('age必须'));
|
||||
}
|
||||
if(empty(input('phone'))){
|
||||
return json(Tools::set_fail('phone必须'));
|
||||
}
|
||||
if(!Validate::is_mobile(input('phone'))){
|
||||
return json(Tools::set_fail('phone格式错误'));
|
||||
}
|
||||
//if(empty(input('hdrdepartment_id'))){
|
||||
// return json(Tools::set_fail('hdrdepartment_id必须'));
|
||||
//}
|
||||
$basedata = [
|
||||
'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',''),//微信号
|
||||
'from'=>$from,//来源
|
||||
'ticket'=>$ticket,//对话票据'
|
||||
'date'=>date('Y-m-d'),
|
||||
'hdrdepartment_id'=>$hdrdepartment_id,//科室
|
||||
];
|
||||
|
||||
$contentstr = input('content');//对话记录
|
||||
if(empty($contentstr)){
|
||||
return json(Tools::set_fail('content必须'));
|
||||
}
|
||||
|
||||
$content['name'] = "\n\n".'【姓名】:'.$basedata['name'];
|
||||
$content['gender'] = '【性别】:'.$basedata['gender'];
|
||||
$content['age'] = '【年龄】:'.$basedata['age'];
|
||||
$content['edu'] = '【教育程度】:'.$basedata['edu'];
|
||||
$content['career_year'] = '【职业及年限】:'.$basedata['career_year'];
|
||||
$content['power'] = '【体力要求】:'.$basedata['power'];
|
||||
$content['satisfaction'] = '【经济满意度】:'.$basedata['satisfaction'];
|
||||
$content['old_career_year'] = '【过往职业及年限】:'.$basedata['old_career_year'];
|
||||
$content['old_career_power'] = '【过往体力要求】:'.$basedata['old_career_power'];
|
||||
$content['support'] = '【社会支持度】:'.$basedata['support'];
|
||||
$content['marriage'] = '【婚姻状况】:'.$basedata['marriage'];
|
||||
$content['live'] = '【居住情况】:'.$basedata['live'];
|
||||
$content['home'] = '【家庭关系】:'.$basedata['home'];
|
||||
$content['address'] = '【地址】:'.$basedata['address'];
|
||||
$content['phone'] = '【联系方式】:'.$basedata['phone'];
|
||||
$content['wechat_no'] = '【微信号】:'.$basedata['wechat_no'];
|
||||
|
||||
//
|
||||
////设置基本信息
|
||||
//$chatobj->setBefore($content);
|
||||
|
||||
$sub_content = json_decode($contentstr,true);
|
||||
if(empty($sub_content)){
|
||||
return json(Tools::set_fail('没有对话诊断信息'));
|
||||
}
|
||||
//Tools::log_to_write_txt(['聊天记录content:'=>$sub_content]);
|
||||
//$sub_content = array_merge($content,$sub_content);
|
||||
|
||||
$ctn_msg_str = implode('',array_column($sub_content,'content'));
|
||||
foreach ($content as $val){
|
||||
$ctn_msg_str .= ','.$val;
|
||||
}
|
||||
|
||||
|
||||
$report_ai_content = '';
|
||||
//$last_file_report = [];
|
||||
//if($h5_login_user_phone){
|
||||
//查询最新的附件
|
||||
$last_file_report = Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('reportid','eq','')
|
||||
->field('id,reportid,ai_result')
|
||||
->where('phone',$h5_login_user_phone?$h5_login_user_phone:$basedata['phone'])
|
||||
->select();
|
||||
foreach ($last_file_report as $val){
|
||||
if($report_ai_content){
|
||||
$report_ai_content.= ',';
|
||||
}
|
||||
$report_ai_content .= $val['ai_result']?$val['ai_result']:'';
|
||||
}
|
||||
//}
|
||||
|
||||
//追加附件
|
||||
$ctn_msg_str .= <<<EOF
|
||||
|
||||
|
||||
【附件】:{$report_ai_content}
|
||||
EOF;
|
||||
$sub_content_msg = [
|
||||
["role" => "user", "content" => $ctn_msg_str]
|
||||
];
|
||||
|
||||
|
||||
//chatGpt设置前置聊天上下文
|
||||
$chatobj->setBefore($sub_content_msg);
|
||||
|
||||
//回答
|
||||
$chatobj->returnAnswer($question,$config,$answer_json_arr);
|
||||
//dump($answer_json_arr);die;
|
||||
|
||||
$res_content = [];
|
||||
$data = [];
|
||||
Tools::log_to_write_txt(['请求gpt'=>$chatobj->post_msg_body]);
|
||||
Tools::log_to_write_txt(['gpt回复'=>$answer_json_arr]);
|
||||
//把返回的报告保存起来
|
||||
foreach ($answer_json_arr as $josn){
|
||||
$item = json_decode($josn,true);
|
||||
if(empty($item['choices'])){
|
||||
return json(Tools::set_fail('choices is empty',$answer_json_arr));
|
||||
}
|
||||
$choices = $item['choices'];
|
||||
foreach ($choices as $choice){
|
||||
$data[] = [
|
||||
'username'=>$user['username'],//登录的医生
|
||||
'report_content'=>$choice['message']['content'],
|
||||
'name'=>$basedata['name'],
|
||||
'phone'=>$basedata['phone'],
|
||||
];
|
||||
$res_content[] = $choice['message']['content'];
|
||||
}
|
||||
}
|
||||
if(empty($data)){
|
||||
return json(Tools::set_fail('没有获取到报告'));
|
||||
}
|
||||
|
||||
try {
|
||||
$medical_report_id = '';
|
||||
foreach ($data as $item){
|
||||
//只新增不修改
|
||||
$userbaseinfo_id = Db::table('fa_tt_userbaseinfo')->insert($basedata);
|
||||
//表示用户信息从h5里面查询而来
|
||||
if($h5_login_user_phone){//存在表示是通过搜索手机号进入数字人的
|
||||
$baseuserinfo = Db::table(TabConf::$fa_ty_userbaseinfo)
|
||||
->where('phone',$h5_login_user_phone)
|
||||
->order('id desc')
|
||||
->find();
|
||||
if(empty($baseuserinfo)){
|
||||
return json(Tools::set_fail('没有查询到用户信息'));
|
||||
}
|
||||
// 科室名称
|
||||
$basedata['hdrdepartment'] = input('hdrdepartment','');
|
||||
////修改
|
||||
//Db::table(TabConf::$fa_tt_userbaseinfo)
|
||||
// ->where('id',$baseuserinfo['id'])
|
||||
// ->data($basedata)
|
||||
// ->update();
|
||||
$hdruserbaseinfo_id = $baseuserinfo['id'];
|
||||
}else{
|
||||
//新增统一基本信息
|
||||
$basedata['hdrdepartment'] = input('hdrdepartment','');
|
||||
$hdruserbaseinfo_id = Db::table(TabConf::$fa_tt_userbaseinfo)->insertGetId($basedata);
|
||||
}
|
||||
|
||||
$item['userbaseid'] = $userbaseinfo_id;
|
||||
$item['hdruserbaseinfo_id'] = $hdruserbaseinfo_id;//统一病历基本信息ID
|
||||
$item['hdrdepartment_id'] = $hdrdepartment_id;
|
||||
$item['from'] = $from;//来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
$item['doctor'] = $user['name'];
|
||||
$item['qa_type'] = $qa_type;
|
||||
$tmp_data = array_merge($item,$basedata);
|
||||
//保存报告
|
||||
$medical_report_id = Db::table('fa_tt_medical_report')->insertGetId($tmp_data);
|
||||
//日期
|
||||
//$item['date'] = date('Y-m-d');
|
||||
//保存疼痛科聊天记录【对话记录跟着报告走】
|
||||
$this->setTtChatHistory($sub_content,$user['username'],$hdruserbaseinfo_id,$userbaseinfo_id,$ticket,$medical_report_id);
|
||||
|
||||
|
||||
|
||||
////统一存档(暂时不用)
|
||||
//Db::table(TabConf::$fa_hdrmedical_report)->insert($item);
|
||||
}
|
||||
//循环修改报告id
|
||||
foreach ($last_file_report as $item_info){
|
||||
Db::table(TabConf::$fa_drugs_images_medical_result)
|
||||
->where('id',$item_info['id'])
|
||||
->data(['reportid'=>$medical_report_id])
|
||||
->update();
|
||||
}
|
||||
|
||||
return json(Tools::set_ok(['base_data'=>$content,'res_content'=>$res_content,'medical_report_id'=>$medical_report_id]));
|
||||
}catch (\Exception $e){
|
||||
Tools::error_txt_log($e);
|
||||
return json(Tools::set_fail('新增报告失败.'.$e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:保存疼痛科聊天记录
|
||||
* author:wh
|
||||
* @param $sub_content
|
||||
*/
|
||||
private function setTtChatHistory($sub_content,$username,$hdruserbaseinfo_id,$userbaseinfo_id,$ticket,$reportid){
|
||||
//$content = [
|
||||
// //["role" => "user", "content" => '']
|
||||
//];
|
||||
$data = [];
|
||||
foreach ($sub_content as $item){
|
||||
$content = explode(':',$item['content']);
|
||||
$d = [
|
||||
'username'=>$username,
|
||||
'type'=>empty($content[0])?'':$content[0],
|
||||
'chat_msg'=>$item['content'],
|
||||
'ticket'=>$ticket,
|
||||
'userbaseinfo_id'=>$userbaseinfo_id,
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
'reportid'=>$reportid,
|
||||
];
|
||||
$data[] = $d;
|
||||
}
|
||||
Db::table(TabConf::$fa_tt_chathistory)->insertAll($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:查询报告详情
|
||||
*
|
||||
* api/Reporttt/getReportById
|
||||
* 参数:dataid 报告id
|
||||
* ticket:用户ticket
|
||||
* author:wh
|
||||
*/
|
||||
function getReportById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$info = Db::table('fa_tt_medical_report')
|
||||
->where('id',input('dataid'))
|
||||
->find();
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
/**
|
||||
* desc:查询报告列表
|
||||
*
|
||||
* api/Reporttt/getReportList
|
||||
* 参数:phone
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getReportList(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$phone = input('phone');
|
||||
if(empty( $phone)){
|
||||
return Tools::set_fail( 'phone is empty');
|
||||
}
|
||||
$info = Db::table('fa_tt_medical_report')
|
||||
->where('phone',$phone)
|
||||
->select();
|
||||
foreach ($info as &$item){
|
||||
$item['hdruserbaseinfo_id_data'] = Db::table(TabConf::$fa_tt_userbaseinfo)
|
||||
->where('id',$item['hdruserbaseinfo_id'])
|
||||
->find();
|
||||
}
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报告
|
||||
* api/Reporttt/editReport
|
||||
* 参数:dataid 报告数据id
|
||||
name 病人姓名
|
||||
gender 病人性别: M=男性, F=女性
|
||||
age 病人年龄
|
||||
main_complaint 主诉
|
||||
medical_history 病史
|
||||
past_history 既往史
|
||||
allergy_history 过敏史
|
||||
family_history 家族史
|
||||
personal_history 个人史
|
||||
menstrual_marital_history 月经婚育史
|
||||
diagnosis 诊断
|
||||
treatment 医嘱
|
||||
*/
|
||||
// function editReport(){
|
||||
// return Mmodel::catchJson(function (){
|
||||
// $dataid = input('dataid');
|
||||
// if(empty($dataid)){
|
||||
// return Tools::set_fail('dataid必须');
|
||||
// }
|
||||
// //$ticket = input('ticket');
|
||||
// //if(empty($ticket)){
|
||||
// // return Tools::set_fail('ticket必须');
|
||||
// //}
|
||||
// //修改基本信息
|
||||
// $data = [
|
||||
// //'username'=>$user['username'],//医生
|
||||
// 'name'=>input('name',''),//病人姓名
|
||||
// 'gender'=>input('gender',''),//病人性别: M=男性, F=女性
|
||||
// 'age'=>input('age',''),//病人年龄
|
||||
// 'main_complaint'=>input('main_complaint',''),//主诉
|
||||
// 'medical_history'=>input('medical_history',''),//病史
|
||||
// 'past_history'=>input('past_history',''),//既往史
|
||||
// 'allergy_history'=>input('allergy_history',''),//过敏史
|
||||
// 'family_history'=>input('family_history',''),//家族史
|
||||
// 'personal_history'=>input('personal_history',''),//个人史
|
||||
// 'menstrual_marital_history'=>input('menstrual_marital_history',''),//月经婚育史
|
||||
// 'diagnosis'=>input('diagnosis',''),//诊断
|
||||
// 'treatment'=>input('treatment',''),//医嘱
|
||||
// ];
|
||||
// //查询报告
|
||||
// $report = Db::table('fa_tt_medical_report')
|
||||
// ->where('id',$dataid)
|
||||
// ->find();
|
||||
// if(empty($report)){
|
||||
// return Tools::set_fail('报告不存在');
|
||||
// }
|
||||
//
|
||||
// //修改基本信息
|
||||
// //Mmodel::existsUpdateInsert('fa_tt_userbaseinfo',[
|
||||
// // 'id'=>$report['userbaseid'],
|
||||
// //],$data);
|
||||
//
|
||||
// //修改报告
|
||||
// $str = <<<EOF
|
||||
//【姓名】:{$data['name']}
|
||||
//【年龄】:{$data['age']}
|
||||
//【性别】:{$data['gender']}
|
||||
//【主诉】:{$data['main_complaint']}
|
||||
//【病史】:{$data['medical_history']}
|
||||
//【既往史】:{$data['past_history']}
|
||||
//【过敏史】:{$data['allergy_history']}
|
||||
//【家族史】:{$data['family_history']}
|
||||
//【个人史】:{$data['personal_history']}
|
||||
//【月经婚育史】:{$data['menstrual_marital_history']}
|
||||
//【诊断】:{$data['diagnosis']}
|
||||
//【医嘱】:{$data['treatment']}
|
||||
//EOF;
|
||||
//
|
||||
//
|
||||
//
|
||||
// Db::table('fa_tt_medical_report')
|
||||
// ->where('id',$dataid)
|
||||
// ->data(['report_content'=>$str])
|
||||
// ->update();
|
||||
//
|
||||
// return Tools::set_ok();
|
||||
// });
|
||||
// }
|
||||
}
|
||||
@@ -1,442 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/12} {11:29}
|
||||
*/
|
||||
|
||||
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;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* 听译-报告
|
||||
* Class Reportty
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Reportty extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:听译-生成听诊报告
|
||||
*
|
||||
* api/Reportty/createReport
|
||||
* 参数:ticket
|
||||
* from 来源
|
||||
* client_id
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function createReport(){
|
||||
Tools::log_to_write_txt(['input'=>input()]);
|
||||
//header('Content-Type: text/event-stream');
|
||||
//header('Cache-Control: no-cache');
|
||||
//header('Connection: keep-alive');
|
||||
//header('X-Accel-Buffering: no');
|
||||
$config = config('ai_listen_report_config');
|
||||
|
||||
//$question = '';//input('question','');
|
||||
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
//医生登录的ticket
|
||||
$qa_chat_ticket = input('ticket');
|
||||
if(empty($qa_chat_ticket)){
|
||||
return json(Tools::set_fail('qa_chat_ticket必须'));
|
||||
}
|
||||
$phone = input('phone');//患者手机号
|
||||
if (empty($phone)){
|
||||
return json(Tools::set_fail('患者手机号必须'));
|
||||
}
|
||||
//医生开始对话的token
|
||||
$say_token = input('say_token');
|
||||
if(empty($say_token)){
|
||||
return json(Tools::set_fail('say_token必须'));
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')->where('qa_chat_ticket',$qa_chat_ticket)->find();
|
||||
if(empty($user)){
|
||||
return json(Tools::set_fail('医生不存在,请确认qa_chat_ticket'));
|
||||
}
|
||||
//$before_report_dataid = input('before_report_dataid');//上一次生成的疼痛科报告id
|
||||
//$before_report_content = '';
|
||||
//$base_info = [];
|
||||
//if($before_report_dataid){
|
||||
// $before_report = Db::table('fa_tt_medical_report')
|
||||
// ->where('id',$before_report_dataid)
|
||||
// ->find();
|
||||
// if($before_report){
|
||||
// $before_report_content = $before_report['report_content'];
|
||||
// //查询基本信息
|
||||
// $base_info = Db::table(TabConf::$fa_tt_userbaseinfo)
|
||||
// ->where('id',$before_report['hdruserbaseinfo_id'])
|
||||
// ->find();
|
||||
// }
|
||||
//}
|
||||
$gender = input('sex');
|
||||
if(empty($gender)){
|
||||
return json(Tools::set_fail('性别必须'));
|
||||
}
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('姓名必须'));
|
||||
}
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('hdruserbaseinfo_id必须'));
|
||||
}
|
||||
//查询历史聊天记录
|
||||
$his_record = Db::table('fa_ty_chathistory')
|
||||
->where('say_token',$say_token)
|
||||
->order('id asc')
|
||||
->where('hdruserbaseinfo_id',$hdruserbaseinfo_id)
|
||||
//->where('createtime','>',$day3)//3天之内
|
||||
->select();
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
'chatId'=>Tools::getMillisecond(),
|
||||
];
|
||||
//必须
|
||||
$reportid = input('reportid');
|
||||
if(empty($reportid)){
|
||||
return json(Tools::set_fail('数字人的报告id必修'));
|
||||
}
|
||||
//查询数字人报告
|
||||
$report = Db::table(TabConf::$fa_tt_medical_report)
|
||||
->where('id',$reportid)
|
||||
->find();
|
||||
if(empty($report)){
|
||||
return json(Tools::set_fail('数字人报告不存在'));
|
||||
}
|
||||
$body_check = input('body_check');
|
||||
if(empty($body_check)){
|
||||
return json(Tools::set_fail('体格检查必须'));
|
||||
}
|
||||
//设置之前的报告内容
|
||||
//$content = [
|
||||
// ["role" => "user", "content" => $before_report_content]
|
||||
//];
|
||||
//添加性别
|
||||
//if($gender){
|
||||
// $content[] = ["role" => "user", "content" => '【性别】:'.$gender];
|
||||
//}
|
||||
|
||||
//$age = $report['age'];
|
||||
//$edu = $report['edu'];
|
||||
//$career_year = $report['career_year'];
|
||||
//$power = $report['power'];
|
||||
//$satisfaction = $report['satisfaction'];
|
||||
//$old_career_year = $report['old_career_year'];
|
||||
//$old_career_power = $report['old_career_power'];
|
||||
//$support = $report['support'];
|
||||
//$marriage = $report['marriage'];
|
||||
//$live = $report['live'];
|
||||
|
||||
|
||||
//构建基本信息
|
||||
//$content[] = ["role" => "user", "content" => "\n\n".'【病人姓名】:'.$name];
|
||||
//$content[] = ["role" => "user", "content" => '【病人性别】:'.$gender];
|
||||
//$content[] = ["role" => "user", "content" => '【病人年龄】:'.$age];
|
||||
//$content[] = ["role" => "user", "content" => '【教育程度】:'.$edu];
|
||||
//$content[] = ["role" => "user", "content" => '【职业及年限】:'.$career_year];
|
||||
//$content[] = ["role" => "user", "content" => '【体力要求】:'.$power];
|
||||
//$content[] = ["role" => "user", "content" => '【经济满意度】:'.$satisfaction];
|
||||
//$content[] = ["role" => "user", "content" => '【过往职业及年限】:'.$old_career_year];
|
||||
//$content[] = ["role" => "user", "content" => '【过往职业体力要求】:'.$old_career_power];
|
||||
//$content[] = ["role" => "user", "content" => '【社会支持度】:'.$support];
|
||||
//$content[] = ["role" => "user", "content" => '【婚姻状况】:'.$marriage];
|
||||
//$content[] = ["role" => "user", "content" => '【居住情况】:'.$live];
|
||||
|
||||
//对话记录
|
||||
$chat_his = "\n\n";
|
||||
foreach ($his_record as $item){
|
||||
//$content[] = ["role" => "user", "content" => "\n\n".$item['chat_msg']];
|
||||
$chat_his .= $item['chat_msg']."\n";
|
||||
}
|
||||
//$sub_content_msg = [
|
||||
// ["role" => "user", "content" => implode('',array_column($content,'content'))]
|
||||
//];
|
||||
//$chatobj->setBefore($sub_content_msg);
|
||||
|
||||
|
||||
$num_per_report = $report['report_content'];
|
||||
//数字人报告+对话记录
|
||||
$question = <<<EOF
|
||||
【对话记录】
|
||||
$chat_his
|
||||
|
||||
【病例报告】
|
||||
$num_per_report
|
||||
|
||||
【体格检查】
|
||||
{$body_check}
|
||||
EOF;
|
||||
|
||||
//$question = $num_per_report;
|
||||
|
||||
$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]);
|
||||
|
||||
$res_content = [];
|
||||
//把返回的报告保存起来
|
||||
foreach ($answer_json_arr as $josn){
|
||||
$item = json_decode($josn,true);
|
||||
$choices = $item['choices'];
|
||||
foreach ($choices as $choice){
|
||||
$data = [
|
||||
'doctor'=>$user['username'],
|
||||
//病人
|
||||
'report_content'=>$choice['message']['content'],
|
||||
'ticket'=>$qa_chat_ticket,
|
||||
'from'=>input('from','ty'),//来源
|
||||
'name'=>$name,
|
||||
'gender'=>$gender,
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
'username'=>$phone,
|
||||
'userbaseid'=>$report['userbaseid'],
|
||||
//'diagnostic_result'=>$report['diagnostic_result'],
|
||||
//'create_time'=>$report['create_time'],
|
||||
'age'=>$report['age'],
|
||||
'main_complaint'=>$report['main_complaint'],
|
||||
'medical_history'=>$report['medical_history'],
|
||||
'past_history'=>$report['past_history'],
|
||||
'allergy_history'=>$report['allergy_history'],
|
||||
'family_history'=>$report['family_history'],
|
||||
'personal_history'=>$report['personal_history'],
|
||||
'menstrual_marital_history'=>$report['menstrual_marital_history'],
|
||||
'diagnosis'=>$report['diagnosis'],
|
||||
'treatment'=>$report['treatment'],
|
||||
'phone'=>$report['phone'],
|
||||
'status'=>$report['status'],
|
||||
//'user_phone'=>$report['user_phone'],
|
||||
'date'=>$report['date'],//
|
||||
'hdrdepartment_id'=>$report['hdrdepartment_id'],
|
||||
'hdrdepartment'=>$report['hdrdepartment'],
|
||||
'edu'=>$report['edu'],
|
||||
'career_year'=>$report['career_year'],
|
||||
'power'=>$report['power'],
|
||||
'satisfaction'=>$report['satisfaction'],
|
||||
'old_career_year'=>$report['old_career_year'],
|
||||
'old_career_power'=>$report['old_career_power'],
|
||||
'support'=>$report['support'],
|
||||
'marriage'=>$report['marriage'],
|
||||
'live'=>$report['live'],
|
||||
'home'=>$report['home'],
|
||||
'address'=>$report['address'],
|
||||
'wechat_no'=>$report['wechat_no'],
|
||||
//'is_flow'=>$report['is_flow'],
|
||||
];
|
||||
$report_id = Db::table('fa_ty_medical_report')->insertGetId($data);
|
||||
//日期
|
||||
//$data['date'] = date('Y-m-d');
|
||||
|
||||
//【对话记录跟着报告走】
|
||||
Db::table(TabConf::$fa_ty_chathistory)
|
||||
->where('say_token',$qa_chat_ticket)
|
||||
->data(['reportid'=>$report_id])
|
||||
->update();
|
||||
|
||||
$res_content[] = ['report_id'=>$report_id,'report_content'=>$choice['message']['content']];
|
||||
}
|
||||
}
|
||||
|
||||
$client_id = input('client_id');
|
||||
if(empty($client_id)){
|
||||
return json(Tools::set_fail('client_id必须'));
|
||||
}
|
||||
|
||||
//查询广播客户端id
|
||||
$arr = Db::table('fa_device')
|
||||
->where('ticket',$qa_chat_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,[$client_id]);
|
||||
return json(Tools::set_ok($res_content));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc:查询报告详情
|
||||
*
|
||||
* api/Reportty/getReportById
|
||||
* 参数:dataid 报告id
|
||||
* ticket:用户ticket
|
||||
* author:wh
|
||||
*/
|
||||
function getReportById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$info = Db::table('fa_ty_medical_report')
|
||||
->where('id',input('dataid'))
|
||||
->find();
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
/**
|
||||
* desc:查询报告列表
|
||||
*
|
||||
* api/Reportty/getReportList
|
||||
* 参数:phone
|
||||
*
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getReportList(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$phone = input('phone');
|
||||
$obj = Db::table('fa_ty_medical_report');
|
||||
if($phone){
|
||||
$obj->where('username',$phone);
|
||||
}
|
||||
$info = $obj->select();
|
||||
return Tools::set_ok($info);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改报告
|
||||
* api/Reportty/editReport
|
||||
* 参数:dataid 报告数据id
|
||||
* username 医生登录账号(必须)
|
||||
name 病人姓名
|
||||
gender 病人性别: M=男性, F=女性
|
||||
age 病人年龄
|
||||
main_complaint 主诉
|
||||
medical_history 病史
|
||||
past_history 既往史
|
||||
allergy_history 过敏史
|
||||
family_history 家族史
|
||||
personal_history 个人史
|
||||
menstrual_marital_history 月经婚育史
|
||||
diagnosis 诊断
|
||||
treatment 医嘱
|
||||
ticket 对话票据
|
||||
hdrdepartment_id 科室
|
||||
*/
|
||||
function editReport(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$qa_chat_ticket = input('ticket');
|
||||
if(empty($qa_chat_ticket)){
|
||||
return Tools::set_fail('qa_chat_ticket必须');
|
||||
}
|
||||
|
||||
if(empty(input('username'))){
|
||||
return Tools::set_fail('医生登录账号必须');
|
||||
}
|
||||
if(empty(input('name',''))){
|
||||
return Tools::set_fail('病人姓名必须');
|
||||
}
|
||||
if(empty(input('phone',''))){
|
||||
return Tools::set_fail('病人手机号必须');
|
||||
}
|
||||
if(empty(input('diagnosis'))){
|
||||
return Tools::set_fail('diagnosis诊断内容必须');
|
||||
}
|
||||
if(empty(input('gender'))){
|
||||
return Tools::set_fail('gender必须');
|
||||
}
|
||||
//听译问诊-患者病历信息
|
||||
$data = [
|
||||
'username'=>input('username'),//医生
|
||||
'name'=>input('name',''),//病人姓名
|
||||
'gender'=>input('gender',''),//病人性别: M=男性, F=女性
|
||||
'age'=>input('age',''),//病人年龄
|
||||
'main_complaint'=>input('main_complaint','无'),//主诉
|
||||
'medical_history'=>input('medical_history','无'),//病史
|
||||
'past_history'=>input('past_history','无'),//既往史
|
||||
'allergy_history'=>input('allergy_history','无'),//过敏史
|
||||
'family_history'=>input('family_history','无'),//家族史
|
||||
'personal_history'=>input('personal_history','无'),//个人史
|
||||
'menstrual_marital_history'=>input('menstrual_marital_history','无'),//月经婚育史
|
||||
'diagnosis'=>input('diagnosis','无'),//诊断
|
||||
'treatment'=>input('treatment','无'),//医嘱
|
||||
'ticket'=>$qa_chat_ticket,
|
||||
'hdrdepartment_id'=>input('hdrdepartment_id'),//科室
|
||||
];
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty(input('hdruserbaseinfo_id'))){
|
||||
return Tools::set_fail('hdruserbaseinfo_id必须');
|
||||
}
|
||||
//医生开始对话的token
|
||||
$say_token = input('say_token');
|
||||
if(empty($say_token)){
|
||||
return Tools::set_fail('say_token必须');
|
||||
}
|
||||
//查询统一基本信息
|
||||
$base_info = Db::table('fa_tt_userbaseinfo')
|
||||
->where('id',$hdruserbaseinfo_id)
|
||||
->find();
|
||||
//校验
|
||||
if(empty($base_info)){
|
||||
return Tools::set_fail('统一基本信息不存在');
|
||||
}
|
||||
|
||||
//修改历史记录的hdruserbaseinfo_id
|
||||
Db::table('fa_ty_chathistory')
|
||||
->where('say_token',$say_token)
|
||||
->update(['hdruserbaseinfo_id'=>$hdruserbaseinfo_id]);
|
||||
//听译问诊-患者病历信息
|
||||
$medicalrecord = Db::table('fa_ty_userbaseinfo')
|
||||
->where('name',input('name',''))
|
||||
->find();
|
||||
if(empty($medicalrecord)){
|
||||
$data['ticket'] = $qa_chat_ticket;
|
||||
//新增听译病历信息
|
||||
$userbaseid = Db::table('fa_ty_userbaseinfo')->insertGetId($data);
|
||||
|
||||
}else{
|
||||
$userbaseid = $medicalrecord['id'];
|
||||
Db::table('fa_ty_userbaseinfo')
|
||||
->where('ticket',$qa_chat_ticket)
|
||||
->update($data);
|
||||
}
|
||||
|
||||
$rehabilitation_advice = input('rehabilitation_advice','无');//康复建议
|
||||
$test_advice = input('test_advice','无');//检测建议
|
||||
|
||||
//修改报告
|
||||
$str = <<<EOF
|
||||
【主诉】:{$data['main_complaint']}
|
||||
【病史】:{$data['medical_history']}
|
||||
【个人史】:{$data['personal_history']}
|
||||
【婚姻史】:{$data['menstrual_marital_history']}
|
||||
【家族史】:{$data['family_history']}
|
||||
【诊断】:{$data['diagnosis']}
|
||||
【康复建议】:{$rehabilitation_advice}
|
||||
【检查建议】:{$test_advice}
|
||||
EOF;
|
||||
|
||||
$dataid = input('dataid');
|
||||
if(empty($dataid)){
|
||||
return Tools::set_fail('dataid必须');
|
||||
}
|
||||
|
||||
Db::table('fa_ty_medical_report')
|
||||
->where('id',$dataid)
|
||||
->data([
|
||||
//病历信息id
|
||||
'userbaseid'=>$userbaseid,//创建报告的时候这个字段是空,修改报告再补填这个字段
|
||||
'report_content'=>$str,
|
||||
'name'=>$data['name'],
|
||||
'gender'=>$data['gender'],
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,//统一病历基本信息ID
|
||||
])
|
||||
->update();
|
||||
return Tools::set_ok();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/10/21} {14:52}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Service extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:文本转语音
|
||||
*
|
||||
* 语音转换服务
|
||||
*
|
||||
* api/Service/azurettsAudio
|
||||
*
|
||||
* 参数:
|
||||
* text: 文本内容
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
public function azurettsAudio()
|
||||
{
|
||||
$text = input('text','Bagaimana keadaan pernafasan anda?');
|
||||
$data_raw = input('data_raw','ms-MY');
|
||||
$data_neural = input('data_neural','YasminNeural');
|
||||
$service_config = config('voice_to_text_service');
|
||||
//回答
|
||||
$url = $service_config['base_url'];//"https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1";
|
||||
$subscriptionKey = $service_config['APIKey'];//"090287baa7b14fcfb060a70bd1863f2f";
|
||||
$outputFormat = "audio-48khz-192kbitrate-mono-mp3";
|
||||
$xmlContent = <<<XML
|
||||
<?xml version='1.0'?>
|
||||
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='{$data_raw}'>
|
||||
<voice name='{$data_raw}-{$data_neural}'>
|
||||
{$text}
|
||||
</voice>
|
||||
</speak>
|
||||
XML;
|
||||
|
||||
$options = array(
|
||||
'http' => array(
|
||||
'header' => "Ocp-Apim-Subscription-Key: $subscriptionKey\r\n" .
|
||||
"Content-Type: application/ssml+xml\r\n" .
|
||||
"X-Microsoft-OutputFormat: $outputFormat\r\n" .
|
||||
"User-Agent: MyTTSApp\r\n", // 添加 User-Agent 头
|
||||
'method' => 'POST',
|
||||
'content' => $xmlContent,
|
||||
),
|
||||
);
|
||||
|
||||
$context = stream_context_create($options);
|
||||
$result = file_get_contents($url, false, $context);
|
||||
|
||||
if ($result === FALSE) {
|
||||
// 处理错误
|
||||
//echo "请求失败";
|
||||
return json(Tools::set_fail('请求失败'));
|
||||
} else {
|
||||
$date = date("YmdHis");
|
||||
$root_path = Tools::get_root_path();
|
||||
$request_path = '/audio/azure_tts';
|
||||
$save_path = 'public'.$request_path;
|
||||
$filepath = $root_path . $save_path;
|
||||
if (!file_exists($filepath)) {
|
||||
mkdir($filepath, 0777, true); // 确保目录存在
|
||||
}
|
||||
$filename = "/output_$date.mp3";
|
||||
file_put_contents($filepath . $filename, $result);
|
||||
//echo "音频文件已生成: $filename";
|
||||
$domain = request()->domain();
|
||||
return json(Tools::set_ok('请求成功',$domain.$request_path.$filename));
|
||||
}
|
||||
}
|
||||
|
||||
function test(){
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,223 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/11/21} {14:14}
|
||||
*/
|
||||
|
||||
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;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* 听译优医助手
|
||||
* Tingyi Youyi Assistant
|
||||
*
|
||||
* Class Tingyiueassistant
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Tingyiueassistant extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:听译助手对话,优医助手
|
||||
*
|
||||
* 参数:
|
||||
* type:助手类型,选择助手类型:如疼痛科指导医师【必须】
|
||||
* question :问题【必须】
|
||||
* phone 患者手机号【必须】
|
||||
* doctor 医生手机号【必须】
|
||||
* sessionid 会话id【必须】 从getSayToken接口获得,每次对话之前生成,用于区分不同会话
|
||||
*
|
||||
* 注意:回答完成之后再保存回答记录
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function chatTy(){
|
||||
header('Content-Type: text/event-stream');
|
||||
header('Cache-Control: no-cache');
|
||||
header('Connection: keep-alive');
|
||||
header('X-Accel-Buffering: no');
|
||||
Tools::log_to_write_txt(['input'=>input()]);
|
||||
|
||||
$type = input('type');//选择助手类型
|
||||
if(empty($type)){
|
||||
//return json(Tools::set_fail('type必须,选择助手类型:如疼痛科指导医师'));
|
||||
return Tools::set_event_stream_fail('type必须,选择助手类型:如疼痛科指导医师');
|
||||
}
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
//return json(Tools::set_fail('phone必须'));
|
||||
return Tools::set_event_stream_fail('phone患者手机号必须');
|
||||
}
|
||||
$doctor = input('doctor');
|
||||
if(empty($doctor)){
|
||||
//return json(Tools::set_fail('doctor必须'));
|
||||
return Tools::set_event_stream_fail('doctor医生手机号必须');
|
||||
}
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
//return json(Tools::set_fail('hdruserbaseinfo_id必须'));
|
||||
return Tools::set_event_stream_fail('hdruserbaseinfo_id患者id必须');
|
||||
}
|
||||
//会话id
|
||||
$sessionid = input('sessionid');
|
||||
if(empty($sessionid)){
|
||||
//return json(Tools::set_fail('sessionid必须'));
|
||||
return Tools::set_event_stream_fail('sessionid会话id必须','从getSayToken接口获得,每次对话之前生成,用于区分不同会话');
|
||||
}
|
||||
|
||||
$reportid = input('reportid');//报告id
|
||||
if(empty($reportid)){
|
||||
//return json(Tools::set_fail('reportid必须'));
|
||||
return Tools::set_event_stream_fail('reportid报告id必须');
|
||||
}
|
||||
|
||||
//查询历史对话记录
|
||||
//$records = Db::table(TabConf::$fa_tingyiueassistantchathis)
|
||||
// ->where('sessionid',$sessionid)
|
||||
// ->where('reportid',$reportid)
|
||||
// ->order('id desc')
|
||||
// ->select();
|
||||
|
||||
//ai那边不需要对话记录
|
||||
$qa_history = '';
|
||||
//foreach ($records as $record) {
|
||||
// $qa_history .= "{" . $record['question'] . ":
|
||||
// " . $record['answer'] . "},\n";
|
||||
//}
|
||||
|
||||
|
||||
$ai_config = config('ai_medical_assistant_config');
|
||||
|
||||
$question = input('question','hi');
|
||||
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $ai_config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $ai_config['APIKey'];
|
||||
|
||||
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$medical_record = Db::table(TabConf::$fa_tt_medical_report)
|
||||
->where('phone',$phone)
|
||||
->where('hdruserbaseinfo_id',$hdruserbaseinfo_id)
|
||||
->find();
|
||||
|
||||
$medical_record_report_txt = <<<EOF
|
||||
|
||||
患者姓名:{$medical_record['name']}
|
||||
性别:{$medical_record['gender']}
|
||||
年龄:{$medical_record['age']}
|
||||
教育程度:{$medical_record['edu']}
|
||||
职业及年限:{$medical_record['career_year']}
|
||||
体力要求:{$medical_record['power']}
|
||||
经济满意度:{$medical_record['satisfaction']}
|
||||
过往职业及年限:{$medical_record['old_career_year']}
|
||||
过往职业体力要求:{$medical_record['old_career_power']}
|
||||
社会支持度:{$medical_record['support']}
|
||||
居住情况:{$medical_record['live']}
|
||||
家庭关系:{$medical_record['home']}
|
||||
诊断:{$medical_record['diagnosis']}
|
||||
主诉:{$medical_record['main_complaint']}
|
||||
病史:{$medical_record['medical_history']}
|
||||
家族史:{$medical_record['family_history']}
|
||||
月经婚育史:{$medical_record['menstrual_marital_history']}
|
||||
医嘱:{$medical_record['treatment']}
|
||||
|
||||
EOF;
|
||||
|
||||
$config = [
|
||||
'stream'=>true,
|
||||
'chatId'=>$sessionid,
|
||||
'variables'=>[
|
||||
'agent_selection'=>$type,
|
||||
'medical_record'=>$medical_record_report_txt,
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
//$sub_content_msg = [
|
||||
// ["role" => "user", "content" => $question]
|
||||
//];
|
||||
//$chatobj->setBefore($sub_content_msg);
|
||||
|
||||
$chat_content = <<<EOF
|
||||
$question
|
||||
$qa_history
|
||||
EOF;
|
||||
|
||||
$chatobj->chat($chat_content,$config,$answer_json_arr);
|
||||
|
||||
//保存对话记录
|
||||
$data = [
|
||||
'phone'=>$phone,
|
||||
'question'=>$question,
|
||||
'doctor'=>$doctor,
|
||||
'sessionid'=>$sessionid,
|
||||
'reportid'=>$reportid
|
||||
];
|
||||
$record_id = Db::table(TabConf::$fa_tingyiueassistantchathis)
|
||||
->insertGetId($data);
|
||||
|
||||
Tools::log_to_write_txt(['听译助手对话,优医助手请求gpt:'=>$chatobj->post_msg_body,'患者资料'=>$medical_record_report_txt]);
|
||||
Tools::log_to_write_txt(['听译助手对话,优医助手gpt回复:'=>$answer_json_arr]);
|
||||
|
||||
|
||||
//return json(Tools::set_ok('ok',['record_id'=>$record_id]));
|
||||
return Tools::set_event_stream_ok('ok',['record_id'=>$record_id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存回答记录
|
||||
*
|
||||
* 参数:
|
||||
* record_id:记录id
|
||||
* answer:回答
|
||||
* phone:患者手机号
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function saveAnswer(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$record_id = input('record_id');
|
||||
$answer = input('answer');
|
||||
$phone = input('phone');//患者手机号
|
||||
|
||||
if(empty($record_id)){
|
||||
return Tools::set_fail('record_id必须');
|
||||
}
|
||||
if(empty($answer)){
|
||||
return Tools::set_fail('answer必须');
|
||||
}
|
||||
if(empty($phone)){
|
||||
return Tools::set_fail('患者手机号必须');
|
||||
}
|
||||
$record = Db::table(TabConf::$fa_tingyiueassistantchathis)
|
||||
->where('id',$record_id)
|
||||
->where('phone',$phone)
|
||||
->find();
|
||||
if(empty($record)){
|
||||
return Tools::set_fail('记录不存在');
|
||||
}
|
||||
|
||||
Db::table(TabConf::$fa_tingyiueassistantchathis)
|
||||
->data([
|
||||
'answer'=>$answer,
|
||||
])
|
||||
->where('id',$record_id)
|
||||
->where('phone',$phone)
|
||||
->update();
|
||||
return Tools::set_ok('ok');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Ttchathistory extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '疼痛科聊天历史';
|
||||
|
||||
/**
|
||||
* desc:获取疼痛科聊天历史
|
||||
*
|
||||
* api/Ttchathistory/getTtchathistoryList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* hdruserbaseinfo_id 统一基本信息 统一基本信息 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* username 用户
|
||||
* type 聊天角色
|
||||
* chat_msg 问诊内容
|
||||
* ticket 对话票据(用于隔离用户聊天历史记录)
|
||||
* userbaseinfo_id 基本信息ID
|
||||
* create_time 创建时间
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTtchathistoryList(){
|
||||
Tools::log_to_write_txt(['获取疼痛科聊天历史 入参:'=>input()]);
|
||||
$api_desc = '获取疼痛科聊天历史';
|
||||
try {
|
||||
|
||||
//$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
//if(empty($hdruserbaseinfo_id)){
|
||||
// return json(Tools::set_fail('hdruserbaseinfo_id参数错误'));
|
||||
//}
|
||||
|
||||
$reportid = input('reportid');
|
||||
if(empty($reportid)){
|
||||
return json(Tools::set_fail('reportid参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//查询最新的ticket
|
||||
//$last_ticket = Db::table(TabConf::$fa_tt_chathistory)
|
||||
// ->where('hdruserbaseinfo_id',$hdruserbaseinfo_id)
|
||||
// ->order('id desc')
|
||||
// ->value('ticket');
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_tt_chathistory);
|
||||
//if(!empty($last_ticket)){
|
||||
// $model_obj->where('ticket',$last_ticket);
|
||||
//}
|
||||
//【对话记录跟着报告走】
|
||||
$model_obj->where('reportid',$reportid);
|
||||
|
||||
//if(input('hdruserbaseinfo_id')){
|
||||
// $model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_id'));
|
||||
//}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,664 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\http\Curl;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Ttmedicalreport extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
|
||||
/**
|
||||
* desc:获取疼痛科病历报告(一个基本信息对应一个报告)
|
||||
*
|
||||
* api/Ttmedicalreport/getTtmedicalreportDetail
|
||||
*
|
||||
* 参数:
|
||||
* hdruserbaseinfo_id 统一基本信息 统一基本信息 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* userbaseid 基本信息ID
|
||||
* doctor 所属医生
|
||||
* username 病人
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* phone 病人电话
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* create_time 生成时间
|
||||
* ticket 对话票据(数据隔离)
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTtmedicalreportDetail(){
|
||||
Tools::log_to_write_txt(['获取疼痛科病历报告(一个基本信息对应一个报告) 入参:'=>input()]);
|
||||
$api_desc = '获取疼痛科病历报告(一个基本信息对应一个报告)';
|
||||
try {
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('hdruserbaseinfo_id参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_tt_medical_report);
|
||||
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:根据id查询报告
|
||||
*
|
||||
* reportid 报告id
|
||||
*
|
||||
* api/Ttmedicalreport/getTtmedicalreportDetailbyId
|
||||
* author:wh
|
||||
*/
|
||||
function getTtmedicalreportDetailbyId(){
|
||||
Tools::log_to_write_txt(['根据id查询报告 入参:'=>input()]);
|
||||
$api_desc = '根据id查询报告';
|
||||
try {
|
||||
|
||||
$reportid = input('reportid');
|
||||
if(empty($reportid)){
|
||||
return json(Tools::set_fail('reportid参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_tt_medical_report);
|
||||
$model_obj->where('id',$reportid);
|
||||
$item = $model_obj->find();
|
||||
$data = $item;
|
||||
|
||||
|
||||
|
||||
return json(Tools::set_ok('ok',$data));
|
||||
}catch(\Exception $e){
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'根据id查询报告.异常.'.$e->getMessage(),
|
||||
'参数'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_res(500,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:获取疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)
|
||||
*
|
||||
* api/Ttmedicalreport/getTtmedicalreportList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* userbaseid 基本信息ID
|
||||
* doctor 所属医生
|
||||
* username 病人
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* phone 病人电话
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* hdrdepartment_id 科室
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* userbaseid 基本信息ID
|
||||
* doctor 所属医生
|
||||
* username 病人
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* phone 病人电话
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* create_time 生成时间
|
||||
* ticket 对话票据(数据隔离)
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* hdrdepartment_id 科室
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTtmedicalreportList(){
|
||||
Tools::log_to_write_txt(['获取疼痛科病历报告(听译问诊)(一个基本信息对应一个报告) 入参:'=>input()]);
|
||||
$api_desc = '获取疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
try {
|
||||
|
||||
$userbaseid = input('userbaseid');
|
||||
$doctor = input('doctor');
|
||||
$username = input('username');
|
||||
$report_content = input('report_content');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
$from = input('from');
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$status = input('status');
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_tt_medical_report);
|
||||
|
||||
if(input('userbaseid')){
|
||||
$model_obj->where('userbaseid',input('userbaseid'));
|
||||
}
|
||||
if(isset($status)){
|
||||
$model_obj->where('status',$status);
|
||||
}
|
||||
if(input('doctor')){
|
||||
$model_obj->where('doctor',input('doctor'));
|
||||
}
|
||||
if(input('username')){
|
||||
$model_obj->where('username',input('username'));
|
||||
}
|
||||
if(input('report_content')){
|
||||
$model_obj->where('report_content',input('report_content'));
|
||||
}
|
||||
if(input('name')){
|
||||
$model_obj->where('name',input('name'));
|
||||
}
|
||||
if(input('phone')){
|
||||
$model_obj->where('phone',input('phone'));
|
||||
}
|
||||
if(input('from')){
|
||||
$model_obj->where('from',input('from'));
|
||||
}
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_id'));
|
||||
}
|
||||
if(input('hdrdepartment_id')){
|
||||
$model_obj->where('hdrdepartment_id',input('hdrdepartment_id'));
|
||||
}
|
||||
|
||||
$data = $model_obj->paginate(['page'=>input('current_page',1),'list_rows'=>input('list_rows',15)])
|
||||
->each(function($item, $key){
|
||||
|
||||
|
||||
|
||||
return $item;
|
||||
});
|
||||
Tools::log_to_write_txt(['查询sql:'=>$model_obj->getLastSql()]);
|
||||
|
||||
// ['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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)
|
||||
*
|
||||
* 参数:
|
||||
* userbaseid 基本信息ID
|
||||
* doctor 所属医生 【必须】
|
||||
* username 医生电话(账号) 【必须】
|
||||
* report_content 报告内容
|
||||
* name 病人姓名 【必须】
|
||||
* phone 病人电话 【必须】
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊,doc_add=医生添加 【必须】
|
||||
* ticket 对话票据(数据隔离) 【必须】
|
||||
* qa_type 问答模式:free=自由问答,fix=固定问答 【必须】
|
||||
* hdruserbaseinfo_id 统一基本信息 【必须】
|
||||
* hdrdepartment_id 科室 【必须】
|
||||
* uniqueid 唯一ID 【必须】
|
||||
* api/Ttmedicalreport/addTtmedicalreport
|
||||
*/
|
||||
function addTtmedicalreport(){
|
||||
Tools::log_to_write_txt(['新增疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)'=>input()]);
|
||||
$api_desc = '新增疼痛科病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$userbaseid = input('userbaseid');
|
||||
$doctor = input('doctor');
|
||||
if(empty($doctor)){
|
||||
return json(Tools::set_fail('参数错误.1',['error_msg'=>'错误信息:doctor错误']));
|
||||
}
|
||||
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return json(Tools::set_fail('参数错误.2',['error_msg'=>'错误信息:username错误']));
|
||||
}
|
||||
|
||||
$report_content = input('report_content');
|
||||
$name = input('name');
|
||||
if(empty($name)){
|
||||
return json(Tools::set_fail('参数错误.4',['error_msg'=>'错误信息:name错误']));
|
||||
}
|
||||
|
||||
$phone = input('phone');
|
||||
if(empty($phone)){
|
||||
return json(Tools::set_fail('参数错误.5',['error_msg'=>'错误信息:phone错误']));
|
||||
}
|
||||
|
||||
$from = input('from');
|
||||
if(empty($from)){
|
||||
return json(Tools::set_fail('参数错误.6',['error_msg'=>'错误信息:from错误']));
|
||||
}
|
||||
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return json(Tools::set_fail('参数错误.7',['error_msg'=>'错误信息:ticket错误']));
|
||||
}
|
||||
|
||||
$qa_type = input('qa_type');
|
||||
if(empty($qa_type)){
|
||||
return json(Tools::set_fail('参数错误.8',['error_msg'=>'错误信息:qa_type错误']));
|
||||
}
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('参数错误.9',['error_msg'=>'错误信息:hdruserbaseinfo_id错误']));
|
||||
}
|
||||
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
if(empty($hdrdepartment_id)){
|
||||
return json(Tools::set_fail('参数错误.10',['error_msg'=>'错误信息:hdrdepartment_id错误']));
|
||||
}
|
||||
|
||||
$uniqueid = input('uniqueid');
|
||||
if(empty($uniqueid)){
|
||||
return json(Tools::set_fail('参数错误.11',['error_msg'=>'错误信息:uniqueid错误']));
|
||||
}
|
||||
|
||||
$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错误']));
|
||||
}
|
||||
|
||||
$data = [
|
||||
'userbaseid'=>$userbaseid?:'',
|
||||
'doctor'=>$doctor?:'',
|
||||
'username'=>$username?:'',
|
||||
'report_content'=>$report_content?:'',
|
||||
'name'=>$name?:'',
|
||||
'phone'=>$phone?:'',
|
||||
'from'=>$from?:'',
|
||||
'ticket'=>$ticket?:'',
|
||||
'qa_type'=>$qa_type?:'',
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id?:'',
|
||||
'hdrdepartment_id'=>$hdrdepartment_id?:'',
|
||||
'uniqueid'=>$uniqueid?:'',
|
||||
'gender'=>$gender?:'',
|
||||
'age'=>$age?:''
|
||||
];
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_tt_medical_report)->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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据报告ID修改报告
|
||||
* 参数:
|
||||
* id ID 【必须】
|
||||
* doctor 所属医生
|
||||
* username 医生电话(账号)
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* phone 病人电话
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊,doc_add=医生添加
|
||||
* qa_type 问答模式:free=自由问答,fix=固定问答
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* hdrdepartment_id 科室
|
||||
* hdrdepartment 科室名称
|
||||
* gender 病人性别
|
||||
* age 病人年龄
|
||||
* edu 教育程度
|
||||
* career_year 职业及年限
|
||||
* power 体力要求
|
||||
* satisfaction 经济满意度
|
||||
* old_career_year 过往职业及年限
|
||||
* old_career_power 过往职业体力要求
|
||||
* support 社会支持度
|
||||
* marriage 婚姻状况
|
||||
* live 居住情况
|
||||
* home 家庭关系
|
||||
* address 地址
|
||||
* wechat_no 微信号
|
||||
* is_flow 是否接受随访:yes=是,no=否
|
||||
* diagnosis 诊断
|
||||
* main_complaint 主诉
|
||||
* medical_history 病史
|
||||
* past_history 既往史
|
||||
* allergy_history 过敏史
|
||||
* family_history 家族史
|
||||
* personal_history 个人史
|
||||
* menstrual_marital_history 月经婚育史
|
||||
* treatment 医嘱
|
||||
* api/Ttmedicalreport/updateTtReportById
|
||||
*
|
||||
*/
|
||||
function updateTtReportById(){
|
||||
Tools::log_to_write_txt(['根据报告ID修改报告'=>input()]);
|
||||
|
||||
$api_desc = '根据报告ID修改报告';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$doctor = input('doctor');
|
||||
$username = input('username');
|
||||
$report_content = input('report_content');
|
||||
$name = input('name');
|
||||
$phone = input('phone');
|
||||
$from = input('from');
|
||||
$qa_type = input('qa_type');
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$hdrdepartment = input('hdrdepartment');
|
||||
$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');
|
||||
$wechat_no = input('wechat_no');
|
||||
$is_flow = input('is_flow');
|
||||
$diagnosis = input('diagnosis');
|
||||
$main_complaint = input('main_complaint');
|
||||
$medical_history = input('medical_history');
|
||||
$past_history = input('past_history');
|
||||
$allergy_history = input('allergy_history');
|
||||
$family_history = input('family_history');
|
||||
$personal_history = input('personal_history');
|
||||
$menstrual_marital_history = input('menstrual_marital_history');
|
||||
$treatment = input('treatment');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0',['error_msg'=>'错误信息:id错误']));
|
||||
}
|
||||
|
||||
|
||||
//存在则修改
|
||||
$data = [];
|
||||
if($doctor){
|
||||
$data['doctor'] = $doctor;
|
||||
}
|
||||
|
||||
if($username){
|
||||
$data['username'] = $username;
|
||||
}
|
||||
|
||||
if($name){
|
||||
$data['name'] = $name;
|
||||
}
|
||||
|
||||
if($phone){
|
||||
$data['phone'] = $phone;
|
||||
}
|
||||
|
||||
if($from){
|
||||
$data['from'] = $from;
|
||||
}
|
||||
|
||||
if($qa_type){
|
||||
$data['qa_type'] = $qa_type;
|
||||
}
|
||||
|
||||
if($hdruserbaseinfo_id){
|
||||
$data['hdruserbaseinfo_id'] = $hdruserbaseinfo_id;
|
||||
}
|
||||
|
||||
|
||||
if($hdrdepartment_id){
|
||||
$data['hdrdepartment_id'] = $hdrdepartment_id;
|
||||
}
|
||||
|
||||
if($hdrdepartment){
|
||||
$data['hdrdepartment'] = $hdrdepartment;
|
||||
}
|
||||
|
||||
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($wechat_no){
|
||||
$data['wechat_no'] = $wechat_no;
|
||||
}
|
||||
|
||||
if($is_flow){
|
||||
$data['is_flow'] = $is_flow;
|
||||
}
|
||||
|
||||
|
||||
if($main_complaint){
|
||||
$data['main_complaint'] = $main_complaint;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【主诉】:$main_complaint
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【主诉】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($medical_history){
|
||||
$data['medical_history'] = $medical_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【病史】:$medical_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【病史】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($personal_history){
|
||||
$data['personal_history'] = $personal_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【个人史】:$personal_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【个人史】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($menstrual_marital_history){
|
||||
$data['menstrual_marital_history'] = $menstrual_marital_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【婚姻史】:$menstrual_marital_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【婚姻史】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($family_history){
|
||||
$data['family_history'] = $family_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【家族史】:$family_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【家族史】:无
|
||||
//EOF;
|
||||
}
|
||||
if($diagnosis){
|
||||
$data['diagnosis'] = $diagnosis;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【诊断】:$diagnosis
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【诊断】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if($past_history){
|
||||
$data['past_history'] = $past_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【既往史】:$past_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【既往史】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($allergy_history){
|
||||
$data['allergy_history'] = $allergy_history;
|
||||
// $report_content .= <<<EOF
|
||||
//\n【过敏史】:$allergy_history
|
||||
//EOF;
|
||||
// }else{
|
||||
// $report_content .= <<<EOF
|
||||
//\n【过敏史】:无
|
||||
//EOF;
|
||||
}
|
||||
|
||||
if($treatment){
|
||||
$data['treatment'] = $treatment;
|
||||
}
|
||||
|
||||
if($report_content){
|
||||
$data['report_content'] = $report_content;
|
||||
}
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_tt_medical_report)
|
||||
->data($data)
|
||||
->where('id',input('id'))
|
||||
->update();
|
||||
|
||||
//$this->operateLog('根据报告ID修改报告',api_user_info('id'));
|
||||
Db::commit();
|
||||
//if($hdruserbaseinfo_id){
|
||||
// $data['id'] = $hdruserbaseinfo_id;
|
||||
// $url = request()->domain().'/api/Hdruserbaseinfo/updateHdruserbaseinfoById';
|
||||
// Tools::log_to_write_txt(['修改基本信息'=>$data,'url'=>$url]);
|
||||
// $res = Curl::curl_post($url,$data);
|
||||
// Tools::log_to_write_txt(['修改基本信息返回,结束'=>$res]);
|
||||
//}
|
||||
|
||||
|
||||
return json(Tools::set_ok('ok',$dataid));
|
||||
}catch (\Exception $e){
|
||||
Db::rollback();
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'根据报告ID修改报告.异常.'.$e->getMessage(),
|
||||
'input'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Ttuserbaseinfo extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '疼痛科用户基本信息';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:获取疼痛科用户基本信息
|
||||
*
|
||||
* api/Ttuserbaseinfo/getTtuserbaseinfoDetail
|
||||
*
|
||||
* 参数:
|
||||
* id ID ID 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* date 日期
|
||||
* doctor 所属医生
|
||||
* name 病人姓名
|
||||
* gender 病人性别
|
||||
* age 病人年龄
|
||||
* edu 教育程度
|
||||
* career_year 职业及年限
|
||||
* power 体力要求
|
||||
* satisfaction 经济满意度
|
||||
* old_career_year 过往职业及年限
|
||||
* old_career_power 过往职业体力要求
|
||||
* support 社会支持度
|
||||
* marriage 婚姻状况
|
||||
* live 居住情况
|
||||
* home 家庭关系
|
||||
* address 地址
|
||||
* phone 联系方式
|
||||
* wechat_no 微信号
|
||||
* create_time 创建时间
|
||||
* is_flow 是否接受随访:yes=是,no=否
|
||||
* ticket 对话票据(数据隔离)
|
||||
* hdrdepartment_id 科室
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTtuserbaseinfoDetail(){
|
||||
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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/15} {16:13}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* 听译聊天
|
||||
* Class Tychat
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Tychat
|
||||
{
|
||||
|
||||
function saveChat(){
|
||||
return Mmodel::catchJson(function (){
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Tychathistory extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '听译-聊天历史';
|
||||
|
||||
/**
|
||||
* desc:获取听译-聊天历史
|
||||
*
|
||||
* api/Tychathistory/getTychathistoryList
|
||||
*
|
||||
* 参数:
|
||||
* 带分页
|
||||
* current_page 当前页码
|
||||
* list_rows 每页显示条数 默认15
|
||||
* hdruserbaseinfo_id 统一基本信息 统一基本信息 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* username 用户
|
||||
* type 聊天角色
|
||||
* chat_msg 问诊内容
|
||||
* ticket 对话票据(数据隔离)
|
||||
* create_time 创建时间
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTychathistoryList(){
|
||||
Tools::log_to_write_txt(['获取听译-聊天历史 入参:'=>input()]);
|
||||
$api_desc = '获取听译-聊天历史';
|
||||
try {
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('hdruserbaseinfo_id参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_ty_chathistory);
|
||||
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_id'));
|
||||
}
|
||||
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Tyfollowup extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '随访记录(听译助手)';
|
||||
|
||||
/**
|
||||
* desc:获取随访记录(听译助手)
|
||||
*
|
||||
* api/Tyfollowup/getTyfollowupDetail
|
||||
*
|
||||
* 参数:
|
||||
* report_dataid 报告ID 报告ID 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* report_dataid 报告ID
|
||||
* name 姓名
|
||||
* phone 电话
|
||||
* content 随访内容
|
||||
* create_time 随访时间
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTyfollowupDetail(){
|
||||
Tools::log_to_write_txt(['获取随访记录(听译助手) 入参:'=>input()]);
|
||||
$api_desc = '获取随访记录(听译助手)';
|
||||
try {
|
||||
|
||||
$report_dataid = input('report_dataid');
|
||||
if(empty($report_dataid)){
|
||||
return json(Tools::set_fail('report_dataid参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_ty_followup);
|
||||
|
||||
if(input('report_dataid')){
|
||||
$model_obj->where('report_dataid',input('report_dataid'));
|
||||
}
|
||||
$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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,414 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use think\Db;
|
||||
use app\common\model\TabConf;
|
||||
use wanghua\general_utility_tools_php\file\upload\FileUpload;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use think\Controller;
|
||||
|
||||
class Tymedicalreport extends BaseHttpApi
|
||||
{
|
||||
protected $controller_comments = '听译-病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
|
||||
/**
|
||||
* desc:获取听译-病历报告(听译问诊)(一个基本信息对应一个报告)
|
||||
*
|
||||
* api/Tymedicalreport/getTymedicalreportDetail
|
||||
*
|
||||
* 参数:
|
||||
* hdruserbaseinfo_id 统一基本信息 统一基本信息 必须
|
||||
*
|
||||
* 所有字段说明<span style="color: gray">(可能有部分额外字段未在此体现)</span>:
|
||||
* id ID
|
||||
* userbaseid 听译病历ID
|
||||
* doctor 所属医生
|
||||
* username 病人
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* gender 病人性别
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* ticket 对话票据(数据隔离)
|
||||
* diagnostic_result 诊断结果
|
||||
* create_time 生成时间
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
|
||||
* author:wh
|
||||
*/
|
||||
function getTymedicalreportDetail(){
|
||||
Tools::log_to_write_txt(['获取听译-病历报告(听译问诊)(一个基本信息对应一个报告) 入参:'=>input()]);
|
||||
$api_desc = '获取听译-病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
try {
|
||||
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
if(empty($hdruserbaseinfo_id)){
|
||||
return json(Tools::set_fail('hdruserbaseinfo_id参数错误'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$model_obj = Db::table(TabConf::$fa_ty_medical_report);
|
||||
|
||||
if(input('hdruserbaseinfo_id')){
|
||||
$model_obj->where('hdruserbaseinfo_id',input('hdruserbaseinfo_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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function updateTingyiReportById(){
|
||||
Tools::log_to_write_txt(['根据报告ID修改听译报告(最终报告)'=>input()]);
|
||||
|
||||
$api_desc = '根据报告ID修改听译报告(最终报告)';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$username = input('username');
|
||||
$report_content = input('report_content');
|
||||
$name = input('name');
|
||||
$gender = input('gender');
|
||||
$from = input('from');
|
||||
$diagnostic_result = input('diagnostic_result');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0',['error_msg'=>'错误信息:id错误']));
|
||||
}
|
||||
|
||||
|
||||
//存在则修改
|
||||
$data = [];
|
||||
if($username){
|
||||
$data['username'] = $username;
|
||||
}
|
||||
|
||||
if($report_content){
|
||||
$data['report_content'] = $report_content;
|
||||
}
|
||||
|
||||
if($name){
|
||||
$data['name'] = $name;
|
||||
}
|
||||
|
||||
if($gender){
|
||||
$data['gender'] = $gender;
|
||||
}
|
||||
|
||||
if($from){
|
||||
$data['from'] = $from;
|
||||
}
|
||||
|
||||
if($diagnostic_result){
|
||||
$data['diagnostic_result'] = $diagnostic_result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_ty_medical_report)
|
||||
->data($data)
|
||||
->where('id',input('id'))
|
||||
->update();
|
||||
|
||||
Db::commit();
|
||||
return json(Tools::set_ok('ok',$dataid));
|
||||
}catch (\Exception $e){
|
||||
Db::rollback();
|
||||
Tools::log_to_write_txt([
|
||||
'error'=>'根据报告ID修改听译报告(最终报告).异常.'.$e->getMessage(),
|
||||
'input'=>input(),
|
||||
'error_info'=>$e->getTraceAsString()
|
||||
]);
|
||||
return json(Tools::set_fail());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改听译-病历报告(听译问诊)(一个基本信息对应一个报告)
|
||||
* 参数:
|
||||
* id ID 【必须】
|
||||
* userbaseid 听译病历ID
|
||||
* doctor 所属医生
|
||||
* username 病人
|
||||
* report_content 报告内容
|
||||
* name 病人姓名
|
||||
* gender 病人性别
|
||||
* from 来源:num_per=数智人,ty=听译助手,h5=h5网页问诊
|
||||
* ticket 对话票据(数据隔离)
|
||||
* diagnostic_result 诊断结果
|
||||
* hdruserbaseinfo_id 统一基本信息
|
||||
* create_time 生成时间
|
||||
* age 病人年龄
|
||||
* main_complaint 主诉
|
||||
* medical_history 病史
|
||||
* past_history 既往史
|
||||
* allergy_history 过敏史
|
||||
* family_history 家族史
|
||||
* personal_history 个人史
|
||||
* menstrual_marital_history 月经婚育史
|
||||
* diagnosis 诊断
|
||||
* treatment 医嘱
|
||||
* phone 联系方式
|
||||
* status 问诊状态
|
||||
* user_phone 登录手机号
|
||||
* date 日期
|
||||
* hdrdepartment 科室名称
|
||||
* hdrdepartment_id 科室
|
||||
* edu 教育程度
|
||||
* career_year 职业及年限
|
||||
* power 体力要求
|
||||
* satisfaction 经济满意度
|
||||
* old_career_year 过往职业及年限
|
||||
* old_career_power 过往职业体力要求
|
||||
* support 社会支持度
|
||||
* marriage 婚姻状况
|
||||
* live 居住情况
|
||||
* home 家庭关系
|
||||
* address 地址
|
||||
* wechat_no 微信号
|
||||
* api/Tymedicalreport/updateTymedicalreportById
|
||||
*/
|
||||
function updateTymedicalreportById(){
|
||||
Tools::log_to_write_txt(['修改听译-病历报告(听译问诊)(一个基本信息对应一个报告)'=>input()]);
|
||||
|
||||
$api_desc = '修改听译-病历报告(听译问诊)(一个基本信息对应一个报告)';
|
||||
Db::startTrans();
|
||||
try {
|
||||
|
||||
$userbaseid = input('userbaseid');
|
||||
$doctor = input('doctor');
|
||||
$username = input('username');
|
||||
$report_content = input('report_content');
|
||||
$name = input('name');
|
||||
$gender = input('gender');
|
||||
$from = input('from');
|
||||
$ticket = input('ticket');
|
||||
$diagnostic_result = input('diagnostic_result');
|
||||
$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
$create_time = input('create_time');
|
||||
$age = input('age');
|
||||
$main_complaint = input('main_complaint');
|
||||
$medical_history = input('medical_history');
|
||||
$past_history = input('past_history');
|
||||
$allergy_history = input('allergy_history');
|
||||
$family_history = input('family_history');
|
||||
$personal_history = input('personal_history');
|
||||
$menstrual_marital_history = input('menstrual_marital_history');
|
||||
$diagnosis = input('diagnosis');
|
||||
$treatment = input('treatment');
|
||||
$phone = input('phone');
|
||||
$status = input('status');
|
||||
$user_phone = input('user_phone');
|
||||
$date = input('date');
|
||||
$hdrdepartment = input('hdrdepartment');
|
||||
$hdrdepartment_id = input('hdrdepartment_id');
|
||||
$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');
|
||||
$wechat_no = input('wechat_no');
|
||||
if(empty(input('id'))){
|
||||
return json(Tools::set_fail('参数错误。0',['error_msg'=>'错误信息:id错误']));
|
||||
}
|
||||
|
||||
|
||||
//存在则修改
|
||||
$data = [];
|
||||
if($userbaseid){
|
||||
$data['userbaseid'] = $userbaseid;
|
||||
}
|
||||
|
||||
if($doctor){
|
||||
$data['doctor'] = $doctor;
|
||||
}
|
||||
|
||||
if($username){
|
||||
$data['username'] = $username;
|
||||
}
|
||||
|
||||
if($report_content){
|
||||
$data['report_content'] = $report_content;
|
||||
}
|
||||
|
||||
if($name){
|
||||
$data['name'] = $name;
|
||||
}
|
||||
|
||||
if($gender){
|
||||
$data['gender'] = $gender;
|
||||
}
|
||||
|
||||
if($from){
|
||||
$data['from'] = $from;
|
||||
}
|
||||
|
||||
if($ticket){
|
||||
$data['ticket'] = $ticket;
|
||||
}
|
||||
|
||||
if($diagnostic_result){
|
||||
$data['diagnostic_result'] = $diagnostic_result;
|
||||
}
|
||||
|
||||
if($hdruserbaseinfo_id){
|
||||
$data['hdruserbaseinfo_id'] = $hdruserbaseinfo_id;
|
||||
}
|
||||
|
||||
if($create_time){
|
||||
$data['create_time'] = $create_time;
|
||||
}
|
||||
|
||||
if($age){
|
||||
$data['age'] = $age;
|
||||
}
|
||||
|
||||
if($main_complaint){
|
||||
$data['main_complaint'] = $main_complaint;
|
||||
}
|
||||
|
||||
if($medical_history){
|
||||
$data['medical_history'] = $medical_history;
|
||||
}
|
||||
|
||||
if($past_history){
|
||||
$data['past_history'] = $past_history;
|
||||
}
|
||||
|
||||
if($allergy_history){
|
||||
$data['allergy_history'] = $allergy_history;
|
||||
}
|
||||
|
||||
if($family_history){
|
||||
$data['family_history'] = $family_history;
|
||||
}
|
||||
|
||||
if($personal_history){
|
||||
$data['personal_history'] = $personal_history;
|
||||
}
|
||||
|
||||
if($menstrual_marital_history){
|
||||
$data['menstrual_marital_history'] = $menstrual_marital_history;
|
||||
}
|
||||
|
||||
if($diagnosis){
|
||||
$data['diagnosis'] = $diagnosis;
|
||||
}
|
||||
|
||||
if($treatment){
|
||||
$data['treatment'] = $treatment;
|
||||
}
|
||||
|
||||
if($phone){
|
||||
$data['phone'] = $phone;
|
||||
}
|
||||
|
||||
if($status){
|
||||
$data['status'] = $status;
|
||||
}
|
||||
|
||||
if($user_phone){
|
||||
$data['user_phone'] = $user_phone;
|
||||
}
|
||||
|
||||
if($date){
|
||||
$data['date'] = $date;
|
||||
}
|
||||
|
||||
if($hdrdepartment){
|
||||
$data['hdrdepartment'] = $hdrdepartment;
|
||||
}
|
||||
|
||||
if($hdrdepartment_id){
|
||||
$data['hdrdepartment_id'] = $hdrdepartment_id;
|
||||
}
|
||||
|
||||
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($wechat_no){
|
||||
$data['wechat_no'] = $wechat_no;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$dataid = Db::table(TabConf::$fa_ty_medical_report)
|
||||
->data($data)
|
||||
->where('id',input('id'))
|
||||
->update();
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,253 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/8/10} {11:25}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\api\logic\TtchatLogic;
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Usersh5 extends BaseHttpApi
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
//if(!self::checkLogin()){
|
||||
// echo json_encode(['code'=>591,'msg'=>'未登录']);exit;
|
||||
//}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查登录
|
||||
*/
|
||||
static function checkLogin(){
|
||||
return Mmodel::catch(function (){
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return false;//默认未登录
|
||||
}
|
||||
$user = Db::table(TabConf::$fa_hdrusersh5)->where('ticket',$ticket)->cache(300)->find();
|
||||
if(empty($user)){
|
||||
return false;//默认未登录
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:h5-授权,登录
|
||||
*
|
||||
* /api/Usersh5/login
|
||||
*
|
||||
* 参数:
|
||||
* username 用户名(手机号)
|
||||
* code 验证码
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function login()
|
||||
{
|
||||
return Mmodel::catchJson(function (){
|
||||
$doctor = input('doctor');
|
||||
if(empty($doctor)){
|
||||
return Tools::set_fail('doctor所属医生参数错误:1');
|
||||
}
|
||||
if(!Validate::is_mobile($doctor)){
|
||||
return Tools::set_fail('doctor医生手机号错误:2');
|
||||
}
|
||||
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return Tools::set_fail('参数错误:1');
|
||||
}
|
||||
$code = input('code');//验证码
|
||||
if(empty($code)){
|
||||
return Tools::set_fail('验证码错误:2');
|
||||
}
|
||||
if(!Validate::is_mobile($username)){
|
||||
return Tools::set_fail('手机号错误:2');
|
||||
}
|
||||
|
||||
//校验验证码
|
||||
if(empty($code)){
|
||||
return Tools::set_fail('验证码错误:2');
|
||||
}
|
||||
//查询短信验证码
|
||||
$sms = Db::table(TabConf::$fa_sms)
|
||||
->where('mobile',$username)
|
||||
->where('code',$code)
|
||||
->order('id desc')
|
||||
->find();
|
||||
if(empty($sms)){
|
||||
return Tools::set_res(340,'验证码错误:3');
|
||||
}
|
||||
if($sms['event'] != 'login'){
|
||||
return Tools::set_fail('场景错误:4');
|
||||
}
|
||||
if($sms['times'] > 1){
|
||||
return Tools::set_fail('该验证码已失效:4');
|
||||
}
|
||||
|
||||
$user = Db::table(TabConf::$fa_hdrusersh5)
|
||||
->where('username',$username)
|
||||
->find();
|
||||
//返回票据
|
||||
$ticketstr = md5($username);
|
||||
$expires = 30*86400+time();//报告完成之后重新获取票据
|
||||
if(empty($user)){
|
||||
//注册
|
||||
$user = Db::table(TabConf::$fa_hdrusersh5)
|
||||
->data([
|
||||
'username'=>$username,
|
||||
'ticket'=>$ticketstr,
|
||||
'expires'=>$expires,
|
||||
'doctor'=>$doctor,
|
||||
'expire_time'=>date('Y-m-d H:i:s',$expires)
|
||||
])
|
||||
->insert();
|
||||
}
|
||||
//修改验证码验证次数
|
||||
Db::table(TabConf::$fa_sms)
|
||||
->where('id',$sms['id'])
|
||||
->setInc('times');
|
||||
|
||||
|
||||
$uniqueid = md5($ticketstr.$expires.Tools::rand_str(6));
|
||||
|
||||
//修改有效期
|
||||
Db::table(TabConf::$fa_hdrusersh5)
|
||||
->data([
|
||||
'ticket'=>$ticketstr,
|
||||
'expires'=>$expires,//7天
|
||||
'doctor'=>$doctor,//每次扫码更新医生
|
||||
'expire_time'=>date('Y-m-d H:i:s',$expires)
|
||||
])
|
||||
->where('username',$username)
|
||||
->update();
|
||||
|
||||
//查询最新的基本信息id
|
||||
$baseuserinfo_id = Db::table(TabConf::$fa_ty_userbaseinfo)
|
||||
->where('phone',$username)
|
||||
->order('id desc')
|
||||
->value('id');
|
||||
return Tools::set_ok('登录成功',[
|
||||
'ticket'=>$ticketstr,'uniqueid'=>$uniqueid,
|
||||
'username'=>$username,'user'=>$user,
|
||||
'baseuserinfo_id'=>$baseuserinfo_id
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:h5-根据id查询用户
|
||||
* api/Usersh5/getUserById
|
||||
* 参数:
|
||||
* dataid 用户id
|
||||
* author:wh
|
||||
*/
|
||||
function getUserById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$dataid = input('dataid');
|
||||
if(empty($dataid)){
|
||||
return Tools::set_fail('参数错误');
|
||||
}
|
||||
$data = Db::table(TabConf::$fa_hdrusersh5)
|
||||
->where('id',$dataid)
|
||||
->find();
|
||||
return Tools::set_res(200,'查询成功',$data);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc:h5-保存聊天记录
|
||||
*
|
||||
* api/Usersh5/saveChatHistory
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
//function saveChatHistory(){
|
||||
// return Mmodel::catchJson(function (){
|
||||
// $obj = new TtchatLogic();
|
||||
// $chat_content = input('chat_content');
|
||||
// if(empty($chat_content)){
|
||||
// return Tools::set_fail('参数错误');
|
||||
// }
|
||||
// $res = $obj->saveChatHistory($chat_content);
|
||||
// return Tools::set_ok('ok',$res);
|
||||
// });
|
||||
//}
|
||||
|
||||
/**
|
||||
* h5-修改基本信息
|
||||
* api/Usersh5/editBaseinfo
|
||||
* 参数:ticket
|
||||
*
|
||||
name 病人姓名
|
||||
gender 病人性别
|
||||
age 病人年龄
|
||||
edu 教育程度
|
||||
caree职业及年限r_year
|
||||
power体力要求
|
||||
satisfaction 经济满意度
|
||||
old_car过往职业及年限eer_year
|
||||
support 社会支持度
|
||||
marriage 婚姻状况
|
||||
live 居住情况
|
||||
home 家庭关系
|
||||
addres地址s
|
||||
phone 联系方式
|
||||
wechat_no微信号
|
||||
*/
|
||||
//function editBaseinfo(){
|
||||
// return Mmodel::catchJson(function (){
|
||||
// //$ticket = input('ticket');
|
||||
// //if(empty($ticket)){
|
||||
// // return Tools::set_fail('ticket必须');
|
||||
// //}
|
||||
// //$user = Db::table(TabConf::$fa_hdrusersh5)->where('ticket',$ticket)->find();
|
||||
// //if(empty($user)){
|
||||
// // return Tools::set_fail('ticket错误,未查询到用户');
|
||||
// //}
|
||||
// $userid = input('userid');
|
||||
// if(empty($userid)){
|
||||
// return Tools::set_fail('h5用户id必须');
|
||||
// }
|
||||
// //修改基本信息
|
||||
// $data = [
|
||||
// //'doctor'=>$user['username'],//医生
|
||||
// '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',''),//过往职业及年限
|
||||
// 'support'=>input('support',''),//社会支持度
|
||||
// 'marriage'=>input('marriage',''),//婚姻状况
|
||||
// 'live'=>input('live',''),//居住情况
|
||||
// 'home'=>input('home',''),//家庭关系
|
||||
// 'address'=>input('address',''),//地址
|
||||
// 'phone'=>input('phone',''),//联系方式
|
||||
// 'wechat_no'=>input('wechat_no',''),//微信号
|
||||
//
|
||||
// ];
|
||||
// Mmodel::existsUpdateInsert(TabConf::$fa_ty_userbaseinfo,[
|
||||
// 'id'=>$userid,
|
||||
// ],$data);
|
||||
//
|
||||
// return Tools::set_ok();
|
||||
// });
|
||||
//}
|
||||
|
||||
}
|
||||
@@ -1,278 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/3/26} {20:55}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\api\logic\TtchatLogic;
|
||||
use app\api\logic\TychatLogic;
|
||||
use app\api\logic\UserOfflinePrizeLogic;
|
||||
use app\common\model\TabConf;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\SundryConfig;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\wechat\UserAuth;
|
||||
|
||||
|
||||
/**
|
||||
* 疼痛科用户
|
||||
* Class Userstt
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Userstt extends BaseHttpApi
|
||||
{
|
||||
/**
|
||||
* desc:疼痛科-根据id查询用户
|
||||
* api/Userstt/getUserById
|
||||
* 参数:
|
||||
* dataid 用户id
|
||||
* author:wh
|
||||
*/
|
||||
function getUserById(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$dataid = input('dataid');
|
||||
if(empty($dataid)){
|
||||
return Tools::set_fail('参数错误');
|
||||
}
|
||||
$data = Db::table('fa_hdrdoctorusers')
|
||||
->where('id',$dataid)
|
||||
->find();
|
||||
return Tools::set_res(200,'查询成功',$data);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc:疼痛科-授权,登录
|
||||
*
|
||||
* /api/Userstt/login
|
||||
*
|
||||
* 参数:clientid 客户端标识
|
||||
* username 用户名
|
||||
* password 密码
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function login()
|
||||
{
|
||||
return Mmodel::catchJson(function (){
|
||||
//$clientid = input('clientid');
|
||||
//if(empty($clientid)){
|
||||
// return Tools::set_fail('clientid error');
|
||||
//}
|
||||
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return Tools::set_fail('参数错误:1');
|
||||
}
|
||||
$password = input('password');
|
||||
if(empty($password)){
|
||||
return Tools::set_fail('参数错误:2');
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')
|
||||
->where('username',$username)
|
||||
->find();
|
||||
if(empty($user)){
|
||||
return Tools::set_fail('用户不存在');
|
||||
}
|
||||
if($password != $user['password']){
|
||||
return Tools::set_fail('密码错误');
|
||||
}
|
||||
|
||||
//session('api_user_info',$user);
|
||||
|
||||
unset($user['password']);
|
||||
|
||||
$expires = 7*86400+time();//报告完成之后重新获取票据
|
||||
|
||||
|
||||
//返回票据
|
||||
$ticketstr = md5($user['username']);
|
||||
|
||||
//修改有效期
|
||||
Db::table('fa_hdrdoctorusers')
|
||||
->data([
|
||||
'ticket'=>$ticketstr,
|
||||
'expires'=>$expires,//7天
|
||||
//'clientid'=>$clientid,
|
||||
])
|
||||
->where('username',$username)
|
||||
->update();
|
||||
return Tools::set_ok('登录成功',['ticket'=>$ticketstr,'username'=>$username,'user'=>$user]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:疼痛科-保存聊天记录
|
||||
*
|
||||
* api/Userstt/saveChatHistory
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function saveChatHistory(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$obj = new TtchatLogic();
|
||||
$chat_content = input('chat_content');
|
||||
if(empty($chat_content)){
|
||||
return Tools::set_fail('参数错误');
|
||||
}
|
||||
$res = $obj->saveChatHistory($chat_content);
|
||||
return Tools::set_ok('ok',$res);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 疼痛科-修改基本信息
|
||||
* api/Userstt/editBaseinfo
|
||||
* 参数:ticket
|
||||
*
|
||||
name 病人姓名
|
||||
gender 病人性别
|
||||
age 病人年龄
|
||||
edu 教育程度
|
||||
caree职业及年限r_year
|
||||
power体力要求
|
||||
satisfaction 经济满意度
|
||||
old_car过往职业及年限eer_year
|
||||
support 社会支持度
|
||||
marriage 婚姻状况
|
||||
live 居住情况
|
||||
home 家庭关系
|
||||
addres地址s
|
||||
phone 联系方式
|
||||
wechat_no微信号
|
||||
*/
|
||||
function editBaseinfo(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return Tools::set_fail('ticket必须');
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')->where('ticket',$ticket)->find();
|
||||
if(empty($user)){
|
||||
return Tools::set_fail('ticket错误');
|
||||
}
|
||||
//修改基本信息
|
||||
$data = [
|
||||
'doctor'=>$user['username'],//医生
|
||||
'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',''),//过往职业及年限
|
||||
'support'=>input('support',''),//社会支持度
|
||||
'marriage'=>input('marriage',''),//婚姻状况
|
||||
'live'=>input('live',''),//居住情况
|
||||
'home'=>input('home',''),//家庭关系
|
||||
'address'=>input('address',''),//地址
|
||||
'phone'=>input('phone',''),//联系方式
|
||||
'wechat_no'=>input('wechat_no',''),//微信号
|
||||
|
||||
];
|
||||
Mmodel::existsUpdateInsert('fa_tt_userbaseinfo',[
|
||||
'username'=>$user['username'],
|
||||
'name'=>input('name',''),
|
||||
],$data);
|
||||
|
||||
return Tools::set_ok();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:提交自由问答记录(后台需要单独列出来,对话时前端缓存在本地,对话结束提交)
|
||||
*
|
||||
* 参数:
|
||||
* ticket 对话票据(结束问诊时重新生成)
|
||||
* username 用户名
|
||||
* content 对话内容,格式:
|
||||
* content = [
|
||||
["role" => "user", "content" => '1'],
|
||||
["role" => "user", "content" => '2'],
|
||||
["role" => "user", "content" => '3'],
|
||||
];
|
||||
*
|
||||
* api/Userstt/subFreeQuestionAnswerRecord
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function subFreeQuestionAnswerRecord(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return Tools::set_fail('ticket必须');
|
||||
}
|
||||
$content = input('content');
|
||||
if(empty($content)){
|
||||
return Tools::set_fail('content对话内容必须');
|
||||
}
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return Tools::set_fail('username必须');
|
||||
}
|
||||
|
||||
$this->setTtFreeChatHistory($content,$username,$ticket);
|
||||
|
||||
return Tools::set_ok();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:保存疼痛科自由对话聊天记录
|
||||
* author:wh
|
||||
* @param $sub_content
|
||||
*/
|
||||
private function setTtFreeChatHistory($sub_content,$username,$ticket){
|
||||
//$content = [
|
||||
// //["role" => "user", "content" => '']
|
||||
//];
|
||||
$data = [];
|
||||
foreach ($sub_content as $item){
|
||||
$content = explode(':',$item['content']);
|
||||
$d = [
|
||||
'username'=>$username,
|
||||
'type'=>empty($content[0])?'':$content[0],
|
||||
'chat_msg'=>$item['content'],
|
||||
'ticket'=>$ticket,
|
||||
];
|
||||
$data[] = $d;
|
||||
}
|
||||
Db::table(TabConf::$fa_tt_free_chathistory)->insertAll($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 诊断完成
|
||||
* api/Userstt/diagFinish
|
||||
* 参数:report_id 报告id
|
||||
*/
|
||||
function diagFinish(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$report_id = input('report_id');
|
||||
if(empty($report_id)){
|
||||
return Tools::set_fail('参数错误');
|
||||
}
|
||||
//查询报告
|
||||
$report = Db::table(TabConf::$fa_tt_medical_report)->where('id',$report_id)->find();
|
||||
if(empty($report)){
|
||||
return Tools::set_fail('报告不存在');
|
||||
}
|
||||
|
||||
if($report['status']==2){
|
||||
return Tools::set_fail('报告已诊断完成,请勿重复提交');
|
||||
}
|
||||
|
||||
$res = Db::table(TabConf::$fa_tt_medical_report)->where('id',$report_id)->update(['status'=>2]);
|
||||
return Tools::set_ok('ok',$res);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/3/26} {20:55}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\api\logic\TychatLogic;
|
||||
use app\api\logic\UserOfflinePrizeLogic;
|
||||
use app\common\model\TabConf;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\SundryConfig;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\wechat\UserAuth;
|
||||
|
||||
|
||||
/**
|
||||
* 听译-用户
|
||||
* Class Users
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Usersty extends BaseHttpApi
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* desc:听译-授权,登录
|
||||
*
|
||||
* /api/Usersty/login
|
||||
*
|
||||
* 参数:clientid 客户端标识
|
||||
* username 用户名
|
||||
* password 密码
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function login()
|
||||
{
|
||||
return Mmodel::catchJson(function (){
|
||||
$clientid = input('clientid');
|
||||
if(empty($clientid)){
|
||||
return Tools::set_fail('clientid error');
|
||||
}
|
||||
|
||||
$username = input('username');
|
||||
if(empty($username)){
|
||||
return Tools::set_fail('参数错误:1');
|
||||
}
|
||||
$password = input('password');
|
||||
if(empty($password)){
|
||||
return Tools::set_fail('参数错误:2');
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')
|
||||
->where('username',$username)
|
||||
->find();
|
||||
if(empty($user)){
|
||||
return Tools::set_fail('用户不存在');
|
||||
}
|
||||
if($password != $user['password']){
|
||||
return Tools::set_fail('密码错误');
|
||||
}
|
||||
|
||||
//session('api_user_info',$user);
|
||||
|
||||
unset($user['password']);
|
||||
|
||||
//未登录
|
||||
$expires = 7*86400+time();
|
||||
$ticketstr = md5($user['username']);
|
||||
//修改有效期
|
||||
Db::table('fa_hdrdoctorusers')
|
||||
->data([
|
||||
'qa_chat_ticket'=>$ticketstr,
|
||||
'ticket'=>$ticketstr,
|
||||
'expires'=>$expires,//7天
|
||||
])
|
||||
->where('username',$username)
|
||||
->update();
|
||||
unset($user['qa_chat_ticket']);
|
||||
|
||||
return Tools::set_ok('登录成功',['ticket'=>$ticketstr,'user'=>$user]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc: 绑定设备(选择角色时调用)
|
||||
*
|
||||
* api/Usersty/bindDevice
|
||||
*
|
||||
* 参数:username
|
||||
* clientid
|
||||
* type 用户类型:user=用户,doc=医生
|
||||
*/
|
||||
//function bindDevice(){
|
||||
// return Mmodel::catchJson(function (){
|
||||
// //绑定设备
|
||||
// $devidata = [
|
||||
// 'username'=>input('username'),
|
||||
// 'clientid'=>input('clientid'),
|
||||
// 'type'=>input('type'),
|
||||
// 'login_time'=>Tools::get_now_date(),
|
||||
// ];
|
||||
// Mmodel::existsUpdateInsert('fa_device',[
|
||||
// 'username'=>input('username'),
|
||||
// 'clientid'=>input('clientid'),
|
||||
// ],$devidata);
|
||||
// return Tools::set_ok('绑定成功');
|
||||
// });
|
||||
//}
|
||||
|
||||
/**
|
||||
* 医生问诊提示
|
||||
*
|
||||
* 请求类型:post
|
||||
* 请求地址:/api/Usersty/getTips
|
||||
* 参数:
|
||||
* hdruserbaseinfo_id 基本信息id
|
||||
*/
|
||||
function getTips(){
|
||||
return Mmodel::catchJson(function (){
|
||||
|
||||
$config = config('ai_doctor_tips_config');
|
||||
|
||||
//$hdruserbaseinfo_id = input('hdruserbaseinfo_id');
|
||||
//if(empty($hdruserbaseinfo_id)){
|
||||
// return Tools::set_fail('hdruserbaseinfo_id参数错误');
|
||||
//}
|
||||
$reportid = input('reportid');
|
||||
if(empty($reportid)){
|
||||
return Tools::set_fail('reportid参数错误');
|
||||
}
|
||||
|
||||
|
||||
//$content = [
|
||||
// ["role" => "user", "content" => '']
|
||||
//];
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
//查询病历报告
|
||||
$report = Db::table(TabConf::$fa_tt_medical_report)
|
||||
//->where('hdruserbaseinfo_id',$hdruserbaseinfo_id)
|
||||
//->order('id desc')
|
||||
->where('id',$reportid)
|
||||
->find();
|
||||
if(empty($report)){
|
||||
return Tools::set_fail('暂无病历报告');
|
||||
}
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
];
|
||||
$question = $report['report_content'];//input('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]);
|
||||
|
||||
return Tools::set_ok('ok',['tips'=>$answer_json_arr]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/12} {17:41}
|
||||
*/
|
||||
|
||||
namespace app\api\logic;
|
||||
|
||||
|
||||
use app\api\controller\BaseWssApi;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use IFlytek\Xfyun\Speech\LfasrClient;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class AudioRevertLogic extends BaseLogic
|
||||
{
|
||||
|
||||
function revert($client_id,$audioData)
|
||||
{
|
||||
$xunfei_record_config = config('xunfei_record_config');
|
||||
$appId = $xunfei_record_config['appid'];
|
||||
$secretKey = $xunfei_record_config['secretKey'];
|
||||
|
||||
|
||||
// 设置转写参数
|
||||
$lfasrConfig = [
|
||||
//'hasParticiple' => 'true'
|
||||
//'verify_ssl' => false,
|
||||
//...
|
||||
];
|
||||
|
||||
// 这里的$app_id、$secret_key是在开放平台控制台获得
|
||||
$client = new LfasrClient($appId, $secretKey, $lfasrConfig);
|
||||
|
||||
$filePath = Tools::get_root_path().'public/iseTest.mp3';
|
||||
dump($filePath);
|
||||
// $filePath为待转写的本地文件路径,返回taskId作为后续查询进度、获取结果操作的参数
|
||||
$taskId = $client->combineUpload($filePath);
|
||||
|
||||
dump($taskId);
|
||||
// 查询进度,json格式
|
||||
$progress = $client->getProgress($taskId)->getBody()->getContents();
|
||||
|
||||
dump($progress);
|
||||
// 获取结果,json格式
|
||||
$result = $client->getResult($taskId)->getBody()->getContents();
|
||||
|
||||
dump($result);
|
||||
|
||||
//// 将音频数据转换为文件,以便传递给iFLYTEK SDK
|
||||
//$tempFile = tempnam(sys_get_temp_dir(), 'audio');
|
||||
//Tools::log_to_write_txt(['tempFile:',$tempFile]);
|
||||
//file_put_contents($tempFile, $audioData);
|
||||
//
|
||||
//Tools::log_to_write_txt(['$xunfei_record_config'=>$xunfei_record_config]);
|
||||
////$appId = '5ca1e5**';// 此行代码需要更换为用户自己的appid
|
||||
////$secretKey = '4e41a9b93846815****************';// 此行代码需要更换为用户自己的secretKey
|
||||
//$client = new LfasrClient($appId, $secretKey);
|
||||
//Tools::log_to_write_txt(['开始上传音频']);
|
||||
////echo "开始上传音频...\n";
|
||||
////$taskId = $client->combineUpload(__DIR__ . '/../resource/lfasrTest.wav');
|
||||
//$taskId = $client->combineUpload($tempFile);
|
||||
//Tools::log_to_write_txt(['音频上传成功']);
|
||||
////echo "音频上传成功,task_id: $taskId\n";
|
||||
////do {
|
||||
//$progress = json_decode($client->getProgress($taskId)->getBody()->getContents(), true);
|
||||
//Tools::log_to_write_txt(['进度'=>$progress]);
|
||||
//
|
||||
//if ($progress['ok'] !== 0) {
|
||||
// //echo "获取任务进度失败\n";
|
||||
// $res_json = BaseWssApi::json_wss('error','获取任务进度失败',$progress);
|
||||
// Tools::log_to_write_txt($res_json);
|
||||
// Gateway::sendToClient($client_id, $res_json);
|
||||
// return;
|
||||
//}
|
||||
//
|
||||
//if ($progress['err_no'] !== 0) {
|
||||
// $res_json = BaseWssApi::json_wss('error','获取任务进度失败',$progress);
|
||||
// Tools::log_to_write_txt($res_json);
|
||||
// Gateway::sendToClient($client_id, $res_json);
|
||||
// return;
|
||||
//}
|
||||
//$data = json_decode($progress['data'], true);
|
||||
//
|
||||
//if ($data['status'] == 9) {
|
||||
//
|
||||
// $result = $client->getResult($taskId)->getBody()->getContents();
|
||||
// $res_json = BaseWssApi::json_wss('wss_revert_audio','音频转写成功开始获取结果',$result);
|
||||
// Tools::log_to_write_txt($res_json);
|
||||
// Gateway::sendToClient($client_id, $res_json);
|
||||
// return;
|
||||
//} else {
|
||||
// $res_json = BaseWssApi::json_wss('error','持续转写中,错误:',$data);
|
||||
// Tools::log_to_write_txt($res_json);
|
||||
// Gateway::sendToClient($client_id, $res_json);
|
||||
// return;
|
||||
//}
|
||||
}
|
||||
|
||||
function revert_test($client_id,$audioData){
|
||||
$xunfei_record_config = config('xunfei_record_config');
|
||||
$appId = $xunfei_record_config['appid'];
|
||||
$secretKey = $xunfei_record_config['APIKey'];
|
||||
|
||||
dump($xunfei_record_config);
|
||||
$client = new LfasrClient($appId, $secretKey);
|
||||
echo "开始上传音频...\n";
|
||||
$filePath = Tools::get_root_path().'public/iseTest.mp3';
|
||||
$taskId = $client->combineUpload($filePath);
|
||||
echo "音频上传成功,task_id: $taskId\n";
|
||||
do {
|
||||
$progress = json_decode($client->getProgress($taskId)->getBody()->getContents(), true);
|
||||
|
||||
dump($progress);die;
|
||||
if ($progress['ok'] !== 0) {
|
||||
echo "获取任务进度失败\n";
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($progress['err_no'] !== 0) {
|
||||
echo "获取任务进度失败,错误码:" . $progress['err_no'] . "\n";
|
||||
exit;
|
||||
}
|
||||
$data = json_decode($progress['data'], true);
|
||||
|
||||
if ($data['status'] == 9) {
|
||||
echo "音频转写成功,开始获取结果...\n";
|
||||
break;
|
||||
} else {
|
||||
echo "音频转写中...\n";
|
||||
}
|
||||
sleep(5);
|
||||
} while (true);
|
||||
$result = $client->getResult($taskId)->getBody()->getContents();
|
||||
echo $result;
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\logic;
|
||||
|
||||
use React\EventLoop\Factory;
|
||||
use React\Socket\Connector;
|
||||
use React\Http\Browser;
|
||||
use React\Promise\Timer\Timeout;
|
||||
use React\Stream\ThroughStream;
|
||||
use React\WebSocket\ConnectionContext;
|
||||
use React\WebSocket\WebSocketFactory;
|
||||
class RealTimeASRClient
|
||||
{
|
||||
/**
|
||||
* 根据所提供信息返回签名
|
||||
*
|
||||
* @param string $appId appid
|
||||
* @param string $secretKey secretKey
|
||||
* @param string $timestamp 时间戳,不传的话使用系统时间
|
||||
* @return string
|
||||
*/
|
||||
function sign_V1($appId, $secretKey, $timestamp = null){
|
||||
$timestamp = $timestamp ?: time();
|
||||
$baseString = $appId . $timestamp;
|
||||
$signa_origin = hash_hmac('sha1', md5($baseString), $secretKey, true);
|
||||
return base64_encode($signa_origin);
|
||||
}
|
||||
|
||||
|
||||
function req(){
|
||||
$loop = Factory::create();
|
||||
|
||||
$connector = new Connector($loop);
|
||||
$browser = new Browser($connector);
|
||||
|
||||
$appid = 'your_appid';
|
||||
$ts = strval(time());
|
||||
$apiKey = 'your_apiKey';
|
||||
|
||||
// 生成signa
|
||||
$baseString = $appid . $ts;
|
||||
$md5BaseString = md5($baseString);
|
||||
$signa = base64_encode(hash_hmac('sha1', $md5BaseString, $apiKey, true));
|
||||
|
||||
$url = "ws://rtasr.xfyun.cn/v1/ws?appid={$appid}&ts={$ts}&signa={$signa}";
|
||||
|
||||
$browser->request('GET', $url)
|
||||
->then(function ($request) use ($loop) {
|
||||
$request->on('response', function ($response) use ($loop) {
|
||||
$response->on('data', function ($chunk) {
|
||||
echo "Received: " . $chunk . PHP_EOL;
|
||||
});
|
||||
|
||||
$response->on('close', function () {
|
||||
echo "Connection closed." . PHP_EOL;
|
||||
});
|
||||
|
||||
// 创建一个通过流,用于发送音频数据
|
||||
$stream = new ThroughStream();
|
||||
$stream->pipe($response);
|
||||
|
||||
// 这里可以发送音频数据,假设你有一个音频文件
|
||||
// 注意:这只是一个示例,你需要根据实际情况发送数据
|
||||
// $audioData = file_get_contents('/path/to/audio.pcm');
|
||||
// $stream->write($audioData);
|
||||
|
||||
// 发送结束标志
|
||||
$stream->end(json_encode(["end" => true]));
|
||||
});
|
||||
})
|
||||
->then(null, function ($e) {
|
||||
echo "Error: " . $e->getMessage() . PHP_EOL;
|
||||
});
|
||||
|
||||
$loop->run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/15} {16:14}
|
||||
*/
|
||||
|
||||
namespace app\api\logic;
|
||||
|
||||
|
||||
use app\api\controller\BaseWssApi;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* 听译聊天
|
||||
* Class TychatLogic
|
||||
* @package app\api\logic
|
||||
*/
|
||||
class TtchatLogic extends BaseLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:保存听译聊天记录
|
||||
*
|
||||
* 注:
|
||||
* 在websocket 的onMessage中send消息,消息格式如下:
|
||||
*
|
||||
* json参数:
|
||||
* [
|
||||
'action'=>'TychatLogic/saveChatHistory',
|
||||
'items'=>[
|
||||
'content'=>'聊天内容',
|
||||
'username'=>'用户名',//医生说话就传医生的username,病人说话就传病人的username
|
||||
]
|
||||
];
|
||||
*/
|
||||
function saveChatHistory($chat_content){
|
||||
$data = [
|
||||
'chat_msg'=>$chat_content,
|
||||
];
|
||||
Db::table('fa_tt_chathistory')->insert($data);
|
||||
|
||||
|
||||
return Tools::set_ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:健康洞察
|
||||
*
|
||||
* api/HealthInsights/getHealthInsight
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getHealthInsight(){
|
||||
$config = config('ai_health_insight_config');
|
||||
|
||||
$question = '';//input('question','');
|
||||
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return json(Tools::set_fail('ticket必须'));
|
||||
}
|
||||
$user = Db::table('fa_hdrdoctorusers')->where('ticket',$ticket)->find();
|
||||
if(empty($user)){
|
||||
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'])
|
||||
->order('id asc')
|
||||
->where('createtime','>',$day3)//3天之内
|
||||
->select();
|
||||
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
];
|
||||
$content = [
|
||||
//["role" => "user", "content" => '']
|
||||
];
|
||||
foreach ($his_record as $item){
|
||||
$content[] = ["role" => "user", "content" => $item['chat_msg']];
|
||||
}
|
||||
$chatobj->setBefore($content);
|
||||
|
||||
$chatobj->chat($question,$config,$answer_json_arr);
|
||||
}
|
||||
}
|
||||
@@ -1,318 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/7/15} {16:14}
|
||||
*/
|
||||
|
||||
namespace app\api\logic;
|
||||
|
||||
|
||||
use app\api\controller\BaseWssApi;
|
||||
use app\common\model\TabConf;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\gpt\chat\ChatGPT;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* 听译聊天
|
||||
* Class TychatLogic
|
||||
* @package app\api\logic
|
||||
*/
|
||||
class TychatLogic extends BaseLogic
|
||||
{
|
||||
/**
|
||||
* desc:听译-保存听译聊天记录,同时分发消息
|
||||
*
|
||||
* action:Tychat/saveChatHistory
|
||||
* items:[
|
||||
* 'chat_msg'=>'你好',
|
||||
* ]
|
||||
* author:wh
|
||||
*/
|
||||
function saveChatHistory($client_id,$data){
|
||||
return Mmodel::catchJson(function ()use ($client_id,$data){
|
||||
Tools::log_to_write_txt(['保存历史记录,入参'=>['域名'=>request()->controller().'/'.request()->action()]]);
|
||||
$action = 'Tychat/saveChatHistory';
|
||||
if(empty($data['items'])){
|
||||
$json = Tools::wss_json_fail($action, 'items参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['chat_msg'])){
|
||||
$json = Tools::wss_json($action, 550,'chat_msg参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['type'])){
|
||||
$json = Tools::wss_json_fail($action, 'type参数错误,缺少角色类型:doc、user');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['say_token'])){
|
||||
$json = Tools::wss_json_fail($action, 'say_token参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['ticket'])){
|
||||
$json = Tools::wss_json_fail($action, 'ticket参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
|
||||
if(empty($data['items']['hdruserbaseinfo_id'])){
|
||||
$json = Tools::wss_json_fail($action, 'hdruserbaseinfo_id 参数错误,患者基本信息id必须。');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
$hdruserbaseinfo_id = $data['items']['hdruserbaseinfo_id'];
|
||||
|
||||
$type = $data['items']['type'];//角色类型
|
||||
$ticket = $data['items']['ticket'];
|
||||
$say_token = $data['items']['say_token'];//对话票据
|
||||
|
||||
//{\"role\":\"patient\",\"text\":\" get message\"}
|
||||
$chat_msg_arr = $data['items']['chat_msg'];//对话内容 $chat_msg是个数组
|
||||
|
||||
|
||||
//保存历史记录 $chat_msg是个数组
|
||||
$data = [
|
||||
'chat_msg'=>json_encode($chat_msg_arr, JSON_UNESCAPED_UNICODE),
|
||||
'username'=>'',
|
||||
'type'=>$type,//聊天角色
|
||||
'say_token'=>$say_token,//对话凭据
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
];
|
||||
Tools::log_to_write_txt(['开始保存聊天记录'=>$data]);
|
||||
Db::table(TabConf::$fa_ty_chathistory)
|
||||
->data($data)
|
||||
->insert();
|
||||
Tools::log_to_write_txt(['结束保存聊天记录.']);
|
||||
|
||||
//广播消息
|
||||
//查询广播客户端id
|
||||
$arr = Db::table(TabConf::$fa_device)
|
||||
->where('ticket',$ticket)
|
||||
->where('clientid','neq',$client_id)//不给自己发
|
||||
->find();
|
||||
if(empty($arr)){
|
||||
$json = Tools::wss_json_fail($action, '未找到广播对象,请确认目标对象是否登录并绑定设备关系');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($arr['clientid'])){
|
||||
$json = Tools::wss_json_fail($action, '未找到广播对象,请确认目标对象是否登录并绑定设备关系!');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
$clientid = $arr['clientid'];
|
||||
|
||||
|
||||
//向客户端发送消息
|
||||
$json = Tools::wss_json_ok($action, $chat_msg_arr);
|
||||
Tools::log_to_write_txt(['向客户端广播消息,入参:clientid='.$clientid=>$json]);
|
||||
Gateway::sendToClient($clientid,$json);
|
||||
|
||||
Tools::log_to_write_txt(['开始健康小洞察'=>$chat_msg_arr]);
|
||||
//健康小洞察
|
||||
$this->getHealthInsight2($hdruserbaseinfo_id,$chat_msg_arr);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
/**
|
||||
* desc:保存听译聊天记录
|
||||
*
|
||||
*/
|
||||
//private function saveHistory(string $username,string $chat_content,string $type,string $ticket){
|
||||
// $data = [
|
||||
// 'chat_msg'=>$chat_content,
|
||||
// 'username'=>$username,
|
||||
// 'type'=>$type,//聊天角色
|
||||
// 'ticket'=>$ticket,//对话凭据
|
||||
// ];
|
||||
// Db::table('fa_ty_chathistory')
|
||||
// ->data($data)
|
||||
// ->insert();
|
||||
//
|
||||
//
|
||||
// return Tools::set_ok();
|
||||
//}
|
||||
|
||||
/**
|
||||
* 查询聊天记录
|
||||
*/
|
||||
function getChatHistory(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$ticket = input('ticket');
|
||||
if(empty($ticket)){
|
||||
return Tools::set_fail('ticket参数错误');
|
||||
}
|
||||
$list = Db::table('fa_ty_chathistory')
|
||||
->where('ticket',$ticket)
|
||||
->order('id desc')
|
||||
->select();
|
||||
return Tools::set_ok('查询成功',$list);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:健康洞察
|
||||
* 请求类型:wss
|
||||
* action: Tychat/getHealthInsight2
|
||||
* items:[
|
||||
* username:'18922226666',
|
||||
* content=>[
|
||||
["role" => "user", "content" => '']
|
||||
],
|
||||
* ]
|
||||
* author:wh
|
||||
*/
|
||||
private function getHealthInsight2($hdruserbaseinfo_id,$chat_msg_arr){
|
||||
Tools::log_to_write_txt(['健康洞察,入参'=>['域名'=>request()->controller().'/'.request()->action()]]);
|
||||
//$action = 'Tychat/getHealthInsight2';
|
||||
|
||||
$config = config('ai_health_insight_config');
|
||||
$question = '';//input('question','');
|
||||
//$content = [
|
||||
// ["role" => "user", "content" => '']
|
||||
//];
|
||||
$chatobj = new ChatGPT();
|
||||
$chatobj->url = $config['base_url'];
|
||||
$chatobj->model = '';
|
||||
$chatobj->apiKey = $config['APIKey'];
|
||||
|
||||
$answer_json_arr = [];
|
||||
|
||||
$config = [
|
||||
'stream'=>false,
|
||||
'chatId'=>Tools::getMillisecond(),
|
||||
];
|
||||
$content = [
|
||||
["role" => "user", "content" => $chat_msg_arr['text']]
|
||||
];
|
||||
$chatobj->setBefore($content);
|
||||
|
||||
$chatobj->returnAnswer($question,$config,$answer_json_arr);
|
||||
Tools::log_to_write_txt(['健康洞察,gpt请求参数'=>$chatobj->post_msg_body]);
|
||||
////return json(Tools::set_ok('查询成功',$answer_json_arr));
|
||||
Tools::log_to_write_txt(['健康洞察,出参'=>$answer_json_arr]);
|
||||
|
||||
|
||||
$content_arr = json_decode($answer_json_arr[0],true);
|
||||
if(empty($content_arr['choices'][0]['message']['content'])){
|
||||
return;
|
||||
}
|
||||
$ctx_msg = $content_arr['choices'][0]['message']['content'];
|
||||
|
||||
//存储洞察内容
|
||||
Db::table(TabConf::$fa_hdrhealth_insight)
|
||||
->data([
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
'content'=>$ctx_msg,
|
||||
])
|
||||
->insert();
|
||||
|
||||
//$json = Tools::wss_json_ok($action, 'ok',$answer_json_arr);
|
||||
//Gateway::sendToClient($clientid,$json);
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:医生打开诊断窗口记录,打开诊断窗口时调用该接口,发送对话数据给客户端,客户端拿本地登录的票据与该票据参数做相等匹配,
|
||||
* 相等表示同一个医生,否则提示切换医生登录账号
|
||||
*
|
||||
* 请求类型:wss
|
||||
* action: Tychat/openChatRoomWriteRecord
|
||||
* items:[
|
||||
* doctor_name //医生姓名
|
||||
doctor_phone //医生电话
|
||||
name //患者姓名
|
||||
phone //患者电话
|
||||
ticket //对话票据
|
||||
* ]
|
||||
* 【注意】医患对话只会一对一
|
||||
* author:wh
|
||||
*/
|
||||
function openChatRoomWriteRecord($client_id,$data){
|
||||
return Mmodel::catchJson(function () use ($client_id,$data){
|
||||
Tools::log_to_write_txt(['打开诊断窗口记录,入参'=>$data]);
|
||||
$action = 'Tychat/openChatRoomWriteRecord';
|
||||
if(empty($data['items'])){
|
||||
$json = Tools::wss_json_fail($action, 'items参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['doctor_name'])){
|
||||
$json = Tools::wss_json_fail($action, 'doctor_name参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['doctor_phone'])){
|
||||
$json = Tools::wss_json_fail($action, 'doctor_phone参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['name'])){
|
||||
$json = Tools::wss_json_fail($action, 'name 参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['phone'])){
|
||||
$json = Tools::wss_json_fail($action, 'phone 参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['ticket'])){
|
||||
$json = Tools::wss_json_fail($action, 'ticket 参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
if(empty($data['items']['hdruserbaseinfo_id'])){
|
||||
$json = Tools::wss_json_fail($action, 'hdruserbaseinfo_id 参数错误');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
$hdruserbaseinfo_id = $data['items']['hdruserbaseinfo_id'];
|
||||
|
||||
$upd_data = [
|
||||
'doctor_name'=>$data['items']['doctor_name'],
|
||||
'doctor_phone'=>$data['items']['doctor_phone'],
|
||||
'name'=>$data['items']['name'],
|
||||
'phone'=>$data['items']['phone'],
|
||||
'ticket'=>$data['items']['ticket'],
|
||||
];
|
||||
Db::table(TabConf::$fa_hdropen_chat_room_record)
|
||||
->insert($upd_data);
|
||||
//【注意】医患对话只会一对一
|
||||
////更新医生对话设备目标
|
||||
Db::table(TabConf::$fa_device)
|
||||
->where('clientid',$client_id)
|
||||
->data([
|
||||
'target_name'=>$data['items']['name'],
|
||||
'target_phone'=>$data['items']['phone'],
|
||||
])
|
||||
->update();
|
||||
|
||||
//查询患者设备
|
||||
$device = Db::table(TabConf::$fa_device)
|
||||
->where('username',$data['items']['doctor_phone'])
|
||||
->where('clientid','neq',$client_id)//不是自己
|
||||
->select();//严格来说只有一条数据
|
||||
if(empty($device)){
|
||||
$json = Tools::wss_json_fail($action, '错误:当前医生没有对应患者设备');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
|
||||
//医患只能一对一
|
||||
if(count($device) > 1){
|
||||
$json = Tools::wss_json_fail($action, '错误:当前医生存在多个患者设备,无法确认目标');
|
||||
return Gateway::sendToClient($client_id, $json);
|
||||
}
|
||||
//更新患者设备的ticket为医生的ticket(保持在一个组)
|
||||
Db::table(TabConf::$fa_device)
|
||||
->where('clientid',$device[0]['clientid'])
|
||||
->data([
|
||||
'ticket'=>$data['items']['ticket'],
|
||||
])
|
||||
->update();
|
||||
//向客户端发消息
|
||||
$json = Tools::wss_json_ok($action,'诊断医生已打开诊断窗口',[
|
||||
'hdruserbaseinfo_id'=>$hdruserbaseinfo_id,
|
||||
]);
|
||||
Tools::log_to_write_txt(['打开诊断窗口记录,出参,向客户端发消息。'=>$json,'device:'=>$device]);
|
||||
Gateway::sendToClient($device[0]['clientid'],$json);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/5/23} {18:01}
|
||||
*/
|
||||
|
||||
namespace app\api\logic;
|
||||
|
||||
|
||||
use app\api\controller\BaseWssApi;
|
||||
use app\common\model\TabConf;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* Class TyuserLogic
|
||||
* @package app\api\logic
|
||||
*/
|
||||
class TyuserLogic extends BaseLogic
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:客户端离线
|
||||
* author:wh
|
||||
*/
|
||||
function offline($client_id){
|
||||
Mmodel::catchTrans(function () use ($client_id){
|
||||
Tools::log_to_write_txt(['服务端收到客户端离线消息:client_id:' . $client_id]);
|
||||
|
||||
$user = Db::table(TabConf::$fa_device)
|
||||
->where('clientid', $client_id)
|
||||
->find();
|
||||
if(empty($user)){
|
||||
Tools::log_to_write_txt(['error:客户端离线,用户不存在:client_id:' . $client_id]);
|
||||
return ;
|
||||
}
|
||||
|
||||
Tools::log_to_write_txt(['设置离线时间:clientid:' . $client_id]);
|
||||
//$username = $user['username'];
|
||||
Db::table(TabConf::$fa_device)
|
||||
->where('clientid', $client_id)
|
||||
->delete();
|
||||
//把ticket设置为空,标识离线(不能清,因为听译和数字人用的同一个账号,否则查不到账号信息)
|
||||
//Db::table('fa_hdrdoctorusers')
|
||||
// ->data([
|
||||
// 'ticket'=>'',//修改为离线
|
||||
// ])
|
||||
// ->where('username',$username)
|
||||
// ->update();
|
||||
|
||||
//在$client_id无效的情况下可能会抛出异常
|
||||
//$json = BaseWssApi::wss_json('ok', '用户已离线');
|
||||
//Gateway::sendToClient($client_id, json_encode($json, JSON_UNESCAPED_UNICODE));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:登录选择角色时绑定设备关系
|
||||
* 请求类型:wss
|
||||
*请求参数:
|
||||
* json消息格式:[
|
||||
'action'=>'Tyuser/bindRelation',
|
||||
'items'=>[
|
||||
'username'=>'13333322323',
|
||||
'ticket'=>'sadddddddddddddddddddddddddddd',
|
||||
]
|
||||
]
|
||||
* author:wh
|
||||
*/
|
||||
function bindRelation($clientid,$data){
|
||||
$action = 'Tyuser/bindRelation';
|
||||
if(empty($data['items'])){
|
||||
$json = Tools::wss_json($action,'items参数错误');
|
||||
return Gateway::sendToClient($clientid, $json);
|
||||
}
|
||||
$items = $data['items'];
|
||||
if(empty($items['username'])){
|
||||
$json = Tools::wss_json($action,'username参数错误');
|
||||
return Gateway::sendToClient($clientid, $json);
|
||||
}
|
||||
if(empty($items['ticket'])){
|
||||
$json = Tools::wss_json($action,'ticket参数错误');
|
||||
return Gateway::sendToClient($clientid, $json);
|
||||
}
|
||||
//验证clientid重复
|
||||
$arr = Db::table(TabConf::$fa_device)
|
||||
->where('clientid',$clientid)
|
||||
->find();
|
||||
if(!empty($arr)){
|
||||
$json = Tools::wss_json($action,'clientid重复,请重新登录');
|
||||
return Gateway::sendToClient($clientid, $json);
|
||||
}
|
||||
|
||||
//先清除这个医生的其它设备(可能是之前绑定的设备,因为医患设备只能一对一),不能清除自己的设备
|
||||
Db::table(TabConf::$fa_device)
|
||||
->where('username',$items['username'])
|
||||
->where('clientid','neq',$clientid)
|
||||
->delete();
|
||||
|
||||
//绑定设备
|
||||
Db::table(TabConf::$fa_device)
|
||||
->insert([
|
||||
'username'=>$items['username'],
|
||||
'clientid'=>$clientid,
|
||||
'ticket'=>$items['ticket'],//对话票据,根据票据分发消息
|
||||
]);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 估量-问答配置
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Guliangquestion extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Guliangquestion模型对象
|
||||
* @var \app\admin\model\Guliangquestion
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Guliangquestion;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 科室
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Hdrdepartment extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Hdrdepartment模型对象
|
||||
* @var \app\admin\model\Hdrdepartment
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Hdrdepartment;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 科室问卷答案
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Hdrquestionnaireanswer extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Hdrquestionnaireanswer模型对象
|
||||
* @var \app\admin\model\Hdrquestionnaireanswer
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Hdrquestionnaireanswer;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 查看
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//当前是否为关联查询
|
||||
$this->relationSearch = true;
|
||||
//设置过滤方法
|
||||
$this->request->filter(['strip_tags', 'trim']);
|
||||
if ($this->request->isAjax()) {
|
||||
//如果发送的来源是Selectpage,则转发到Selectpage
|
||||
if ($this->request->request('keyField')) {
|
||||
return $this->selectpage();
|
||||
}
|
||||
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
||||
|
||||
$list = $this->model
|
||||
->with(['hdrquestionnairequestion'])
|
||||
->where($where)
|
||||
->order($sort, $order)
|
||||
->paginate($limit);
|
||||
|
||||
foreach ($list as $row) {
|
||||
$row->visible(['id','answer','jumpid','group']);
|
||||
$row->visible(['hdrquestionnairequestion']);
|
||||
$row->getRelation('hdrquestionnairequestion')->visible(['question']);
|
||||
}
|
||||
|
||||
$result = array("total" => $list->total(), "rows" => $list->items());
|
||||
|
||||
return json($result);
|
||||
}
|
||||
return $this->view->fetch();
|
||||
}
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @return string
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
if (false === $this->request->isPost()) {
|
||||
return $this->view->fetch();
|
||||
}
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
$params = $this->preExcludeFields($params);
|
||||
//$params['group'] = Db::table('fa_hdrquestionnairequestion')
|
||||
// ->where('id', $params['hdrquestionnairequestion_id'])
|
||||
// ->value('group');
|
||||
if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
|
||||
$params[$this->dataLimitField] = $this->auth->id;
|
||||
}
|
||||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
|
||||
$this->model->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $this->model->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if ($result === false) {
|
||||
$this->error(__('No rows were inserted'));
|
||||
}
|
||||
$this->success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param $ids
|
||||
* @return string
|
||||
*/
|
||||
public function edit($ids = null)
|
||||
{
|
||||
$row = $this->model->get($ids);
|
||||
if (!$row) {
|
||||
$this->error(__('No Results were found'));
|
||||
}
|
||||
$adminIds = $this->getDataLimitAdminIds();
|
||||
if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
|
||||
$this->error(__('You have no permission'));
|
||||
}
|
||||
if (false === $this->request->isPost()) {
|
||||
$this->view->assign('row', $row);
|
||||
return $this->view->fetch();
|
||||
}
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
//$params['group'] = Db::table('fa_hdrquestionnairequestion')
|
||||
// ->where('id', $params['hdrquestionnairequestion_id'])
|
||||
// ->value('group');
|
||||
$params = $this->preExcludeFields($params);
|
||||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
|
||||
$row->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $row->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if (false === $result) {
|
||||
$this->error(__('No rows were updated'));
|
||||
}
|
||||
$this->success();
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 科室问卷问题(一个问题对应多个答案)
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Hdrquestionnairequestion extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Hdrquestionnairequestion模型对象
|
||||
* @var \app\admin\model\Hdrquestionnairequestion
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Hdrquestionnairequestion;
|
||||
$this->view->assign("isCommonList", $this->model->getIsCommonList());
|
||||
$this->view->assign("isOnlyBoyList", $this->model->getIsOnlyBoyList());
|
||||
$this->view->assign("isOnlyGirlList", $this->model->getIsOnlyGirlList());
|
||||
$this->view->assign("typeList", $this->model->getTypeList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 查看
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//当前是否为关联查询
|
||||
$this->relationSearch = true;
|
||||
//设置过滤方法
|
||||
$this->request->filter(['strip_tags', 'trim']);
|
||||
if ($this->request->isAjax()) {
|
||||
//如果发送的来源是Selectpage,则转发到Selectpage
|
||||
if ($this->request->request('keyField')) {
|
||||
return $this->selectpage();
|
||||
}
|
||||
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
||||
|
||||
$list = $this->model
|
||||
->with(['hdrdepartment'])
|
||||
->where($where)
|
||||
->order($sort, $order)
|
||||
->paginate($limit);
|
||||
|
||||
foreach ($list as $row) {
|
||||
$row->visible(['id','question','is_common','is_only_boy','is_only_girl','type','group']);
|
||||
$row->visible(['hdrdepartment']);
|
||||
$row->getRelation('hdrdepartment')->visible(['name']);
|
||||
}
|
||||
|
||||
$result = array("total" => $list->total(), "rows" => $list->items());
|
||||
|
||||
return json($result);
|
||||
}
|
||||
return $this->view->fetch();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 疼痛科病历报告(听译问诊)
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Ttmedicalreport extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Ttmedicalreport模型对象
|
||||
* @var \app\admin\model\Ttmedicalreport
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Ttmedicalreport;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param $ids
|
||||
* @return string
|
||||
* @throws DbException
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
public function edit($ids = null)
|
||||
{
|
||||
$row = $this->model->get($ids);
|
||||
if (!$row) {
|
||||
$this->error(__('No Results were found'));
|
||||
}
|
||||
//查询随访记录
|
||||
$followup = Db::table('fa_tt_followup')->where('report_dataid', $row['id'])->select();
|
||||
$this->view->assign('follow_record', $followup);
|
||||
|
||||
$adminIds = $this->getDataLimitAdminIds();
|
||||
if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
|
||||
$this->error(__('You have no permission'));
|
||||
}
|
||||
if (false === $this->request->isPost()) {
|
||||
$this->view->assign('row', $row);
|
||||
return $this->view->fetch();
|
||||
}
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
$params = $this->preExcludeFields($params);
|
||||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
|
||||
$row->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $row->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if (false === $result) {
|
||||
$this->error(__('No rows were updated'));
|
||||
}
|
||||
$this->success();
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 听译-病历报告(听译问诊)
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Tymedicalreport extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Tymedicalreport模型对象
|
||||
* @var \app\admin\model\Tymedicalreport
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\Tymedicalreport;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param $ids
|
||||
* @return string
|
||||
* @throws DbException
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
public function edit($ids = null)
|
||||
{
|
||||
$row = $this->model->get($ids);
|
||||
if (!$row) {
|
||||
$this->error(__('No Results were found'));
|
||||
}
|
||||
//查询随访记录
|
||||
$followup = Db::table('fa_ty_followup')->where('report_dataid', $row['id'])->select();
|
||||
$this->view->assign('follow_record', $followup);
|
||||
|
||||
$adminIds = $this->getDataLimitAdminIds();
|
||||
if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
|
||||
$this->error(__('You have no permission'));
|
||||
}
|
||||
if (false === $this->request->isPost()) {
|
||||
$this->view->assign('row', $row);
|
||||
return $this->view->fetch();
|
||||
}
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
$params = $this->preExcludeFields($params);
|
||||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
|
||||
$row->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $row->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if (false === $result) {
|
||||
$this->error(__('No rows were updated'));
|
||||
}
|
||||
$this->success();
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller\tt;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 疼痛科聊天历史
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Chathistory extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Chathistory模型对象
|
||||
* @var \app\admin\model\tt\Chathistory
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\tt\Chathistory;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller\tt;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
/**
|
||||
* 随访记录(数智人医生)
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Followup extends Backend
|
||||
{
|
||||
protected $noNeedRight = ['addfollowup','submitfollowup','addFollowUpTy','submitFollowUpTy'];
|
||||
|
||||
/**
|
||||
* Followup模型对象
|
||||
* @var \app\admin\model\tt\Followup
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\tt\Followup;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* 添加页面
|
||||
*
|
||||
* @return string
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
public function addfollowup()
|
||||
{
|
||||
//报告数据id
|
||||
$report_dataid = input('report_dataid');
|
||||
$report = Db::table('fa_tt_medical_report')->where('id',$report_dataid)->find();
|
||||
|
||||
$userbaseinfo = Db::table('fa_tt_userbaseinfo')->where('id',$report['id'])->find();
|
||||
$this->assign('user',$userbaseinfo);
|
||||
$html = view('add')->getContent();
|
||||
return json(Tools::set_ok('ok',$html));
|
||||
}
|
||||
|
||||
function submitfollowup(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$content = input('content');
|
||||
if(empty($content)){
|
||||
return Tools::set_fail( '请填写随访内容');
|
||||
}
|
||||
$report_dataid = input('report_dataid');
|
||||
if(empty($report_dataid)){
|
||||
return Tools::set_fail( '请选择诊断报告');
|
||||
}
|
||||
|
||||
$report = Db::table('fa_tt_medical_report')
|
||||
->where('id',$report_dataid)
|
||||
->find();
|
||||
|
||||
$userbase = Db::table('fa_tt_userbaseinfo')
|
||||
->where('id',$report['userbaseid'])
|
||||
->find();
|
||||
$data = [
|
||||
'report_dataid'=>$report_dataid,
|
||||
'content'=>$content,
|
||||
'create_time'=>input('create_time'),
|
||||
'name'=>$userbase['name'],
|
||||
'phone'=>$userbase['phone'],
|
||||
];
|
||||
Db::table('fa_tt_followup')->insert($data);
|
||||
return Tools::set_ok('添加成功');
|
||||
});
|
||||
}
|
||||
|
||||
public function addFollowUpTy()
|
||||
{
|
||||
//报告数据id
|
||||
$report_dataid = input('report_dataid');
|
||||
$report = Db::table('fa_ty_medical_report')->where('id',$report_dataid)->find();
|
||||
|
||||
$userbaseinfo = Db::table('fa_ty_userbaseinfo')->where('id',$report['id'])->find();
|
||||
$this->assign('user',$userbaseinfo);
|
||||
$html = view('add')->getContent();
|
||||
return json(Tools::set_ok('ok',$html));
|
||||
}
|
||||
function submitFollowUpTy(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$content = input('content');
|
||||
if(empty($content)){
|
||||
return Tools::set_fail( '请填写随访内容');
|
||||
}
|
||||
$report_dataid = input('report_dataid');
|
||||
if(empty($report_dataid)){
|
||||
return Tools::set_fail( '请选择诊断报告');
|
||||
}
|
||||
$report = Db::table('fa_ty_medical_report')->where('id',$report_dataid)->find();
|
||||
|
||||
$userbase = Db::table('fa_ty_userbaseinfo')
|
||||
->where('id',$report['userbaseid'])
|
||||
->find();
|
||||
if(empty($userbase)){
|
||||
return Tools::set_fail( '用户基本信息不存在');
|
||||
}
|
||||
$data = [
|
||||
'report_dataid'=>$report_dataid,
|
||||
'content'=>$content,
|
||||
'create_time'=>input('create_time'),
|
||||
'name'=>$userbase['name'],
|
||||
//'phone'=>$userbase['phone'],
|
||||
];
|
||||
Db::table('fa_ty_followup')->insert($data);
|
||||
return Tools::set_ok('添加成功');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller\tt;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 疼痛科用户基本信息
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Userbaseinfo extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Userbaseinfo模型对象
|
||||
* @var \app\admin\model\tt\Userbaseinfo
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\tt\Userbaseinfo;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller\ty;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 随访记录(听译助手)
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Followup extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Followup模型对象
|
||||
* @var \app\admin\model\ty\Followup
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\ty\Followup;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller\ty;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
|
||||
/**
|
||||
* 听译-用户基本信息
|
||||
*
|
||||
* @icon fa fa-circle-o
|
||||
*/
|
||||
class Userbaseinfo extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Userbaseinfo模型对象
|
||||
* @var \app\admin\model\ty\Userbaseinfo
|
||||
*/
|
||||
protected $model = null;
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\ty\Userbaseinfo;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
||||
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
||||
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Name' => '问题',
|
||||
'Answer' => '答案'
|
||||
];
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Name' => '科室名称'
|
||||
];
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Hdrquestionnairequestion_id' => '问卷问题ID',
|
||||
'Answer' => '问卷答案',
|
||||
'Jumpid' => '跳转到指定题目ID',
|
||||
'Group' => '题目分组',
|
||||
'Create_time' => '创建时间',
|
||||
'Update_time' => '更新时间',
|
||||
'Hdrquestionnairequestion.question' => '问卷问题'
|
||||
];
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Hdrdepartment_id' => '所属科室',
|
||||
'Question' => '问卷问题',
|
||||
'Is_common' => '是否通用',
|
||||
'Is_common yes' => '是',
|
||||
'Is_common no' => '否',
|
||||
'Is_only_boy' => '只适合男',
|
||||
'Is_only_boy yes' => '是',
|
||||
'Is_only_boy no' => '否',
|
||||
'Is_only_girl' => '只适合女',
|
||||
'Is_only_girl yes' => '是',
|
||||
'Is_only_girl no' => '否',
|
||||
'Type' => '选项类型',
|
||||
'Type one' => '单选',
|
||||
'Type more' => '多选',
|
||||
'Group' => '题目分组',
|
||||
'Create_time' => '创建时间',
|
||||
'Update_time' => '更新时间',
|
||||
'Hdrdepartment.name' => '科室名称'
|
||||
];
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Username' => '聊天用户',
|
||||
'Relation' => '医生患者关系',
|
||||
'Chat_msg' => '问诊内容',
|
||||
'Create_time' => '创建时间'
|
||||
];
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Report_dataid' => '报告ID',
|
||||
'Name' => '姓名',
|
||||
'Phone' => '电话',
|
||||
'Content' => '随访内容',
|
||||
'Create_time' => '随访时间'
|
||||
];
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Doctor' => '所属医生',
|
||||
'Name' => '病人姓名',
|
||||
'Gender' => '病人性别',
|
||||
'Age' => '病人年龄',
|
||||
'Edu' => '教育程度',
|
||||
'Career_year' => '职业及年限',
|
||||
'Power' => '体力要求',
|
||||
'Satisfaction' => '经济满意度',
|
||||
'Old_career_year' => '过往职业及年限',
|
||||
'Support' => '社会支持度',
|
||||
'Marriage' => '婚姻状况',
|
||||
'Live' => '居住情况',
|
||||
'Home' => '家庭关系',
|
||||
'Address' => '地址',
|
||||
'Phone' => '联系方式',
|
||||
'Wechat_no' => '微信号',
|
||||
'Create_time' => '创建时间'
|
||||
];
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Doctor' => '所属医生',
|
||||
'Username' => '病人',
|
||||
'Report_content' => '报告内容',
|
||||
'Create_time' => '生成时间'
|
||||
];
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Report_dataid' => '报告ID',
|
||||
'Name' => '姓名',
|
||||
'Phone' => '电话',
|
||||
'Content' => '随访内容',
|
||||
'Create_time' => '随访时间'
|
||||
];
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Username' => '所属医生',
|
||||
'Name' => '病人姓名',
|
||||
'Gender' => '病人性别',
|
||||
'Age' => '病人年龄',
|
||||
'Main_complaint' => '主诉',
|
||||
'Medical_history' => '病史',
|
||||
'Past_history' => '既往史',
|
||||
'Allergy_history' => '过敏史',
|
||||
'Family_history' => '家族史',
|
||||
'Personal_history' => '个人史',
|
||||
'Menstrual_marital_history' => '月经婚育史',
|
||||
'Diagnosis' => '诊断',
|
||||
'Treatment' => '医嘱'
|
||||
];
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'Id' => 'ID',
|
||||
'Doctor' => '所属医生',
|
||||
'Username' => '病人',
|
||||
'Report_content' => '报告内容',
|
||||
'Create_time' => '生成时间'
|
||||
];
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Guliangquestion extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'guliangquestion';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Hdrdepartment extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'hdrdepartment';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Hdrquestionnaireanswer extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'hdrquestionnaireanswer';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function hdrquestionnairequestion()
|
||||
{
|
||||
return $this->belongsTo('Hdrquestionnairequestion', 'hdrquestionnairequestion_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Hdrquestionnairequestion extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'hdrquestionnairequestion';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
'is_common_text',
|
||||
'is_only_boy_text',
|
||||
'is_only_girl_text',
|
||||
'type_text'
|
||||
];
|
||||
|
||||
|
||||
|
||||
public function getIsCommonList()
|
||||
{
|
||||
return ['yes' => __('Is_common yes'), 'no' => __('Is_common no')];
|
||||
}
|
||||
|
||||
public function getIsOnlyBoyList()
|
||||
{
|
||||
return ['yes' => __('Is_only_boy yes'), 'no' => __('Is_only_boy no')];
|
||||
}
|
||||
|
||||
public function getIsOnlyGirlList()
|
||||
{
|
||||
return ['yes' => __('Is_only_girl yes'), 'no' => __('Is_only_girl no')];
|
||||
}
|
||||
|
||||
public function getTypeList()
|
||||
{
|
||||
return ['one' => __('Type one'), 'more' => __('Type more')];
|
||||
}
|
||||
|
||||
|
||||
public function getIsCommonTextAttr($value, $data)
|
||||
{
|
||||
$value = $value ? $value : (isset($data['is_common']) ? $data['is_common'] : '');
|
||||
$list = $this->getIsCommonList();
|
||||
return isset($list[$value]) ? $list[$value] : '';
|
||||
}
|
||||
|
||||
|
||||
public function getIsOnlyBoyTextAttr($value, $data)
|
||||
{
|
||||
$value = $value ? $value : (isset($data['is_only_boy']) ? $data['is_only_boy'] : '');
|
||||
$list = $this->getIsOnlyBoyList();
|
||||
return isset($list[$value]) ? $list[$value] : '';
|
||||
}
|
||||
|
||||
|
||||
public function getIsOnlyGirlTextAttr($value, $data)
|
||||
{
|
||||
$value = $value ? $value : (isset($data['is_only_girl']) ? $data['is_only_girl'] : '');
|
||||
$list = $this->getIsOnlyGirlList();
|
||||
return isset($list[$value]) ? $list[$value] : '';
|
||||
}
|
||||
|
||||
|
||||
public function getTypeTextAttr($value, $data)
|
||||
{
|
||||
$value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
|
||||
$list = $this->getTypeList();
|
||||
return isset($list[$value]) ? $list[$value] : '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function hdrdepartment()
|
||||
{
|
||||
return $this->belongsTo('Hdrdepartment', 'hdrdepartment_id', 'id', [], 'LEFT')->setEagerlyType(0);
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Ttmedicalreport extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'tt_medical_report';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Tymedicalreport extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'ty_medical_report';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\tt;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Chathistory extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'tt_chathistory';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\tt;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Followup extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'tt_followup';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\tt;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Userbaseinfo extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'tt_userbaseinfo';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\ty;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Followup extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'ty_followup';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\model\ty;
|
||||
|
||||
use think\Model;
|
||||
|
||||
|
||||
class Userbaseinfo extends Model
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'ty_userbaseinfo';
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = false;
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = false;
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
// 追加属性
|
||||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Guliangquestion extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Hdrdepartment extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Hdrquestionnaireanswer extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Hdrquestionnairequestion extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Ttmedicalreport extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Tymedicalreport extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate\tt;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Chathistory extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate\tt;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Followup extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate\tt;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Userbaseinfo extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate\ty;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Followup extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\validate\ty;
|
||||
|
||||
use think\Validate;
|
||||
|
||||
class Userbaseinfo extends Validate
|
||||
{
|
||||
/**
|
||||
* 验证规则
|
||||
*/
|
||||
protected $rule = [
|
||||
];
|
||||
/**
|
||||
* 提示消息
|
||||
*/
|
||||
protected $message = [
|
||||
];
|
||||
/**
|
||||
* 验证场景
|
||||
*/
|
||||
protected $scene = [
|
||||
'add' => [],
|
||||
'edit' => [],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-answer" class="form-control" name="row[answer]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,21 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-answer" class="form-control" name="row[answer]" type="text" value="{$row.answer|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('guliangquestion/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('guliangquestion/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('guliangquestion/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('guliangquestion/edit')}"
|
||||
data-operate-del="{:$auth->check('guliangquestion/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,15 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,15 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('hdrdepartment/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('hdrdepartment/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('hdrdepartment/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('hdrdepartment/edit')}"
|
||||
data-operate-del="{:$auth->check('hdrdepartment/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,47 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Hdrquestionnairequestion_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-hdrquestionnairequestion_id"
|
||||
data-field="question"
|
||||
data-rule="required" min="0" data-source="hdrquestionnairequestion/index" class="form-control selectpage" name="row[hdrquestionnairequestion_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-answer" data-rule="required" class="form-control" name="row[answer]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Jumpid')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-jumpid" min="0" class="form-control" name="row[jumpid]" type="number">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Group')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-group" class="form-control" name="row[group]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Update_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[update_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,47 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Hdrquestionnairequestion_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-hdrquestionnairequestion_id"
|
||||
data-field="question"
|
||||
data-rule="required" min="0" data-source="hdrquestionnairequestion/index" class="form-control selectpage" name="row[hdrquestionnairequestion_id]" type="text" value="{$row.hdrquestionnairequestion_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-answer" data-rule="required" class="form-control" name="row[answer]" type="text" value="{$row.answer|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Jumpid')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-jumpid" min="0" class="form-control" name="row[jumpid]" type="number" value="{$row.jumpid|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Group')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-group" class="form-control" name="row[group]" type="text" value="{$row.group|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:$row.create_time?datetime($row.create_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Update_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[update_time]" type="text" value="{:$row.update_time?datetime($row.update_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('hdrquestionnaireanswer/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('hdrquestionnaireanswer/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('hdrquestionnaireanswer/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('hdrquestionnaireanswer/edit')}"
|
||||
data-operate-del="{:$auth->check('hdrquestionnaireanswer/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,87 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Hdrdepartment_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-hdrdepartment_id" data-rule="required" min="0" data-source="hdrdepartment/index" class="form-control selectpage" name="row[hdrdepartment_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-question" data-rule="required" class="form-control" name="row[question]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_common')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_common" data-rule="required" class="form-control selectpicker" name="row[is_common]">
|
||||
{foreach name="isCommonList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="yes"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_only_boy')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_only_boy" data-rule="required" class="form-control selectpicker" name="row[is_only_boy]">
|
||||
{foreach name="isOnlyBoyList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="no"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_only_girl')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_only_girl" data-rule="required" class="form-control selectpicker" name="row[is_only_girl]">
|
||||
{foreach name="isOnlyGirlList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="no"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-type" class="form-control selectpicker" name="row[type]">
|
||||
{foreach name="typeList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="more"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Group')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-group" class="form-control" name="row[group]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Update_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[update_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,87 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Hdrdepartment_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-hdrdepartment_id" data-rule="required" min="0" data-source="hdrdepartment/index" class="form-control selectpage" name="row[hdrdepartment_id]" type="text" value="{$row.hdrdepartment_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Question')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-question" data-rule="required" class="form-control" name="row[question]" type="text" value="{$row.question|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_common')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_common" data-rule="required" class="form-control selectpicker" name="row[is_common]">
|
||||
{foreach name="isCommonList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.is_common"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_only_boy')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_only_boy" data-rule="required" class="form-control selectpicker" name="row[is_only_boy]">
|
||||
{foreach name="isOnlyBoyList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.is_only_boy"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Is_only_girl')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-is_only_girl" data-rule="required" class="form-control selectpicker" name="row[is_only_girl]">
|
||||
{foreach name="isOnlyGirlList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.is_only_girl"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-type" class="form-control selectpicker" name="row[type]">
|
||||
{foreach name="typeList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.type"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Group')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-group" class="form-control" name="row[group]" type="text" value="{$row.group|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:$row.create_time?datetime($row.create_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Update_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[update_time]" type="text" value="{:$row.update_time?datetime($row.update_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('hdrquestionnairequestion/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('hdrquestionnairequestion/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('hdrquestionnairequestion/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('hdrquestionnairequestion/edit')}"
|
||||
data-operate-del="{:$auth->check('hdrquestionnairequestion/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,33 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-username" class="form-control" name="row[username]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Relation')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-relation" class="form-control" name="row[relation]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Chat_msg')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-chat_msg" class="form-control" name="row[chat_msg]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,33 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-username" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Relation')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-relation" class="form-control" name="row[relation]" type="text" value="{$row.relation|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Chat_msg')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-chat_msg" class="form-control" name="row[chat_msg]" type="text" value="{$row.chat_msg|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:$row.create_time?datetime($row.create_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('tt/chathistory/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('tt/chathistory/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('tt/chathistory/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('tt/chathistory/edit')}"
|
||||
data-operate-del="{:$auth->check('tt/chathistory/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,39 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<!-- <div class="form-group">-->
|
||||
<!-- <label class="control-label col-xs-12 col-sm-2">{:__('Report_dataid')}:</label>-->
|
||||
<!-- <div class="col-xs-12 col-sm-8">-->
|
||||
<!-- <input id="c-report_dataid" data-rule="required" class="form-control" name="row[report_dataid]" type="number">-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="{:isset($user)?$user['name']:''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-phone" class="form-control" name="row[phone]" type="text" value="{:isset($user['phone'])?$user['phone']:''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,33 +0,0 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-phone" class="form-control" name="row[phone]" type="text" value="{$row.phone|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:$row.create_time?datetime($row.create_time):''}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,29 +0,0 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('tt/followup/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('tt/followup/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('tt/followup/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('tt/followup/edit')}"
|
||||
data-operate-del="{:$auth->check('tt/followup/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,111 +0,0 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Doctor')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-doctor" data-rule="required" class="form-control" name="row[doctor]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-gender" class="form-control" name="row[gender]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Age')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-age" class="form-control" name="row[age]" type="number">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Edu')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-edu" class="form-control" name="row[edu]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Career_year')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-career_year" class="form-control" name="row[career_year]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Power')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-power" class="form-control" name="row[power]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Satisfaction')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-satisfaction" class="form-control" name="row[satisfaction]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Old_career_year')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-old_career_year" class="form-control" name="row[old_career_year]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Support')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-support" class="form-control" name="row[support]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Marriage')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-marriage" class="form-control" name="row[marriage]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Live')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-live" class="form-control" name="row[live]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Home')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-home" class="form-control" name="row[home]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-address" class="form-control" name="row[address]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-phone" class="form-control" name="row[phone]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Wechat_no')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-wechat_no" class="form-control" name="row[wechat_no]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-create_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user