| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553 |
- <?php
- namespace app\index\controller;
- use think\Request;
- use think\Db;
- //sm4
- use Evit\PhpGmCrypto\Encryption\EvitSM4Encryption;
- class His extends \think\Controller
- {
- //主页
- public function index(){
- //判断用户设备是否是移动端
- 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());
-
- $recContent = db('medical_rec') -> 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;$r<count($recs);$r++){
- $dataFinal = $dataFinal.$recs[$r]["mr_title"].":".$recs[$r]["mr_text"];
- }
- $recs[count($recs)]['mr_title'] = '标题';
- $recs[count($recs)-1]['mr_text'] = $docName;
- // $dataFinal = json_encode($recs,JSON_UNESCAPED_UNICODE);
- $map['emr'] = array('eq', $docName);
- $rulename = db('rulecounter')->where($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<count($rulename);$j++){
- if($rulename[$j]['ruledetail'] == '暂无'){
- $rulename[$j]['ruledetail'] = '';
- }
- $dataFinalcount ="我需要你扮演一位专业医疗病历质控员,现在要进行病历质控。下面是一份".$docName."病历,当前病历原文为:\n".$dataFinal."\n请按照这个规则: ".$rulename[$j]['ruletype'].$rulename[$j]['ruledetail']." 为我判断当前病历原文是否正确。如果正确,请返回:'病例校验结果:病例校验通过。',详细分析质控过程并说明原因;如果不正确,请返回: '病例校验结果:".$rulename[$j]['ruletype'].".".$rulename[$j]['ruledetail']."',详细分析质控过程并说明原因。仅把返回结果放在</answer>和<answer>之间。";
-
- // dump('-----------------------------------------------------');
- // exit;
- // $dataFinalcount = '我需要你扮演一位专业医疗病历质控员,现在要进行病历质控。下面是一份'.$docName.'病历,当前病历原文为:\n'.$dataFinal.'n请按照这个规则:\"'.$rule[$j]["ruletype"].$rule[$j]["ruledetail"].'\",为我判断当前病历原文是否正确。如果正确,请返回:\"病例校验结果:病例校验通过。\",详细分析质控过程并说明原因;如果不正确,请返回:\"病例校验结果:'.$rule[$j]['ruletype'].".".$rule[$j]['ruledetail'].'\",详细分析质控过程并说明原因。仅把返回结果放在</answer>和<answer>之间。"';
- // 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';
- // }
- }
|