Forráskód Böngészése

Merge branch 'master' of http://code.pacsonline.cn/zskk_bg/guochanhua

luyun 4 napja
szülő
commit
a67d5b305f

+ 38 - 10
jcjyhr/app/zskk/controller/Api.php

@@ -10,7 +10,7 @@ use app\zskk\servies\PatientServies;
 
 class Api extends ApiController
 {
-    protected array $noAuth = ['getToken','getAllToken','getHospitalData','getCheck','getInpection','login'];
+    protected array $noAuth = ['getToken','getAllToken','getShareToken','getRecogToken','login','getHospitalData','getCheck','getInpection'];
 
     public function login(PatientServies $servies)
     {
@@ -23,7 +23,7 @@ class Api extends ApiController
             $this->error($data);
         }
     }
-    
+
     public function getHospitalData(PatientServies $servies)
     {
         $params = $this->request->post();
@@ -52,6 +52,17 @@ class Api extends ApiController
         $this->success($data['msg'], $data['data']);
     }
 
+    public function getShareToken(EmpowerServies $servies, PatientServies $patientServies): void
+    {
+        $params = $this->request->post();
+        $params = $this->getDecryptData($params['data']);
+        $params = $patientServies->makeMappingData($params,'0','getRecogToken');
+        $data = $servies->getRecogToken($params);
+        $data = $patientServies->makeMappingData($data,'0','getRecogToken',2);
+        $data = $this->makeEncryptData($data);
+        $this->success('', $data);
+    }
+
     public function getRecogToken(EmpowerServies $servies, PatientServies $patientServies): void
     {
         $params = $this->request->post();
@@ -93,7 +104,7 @@ class Api extends ApiController
     public function delExamReport(PatientServies $servies)//: void
     {
         $params = $this->request->post();
-//        $params = $this->getDecryptData($params['data']);
+        $params = $this->getDecryptData($params['data']);
         $tokenData = $this->tokenData;
         if(empty($tokenData))
         {
@@ -111,7 +122,6 @@ class Api extends ApiController
         $params = $this->request->post();
 //        $params = $this->getDecryptData($params['data']);
         $tokenData = $this->tokenData;
-        $tokenData['orgCode'] = '001';
         if(empty($tokenData))
         {
             $this->error('无效的token');
@@ -129,7 +139,7 @@ class Api extends ApiController
     public function getShareCheck(HrServies $servies,PatientServies $patientServies): void
     {
         $params = $this->request->post();
-//        $params = $this->getDecryptData($params['data']);
+        $params = $this->getDecryptData($params['data']);
         $params = $patientServies->makeMappingData($params,'0','getShareCheck');
         $ID_CARDNUM = $params['ID_CARDNUM'] ?? '';
         $ORGCODE = $params['ORGCODE'] ?? '';
@@ -140,7 +150,26 @@ class Api extends ApiController
         $data = $servies->getShareCheck($ID_CARDNUM, $ORGCODE,$DOCTORCODE,$DEPARTMENT,1);
         $data = $patientServies->makeMappingData(['RETURN'=>$data],'0','getShareCheck',2);
         // halt($data);
-//        $data = $this->makeEncryptData($data);
+        $data = $this->makeEncryptData($data);
+        // halt($data);
+        $this->success('', $data);
+    }
+
+    public function getRecogCheck(HrServies $servies,PatientServies $patientServies): void
+    {
+        $params = $this->request->post();
+        $params = $this->getDecryptData($params['data']);
+        $params = $patientServies->makeMappingData($params,'0','getShareCheck');
+        $ID_CARDNUM = $params['ID_CARDNUM'] ?? '';
+        $ORGCODE = $params['ORGCODE'] ?? '';
+        $ORGNAME = $params['ORGNAME'] ?? '';
+        $DOCTORNAME = $params['DOCTORNAME'] ?? '';
+        $DOCTORCODE = $params['DOCTORCODE'] ?? '';
+        $DEPARTMENT = $params['DEPTNAME'] ?? '';
+        $data = $servies->getShareCheck($ID_CARDNUM, $ORGCODE,$DOCTORCODE,$DEPARTMENT,1,1);
+        $data = $patientServies->makeMappingData(['RETURN'=>$data],'0','getShareCheck',2);
+        // halt($data);
+        $data = $this->makeEncryptData($data);
         // halt($data);
         $this->success('', $data);
     }
@@ -154,7 +183,7 @@ class Api extends ApiController
     public function getRecogData(HrServies $servies,PatientServies $patientServies): void
     {
         $params = $this->request->post();
-//        $params = $this->getDecryptData($param['data']);
+        $params = $this->getDecryptData($params['data']);
         $params = $patientServies->makeMappingData($params,'0','getRecogData');
         $ID_CARDNUM = $params['ID_CARDNUM'] ?? '';
         $ORGCODE = $params['ORGCODE'] ?? '';
@@ -165,8 +194,7 @@ class Api extends ApiController
         $data = $servies->getShareCheck($ID_CARDNUM, $ORGCODE,$DOCTORCODE,$DEPARTMENT,2);
         // halt($data);
         $data = $patientServies->makeMappingData(['DATA'=>$data],'0','getRecogData',2);
-         var_dump($data);die;
-//        $data = $this->makeEncryptData($data);
+        $data = $this->makeEncryptData($data);
         // halt($data);
         $this->success('', $data);
     }
@@ -179,7 +207,7 @@ class Api extends ApiController
     public function saveRecogResult(HrServies $servies, PatientServies $patientServies): void
     {
         $params = $this->request->post();
-//        $params = $this->getDecryptData($params['data']);
+        $params = $this->getDecryptData($params['data']);
         $params = $patientServies->makeMappingData($params,'0','saveRecogResult');
         $HR_RECORDS = $params['HR_RECORDS'] ?? array();
         $servies->saveRecogResult($HR_RECORDS);

+ 18 - 0
jcjyhr/app/zskk/controller/Hr.php

@@ -37,6 +37,24 @@ class Hr extends ZskkApiController
         // }
         $this->success('success', $data);
     }
+
+    /**
+     * 后台初始化请求
+     * @return void
+     * @throws Throwable
+     */
+    public function getRecogViewHrDetail(HrServies $servies): void
+    {
+        $params = $this->request->post();
+        $token = $params['TOKEN'] ?? '';
+         // todo 容错处理
+        $data = $servies->getRecogViewDetailByToken($token,1);
+        // if(empty($data))
+        // {
+        //     $this->error('token失效或已过期');
+        // }
+        $this->success('success', $data);
+    }
     /**
      * @throws ModelNotFoundException
      * @throws DataNotFoundException

+ 16 - 13
jcjyhr/app/zskk/controller/Patient.php

@@ -94,16 +94,17 @@ class Patient extends ZskkApiController
      */
     public function postExamInfo(PatientServies $servies): void
     {
-//        try {
+        try {
             $params = $this->request->post();
-//            $params = $this->getDecryptData($params['data']);
+            $params = $this->getDecryptData($params['data']);
             $params = $servies->makeMappingData($params,'0','postExamInfo');
             $data = $servies->postExamInfo($params);
+            $data = $this->makeEncryptData($data);
             $this->success($data,'');
-//        }catch (\Exception $e)
-//        {
-//            $this->error($e->getMessage());
-//        }
+        }catch (\Exception $e)
+        {
+            $this->error($e->getMessage());
+        }
     }
     /**
      * 上传检查数据
@@ -112,9 +113,10 @@ class Patient extends ZskkApiController
     {
         try {
             $params = $this->request->post();
-//            $params = $this->getDecryptData($params['data']);
+            $params = $this->getDecryptData($params['data']);
             $params = $servies->makeMappingData($params,'0','postExamReport');
             $data = $servies->postExamReport($params);
+            $data = $this->makeEncryptData($data);
             $this->success($data,'');
         }catch (\Exception $e)
         {
@@ -127,15 +129,16 @@ class Patient extends ZskkApiController
      */
     public function postLisReport(PatientServies $servies): void
     {
-//        try {
+        try {
             $params = $this->request->post();
-//            $params = $this->getDecryptData($params['data']);
+            $params = $this->getDecryptData($params['data']);
             $params = $servies->makeMappingData($params,'0','postLabReport');
             $data = $servies->postLabReport($params);
+            $data = $this->makeEncryptData($data);
             $this->success($data,'');
-//        }catch (\Exception $e)
-//        {
-//            $this->error($e->getMessage());
-//        }
+        }catch (\Exception $e)
+        {
+            $this->error($e->getMessage());
+        }
     }
 }

+ 2 - 2
jcjyhr/app/zskk/model/Patient.php

@@ -195,10 +195,10 @@ class Patient extends ZskkModel
     {
         return (new ExamReport())->where($where)->field($field)->find();
     }
-    public function getInspect($patientCode)
+    public function getInspect($patientCode,$where=[])
     {
         // return (new InspectReport())->where('PATIENT_CODE',$patientCode)->field(['NAME','SERIESNUM', 'EXAM_REQUESTID', 'REPORTID', 'SPECIMEN_TYPE', 'ORGCODE', 'ORGNAME', 'DEPTNAME', 'PRACTITIONERNAME', 'AUDITNAME', 'REPORTTIME', 'REPORTSTATUS', 'GENDER', 'GENDER_CODE', 'AGE', 'LAB_ITEMNAME', 'LAB_ITEMNAME_CODE', 'LAB_ITEMNAME_NUMBER', 'LAB_HR_STATUS', 'LAB_HR_ITEMNAME', 'LAB_HR_ITEMNAME_CODE','INSPECT_REPORT_CODE'])->select()->toArray();
-        return (new InspectReport())->where('PATIENT_CODE',$patientCode)->field(['REPORTID','LAB_ITEMNAME','LAB_ITEMNAME_TYPE_CODE','PRACTITIONERNAME','AUDITNAME','ORGNAME','ORGCODE','DEPTNAME','REPORT_COMMENT','REPORTTIME','REPORT','LAB_HR_ITEMNAME_CODE', 'LAB_HR_ITEMNAME', 'HR_RANGE','SPECIMEN_TYPE','INSPECT_REPORT_CODE','RECOG_STATUS'])->select()->toArray();
+        return (new InspectReport())->where('PATIENT_CODE',$patientCode)->where($where)->field(['REPORTID','LAB_ITEMNAME','LAB_ITEMNAME_TYPE_CODE','PRACTITIONERNAME','AUDITNAME','ORGNAME','ORGCODE','DEPTNAME','REPORT_COMMENT','REPORTTIME','REPORT','LAB_HR_ITEMNAME_CODE', 'LAB_HR_ITEMNAME', 'HR_RANGE','SPECIMEN_TYPE','INSPECT_REPORT_CODE','RECOG_STATUS'])->select()->toArray();
     }
 
     public function getInspectData($where,$field)

+ 7 - 4
jcjyhr/app/zskk/servies/EmpowerServies.php

@@ -31,7 +31,10 @@ class EmpowerServies
             'ORGCODE'=>$ORGCODE,
             'ORGNAME'=>$ORGNAME,
             'DOCTORNAME'=>$DOCTORNAME,
-            'DOCTORCODE'=>$DOCTORCODE
+            'DOCTORCODE'=>$DOCTORCODE,
+            'HR_ITEM_CODE'=>$params['HR_ITEM_CODE'] ?? '',
+            'DEVICE_IP'=>$params['DEVICE_IP'] ?? '',
+            'DEVICE_MAC'=>$params['DEVICE_MAC'] ?? ''
         ];
         Cache::set($aesKey,$arr,$expire);
         return ['TOKEN'=>$aesKey];
@@ -44,14 +47,14 @@ class EmpowerServies
         $institution = $this->institutionModel->where('port_empower',$authID)->where('institution_code',$orgCode)->find();
         if(empty($institution))
         {
-//            return ['msg'=>'机构编码或授权码错误','data'=>[]];
+            return ['msg'=>'机构编码或授权码错误','data'=>[]];
         }
         $key = md5($orgCode.rand(0,99));
         $expire = 3600;
         $aesKey = $this->generateRandomLetters();
         // todo
-        $aesKey = 'zLxapoeqWYpoeqWY';
-        $institution['id'] = '001';
+//        $aesKey = 'zLxapoeqWYpoeqWY';
+//        $institution['id'] = '001';
         $token = base64_encode(md5($orgCode.$institution['id'].$aesKey));
         $arr = ['token'=>$token,'key'=>$aesKey,'expire'=>$expire,'appId'=>$key,'orgCode'=>$orgCode];
 //        if(empty(Cache::get($orgCode)))

+ 40 - 20
jcjyhr/app/zskk/servies/HrServies.php

@@ -44,14 +44,14 @@ class HrServies
     
 
 
-    public function getShareCheck($ID_CARDNUM, $ORGCODE,$DOCTORCODE,$DEPART,$result): bool|array
+    public function getShareCheck($ID_CARDNUM, $ORGCODE,$DOCTORCODE,$DEPART,$result,$all=0): bool|array
     {
         $ID_CARDNUM = Gm::encrypt(Config::get('gm.key'),$ID_CARDNUM);
         $data = array();
         $patients = $this->patientModel->getPatientsByID_CARDNUM($ID_CARDNUM);
         $r = false;
         foreach($patients as $patient) {
-            $return = $this->getRecogViewDetails($patient['PATIENT_CODE'], $ORGCODE,$DOCTORCODE,$DEPART,$result);
+            $return = $this->getRecogViewDetails($patient['PATIENT_CODE'], $ORGCODE,$DOCTORCODE,$DEPART,$result,$all);
             $data[] = $return;
             if($return)
             {
@@ -65,16 +65,16 @@ class HrServies
         return $data;
     }
 
-    public function getRecogData($ID_CARDNUM, $ORGCODE): array {
-        $ID_CARDNUM = Gm::encrypt(Config::get('gm.key'),$ID_CARDNUM);
-        $data = array();
-        $patients = $this->patientModel->getPatientsByID_CARDNUM($ID_CARDNUM);
-        foreach($patients as $patient) {
-            $data[] = $this->getRecogViewDetailByPATIENT_CODE($patient['PATIENT_CODE'], $ORGCODE);
-        }
-        return ['DATA'=>$data];
-    }
-    public function getRecogViewDetailByToken($token): array {
+//    public function getRecogData($ID_CARDNUM, $ORGCODE): array {
+//        $ID_CARDNUM = Gm::encrypt(Config::get('gm.key'),$ID_CARDNUM);
+//        $data = array();
+//        $patients = $this->patientModel->getPatientsByID_CARDNUM($ID_CARDNUM);
+//        foreach($patients as $patient) {
+//            $data[] = $this->getRecogViewDetailByPATIENT_CODE($patient['PATIENT_CODE'], $ORGCODE);
+//        }
+//        return ['DATA'=>$data];
+//    }
+    public function getRecogViewDetailByToken($token,$hr=0): array {
         $params = Cache::get($token);
         if(empty($params))
         {
@@ -83,8 +83,28 @@ class HrServies
         }
         $ID_CARDNUM = $params['ID_CARDNUM'];
         $ID_CARDNUM = Gm::encrypt(Config::get('gm.key'),$ID_CARDNUM);
-        $HRORGCODE = $params['ORGCODE'];
-        $_data = $this->getRecogViewDetail($ID_CARDNUM, $HRORGCODE);
+//        $HRORGCODE = $params['ORGCODE'];
+        $WHERE = [];
+        if($params['ORGCODE'] ?? '')
+        {
+            $WHERE['ORGCODE'] = $params['ORGCODE'];
+        }
+        if($params['DOCTORCODE'] ?? '')
+        {
+            $WHERE['DOCTORCODE'] = $params['DOCTORCODE'];
+        }
+        if($params['DEPART'] ?? '')
+        {
+            $WHERE['DEPTNAME'] = $params['DEPART'];
+        }
+        $exam_report = [];
+        $inspect_report = [];
+        if($params['HR_ITEM_CODE'] ?? '')
+        {
+            $exam_report['HR_ITEMNAME_CODE'] = ['in',explode(',',$params['HR_ITEM_CODE'])];
+            $inspect_report['LAB_HR_ITEMNAME_CODE'] = ['in',explode(',',$params['HR_ITEM_CODE'])];
+        }
+        $_data = $this->getRecogViewDetail($ID_CARDNUM, $WHERE,$exam_report,$inspect_report,$hr);
         $patient = $_data[0]['PATIENT'];
         $data = [
             'patient' => $patient,
@@ -113,12 +133,12 @@ class HrServies
         $this->callRecordModel->save($data);
     }
 
-    public function getRecogViewDetail($ID_CARDNUM, $HRORGCODE): array {
+    public function getRecogViewDetail($ID_CARDNUM, $HRORGCODE,$INSPECT_REPORT,$EXAM_REPORT,$hr): array {
         $datas = array();
         $patients = $this->patientModel->getPatientsByID_CARDNUM($ID_CARDNUM);
        
         foreach($patients as $patient) {
-            $data = $this->getRecogViewDetailByPATIENT_CODE($patient['PATIENT_CODE'], $HRORGCODE);
+            $data = $this->getRecogViewDetailByPATIENT_CODE($patient['PATIENT_CODE'], $HRORGCODE,$hr);
             $data['MEDICAL_INFORMATION']['PATIENT_CODE'] = $patient['PATIENT_CODE'];
             $HR_RECORDS =  $this->hrpatientServies->_getHrpatientDetailByPATIENT_CODE($patient['PATIENT_CODE'], $HRORGCODE);
             $data['HR_RECORDS'] = $HR_RECORDS;
@@ -127,13 +147,13 @@ class HrServies
         return $datas;
     }
 
-    public function getRecogViewDetailByPATIENT_CODE($PATIENT_CODE): array {
+    public function getRecogViewDetailByPATIENT_CODE($PATIENT_CODE, $HRORGCODE,$hr): array {
         $data = null;
-        $data = $this->patientServies->getPatient(['PATIENT_CODE'=> $PATIENT_CODE]);
+        $data = $this->patientServies->getHrPatient(['PATIENT_CODE'=> $PATIENT_CODE],$hr);
         return $data;
     }
 
-    public function getRecogViewDetails($PATIENT_CODE,$ORGCODE,$DOCTORCODE,$DEPART,$RESULT): bool|array {
+    public function getRecogViewDetails($PATIENT_CODE,$ORGCODE,$DOCTORCODE,$DEPART,$RESULT,$all): bool|array {
         $data = null;
         $WHERE = [];
         if($ORGCODE)
@@ -148,7 +168,7 @@ class HrServies
         {
             $WHERE['DEPTNAME'] = $DEPART;
         }
-        $data = $this->patientServies->getPatientSign(['PATIENT_CODE'=> $PATIENT_CODE],$WHERE,$RESULT);
+        $data = $this->patientServies->getPatientSign(['PATIENT_CODE'=> $PATIENT_CODE],$WHERE,$RESULT,$all);
         return $data;
     }
 

+ 47 - 2
jcjyhr/app/zskk/servies/PatientServies.php

@@ -698,7 +698,7 @@ class PatientServies
      * @throws DbException
      * @throws DataNotFoundException
      */
-    public function getPatientSign($where,$medicalWhere,$RESULT ): bool|array
+    public function getPatientSign($where,$medicalWhere,$RESULT,$all ): bool|array
     {
         $patient = $this->patientModel->getPatient($where);
         if(empty($patient))
@@ -712,7 +712,12 @@ class PatientServies
         {
             return false;
         }
-        $exam = $this->patientModel->getExam($patient['PATIENT_CODE'],['RECOG_STATUS'=>'*']);
+        $examWhere = [];
+        if($all == '0')
+        {
+            $examWhere = ['RECOG_STATUS'=>'*'];
+        }
+        $exam = $this->patientModel->getExam($patient['PATIENT_CODE'],$examWhere);
         if(!empty($exam) && $RESULT == 1)
         {
             return $exam;
@@ -763,6 +768,46 @@ class PatientServies
         }
     }
 
+    /**
+     * @throws ModelNotFoundException
+     * @throws DbException
+     * @throws DataNotFoundException
+     */
+    public function getHrPatient($where,$hr=0,$medicalWhere = []): array|string
+    {
+        $patient = $this->patientModel->getPatient($where);
+        if(empty($patient))
+        {
+            return '无法找到患者信息';
+        }
+        $patient = $patient->toArray();
+        $medical = $this->patientModel->getMedical($patient['PATIENT_CODE'],$medicalWhere);
+        $medical = empty($medical) ? $medical : $medical->toArray();
+        $examWhere = [];
+        $inspectWhere = [];
+        if($hr == 1)
+        {
+            $examWhere = ['RECOG_STATUS'=>'*'];
+            $inspectWhere = ['RECOG_STATUS'=>'*'];
+        }
+        $exam = $this->patientModel->getExam($patient['PATIENT_CODE'],$examWhere);
+        $inspect = $this->patientModel->getInspect($patient['PATIENT_CODE'],$inspectWhere);
+
+        unset($patient['PATIENT_CODE']);
+        foreach ($inspect as $k=>$v)
+        {
+            $lab = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
+            $inspect[$k]['INSPECT_REPORT_ITEMS'] = $lab;
+            unset($inspect[$k]['INSPECT_REPORT_CODE']);
+        }
+        $data = [
+            'PATIENT'=>$patient,
+            'MEDICAL_INFORMATION'=>$medical,
+            'EXAM_REPORTS'=>$exam,
+            'INSPECT_REPORTS'=>$inspect
+        ];
+        return $data;
+    }
     /**
      * @throws ModelNotFoundException
      * @throws DbException

+ 4 - 4
jcjyhr/public/index.php

@@ -16,12 +16,12 @@ namespace think;
  * 不在tp加载后判断,为了安全的使用exit()
  * 使用绝对路径,确保花里胡哨的url均能正确判定和跳转
  */
+header("Access-Control-Allow-Credentials: true");
+header("Access-Control-Max-Age: 86400");
+header("Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS");
+header("Access-Control-Allow-Origin: *");
 if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
-    header("Access-Control-Allow-Credentials: true");
-    header("Access-Control-Max-Age: 86400");
-    header("Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS");
     header("Access-Control-Allow-Headers: " . $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']);
-    header("Access-Control-Allow-Origin: *");
     exit();
 }