|
@@ -137,42 +137,51 @@ class Dcquery extends Controller
|
|
$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_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();
|
|
$series = array();
|
|
$error = 1;
|
|
$error = 1;
|
|
|
|
+ $ids = array();
|
|
foreach($series_list as $k=>$v){
|
|
foreach($series_list as $k=>$v){
|
|
- // image_number排序
|
|
|
|
- $image = DB::table('images')->where('series_id',$v['id'])->field('cineRate,remote_url,local_url,status,columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,metadata,url')->order('image_number asc')->select();
|
|
|
|
- if(empty($image)){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- $error = 2;
|
|
|
|
- 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'];
|
|
|
|
|
|
+ $ids[] = $v['id'];
|
|
}
|
|
}
|
|
- if($error == 1){
|
|
|
|
- throw new \think\Exception('series列表为空');
|
|
|
|
|
|
+ $images_list = DB::table('images')->where('series_id','in',$ids)->select();
|
|
|
|
+ if(empty($images_list)){
|
|
|
|
+ throw new \think\Exception('series列表中影像为空');
|
|
}
|
|
}
|
|
|
|
+ $series = $this->testHandleSeires($series_list , $images_list , $url);
|
|
|
|
+// foreach($series_list as $k=>$v){
|
|
|
|
+// // image_number排序
|
|
|
|
+// $image = DB::table('images')->where('series_id',$v['id'])->field('cineRate,remote_url,local_url,status,columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,metadata,url')->order('image_number asc')->select();
|
|
|
|
+// if(empty($image)){
|
|
|
|
+// continue;
|
|
|
|
+// }
|
|
|
|
+// $error = 2;
|
|
|
|
+// /*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'];
|
|
|
|
+// }
|
|
|
|
+// if($error == 1){
|
|
|
|
+// throw new \think\Exception('series列表为空');
|
|
|
|
+// }
|
|
$info['seriesList'] = $series;
|
|
$info['seriesList'] = $series;
|
|
$return = array();
|
|
$return = array();
|
|
$return['transactionId'] = $study_info['studyuid'];
|
|
$return['transactionId'] = $study_info['studyuid'];
|
|
@@ -346,4 +355,47 @@ class Dcquery extends Controller
|
|
return $dicurl;
|
|
return $dicurl;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ public function testHandleSeires($series_list , $images_list , $url) {
|
|
|
|
+ $series = array();
|
|
|
|
+ $seriesIndexMap = array();
|
|
|
|
+ foreach($series_list as $k => $v) {
|
|
|
|
+ $series[$k] = $this->generateSerie($v);
|
|
|
|
+ $seriesIndexMap[$v['id']] = $k;
|
|
|
|
+ }
|
|
|
|
+ foreach($images_list as $image) {
|
|
|
|
+ $series[$seriesIndexMap[$image['series_id']]]['instances'][] = $this->generateImage1($image, $this->generateUrl($image['url'], $url, $image['remote_url'], $image['local_url'], $image['status'], $image['metadata']));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function generateSerie($serie) {
|
|
|
|
+ return [
|
|
|
|
+ 'instances' => array(),
|
|
|
|
+ 'seriesInstanceUid' => $serie['seriesuid'],
|
|
|
|
+ 'seriesDescription' => $serie['description'],
|
|
|
|
+ 'seriesNumber' => $serie['series_num']
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function generateImage1($image,$url,$frameIndex = -1) {
|
|
|
|
+ $image_url = $url;
|
|
|
|
+ $imageNumber = $image['instanceNumber'];
|
|
|
|
+ if($frameIndex !== -1) {
|
|
|
|
+ $image_url = $url.'?frame='.$frameIndex;
|
|
|
|
+ $imageNumber = $frameIndex + 1;
|
|
|
|
+ }
|
|
|
|
+ return [
|
|
|
|
+ 'remote_url' => $image['remote_url'],
|
|
|
|
+ 'local_url' => $image['local_url'],
|
|
|
|
+ 'status' => $image['status'],
|
|
|
|
+ 'columns' => $image['columns'],
|
|
|
|
+ 'rows' => $image['rows'],
|
|
|
|
+ 'instanceNumber' => $imageNumber,
|
|
|
|
+ 'imageNumber' => $imageNumber,
|
|
|
|
+ 'sopInstanceUid' => $image['sopInstanceUid'],
|
|
|
|
+ 'metadata' => $image['metadata'],
|
|
|
|
+ 'url' => $image_url,
|
|
|
|
+ 'frame' => $image['frame'],
|
|
|
|
+ 'frameIndex' => $frameIndex,
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
}
|
|
}
|