|
@@ -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);
|