file('file'); // 移动到框架应用根目录/public/uploads/ 目录下 if($file){ $info = $file->move(ROOT_PATH . 'public' . DS . 'dcm'); if($info){ // 成功上传后 获取上传信息 $path = 'public' . DS . 'dcm'.DS.$info->getSaveName(); $info = DicomPaser::paser(ROOT_PATH . $path); foreach($info as $k=>$v){ $info[$k] = trim($v); } $patient = $this->insertPatient($info); $exam = $this->insertExam($info,$patient); $series = $this->insertSeries($info,$exam); $image = $this->insertImages($info,$series,$path,$patient); return json_encode(['status'=>'success','code'=>'0000']); }else{ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$file->getError()]); } }else{ return json_encode(['status'=>'fail','code'=>'2000','msg'=>'不存在上传的文件']); } }catch(Exception $e){ return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]); } } public function insertPatient($info) { $where = [ 'institution_id'=>$info['institutionCode'], 'temp_patient_id'=>$info['patientId'] ]; $patient = Db::table('patient_infps')->where($where)->find(); if($patient){ return $patient; }else{ $data = [ 'id'=>UUIDs::uuid16(), 'name'=>$info['patientName'], 'sex'=>$info['patientSex'], 'age'=>$info['patientAge'], 'birthday'=>$info['birthDate'], 'createdAt'=>date('Y-m-d H:i:s'), 'temp_patient_id'=>$info['patientId'], 'institution_id'=>$info['institutionCode'], ]; DB::table('patient_infos')->insert($data); return $data; } } public function insertExam($info,$patient) { $where = [ 'patient_num'=>$info['patientId'], 'study_id'=>$info['studyId'] ]; $exam = DB::table('exams')->where($where)->find(); if($exam){ return $exam; }else{ $data = [ 'id'=>UUIDs::uuid16(), 'patient_id'=>$patient['id'], 'institution_id'=>$info['institutionCode'], 'patient_num'=>$info['patientId'], 'accession_num'=>$info['accessionNumber'], 'exam_datetime'=>$info['studyDate'], 'exam_class'=>$info['modality'], 'study_id'=>$info['studyId'], 'study_uid'=>$info['studyUid'], 'illness_desc'=>$info['studyDescription'], 'createdAt'=>date('Y-m-d H:i:s'), ]; DB::table('exams')->insert($data); return $data; } } public function insertStudy($info,$patient) { $where = [ 'patient_id'=>$patient['id'], 'studyuid'=>$info['studyUid'] ]; $study = DB::table('studies')->where($where)->find(); if($study){ return $study; }else{ $data = [ 'id'=>UUIDs::uuid16(), 'studyuid'=>$info['studyUid'], 'patient_id'=>$patient['id'], 'studyid'=>$info['studyId'], 'accession_num'=>$info['accessionNumber'], 'studydate'=>$info['studyDate'], 'ctime'=>date('Y-m-d H:i:s'), 'modality'=>$info['modality'], 'patient_age'=>$info['patientAge'], 'institution_name'=>$info['institutionName'], 'institution_id'=>$info['institutionCode'], 'createdAt'=>date('Y-m-d H:i:s'), ]; DB::table('studies')->insert($data); return $data; } } public function insertSeries($info,$exam) { $where = [ 'study_id'=>$info['studyId'], 'seriesuid'=>$info['seriesUid'] ]; $series = DB::table('series')->where($where)->find(); if($series){ return $series; }else{ $data = [ 'id'=>UUIDs::uuid16(), 'study_id'=>$info['studyId'], 'seriesuid'=>$info['seriesUid'], 'series_num'=>$info['seriesNumber'], 'modality'=>$info['modality'], 'description'=>$info['seriesDescription'], 'createdAt'=>date('Y-m-d H:i:s'), ]; DB::table('series')->insert($data); return $data; } } public function insertImages($info,$series,$path,$patient) { $where = ['image_id'=>$info['imageId']]; $image = DB::table('images')->where($where)->find(); if($image){ return $image; }else{ $data = [ 'id'=>UUIDs::uuid16(), 'series_id'=>$series['id'], 'image_id'=>$info['imageId'], 'sop_uid'=>$info['SOPInstanceUID'], 'image_number'=>$info['imageNumber'], 'owner'=>$patient['id'], 'window_width'=>$info['windowWidth'], 'windo_center'=>$info['windowCenter'], 'rows'=>$info['rows'], 'columns'=>$info['columns'], 'pixe_spacing'=>$info['pixelSpacing'], 'image_position'=>$info['imagePosition'], 'image_orientation'=>$info['imageOrientation'], 'createdAt'=>date('Y-m-d H:i:s'), 'institution_id'=>$info['institutionCode'], 'local_url'=>ROOT_PATH . $path, 'remote_url'=>DS.$path, 'frame'=>$info['numberOfFrames'], ]; DB::table('images')->insert($data); return $data; } } }