limit(205) -> field('content',true) -> select(); for($i = 0; $i < count($recContent); $i++){ $mapPat['pat_visit_info_id'] = array('eq',$recContent[$i]['pat_visit_info_id']); $name = db('pat_visit_info') -> where($mapPat) -> value('pat_name'); $patId = db('pat_visit_info') -> where($mapPat) -> value('pat_id'); $pageId = db('pat_visit_info') -> where($mapPat) -> value('page_id'); $recContent[$i]['name'] = mb_substr($name, 0, 1, 'UTF-8') . '**'; $recContent[$i]['pat_id'] = $patId; $recContent[$i]['page_id'] = $pageId; } $user = request() -> param('user'); //构造请求数据 return view('index', [ 'recContent' => $recContent, 'device' => $device, 'year' => $year, 'commonURL' => $commonURL, 'now' => $now, 'commonOpenURL' => $commonOpenURL, 'user' => $user, ]); } //整合最终的参数并发起请求 public function wsRequest(){ $user = request() -> param('user'); $patId = request() -> param('patId'); $pageId = request() -> param('pageId'); $doc = request() -> param('doc'); //查询病历唯一标识 $mapPat['pat_id'] = array('eq',$patId); $mapPat['page_id'] = array('eq',$pageId); $patVisitId = db('pat_visit_info') -> where($mapPat) -> value('pat_visit_info_id'); $name = db('pat_visit_info') -> where($mapPat) -> value('pat_name'); //查询对应的病历原始文本 $mapRec['pat_visit_info_id'] = array('eq',$patVisitId); $mapRec['type_name'] = array('eq',$doc); $recContent = db('medical_rec') -> where($mapRec) -> find(); //自然文本质控 $recContentInfo = '科室名称:'.$recContent['dept_name'].'。 诊疗文书原文:'.$recContent['content']; //json文本指控 $mapRecContent['mr_id'] = array('eq',$recContent['mr_id']); $recContentJson = db('medical_rec_content') -> where($mapRecContent) -> select(); foreach ($recContentJson as &$subarray) { // 移除 'id' 和 'mr_id' 键 unset($subarray['id'], $subarray['mr_id']); } // 销毁引用以避免潜在问题 unset($subarray); $dept['mr_title'] = '部门'; $dept['mr_text'] = $recContent['dept_name']; $recContentJson[count($recContentJson)] = $dept; $recContentJson = json_encode($recContentJson,JSON_UNESCAPED_UNICODE); //最终输出 $recContentFinal = [ [ 'role' => 'user', 'content' => $recContentJson ], ]; //组装请求的数据为base64格式 $data['model'] = 'emoon-E2-7B'; $data['network'] = '1'; $data['input'] = $recContentFinal; $data = json_encode($data,JSON_UNESCAPED_UNICODE); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => 'iRMFdLrIrwV7xiep', // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = 'Vt8kKsWQqQhkTvhsdwIPYmcaZfPmCJp1'; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 $urlOpen = commonOpenURL().'/Apis/getToken'; $encryption['information'] = $modifiedData; $token = curlPost($urlOpen,$encryption); $token = stdClassObjToArray(json_decode($token)); //构建最终的请求内容 $dataRequest['user'] = $user; $dataRequest['name'] = mb_substr($name, 0, 1, 'UTF-8') . '**'; $dataRequest['doc'] = $doc; $dataRequest['token'] = $token['token']; $url = commonURL().'/Send/websocket'; curlPost($url,$dataRequest); return '已将该「病历原文」发送至「医梦AI客户端」'; } //中联web AI质控接口地址 public function httpRequest(){ //获取输入的内容 $json = file_get_contents('php://input'); $data = json_decode($json, true); //{"messages":[ {"role":"user","content":"请问你是什么模型?"}]} $message = $data['messages'] ?? null; //组装请求的数据为base64格式 $data['model'] = 'deepseek-R1-8B'; $data['network'] = '2'; $data['input'] = $message; $data = json_encode($data,JSON_UNESCAPED_UNICODE); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => 'sYq9QbK6E1FI2Hi9', // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = 'l5zI6lwxHLcCQ8LfQRwpvLLNv2WjMbj2'; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 $urlOpen = commonOpenURL().'/Apis/getToken'; $encryption['information'] = $modifiedData; $token = curlPost($urlOpen,$encryption); $token = stdClassObjToArray(json_decode($token)); //构建最终的请求内容 $dataRequest['token'] = $token['token']; $url = commonOpenURLHTTP(); $result = curlPost($url,$dataRequest); return $result; } //创建实时质控页面 public function qualityNow(){ //判断用户设备是否是移动端 if(isMobile() == true){ $device = 'phone'; } else{ $device = 'pc'; } //获取当前年份 $year = date('Y',time()); //获取公共路径 $commonURL = commonURL(); //获取公共路径 $commonOpenURL = commonOpenURL(); //获取当前时间 $now = date('Y-m-d H:i:s',time()); $user = request() -> param('user'); //构造请求数据 return view('qualityNow', [ 'device' => $device, 'year' => $year, 'commonURL' => $commonURL, 'now' => $now, 'commonOpenURL' => $commonOpenURL, 'user' => $user, ]); } //创建实时获取病历列表 public function getDoc(){ //$data['patId'] = '1220319'; //$data['pageId'] = '1'; // $data['patId'] = request() -> param('patId'); // $data['pageId'] = request() -> param('pageId'); $url = commonDataURL().'/His/getDoc'; $result = curlPost($url,$data); return json($result); } //创建实时获取病历内容 public function getRec(){ //$data['mrId'] = '2d26e278-7028-4103-8ba8-1b4625473d35'; $dataMrId['mrId'] = request() -> param('mrId'); $urlMrId = commonDataURL().'/His/getRec'; $result = curlPost($urlMrId,$dataMrId); //请求websocket客户端发送数据 $recContentFinal = [ [ 'role' => 'user', 'content' => $result ], ]; //组装请求的数据为base64格式 $data['model'] = 'emoon-E2-7B'; $data['network'] = '1'; $data['input'] = $recContentFinal; $data = json_encode($data,JSON_UNESCAPED_UNICODE); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => 'iRMFdLrIrwV7xiep', // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = 'Vt8kKsWQqQhkTvhsdwIPYmcaZfPmCJp1'; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 $urlOpen = commonOpenURL().'/Apis/getToken'; $encryption['information'] = $modifiedData; $token = curlPost($urlOpen,$encryption); $token = stdClassObjToArray(json_decode($token)); //构建最终的请求内容 $user = request() -> param('user'); $typeName = request() -> param('typeName'); $name = substr($typeName,0,strpos($typeName, '-')); $doc = substr($typeName,strripos($typeName,"-")+1); $dataRequest['user'] = $user; $dataRequest['name'] = $name; $dataRequest['doc'] = $doc; $dataRequest['token'] = $token['token']; $url = commonURL().'/Send/websocket'; curlPost($url,$dataRequest); return '已将该「病历原文」发送至「医梦AI客户端」'; } //his传入参数触发客户端质控 public function hisOpen(){ $user = request() -> param('user'); $patId = request() -> param('patId'); $pageId = request() -> param('pageId'); //获取当前用户的病历列表 $dataDoc['patId'] = $patId; $dataDoc['pageId'] = $pageId; $urlGetDoc = commonDataURL().'/His/getDoc'; $docs = curlPost($urlGetDoc,$dataDoc); $docsArray = json_decode($docs); $docsArray = stdClassObjToArray($docsArray); $docsJson = json_encode($docsArray,JSON_UNESCAPED_UNICODE); //将令牌存储 $tokenData['info'] = $docsJson; $tokenData['time'] = time(); $docsJsonCut = substr($docsJson, 0, 20); $docsCode = md5($docsJsonCut.time().rand(10000,99999)); $tokenData['token'] = $docsCode; $urlGetIntel = commonDataURL().'/His/getintel'; $dataIntel = curlPost($urlGetIntel,$dataDoc); $dataIntel = json_decode($dataIntel); $dataIntel = stdClassObjToArray($dataIntel); $dataIntel = json_encode($dataIntel,JSON_UNESCAPED_UNICODE); $tokenData['intel'] = $dataIntel; db('token') -> insert($tokenData); $mapToken['token'] = array('eq',$docsCode); $docsJson = db('token') -> where($mapToken) -> value('info'); //跳转chatbox $url = commonURL().'/Index/chatBox?user='.$user.'&docsCode='.$docsCode; $this -> redirect($url); } //接受hisOpen发送过来的病历列表并推送 public function hisOpenPush(){ // $docsJson = '[{"TYPE_NAME":"彭**-入院记录","MR_ID":"dbc9a263-7e41-43e3-be37-637a8ebac213"},{"TYPE_NAME":"彭**-首次病程记录","MR_ID":"3f2ea6c4-6d58-46b3-89e0-92b0266a0fd0"},{"TYPE_NAME":"彭**-中医特色专科病程记录","MR_ID":"c22d3c52-c538-455d-84ef-0c19ebc50e02"},{"TYPE_NAME":"彭**-会诊记录","MR_ID":"b9f795fa-dff5-4bca-81c5-86d67faa87ef"},{"TYPE_NAME":"彭**-主治医师首次查房记录","MR_ID":"5b013e76-ed60-4fd5-a6b2-6cec487fe05c"},{"TYPE_NAME":"彭**-科主任或具有副主任医师以上专业技术职务资格医师查房记录","MR_ID":"40358471-16b9-4a9e-ba93-344a562022bd"},{"TYPE_NAME":"彭**-日常病程记录","MR_ID":"0d14032c-8f00-4c61-b0f8-c4a6ebd0cf4c"},{"TYPE_NAME":"彭**-术前小结","MR_ID":"d52e01b1-48a5-421e-bbb6-d0a61c6079af"},{"TYPE_NAME":"彭**-术前讨论记录","MR_ID":"fafa4249-f0d5-4354-9907-f75c5195ceb1"},{"TYPE_NAME":"彭**-第一术者术前查房记录","MR_ID":"5d94412a-5622-4118-a948-6de7029267ca"},{"TYPE_NAME":"彭**-出院证明书","MR_ID":"58711e0c-23db-4f2f-9c3c-0f36b4f1e3bf"},{"TYPE_NAME":"彭**-术前讨论记录","MR_ID":"b9ea75de-564a-4c03-9946-e364dc7dbc70"},{"TYPE_NAME":"彭**-术后首次病程记录","MR_ID":"f3299242-8c1e-4f40-8283-51698ab6ab37"},{"TYPE_NAME":"彭**-主治医师日常查房记录","MR_ID":"9b3dfe6d-ce4b-43b5-8514-7ad0c5ba2a88"},{"TYPE_NAME":"彭**-出院记录","MR_ID":"4f434252-d7bd-40e4-ac51-be0c86e73dcd"},{"TYPE_NAME":"彭**-修正诊断","MR_ID":"1d5dbeca-e572-4963-81d2-8d1dd5a65a30"}]'; // $docsJson = '[{"TYPE_NAME":"尹**-入院记录","MR_ID":"99ae40eb-c107-4606-bd13-7ed8bf53e12f"},{"TYPE_NAME":"尹**-首次病程记录","MR_ID":"e4502986-1a81-4216-9e9d-1869d0f22f88"},{"TYPE_NAME":"尹**-主治医师首次查房记录","MR_ID":"ba3297c7-84d8-4514-8c25-29ce47cd089f"},{"TYPE_NAME":"尹**-科主任或具有副主任医师以上专业技术职务资格医师查房记录","MR_ID":"04329e53-7cbb-4732-b825-0ab491400835"},{"TYPE_NAME":"尹**-日常病程记录","MR_ID":"87e48c13-446a-405d-91c4-36a8cfc2d4d1"},{"TYPE_NAME":"尹**-中医特色专科病程记录","MR_ID":"c3b35ac8-1993-43c4-a807-c0278b5e5579"},{"TYPE_NAME":"尹**-补充诊断","MR_ID":"ff39882c-3fff-43e0-83dd-fba2c21e04a3"},{"TYPE_NAME":"尹**-修正诊断","MR_ID":"13623317-a32c-445c-a08e-fd54dde88c3a"},{"TYPE_NAME":"尹**-补充诊断","MR_ID":"2d79692a-b4b3-4173-9d6a-9bccef7d7fb6"},{"TYPE_NAME":"尹**-主治医师日常查房记录","MR_ID":"a0a5535a-0d43-48e9-a5a6-9b651165028f"},{"TYPE_NAME":"尹**-主治医师日常查房记录","MR_ID":"a4a1ece9-247e-41bb-bd75-c5f5032b535b"},{"TYPE_NAME":"尹**-主任医师日常查房记录","MR_ID":"4daacb44-1b37-4461-8619-8edf22443925"},{"TYPE_NAME":"尹**-日常病程记录","MR_ID":"6b1036d0-ef82-4beb-8a6c-d8110c41adc0"},{"TYPE_NAME":"尹**-日常病程记录","MR_ID":"1083a5b4-0a20-4bd1-9477-9b68b41b02f2"},{"TYPE_NAME":"尹**-出院证明书","MR_ID":"37a7b824-c0fe-4d59-952d-4efdfd6330e6"},{"TYPE_NAME":"尹**-主治医师日常查房记录","MR_ID":"b4183eee-0b94-40d9-8743-1ec3ddc88fbb"},{"TYPE_NAME":"尹**-出院记录","MR_ID":"19a426d0-d32a-48cb-a2e1-9205da11e4ee"}]'; // $user = 8999; $user = request() -> param('user'); $docsCode = request() -> param('docsCode'); //$docsCode = "2fa0e00ffd00d6e92b04a24bbd6dac1d"; $mapToken['token'] = array('eq',$docsCode); $docsJson = db('token') -> where($mapToken) -> value('info'); $dataIntel = db('token') -> where($mapToken) -> value('intel'); $dataIntel = json_decode($dataIntel); $dataIntel = stdClassObjToArray($dataIntel); $tokenrole['pat_name'] = $dataIntel['pat_name']; $tokenrole['out_num'] = $dataIntel['out_num']; $tokenrole['in_num'] = $dataIntel['in_num']; $tokenrole['id_num'] = $dataIntel['id_num']; // return $docsJson; if(!$docsJson){ return json('客户端短令牌错误!'); } $docsArray = json_decode($docsJson); $docsArray = stdClassObjToArray($docsArray); //通过病历列表获取病历原文 for($i = 0; $i < count($docsArray); $i++){ $name = substr($docsArray[$i]['TYPE_NAME'],0,strpos($docsArray[$i]['TYPE_NAME'], '-')); $docName = substr($docsArray[$i]['TYPE_NAME'],strripos($docsArray[$i]['TYPE_NAME'],"-")+1); //请求病历原文 $mrId = $docsArray[$i]["MR_ID"]; $dataMrId['mrId'] = $mrId; $urlMrId = commonDataURL().'/His/getRec'; $recs = curlPost($urlMrId,$dataMrId); $recs = json_decode($recs); $recs = stdClassObjToArray($recs); $keshi = $recs[count($recs)-1]['mr_text']; $tokenrole['DEPT_NAME'] = $keshi; $dataFinal = ''; for($r=0;$rwhere($map)->value('rulepath'); if($rulename != null){ $maprule['rulepath'] = array('like', '%'.$rulename.'%'); $ruleIdArray = array('RYJL0001', 'RYJL0002', 'RYJL0003', 'RYJLXX0001', 'RYJLZS0000', 'RYJLZS0001', 'RYJLZS0002', 'RYJLZS0003', 'RYJLZS0004', 'RYJLZS0005', 'RYJLXBS0000', 'RYJLXBS0001', 'RYJLXBS0002', 'RYJLXBS0003', 'RYJLXBS0004', 'RYJLXBS0005', 'RYJLXBS0006', 'RYJLXBS0007', 'RYJLXBS0008', 'RYJLXBS0009', 'RYJLXBS0010', 'RYJLXBS0011', 'RYJLJWS0000', 'RYJLJWS0001', 'RYJLJWS0002', 'RYJLJWS0003', 'RYJLJWS0004', 'RYJLJWS0005', 'RYJLJWS0006', 'RYJLJWS0007', 'RYJLJWS0009', 'RYJLJWS0010', 'RYJLJWS0011', 'RYJLGRS0000', 'RYJLHY0002', 'RYJLJZS0000', 'RYJLJZS0001', 'RYJLTGJC0000', 'RYJLTGJC0001', 'RYJLTGJC0002', 'RYJLTGJC0003', 'RYJLTGJC0004', 'RYJLTGJC0005', 'RYJLTGJC0006', 'RYJLTGJC0007', 'RYJLTGJC0008', 'RYJLZKJC0000', 'RYJLZKJC0001', 'RYJLFZJC0000', 'RYJLFZJC0001', 'RYJLFZJC0002', 'RYJLFZJC0003', 'RYJLFZJC0004', 'RYJLFZJC0007', 'RYJLFZJC0008', 'RYJLCBZD0000', 'RYJLCBZD0001', 'SCBC0000', 'SCBC0001', 'SCBC0002', 'SCBC0003', 'SCBC0004', 'SCBC0005', 'RCBC0000', 'RCBC0001', 'RCBC0003', 'RCBC0004', 'RCBC0006', 'RCBC0007', 'RCBC0011', 'RCBC0015', 'RCBC0019', 'RCBC0020', 'RCBC0022', 'RCBC0023', 'RCBC0024', 'RCBC0025', 'RCBC0026', 'RCBC0027', 'RCBC0028', 'RCBC0038', 'RCBC0039', 'RCBC0044', 'CYJL0002', 'CYJL0003', 'CYJL0004', 'CYJL0005', 'CYJL0006', 'CYJL0007', 'CYJL0008', 'CYJL0009', 'CYJL0011', 'CYJL0012', 'CYJL0013', 'HZJL0000', 'HZJL0001', 'HZJL0002', 'HZJL0003', 'HZJL0004', 'HZJL0005', 'SQXJ0000', 'SQXJ0001', 'RCBC0040', 'RCBC0041'); $maprule['ruleid'] = array('in', $ruleIdArray); $rulename = db('rulefinal')->where($maprule)->select(); //dump(count($rulename)); //exit; // //查询某一列数据 // $rule = db('User')->column('name'); for($j=0;$j之间。"; // dump('-----------------------------------------------------'); // exit; // $dataFinalcount = '我需要你扮演一位专业医疗病历质控员,现在要进行病历质控。下面是一份'.$docName.'病历,当前病历原文为:\n'.$dataFinal.'n请按照这个规则:\"'.$rule[$j]["ruletype"].$rule[$j]["ruledetail"].'\",为我判断当前病历原文是否正确。如果正确,请返回:\"病例校验结果:病例校验通过。\",详细分析质控过程并说明原因;如果不正确,请返回:\"病例校验结果:'.$rule[$j]['ruletype'].".".$rule[$j]['ruledetail'].'\",详细分析质控过程并说明原因。仅把返回结果放在之间。"'; // dump($dataFinalcount); //请求websocket客户端发送数据 $recContentFinal = [ [ 'role' => 'user', 'content' => $dataFinalcount ], ]; //组装请求的数据为base64格式 $data = []; $data['model'] = 'gstcm-G1-14B'; $data['network'] = '2'; $data['input'] = $recContentFinal; $data = json_encode($data,JSON_UNESCAPED_UNICODE); $data = base64_encode($data); //对请求的参数进行sm4加密 $smIV = getSMIV(); $config = [ 'mode' => 'cbc', 'key' => 'kdOVYNCDa50ZaKQF', // 16 字节二进制密钥 'iv' => $smIV, // 16 字节二进制 IV 'hash' => false ]; $sm4 = new EvitSM4Encryption($config); $encryptedBinary = $sm4->encrypt($data); // 将二进制结果转换为 Base64 $encryptedBase64 = base64_encode($encryptedBinary); //创建最终的含有sm4的iv的数据 $modifiedData = []; $modifiedData['encryptedBase64'] = $encryptedBase64; $modifiedData['smIV'] = $smIV; $modifiedData['publicKey'] = '6c5McfXGHnB0lmX2ir4sRvx6YBXlgxew'; $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); $modifiedData = base64_encode($modifiedData); // 将 '+' 替换为 '-','/' 替换为 '_' $modifiedData = strtr($modifiedData, '+/', '-_'); //将加密的参数发送给开放平台,获取短令牌 $urlOpen = commonOpenURL().'/Apis/getToken'; $encryption['information'] = $modifiedData; $token = curlPost($urlOpen,$encryption); $token = stdClassObjToArray(json_decode($token)); //推送消息至websocket $dataRequest['user'] = $user; $num = $i + 1; $dataRequest['name'] = $name; $dataRequest['rule'] = $rulename[$j]['ruletype'].$rulename[$j]['ruledetail']; $dataRequest['doc'] = $docName.'('.$num.'/'.count($docsArray).')'; $dataRequest['token'] = $token['token']; $dataRequest['ruleid'] = $rulename[$j]['ruleid']; $dataRequest['typename'] = $docsArray[$i]['TYPE_NAME']; $tokenrole['token'] = $token['token']; $tokenrole['ruleid'] = $rulename[$j]['ruleid']; $tokenrole['typename'] = $docsArray[$i]['TYPE_NAME']; $tokenrole['content'] = $dataFinal; $tokenrole['ruletype'] = $rulename[$j]['ruletype']; if($rulename[$j]['ruletype'] != null or $rulename[$j]['ruletype'] !='暂无'){ $tokenrole['ruledetail'] = ''.$rulename[$j]['ruledetail']; } $tokenrole['time'] = time(); db('tokenrole') -> insert($tokenrole); $url = commonURL().'/Send/websocket'; curlPost($url,$dataRequest); } } sleep(1); } return 'success'; } // public function hisOpenPush(){ // $docsJson = '[{"TYPE_NAME":"彭**-入院记录","MR_ID":"dbc9a263-7e41-43e3-be37-637a8ebac213"},{"TYPE_NAME":"彭**-首次病程记录","MR_ID":"3f2ea6c4-6d58-46b3-89e0-92b0266a0fd0"},{"TYPE_NAME":"彭**-中医特色专科病程记录","MR_ID":"c22d3c52-c538-455d-84ef-0c19ebc50e02"},{"TYPE_NAME":"彭**-会诊记录","MR_ID":"b9f795fa-dff5-4bca-81c5-86d67faa87ef"},{"TYPE_NAME":"彭**-主治医师首次查房记录","MR_ID":"5b013e76-ed60-4fd5-a6b2-6cec487fe05c"},{"TYPE_NAME":"彭**-科主任或具有副主任医师以上专业技术职务资格医师查房记录","MR_ID":"40358471-16b9-4a9e-ba93-344a562022bd"},{"TYPE_NAME":"彭**-日常病程记录","MR_ID":"0d14032c-8f00-4c61-b0f8-c4a6ebd0cf4c"},{"TYPE_NAME":"彭**-术前小结","MR_ID":"d52e01b1-48a5-421e-bbb6-d0a61c6079af"},{"TYPE_NAME":"彭**-术前讨论记录","MR_ID":"fafa4249-f0d5-4354-9907-f75c5195ceb1"},{"TYPE_NAME":"彭**-第一术者术前查房记录","MR_ID":"5d94412a-5622-4118-a948-6de7029267ca"},{"TYPE_NAME":"彭**-出院证明书","MR_ID":"58711e0c-23db-4f2f-9c3c-0f36b4f1e3bf"},{"TYPE_NAME":"彭**-术前讨论记录","MR_ID":"b9ea75de-564a-4c03-9946-e364dc7dbc70"},{"TYPE_NAME":"彭**-术后首次病程记录","MR_ID":"f3299242-8c1e-4f40-8283-51698ab6ab37"},{"TYPE_NAME":"彭**-主治医师日常查房记录","MR_ID":"9b3dfe6d-ce4b-43b5-8514-7ad0c5ba2a88"},{"TYPE_NAME":"彭**-出院记录","MR_ID":"4f434252-d7bd-40e4-ac51-be0c86e73dcd"},{"TYPE_NAME":"彭**-修正诊断","MR_ID":"1d5dbeca-e572-4963-81d2-8d1dd5a65a30"}]'; // $user = 8999; // // $user = request() -> param('user'); // // $docsCode = request() -> param('docsCode'); // // $mapToken['token'] = array('eq',$docsCode); // // $docsJson = db('token') -> where($mapToken) -> value('info'); // // if(!$docsJson){ // // return json('客户端短令牌错误!'); // // } // $docsArray = json_decode($docsJson); // $docsArray = stdClassObjToArray($docsArray); // //通过病历列表获取病历原文 // for($i = 0; $i < count($docsArray); $i++){ // $name = substr($docsArray[$i]['TYPE_NAME'],0,strpos($docsArray[$i]['TYPE_NAME'], '-')); // $docName = substr($docsArray[$i]['TYPE_NAME'],strripos($docsArray[$i]['TYPE_NAME'],"-")+1); // //请求病历原文 // $mrId = $docsArray[$i]["MR_ID"]; // $dataMrId['mrId'] = $mrId; // $urlMrId = commonDataURL().'/His/getRec'; // $recs = curlPost($urlMrId,$dataMrId); // $recs = json_decode($recs); // $recs = stdClassObjToArray($recs); // $recs[count($recs)]['mr_title'] = '标题'; // $recs[count($recs)-1]['mr_text'] = $docName; // $dataFinal = json_encode($recs,JSON_UNESCAPED_UNICODE); // //请求websocket客户端发送数据 // $recContentFinal = [ // [ // 'role' => 'user', // 'content' => $dataFinal // ], // ]; // //组装请求的数据为base64格式 // $data = []; // $data['model'] = 'gstcm-G1-7B'; // $data['network'] = '1'; // $data['input'] = $recContentFinal; // $data = json_encode($data,JSON_UNESCAPED_UNICODE); // $data = base64_encode($data); // //对请求的参数进行sm4加密 // $smIV = getSMIV(); // $config = [ // 'mode' => 'cbc', // 'key' => 'kdOVYNCDa50ZaKQF', // 16 字节二进制密钥 // 'iv' => $smIV, // 16 字节二进制 IV // 'hash' => false // ]; // $sm4 = new EvitSM4Encryption($config); // $encryptedBinary = $sm4->encrypt($data); // // 将二进制结果转换为 Base64 // $encryptedBase64 = base64_encode($encryptedBinary); // //创建最终的含有sm4的iv的数据 // $modifiedData = []; // $modifiedData['encryptedBase64'] = $encryptedBase64; // $modifiedData['smIV'] = $smIV; // $modifiedData['publicKey'] = '6c5McfXGHnB0lmX2ir4sRvx6YBXlgxew'; // $modifiedData = json_encode($modifiedData,JSON_UNESCAPED_UNICODE); // $modifiedData = base64_encode($modifiedData); // // 将 '+' 替换为 '-','/' 替换为 '_' // $modifiedData = strtr($modifiedData, '+/', '-_'); // //将加密的参数发送给开放平台,获取短令牌 // $urlOpen = commonOpenURL().'/Apis/getToken'; // $encryption['information'] = $modifiedData; // $token = curlPost($urlOpen,$encryption); // $token = stdClassObjToArray(json_decode($token)); // //推送消息至websocket // $dataRequest['user'] = $user; // $num = $i + 1; // $dataRequest['name'] = $name; // $dataRequest['doc'] = $docName.'('.$num.'/'.count($docsArray).')'; // $dataRequest['token'] = $token['token']; // $url = commonURL().'/Send/websocket'; // curlPost($url,$dataRequest); // //sleep(1); // } // return 'success'; // } }