Prechádzať zdrojové kódy

修改代码 测试调整

fuyu 6 rokov pred
rodič
commit
58896723bb
1 zmenil súbory, kde vykonal 110 pridanie a 31 odobranie
  1. 110 31
      application/inter/controller/Dcquery.php

+ 110 - 31
application/inter/controller/Dcquery.php

@@ -132,38 +132,41 @@ class Dcquery extends Controller
         $institution = DB::table('institution')->where('id',$patient_info['institution_id'])->field('name')->find();
         $info['patientName'] = $patient_info['name'];
         // 根据series_num排序
-        $series_list = DB::table('series')->where('study_id',$study_info['id'])->where('modality','not in','PR,SR')->field('id,series_num,seriesuid,description')->order('series_num asc')->select();
-        $series = array();
-        foreach($series_list as $k=>$v){
-            // image_number排序
-            $image = DB::table('images')->where('series_id',$v['id'])->field('remote_url,local_url,status,columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,metadata,url,frame')->order('image_number asc')->select();
-            foreach($image as $key=>$value){
-                /*if(empty($url)){
-                    if(substr($value['metadata'], 0, strlen('group')) === 'group'){
-                        $image[$key]['url'] = "dicomweb://dcm.pacsonline.cn/".$value['metadata'];
-                    }else{
-                        $image[$key]['url'] = "dicomweb://static.dcm.pacsonline.cn/".$value['metadata'];
-                    }
-                }else{
-                    $image[$key]['url'] = $url.$value['metadata'];
-                }*/
-                $imageUrl = $this->generateUrl($value['url'],$url,$value['remote_url'],$value['local_url'],$value['status'],$value['metadata']);
-                if(!$imageUrl){
-                    $file = ROOT_PATH . 'public' . DS . 'get_studiesinfo/'.date('Ymd').'-fail.log';
-                    $log = 'url错误,传值为--'.$url;
-                    file_put_contents($file, $log,FILE_APPEND);
-                    continue;
-                }
-                $image[$key]['url'] = $imageUrl;
-                $image[$key]['imageNumber'] = $value['instanceNumber'];
+        // $series_list = DB::table('series')->where('study_id',$study_info['id'])->where('modality','not in','PR,SR')->field('id,series_num,seriesuid,description')->order('series_num asc')->select();
+        // $series = array();
+        // foreach($series_list as $k=>$v){
+        //     // image_number排序
+        //     $image = DB::table('images')->where('series_id',$v['id'])->field('remote_url,local_url,status,columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,metadata,url,frame')->order('image_number asc')->select();
+        //     foreach($image as $key=>$value){
+        //         /*if(empty($url)){
+        //             if(substr($value['metadata'], 0, strlen('group')) === 'group'){
+        //                 $image[$key]['url'] = "dicomweb://dcm.pacsonline.cn/".$value['metadata'];
+        //             }else{
+        //                 $image[$key]['url'] = "dicomweb://static.dcm.pacsonline.cn/".$value['metadata'];
+        //             }
+        //         }else{
+        //             $image[$key]['url'] = $url.$value['metadata'];
+        //         }*/
+        //         $imageUrl = $this->generateUrl($value['url'],$url,$value['remote_url'],$value['local_url'],$value['status'],$value['metadata']);
+        //         if(!$imageUrl){
+        //             $file = ROOT_PATH . 'public' . DS . 'get_studiesinfo/'.date('Ymd').'-fail.log';
+        //             $log = 'url错误,传值为--'.$url;
+        //             file_put_contents($file, $log,FILE_APPEND);
+        //             continue;
+        //         }
+        //         $image[$key]['url'] = $imageUrl;
+        //         $image[$key]['imageNumber'] = $value['instanceNumber'];
+
+        //     }
+        //     $series[$k]['instances'] = $image;
+        //     $series[$k]['seriesInstanceUid'] = $v['seriesuid'];
+        //     $series[$k]['seriesDescription'] = $v['description'];
+        //     $series[$k]['seriesNumber'] = $v['series_num'];
+        // }
+        // $info['seriesList'] = $series;
+
+        $info['seriesList'] = $this->generateSeries($study_id, $url);
 
-            }
-            $series[$k]['instances'] = $image;
-            $series[$k]['seriesInstanceUid'] = $v['seriesuid'];
-            $series[$k]['seriesDescription'] = $v['description'];
-            $series[$k]['seriesNumber'] = $v['series_num'];
-        }
-        $info['seriesList'] = $series;
         $return  = array();
         $return['transactionId'] = $study_info['studyuid'];
         if(!empty($patient_info['age'])){
@@ -183,6 +186,82 @@ class Dcquery extends Controller
         $return['studies'][] = $info;
         return json_encode($return);
     }
+
+
+    public function generateSeries($study_id, $url) {
+        $series = array();
+        $series_list = DB::table('series')->where('study_id',$study_id)->where('modality','not in','PR,SR')->field('id,series_num,seriesuid,description')->order('series_num asc')->select();
+        $seriesIndex = 0;
+        $series = array();
+        while($seriesIndex < siezof($series_list)) {
+            $series = array_merge($series, $this->generateSeriesArray($series_list[$seriesIndex], $url));
+            $seriesIndex++;
+        }
+        return $$series;
+    }
+
+    public function generateSeriesSingle($serie, $url) {
+        $images_list = DB::table('images')->where('series_id',$serie['id'])->field('remote_url,local_url,status,columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,metadata,url,frame')->order('image_number asc')->select();
+        $series = array();
+        $images = array();
+        $seriesCount = 0;
+        $imagesIndex = 0;
+        while($imagesIndex < sizeof($images_list)) {
+            $image = $images_list[$imagesIndex];
+            $imageUrl = $this->generateUrl($image['url'], $url, $image['remote_url'], $image['local_url'], $image['status'], $image['metadata']);
+            $frame = $image['frame'];
+            if($frame === 0) {
+                $images.push($this->generateImage($image, $imageUrl));
+            } else {
+                if(sizeof($images) != 0) {
+                    $series.push([
+                            'instances' => $images,
+                            'seriesInstanceUid' => $serie['seriesuid'],
+                            'seriesDescription' => $serie['description'],
+                            'seriesNumber' => $serie['series_num'].'-'.$seriesCount
+                        ]);
+                    $seriesCount++;
+                    $images = array();
+                }
+                $frameIndex = 0;
+                while($frameIndex < $frame) {
+                    $images.push($this->generateImage($image, $imageUrl, $frameIndex));
+                    $frameIndex++;
+                }
+                $series.push([
+                    'instances' => $images,
+                    'seriesInstanceUid' => $serie['seriesuid'],
+                    'seriesDescription' => $serie['description'],
+                    'seriesNumber' => $serie['series_num'].'-'.$seriesCount
+                ]);
+                $seriesCount++;
+                $images = array();
+            }
+            $imagesIndex++;
+        }
+        return $series;
+    }
+
+    public function generateImage($image,$url,$frameIndex = -1) {
+        if($frameIndex !== -1)
+            $url = $url.'?frame='.$frameIndex;
+        return [
+            'remote_url' => $image['remote_url'],
+            'local_url' => $image['local_url'],
+            'status' => $image['status'],
+            'columns' => $image['columns'],
+            'rows' => $image['rows'],
+            'instanceNumber' => $image['instanceNumber'],
+            'imageNumber' => $image['instanceNumber'],
+            'sopInstanceUid' => $image['sopInstanceUid'],
+            'metadata' => $image['metadata'],
+            'url' => $url,
+            'frame' => $image['frame'],
+            'frameIndex' => $frameIndex,
+        ];
+    }
+
+
     public function generateUrl($url, $address, $remote_url, $local_url, $status, $metadata) {
         if(empty($address)) {
             return self::generateNormalUrl($url);