Browse Source

互认页面调整

lgy 1 month ago
parent
commit
f8a65bf734

+ 12 - 0
jcjyhr/app/zskk/controller/Patient.php

@@ -14,6 +14,7 @@ use think\db\exception\ModelNotFoundException;
 use think\facade\Cache;
 use think\facade\Db;
 use think\Exception;
+use think\facade\Log;
 use Throwable;
 use app\zskk\servies\PatientServies;
 
@@ -89,6 +90,14 @@ class Patient extends ZskkApiController
         $this->success('',$data);
     }
 
+    public function getIdCard()
+    {
+        $params = $this->request->get();
+        $id = $params['id_card'] ?? '';
+        $mpiIdCard = Gm::decrypt(\think\facade\Config::get('gm.key'),$id);
+        echo $mpiIdCard;
+    }
+
     /**
      * 上传检查数据
      */
@@ -102,6 +111,7 @@ class Patient extends ZskkApiController
                 $this->error('密文解析失败');
             }
             $params = $servies->makeMappingData($params,'0','postExamInfo');
+//            Log::record('检查信息参数'.json_encode($params));
             $data = $servies->postExamInfo($params);
 //        }catch (\Exception $e)
 //        {
@@ -122,6 +132,7 @@ class Patient extends ZskkApiController
                 $this->error('密文解析失败');
             }
             $params = $servies->makeMappingData($params,'0','postExamReport');
+//            Log::record('检查报告参数'.json_encode($params));
             $data = $servies->postExamReport($params);
 //        }catch (\Exception $e)
 //        {
@@ -143,6 +154,7 @@ class Patient extends ZskkApiController
                 $this->error('密文解析失败');
             }
             $params = $servies->makeMappingData($params,'0','postLabReport');
+//            Log::record('检验报告参数'.json_encode($params));
             $data = $servies->postLabReport($params);
 //            $data = $this->makeEncryptData($data);
 //        }catch (\Exception $e)

+ 11 - 3
jcjyhr/app/zskk/servies/CommonServies.php

@@ -39,7 +39,7 @@ class CommonServies
     }
 
 
-    public function handlePATIENT($data, $MEDICAL_INFORMATION)
+    public function handlePATIENT($data, $MEDICAL_INFORMATION,$KEY)
     {
 
         // 姓名
@@ -57,7 +57,7 @@ class CommonServies
         $MPI_MODEL = $this->getMpiModel($ID_CARDNUM);
         $MPI_KEY = $MPI_MODEL['MPI_KEY'];
         $MPI = $MPI_MODEL['MPI'];
-        $PATIENT_CODE = $this->getPATIENT_CODE($MPI_KEY, $MEDICAL_INFORMATION['ORGCODE'], $MEDICAL_INFORMATION['SERIESNUM']);
+        $PATIENT_CODE = $this->getPATIENT_CODE($MPI_KEY, $MEDICAL_INFORMATION['ORGCODE'], $KEY);
         $PATIENT = [
             'NAME' => $NAME,
             'PATIENT_CODE' => $PATIENT_CODE,
@@ -233,13 +233,21 @@ class CommonServies
                     $STUDY_ID = $EXAMS[0]['STUDY_ID'] ?? '';
                 }
             }
-            if(!empty($STUDY_ID) && !empty($ACCESSION_NUM))
+            if(empty($STUDY_ID) && !empty($ACCESSION_NUM))
             {
                 $EXAMS = Db::query("select STUDY_ID from PACS.EXAMS WHERE ACCESSION_NUM='$ACCESSION_NUM'");
                 if(!empty($EXAMS))
                 {
                     $STUDY_ID = $EXAMS[0]['STUDY_ID'] ?? '';
                 }
+                if(empty($STUDY_ID))
+                {
+                    $EXAMS = Db::query("select STUDY_ID from PACS.EXAMS WHERE PATIENT_NUM='$ACCESSION_NUM'");
+                    if(!empty($EXAMS))
+                    {
+                        $STUDY_ID = $EXAMS[0]['STUDY_ID'] ?? '';
+                    }
+                }
             }
 //            $OBSERVATIONS_COMMENT = $data['OBSERVATIONS_COMMENT'];
 //            $OBSERVATIONS_RESULT = $data['OBSERVATIONS_RESULT'];

+ 9 - 1
jcjyhr/app/zskk/servies/HrServies.php

@@ -105,7 +105,7 @@ class HrServies
             $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'];
+        $patient = $_data[0]['PATIENT'] ?? [];
         $data = [
             'patient' => $patient,
             'data' => $_data,
@@ -120,6 +120,10 @@ class HrServies
         // TODO 记录token请求时间
     }
     public function recordCallGetRecogViewDetail($params, $patient) {
+        if(empty($patient))
+        {
+            return '';
+        }
         $data = [
             'MPI'=>$patient['MPI'],
             'MPI_KEY'=>$patient['MPI_KEY'],
@@ -139,6 +143,10 @@ class HrServies
        
         foreach($patients as $patient) {
             $data = $this->getRecogViewDetailByPATIENT_CODE($patient['PATIENT_CODE'], $HRORGCODE,$hr);
+            if(empty($data))
+            {
+                continue;
+            }
             $data['MEDICAL_INFORMATION']['PATIENT_CODE'] = $patient['PATIENT_CODE'];
             $HR_RECORDS =  $this->hrpatientServies->_getHrpatientDetailByPATIENT_CODE($patient['PATIENT_CODE'], $HRORGCODE);
             $data['HR_RECORDS'] = $HR_RECORDS;

+ 40 - 19
jcjyhr/app/zskk/servies/PatientServies.php

@@ -12,6 +12,7 @@ use think\db\exception\DbException;
 use think\db\exception\ModelNotFoundException;
 use think\Exception;
 use think\facade\Config;
+use think\facade\Log;
 use Throwable;
 use app\common\controller\ZskkApi;
 use app\zskk\model\BiInspectReport;
@@ -780,10 +781,14 @@ class PatientServies
         $patient = $this->patientModel->getPatient($where);
         if(empty($patient))
         {
-            return '无法找到患者信息';
+            return [];
         }
         $patient = $patient->toArray();
         $medical = $this->patientModel->getMedical($patient['PATIENT_CODE'],$medicalWhere);
+        if(empty($medical))
+        {
+            return [];
+        }
         $medical = empty($medical) ? $medical : $medical->toArray();
         $examWhere = [];
         $inspectWhere = [];
@@ -799,30 +804,36 @@ class PatientServies
         {
             $recog = '0';
             $lab = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
-            $inspect[$k]['INSPECT_REPORT_ITEMS'] = $lab;
             unset($inspect[$k]['INSPECT_REPORT_CODE']);
+
+
             if($hr == 1)
             {
-                if($v['RECOG_STATUS'] == '*')
+                $labArr = [];
+                foreach ($lab as $value)
                 {
-                    $inspectArr[] = $inspect[$k];
-                    continue;
-                }else{
-                    foreach ($lab as $value)
-                    {
-                        if($value['RECOG_STATUS'] == '*')
-                        {
-                            $recog = '1';
-                        }
-                    }
-                    if($recog == '0')
+                    if($value['RECOG_STATUS'] == '*')
                     {
-                        unset($inspect[$k]);
-                        continue;
+                        $recog = '1';
+                        $labArr[] = $value;
                     }
                 }
+                if($recog == '0')
+                {
+                    continue;
+                }
+                $inspect[$k]['INSPECT_REPORT_ITEMS'] = $labArr;
+                $inspectArr[] = $inspect[$k];
+            }else{
+                $inspect[$k]['INSPECT_REPORT_ITEMS'] = $lab;
                 $inspectArr[] = $inspect[$k];
             }
+
+
+        }
+        if(empty($exam) && empty($inspectArr))
+        {
+            return [];
         }
         $data = [
             'PATIENT'=>$patient,
@@ -873,7 +884,7 @@ class PatientServies
 
     public function checkPostExamReport($params): array {
 
-        $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION']);
+        $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION'],$params['MEDICAL_INFORMATION']['HOS_EMPI']);
         $MEDICAL_INFORMATION = $this->commonServies->handleMEDICAL_INFORMATION($params['MEDICAL_INFORMATION'], $PATIENT);
 
         $EXAM = $this->commonServies->handleEXAM($params['EXAM_REPORTS'], $MEDICAL_INFORMATION);
@@ -897,7 +908,7 @@ class PatientServies
 
     public function checkPostLisReport($params): array {
 
-        $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION']);
+        $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION'],$params['INSPECT_REPORTS']['REPORTID']);
         $MEDICAL_INFORMATION = $this->commonServies->handleMEDICAL_INFORMATION($params['MEDICAL_INFORMATION'], $PATIENT);
 
         $reportModel = $this->commonServies->handleINSPECT_REPORTS($params, $MEDICAL_INFORMATION);
@@ -954,6 +965,10 @@ class PatientServies
     public function postExamReport($params): string
     {
         $hosEmpi = $params['MEDICAL_INFORMATION']['HOS_EMPI'] ?? '';
+        if($params['MEDICAL_INFORMATION']['ORGCODE'] == '121403004061412685')
+        {
+            Log::record('阳泉一院的检验报告信息参数'.json_encode($params));
+        }
         if(!empty($hosEmpi))
         {
             $hosEmpi = explode(';',$hosEmpi);
@@ -968,7 +983,13 @@ class PatientServies
                     return '';
                 }
                 $EXAM_REPORTS = $this->makeExamData($params['EXAM_REPORTS']);
+//                Log::record('检查报告的hosempi为'.$v);
+//                Log::record('患者code为'.$information['PATIENT_CODE']);
                 $report = $this->patientModel->getExamReport(['PATIENT_CODE'=>$information['PATIENT_CODE'],'HOS_EMPI'=>$v],'*');
+                if(empty($report))
+                {
+                    return '';
+                }
                 $report->save($EXAM_REPORTS);
             }
         }
@@ -996,7 +1017,7 @@ class PatientServies
         $EXAM_REPORTS_INSERT = [];
         foreach ($EXAM_REPORTS as $k=>$v)
         {
-            $report = $this->patientModel->getExamReport(['EXAM_REPORT_CODE'=>$v['EXAM_REPORT_CODE'],'HOS_EMPI'=>$v['HOS_EMPI']],'*');
+            $report = $this->patientModel->getExamReport(['EXAM_REPORT_CODE'=>$v['EXAM_REPORT_CODE']],'*');
             if(!empty($report))
             {
                 $this->patientModel->saveRepeatReport($report);