param(); if(!empty($params["studyid"]) && !empty($params["pid"])){ // $whereArr=array(); $whereArr["id"]=$params["studyid"]; $whereArr["patient_id"]=$params["pid"]; $study=Db::table("studies")->where($whereArr)->field("id,studyuid")->find(); if(empty($study)){ // 没有找到片子 echo "empty!"; return; }else{ // 找到了片子,再去查询图像 // 先找series $data=array(); $studyListData=array(); $studyData=array(); $studyData["transactionId"]=$study["studyuid"]; $studyData["patientName"]="userName"; $series=Db::table("series")->where("study_id",$study["id"])->field("id,seriesuid,description")->select(); if(count($series)>0){ $seriesListData=array(); foreach($series as $key=>$val){ $seriesData=array(); $seriesData["seriesInstanceUid"]=$val["seriesuid"]; $seriesData["seriesDescription"]=$val["description"]; $imgs=Db::table("images")->where("series_id",$val["id"])->field("id,columns,image_number,rows,sop_uid,url,metadata")->select(); $imgsListData=array(); foreach($imgs as $ikey=>$ival){ $imgsData=array(); $imgsData["columns"]=$ival["columns"]; $imgsData["instanceNumber"]=$ival["image_number"]; $imgsData["rows"]=$ival["rows"]; $imgsData["sopInstanceUid"]=$ival["sop_uid"]; $imgsData["url"]="dicomweb://dcm.pacsonline.cn/" . $ival["metadata"]; array_push($imgsListData, $imgsData); } $seriesData["instances"]=$imgsListData; array_push($seriesListData, $seriesData); } $studyData["seriesList"]=$seriesListData; } array_push($studyListData, $studyData); } $data["transactionId"]=$study["studyuid"]; $data["studies"]=$studyListData; echo json_encode($data); }else{ echo "error param!"; } } public function get_studyinfo(){ $study_id = $_REQUEST['study_id']; $info = array(); $study_info = DB::table('studies')->where('id',$study_id)->field('studyuid,patient_id')->find(); $info['transactionId'] = $study_info['studyuid']; $patient_info = DB::table('patient_infos')->where('id',$study_info['patient_id'])->field('name')->find(); $info['patientName'] = $patient_info['name']; $series_list = DB::table('series')->where('study_id',$study_id)->field('id,seriesuid,description')->select(); $series = array(); foreach($series_list as $k=>$v){ $image = DB::table('images')->where('series_id',$v['id'])->field('columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,url')->select(); foreach($image as $key=>$value){ $image[$key]['url'] = 'http://dcm.pacsonline.cn/'.$value['url']; } $series[$k]['instances'] = $image; $series[$k]['seriesInstanceUid'] = $v['seriesuid']; $series[$k]['seriesDescription'] = $v['description']; } $info['seriesList'] = $series; return json_encode($info); } /** * 影像信息 * * @ApiTitle (影像信息) * @ApiSummary (影像信息) * @ApiSector (远程诊断) * @ApiMethod (POST) * @ApiRoute (/inter/dcquery/get_studiesinfo) * @ApiHeaders (name="sign", type="string", required=true, description="请求头-校验key") * @ApiHeaders (name="nonce", type="string", required=true, description="请求头-随机数") * @ApiHeaders (name="timestamp", type=string, required=true, description="请求头-时间戳s") * @ApiParams (name="sessionid", type="string", required=true, description="参数json字符串") * @ApiParams (name="study_id", type="string", sample="", description="studies表id值<必填>") * @ApiParams (name="address", type="string", sample="", description="影像地址<必填>") * @ApiReturnParams (name="info", type="object", sample="{}", description="返回的数据信息") * @ApiReturn (data=" { 'info': '' } *") **/ public function get_studiesinfo(){ $study_id = $_REQUEST['study_id']; if(isset($_REQUEST['address']) && !empty($_REQUEST['address'])){ $url = $_REQUEST['address']; }else{ $url = 'dcm.pacsonline.cn'; } $info = array(); $study_info = DB::table('studies')->where('id',$study_id)->field('studyuid,studyid,patient_id')->find(); $info['studyInstanceUid'] = $study_info['studyuid']; $patient_info = DB::table('patient_infos')->where('id',$study_info['patient_id'])->field('birthday,institution_id,temp_patient_id,name,age,sex')->find(); $date = DB::table('exams')->where('patient_id',$study_info['patient_id'])->field('exam_datetime')->find(); $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_id)->where('modality','not in','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('columns,image_number as instanceNumber,rows,image_id as sopInstanceUid,url')->order('image_number asc')->select(); foreach($image as $key=>$value){ $image[$key]['url'] = 'dicomweb://'.$url. '/'.$value['url']; $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; $return = array(); $return['transactionId'] = $study_info['studyuid']; if(!empty($patient_info['age'])){ $info['patientAge'] = $patient_info['age']; }elseif(!empty($patient_info['birthday'])){ $time = date('Ymd',time()); $age = floor(($time - $patient_info['birthday'])/10000); $info['patientAge'] = $age; }else{ $info['patientAge'] = ''; } $info['patientSex'] = $patient_info['sex']; $info['studyDate'] = $date['exam_datetime']; $info['studyid'] = $study_info['studyid']; $info['patientId'] = $patient_info['temp_patient_id']; $info['institution'] = $institution['name']; $return['studies'][] = $info; return json_encode($return); } }