request->get('sleep'); // sleep(Number($params['sleep'])); if($params == '1') { sleep(10); } halt($params); var_dump($params); $data = $params; // $data['a'] = $data['a'] + 1; // $data['b'] = $data['b'] * 2; // $data['c'] = $data['a'] + $data['b']; $model->save($data); $data = $model->where(true)->find(); var_dump("接口调用响应"); var_dump($data); $this->success('', $data); } public function generate(PatientServies $servies): void { ignore_user_abort(true); set_time_limit(0); $patientModel = new Patient(); $length = 100; $patients = $patientModel->where('status', 0)->limit($length)->select(); foreach($patients as $patient) { $this->generateByPatient($patient); } if(count($patients) === $length) { $this->generate($servies); } else { $this->success('', $patients); } } public function generateByPatient($patient) { $patientModel = new Patient(); $medicalInformationModel = new MedicalInformation(); $patients = $patientModel ->where('ID_CARDNUM', Gm::encrypt(Config::get('gm.key'), $patient['ID_CARDNUM'])) ->where('create_time', '<=', $patient['create_time']) ->select(); if(count($patients) === 0) { return; } $ORG = $medicalInformationModel->where('PATIENT_CODE', $patient['PATIENT_CODE'])->find(); $tmp = [ 'AA' => $ORG['DOCTORNAME'], 'AB' => $ORG['DOCTORCODE'], 'AC' => $patient['ID_CARDNUM'], 'AH' => $ORG['ORGNAME'], 'AI' => $ORG['ORGCODE'], 'AP' => $ORG['ENCOUNTER_DATE'], ]; foreach($patients as $_patient) { $this->generateHr($_patient, $tmp); } $patient['status'] = 1; $patient->save(); // AA 医生名称 // AB 医生编号 // AC 证件号码 // AD 就诊号 // AE 报告编号 // AF 检查机构名称 // AG 检查机构编号 // AH 互认(本)机构名称 // AI 互认(本)机构编号 // AJ 项目名称 // AK 互认项目编号 // AL 项目类型 // AM 互认状态 // AN 不互认原因编码 // AO 不互认原因 // AP 互认时间 } public function generateHr($patient, $_tmp) { $medicalInformationModel = new MedicalInformation(); $ORG = $medicalInformationModel->where('PATIENT_CODE', $patient['PATIENT_CODE'])->find(); $tmp = [ 'AA' => $_tmp['AA'], 'AB' => $_tmp['AB'], 'AC' => $_tmp['AC'], 'AD' => $ORG['SERIESNUM'], 'AF' => $ORG['ORGNAME'], 'AG' => $ORG['ORGCODE'], 'AH' => $_tmp['AH'], 'AI' => $_tmp['AI'], 'AP' => $_tmp['AP'], ]; $items = $this->getItems($patient['PATIENT_CODE']); $hrs = $this->getHrs($items, $tmp); $this->callHr($hrs); return $hrs; } public function callHr($hrs) { $data = ['A' => $hrs]; $token = $this->getToken(); $info = Gm::encrypt('zLxapoeqWYpoeqWY',(base64_encode(json_encode($data)))); // halt($info); $res = HttpUtils::post('http://127.0.0.1:8000/zskk/api/saveRecogResult', [ // $res = HttpUtils::post('http://36.140.148.147:8000/zskk/api/saveRecogResult', [ 'data' => $info ], [ 'Authorization: Bearer '.$token ]); // halt($res); } public function getToken() { $token = Cache::get('generate_hr_token'); if($token) { return $token; } $res = HttpUtils::post('http://127.0.0.1:8000/zskk/api/getToken', [ "data" => [ "clientid" => "12371600494581158K", "clientsecret" => "837ffb03803b72cd99a941770fb6b2be" ] ]); $res= json_decode($res, true); $data = $res['data']; $token = $data['token']; $expire = $data['expire']; Cache::set('generate_hr_token', $token, $expire - 60); return $token; } public function getHrs($items, $tmp) { $hrs = array(); foreach($items as $item) { $hr_status = $this->getRandHr(); $hrs[] = [ 'AA' => $tmp['AA'], 'AB' => $tmp['AB'], 'AC' => $tmp['AC'], 'AD' => $tmp['AD'], 'AE' => $item['AE'], 'AF' => $tmp['AF'], 'AG' => $tmp['AG'], 'AH' => $tmp['AH'], 'AI' => $tmp['AI'], 'AJ' => $item['AJ'], 'AK' => $item['AK'], 'AL' => $item['AL'], 'AM' => $hr_status['AM'], 'AN' => $hr_status['AN'], 'AO' => $hr_status['AO'], 'AP' => $tmp['AP'], ]; } return $hrs; } public function getRandHr() { // AM 互认状态 // AN 不互认原因编码 // AO 不互认原因 $AM = rand(0, 2); $BHRS = [ [ "code"=> "01", "name"=> "因病情变化,已有的检查检验结果难以反映患者当前实际病情的;" ], [ "code"=> "02", "name"=> "检查检验结果与疾病发展关联程度高、变化较大或较快的;" ], [ "code"=> "03", "name"=> "检查检验项目对于疾病诊疗意义重大的(如手术、输血等重大医疗措施前);" ], [ "code"=> "04", "name"=> "已有的检查检验结果与患者临床表现、疾病诊断不符,难以满足临床诊疗需求的;" ], [ "code"=> "05", "name"=> "对已有检查检验结果存疑的;" ], [ "code"=> "06", "name"=> "图像质量和方法不能满足诊断要求的医学影像学检查;" ], [ "code"=> "07", "name"=> "患者处于急诊、急救等紧急状态下的;" ], [ "code"=> "08", "name"=> "患者或其家属要求进一步复查的;" ], [ "code"=> "09", "name"=> "涉及司法、伤残及病退等鉴定的;" ], [ "code"=> "10", "name"=> "其他符合诊疗需要,确需复查的情形;" ], [ "code"=> "11", "name"=> "系统数据异常或错误。" ] ]; $AN = ''; $AO = ''; if($AM === 2) { $BHR = $BHRS[rand(0, count($BHRS) - 1)]; $AN = $BHR['code']; $AO = $BHR['name']; } return [ 'AM' => $AM, 'AN' => $AN, 'AO' => $AO, ]; } public function getItems($PATIENT_CODE) { $examModel = new ExamReport(); $items = array(); $exams = $examModel->where('PATIENT_CODE', $PATIENT_CODE)->where('HR_ITEMNAME_CODE', '<>', null)->select(); foreach($exams as $exam) { $items[] = [ 'AE' => $exam['REPORTID'], 'AJ' => $exam['HR_ITEMNAME'], 'AK' => $exam['HR_ITEMNAME_CODE'], 'AL' => '1', ]; } $inspectModel = new InspectReport(); $inspects = $inspectModel->where('PATIENT_CODE', $PATIENT_CODE)->select(); $INSPECT_REPORT_CODE = []; foreach($inspects as $inspect) { if($inspect['LAB_HR_ITEMNAME_CODE']) { $items[] = [ 'AE' => $inspect['REPORTID'], 'AJ' => $inspect['LAB_HR_ITEMNAME'], 'AK' => $inspect['LAB_HR_ITEMNAME_CODE'], 'AL' => '2', ]; } else { $INSPECT_REPORT_CODE[] = $inspect['INSPECT_REPORT_CODE']; } } $labModel = new LabData(); if(count($INSPECT_REPORT_CODE) > 0) { $labs = $labModel->where('INSPECT_REPORT_CODE', 'in' , $INSPECT_REPORT_CODE)->select(); foreach($labs as $lab) { if($lab['LAB_HR_ITEMDETAILNAME_CODE']) { $items[] = [ 'AE' => $lab['REPORTID'], 'AJ' => $lab['LAB_HR_ITEMDETAILNAME'], 'AK' => $lab['LAB_HR_ITEMDETAILNAME_CODE'], 'AL' => '2', ]; } } } return $items; } }