first commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2023/1/21} {16:22}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\common\model\TabConf;
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use think\Request;
|
||||
use wanghua\general_utility_tools_php\framework\BaseController;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class BaseCommonController extends BaseController
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:检查路径维护状态
|
||||
*
|
||||
* “===”完全匹配,不能使用like
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
protected function checkMaintain(){
|
||||
|
||||
$configs = Db::table(TabConf::$fa_sys_maintain_config)
|
||||
->where('status','1')
|
||||
->cache()
|
||||
->select();
|
||||
|
||||
//模块
|
||||
$strmodule = request()->module();
|
||||
foreach ($configs as $config){
|
||||
if($strmodule == $config['url']){
|
||||
//模块维护中
|
||||
return ['is_maintain'=>true,'msg'=>$config['msg'],'openid'=>$config['openid']];
|
||||
}
|
||||
}
|
||||
|
||||
//模块/控制器
|
||||
$strcontroller = strtolower(request()->module().'/'.request()->controller());
|
||||
foreach ($configs as $config){
|
||||
if($strcontroller == $config['url']){
|
||||
//模块维护中
|
||||
return ['is_maintain'=>true,'msg'=>$config['msg'],'openid'=>$config['openid']];
|
||||
}
|
||||
}
|
||||
|
||||
//模块/控制器/方法
|
||||
$straction = strtolower(request()->module().'/'.request()->controller().'/'.request()->action());
|
||||
foreach ($configs as $config){
|
||||
if($straction == $config['url']){
|
||||
//模块维护中
|
||||
return ['is_maintain'=>true,'msg'=>$config['msg'],'openid'=>$config['openid']];
|
||||
}
|
||||
}
|
||||
|
||||
//未维护
|
||||
return ['is_maintain'=>false,'msg'=>'服务运行中'];
|
||||
}
|
||||
}
|
||||
34
digital_doctor/application/api/controller/BaseHttpApi.php
Normal file
34
digital_doctor/application/api/controller/BaseHttpApi.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/4/22} {11:52}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\index\controller\BaseCommonController;
|
||||
use think\App;
|
||||
use think\Controller;
|
||||
use think\Exception;
|
||||
use wanghua\general_utility_tools_php\tool\Ip;
|
||||
|
||||
class BaseHttpApi extends BaseCommonController
|
||||
{
|
||||
/**
|
||||
http请求专用
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
//ip校验
|
||||
//$ip = request()->ip();
|
||||
//$res = Ip::ip_is_china($ip,false);
|
||||
//if(!$res){
|
||||
// throw new Exception('ip不合法');
|
||||
//}
|
||||
}
|
||||
}
|
||||
34
digital_doctor/application/api/controller/BaseWssApi.php
Normal file
34
digital_doctor/application/api/controller/BaseWssApi.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/4/5} {19:55}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
class BaseWssApi extends BaseCommonController
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:socket专用json格式
|
||||
*
|
||||
* author:wh
|
||||
* @param $action
|
||||
* @param string $msg
|
||||
* @param array $items
|
||||
* @param string $method
|
||||
* @return false|string
|
||||
*/
|
||||
static function json_wss($action,$msg='', $items=[], $method='response'){
|
||||
$json = [
|
||||
'action'=>$action,
|
||||
'method'=>$method,
|
||||
'msg'=>$msg,
|
||||
'items'=>$items
|
||||
];
|
||||
return json_encode($json, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
}
|
||||
49
digital_doctor/application/api/controller/Common.php
Normal file
49
digital_doctor/application/api/controller/Common.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/8/13} {17:27}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use wanghua\general_utility_tools_php\Mmodel;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
class Common extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:唯一id
|
||||
* 参数:无
|
||||
*
|
||||
* api/Common/getUniqueId
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getUniqueId(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$uniqueid = md5(Tools::getMillisecond());
|
||||
return Tools::set_ok('ok',['uniqueid'=>$uniqueid]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* desc:获取对话token,在听译对话开始之前调用,用于隔离聊天记录
|
||||
* 参数:无
|
||||
*
|
||||
* api/Common/getSayToken
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function getSayToken(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$uniqueid = md5(Tools::getMillisecond());
|
||||
return Tools::set_ok('ok',['uniqueid'=>$uniqueid]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
<?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));
|
||||
});
|
||||
}
|
||||
}
|
||||
253
digital_doctor/application/api/controller/Guliangqarecord.php
Normal file
253
digital_doctor/application/api/controller/Guliangqarecord.php
Normal file
@@ -0,0 +1,253 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
128
digital_doctor/application/api/controller/Gulianguser.php
Normal file
128
digital_doctor/application/api/controller/Gulianguser.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
66
digital_doctor/application/api/controller/Hdradmin.php
Normal file
66
digital_doctor/application/api/controller/Hdradmin.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?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]);
|
||||
});
|
||||
}
|
||||
}
|
||||
59
digital_doctor/application/api/controller/Hdrdepartment.php
Normal file
59
digital_doctor/application/api/controller/Hdrdepartment.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
291
digital_doctor/application/api/controller/Hdrdoctorusers.php
Normal file
291
digital_doctor/application/api/controller/Hdrdoctorusers.php
Normal file
@@ -0,0 +1,291 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
328
digital_doctor/application/api/controller/Hdrfollowup.php
Normal file
328
digital_doctor/application/api/controller/Hdrfollowup.php
Normal file
@@ -0,0 +1,328 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,452 @@
|
||||
<?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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
194
digital_doctor/application/api/controller/Hdrregister.php
Normal file
194
digital_doctor/application/api/controller/Hdrregister.php
Normal file
@@ -0,0 +1,194 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
}
|
||||
727
digital_doctor/application/api/controller/Hdruserbaseinfo.php
Normal file
727
digital_doctor/application/api/controller/Hdruserbaseinfo.php
Normal file
@@ -0,0 +1,727 @@
|
||||
<?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']]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
731
digital_doctor/application/api/controller/Hdruserinfotingyi.php
Normal file
731
digital_doctor/application/api/controller/Hdruserinfotingyi.php
Normal file
@@ -0,0 +1,731 @@
|
||||
<?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']]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
40
digital_doctor/application/api/controller/HealthInsights.php
Normal file
40
digital_doctor/application/api/controller/HealthInsights.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?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();
|
||||
//});
|
||||
}
|
||||
}
|
||||
413
digital_doctor/application/api/controller/Reporth5.php
Normal file
413
digital_doctor/application/api/controller/Reporth5.php
Normal file
@@ -0,0 +1,413 @@
|
||||
<?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();
|
||||
});
|
||||
}
|
||||
}
|
||||
462
digital_doctor/application/api/controller/Reporttt.php
Normal file
462
digital_doctor/application/api/controller/Reporttt.php
Normal file
@@ -0,0 +1,462 @@
|
||||
<?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();
|
||||
// });
|
||||
// }
|
||||
}
|
||||
442
digital_doctor/application/api/controller/Reportty.php
Normal file
442
digital_doctor/application/api/controller/Reportty.php
Normal file
@@ -0,0 +1,442 @@
|
||||
<?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();
|
||||
});
|
||||
}
|
||||
}
|
||||
88
digital_doctor/application/api/controller/Service.php
Normal file
88
digital_doctor/application/api/controller/Service.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?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(){
|
||||
|
||||
}
|
||||
}
|
||||
80
digital_doctor/application/api/controller/Sms.php
Normal file
80
digital_doctor/application/api/controller/Sms.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/8/13} {11:22}
|
||||
*/
|
||||
|
||||
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\sms\AliSms;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
use wanghua\general_utility_tools_php\Validate;
|
||||
|
||||
class Sms extends BaseHttpApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:发送短信验证码
|
||||
* 参数:
|
||||
* mobile 手机号
|
||||
* event 发送场景
|
||||
*
|
||||
* api/sms/send
|
||||
* author:wh
|
||||
*/
|
||||
function send(){
|
||||
return Mmodel::catchJson(function (){
|
||||
$mobile = input('mobile');
|
||||
if(empty($mobile)){
|
||||
return Tools::set_fail('手机号错误');
|
||||
}
|
||||
if(!Validate::is_mobile($mobile)){
|
||||
return Tools::set_fail('手机号错误');
|
||||
}
|
||||
//发送间隔不能低于60秒
|
||||
$sms_record = Db::table(TabConf::$fa_sms)
|
||||
->where('create_time','>',date('Y-m-d H:i:s',time()-60))
|
||||
->where('mobile',$mobile)
|
||||
->order('id desc')
|
||||
->find();
|
||||
if($sms_record){
|
||||
return Tools::set_fail('发送太频繁,请稍后再试');
|
||||
}
|
||||
|
||||
|
||||
//查询记录,10分钟内超过10次禁止发送
|
||||
$count = Db::table(TabConf::$fa_sms)
|
||||
->where('create_time','>',date('Y-m-d H:i:s',time()-600))
|
||||
->where('mobile',$mobile)
|
||||
->count();
|
||||
if($count>=10){
|
||||
return Tools::set_fail('发送次数过多,请稍后再试');
|
||||
}
|
||||
$config = config('sms_config');
|
||||
$code = Tools::rand_str(6,3);
|
||||
Tools::log_to_write_txt(['发送短信,开始','mobile'=>$mobile,'code'=>$code,'$config'=>$config]);
|
||||
$res = (new AliSms($config,$config['sms_sign_name'],$config['sms_template_code']))
|
||||
->send($mobile,json_encode(['code'=>$code]));
|
||||
Tools::log_to_write_txt(['发送短信,结束',$res]);
|
||||
|
||||
|
||||
//写入发送记录
|
||||
$sms_data = [
|
||||
'event'=>input('event'),
|
||||
'mobile'=>$mobile,
|
||||
'code'=>$code,
|
||||
'times'=>0,
|
||||
'ip'=>request()->ip(),
|
||||
];
|
||||
Db::table(TabConf::$fa_sms)->insert($sms_data);
|
||||
|
||||
return Tools::set_ok('操作成功',$res);
|
||||
});
|
||||
}
|
||||
}
|
||||
223
digital_doctor/application/api/controller/Tingyiueassistant.php
Normal file
223
digital_doctor/application/api/controller/Tingyiueassistant.php
Normal file
@@ -0,0 +1,223 @@
|
||||
<?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');
|
||||
});
|
||||
}
|
||||
}
|
||||
101
digital_doctor/application/api/controller/Ttchathistory.php
Normal file
101
digital_doctor/application/api/controller/Ttchathistory.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
664
digital_doctor/application/api/controller/Ttmedicalreport.php
Normal file
664
digital_doctor/application/api/controller/Ttmedicalreport.php
Normal file
@@ -0,0 +1,664 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
85
digital_doctor/application/api/controller/Ttuserbaseinfo.php
Normal file
85
digital_doctor/application/api/controller/Ttuserbaseinfo.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
25
digital_doctor/application/api/controller/Tychat.php
Normal file
25
digital_doctor/application/api/controller/Tychat.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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 (){
|
||||
});
|
||||
}
|
||||
}
|
||||
84
digital_doctor/application/api/controller/Tychathistory.php
Normal file
84
digital_doctor/application/api/controller/Tychathistory.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
67
digital_doctor/application/api/controller/Tyfollowup.php
Normal file
67
digital_doctor/application/api/controller/Tyfollowup.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?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,'操作异常',[]));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
414
digital_doctor/application/api/controller/Tymedicalreport.php
Normal file
414
digital_doctor/application/api/controller/Tymedicalreport.php
Normal file
@@ -0,0 +1,414 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
|
||||
253
digital_doctor/application/api/controller/Usersh5.php
Normal file
253
digital_doctor/application/api/controller/Usersh5.php
Normal file
@@ -0,0 +1,253 @@
|
||||
<?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();
|
||||
// });
|
||||
//}
|
||||
|
||||
}
|
||||
278
digital_doctor/application/api/controller/Userstt.php
Normal file
278
digital_doctor/application/api/controller/Userstt.php
Normal file
@@ -0,0 +1,278 @@
|
||||
<?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);
|
||||
});
|
||||
}
|
||||
}
|
||||
174
digital_doctor/application/api/controller/Usersty.php
Normal file
174
digital_doctor/application/api/controller/Usersty.php
Normal file
@@ -0,0 +1,174 @@
|
||||
<?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]);
|
||||
});
|
||||
}
|
||||
}
|
||||
98
digital_doctor/application/api/controller/Wsspush.php
Normal file
98
digital_doctor/application/api/controller/Wsspush.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2024/4/5} {19:51}
|
||||
*/
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use app\api\logic\StatisticsLogic;
|
||||
use app\common\model\TabConf;
|
||||
use GatewayWorker\Lib\Gateway;
|
||||
use think\Db;
|
||||
use wanghua\general_utility_tools_php\Date;
|
||||
use wanghua\general_utility_tools_php\tool\Tools;
|
||||
|
||||
|
||||
/**
|
||||
* socket 主动推送
|
||||
*
|
||||
* Class Wsspush
|
||||
* @package app\api\controller
|
||||
*/
|
||||
class Wsspush extends BaseWssApi
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:向指定客户端发送信息
|
||||
*
|
||||
* api/wsspush/index/socketTaskId/xxxx
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$socketTaskId = input('socketTaskId');
|
||||
Gateway::sendToClient($socketTaskId,json_encode(Tools::set_ok('向指定客户端发送信息。',$socketTaskId),JSON_UNESCAPED_UNICODE));
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:向所有客户端发消息
|
||||
* api/wsspush/pushToAll
|
||||
* author:wh
|
||||
* @throws \Exception
|
||||
*/
|
||||
function pushToAll(){
|
||||
//$json = Tools::wss_json_ok('Reportty/createReport','ok',['flow_code'=>'create_report_end']);
|
||||
//Gateway::sendToAll($json);
|
||||
}
|
||||
public function hello($name = 'ThinkPHP5')
|
||||
{
|
||||
return 'hello,' . $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:向客户端推送消息
|
||||
*
|
||||
* 接收一维数组表单
|
||||
*
|
||||
* /api/wsspush/pushMessageToClient
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
function pushMessageToClient(){
|
||||
$socketTaskId = input('clientid');
|
||||
if(empty($socketTaskId)){
|
||||
return json(Tools::set_fail('客户端id必须'));
|
||||
}
|
||||
|
||||
$action = input('action');
|
||||
if(empty($action)){
|
||||
return json(Tools::set_fail('ACTION MUST'));
|
||||
}
|
||||
|
||||
$msg = input('msg');
|
||||
if(empty($msg)){
|
||||
return json(Tools::set_fail('MSG MUST'));
|
||||
}
|
||||
$all_params = [];
|
||||
foreach (input() as $key=>$item){
|
||||
if(in_array($key, ['clientid','action','msg'])){
|
||||
continue;
|
||||
}
|
||||
$all_params[$key] = $item;
|
||||
}
|
||||
|
||||
//json_encode(Tools::set_ok('向指定客户端发送信息。',$socketTaskId),JSON_UNESCAPED_UNICODE);
|
||||
$json = self::json_wss($action,$msg,$all_params);
|
||||
|
||||
Gateway::sendToClient($socketTaskId, $json);
|
||||
return json(Tools::set_ok('向指定客户端发送信息成功。'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user