123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- namespace app\inter\controller;
- use think\Controller;
- use think\Db;
- use think\Session;
- use app\common\library\ResultTools;
- use think\Log;
- use think\Cache;
- class Registerlist extends Base
- {
- /**
- * 预约登记列表
- *
- * @ApiTitle (预约登记列表)
- * @ApiSummary (预约登记列表)
- * @ApiSector (远程诊断)
- * @ApiMethod (POST)
- * @ApiRoute (/inter/registerlist/index)
- * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key")
- * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数")
- * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s")
- * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串")
- * @ApiParams (name="param", type="string", required=true, description="参数json字符串")
- * @ApiParams (name="page", type="string", required=true, description="当前页")
- * @ApiParams (name="num", type="string", required=true, description="每页显示条数")
- * @ApiParams (name="param[patient_num]", type="string", sample="", description="预约登记exams表id值<选填>")
- * @ApiParams (name="param[accession_num]", type="string", sample="", description="检查号<选填>")
- * @ApiParams (name="param[name]", type="string", sample="", description="患者姓名<选填>")
- * @ApiParams (name="param[exam_datetime]", type="string", sample="", description="检查时间<选填>")
- * @ApiParams (name="param[exam_status]", type="string", sample="", description="检查状态<选填>")
- * @ApiReturnParams (name="status", type="integer", required=true, sample="0", description="返回码 fail 失败 ok成功"))
- * @ApiReturnParams (name="code", type="integer", required=true, sample="0", description="返回状态码")
- * @ApiReturnParams (name="info", type="string", required=true, sample="返回成功", description="返回信息")
- * @ApiReturnParams (name="sessionid", type="object", sample="{}", description="缓存的数据key")
- * @ApiReturnParams (name="count", type="object", sample="{}", description="总条数")
- * @ApiReturn (data="
- {
- 'status': ok,
- 'code': '0000',
- 'sessionid': 'a17z7a7a8f9g9rh9d89jio',
- 'info' : ''
- 'count' : '110'
- }
- *")
- **/
- public function index(){
- try{
- log::record('------------接收的值--------------------');
- log::record($_REQUEST);
- log::record('--------------------------------');
- $sessionid = $_REQUEST['sessionid'];
- $doctor = Cache::get($sessionid);
- if(!$doctor){
- return ResultTools::faile('1008', '您还未登录');
- }
- log::record($doctor);
- log::record('-------------doctor-------------------');
- $where = '';
- $page = $_REQUEST['page'];
- $num = $_REQUEST['num'];
- $fnum = ($page-1)*$num;
- $limit = " limit ".$fnum.",".$num;
- if(isset($_REQUEST['param'])){
- $param = $_REQUEST['param'];
- if(!empty($param['exam_status'])){
- $where = ' and e.exam_status = '.$param['exam_status'];
- }
- /*foreach ($search as $k => $v) {
- switch($k){
- case 'name':
- if(empty($v)){
- break;
- }
- $where .= ' and p.name like \''.$v.'%\'';
- break;
- case 'exam_datetime':
- if(empty($v)){
- break;
- }
- $data1 = str_replace('-', '',$v[0]);
- $data2 = str_replace('-', '',$v[1]);
- if($data1 == $data2){
- $where .= " and e.exam_datetime ='$data2'";
- }else{
- $where .= " and e.exam_datetime between '$data1' and '$data2'";
- }
- break;
- case 'exam_class' :
- if(empty($v)){
- break;
- }
- if(is_array($v)){
- $ex = implode('\',\'',$v);
- }else{
- $ex = $v;
- }
- $where .= " and e.exam_class in ('".$ex."')";
- break;
- default:
- if(empty($v)){
- break;
- }
- $where .= ' and e.'.$k.'=\''.$v.'\'';
- break;
- }
- }*/
- }
- $sql1 = "SELECT e.id,e.is_remote,e.study_id,e.patient_num,e.institution_id,e.exam_datetime,e.exam_class,e.exam_project,e.exam_status,p.name,p.sex,p.age from exams as e ,patient_infos as p where e.institution_id='".$doctor['institution_id']."' and p.id=e.patient_id";
- //
- if(isset($param['search']) && !empty($param['search'])){
- // 姓名 病历号 检查号
- $search1 = ' and p.name like \'%'.$param['search'].'%\' ';
- $search2 = ' and e.patient_num=\''.$param['search'].'\' ';
- $search3 = ' and e.accession_num=\''.$param['search'].'\' ';
- $sql = ($sql1.$search1). ' union '. ($sql1.$search2) .' union '. ($sql1.$search3).$limit;
- }else{
- $sql = $sql1.$where." order by e.createdAt desc,e.urgent desc ".$limit;
- }
- log::record('预约登记的sql是--'.$sql);
- $list = DB::query($sql);
- foreach ($list as $k => $v) {
- $report_info = DB::table('report')->where('exam_id',$v['id'])->field(['report_datetime','report_doctor_id'])->find();
- $list[$k]['report_datetime'] = $report_info['report_datetime'];
- $project = DB::table('exam_project')->where('id',$v['exam_project'])->field('name')->find();
- $list[$k]['exam_project_name'] = $project['name'];
- $dinfo = DB::table('doctors')->where('id',$report_info['report_doctor_id'])->field('realname,institution_id')->find();
- $list[$k]['report_doctor'] = $dinfo['realname'];
- $institution_name = DB::table('institution')->where('id',$dinfo['institution_id'])->cache(300)->field('name')->find();
- $list[$k]['institution_name'] = $institution_name['name'];
- }
- $sql1 = "SELECT count(1) from exams as e ,patient_infos as p where e.institution_id='".$doctor['institution_id']."' and p.id=e.patient_id".$where;
- $count = DB::query($sql1);
- return json_encode(['status'=>'ok','code'=>'0000','info'=>$list,'count'=>$count[0]['count(1)'],'sessionid'=>$sessionid]);
- }catch(\Exception $e){
- return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
- }
- }
- }
|