Dcom.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace app\inter\controller;
  3. use app\common\library\DicomPaser;
  4. use app\common\library\UUIDs;
  5. use think\Controller;
  6. class Dcom extends Controller //Base
  7. {
  8. public function upload_file()
  9. {
  10. var_dump(1);die;
  11. // try{
  12. // 获取表单上传文件 例如上传了001.jpg
  13. $file = request()->file('dcm');
  14. // 移动到框架应用根目录/public/uploads/ 目录下
  15. if($file){
  16. $info = $file->move(ROOT_PATH . 'public' . DS . 'dcm');
  17. if($info){
  18. // 成功上传后 获取上传信息
  19. $path = 'public' . DS . 'uploads'.DS.$info->getSaveName();
  20. $info = DicomPaser::paser(ROOT_PATH . $path);
  21. foreach($info as $k=>$v){
  22. $info[$k] = trim($v);
  23. }
  24. var_dump($info);die;
  25. // $hz_bh = $this->service->insert_hz($info);
  26. $patient = $this->insertPatient($info);
  27. // $jc_bh = $this->service->insert_jc($info,$hz_bh);
  28. $exam = $this->insertExam($info,$patient);
  29. // $xl_bh = $this->service->insert_xl($info,$jc_bh);
  30. $series = $this->insertSeries($info,$exam);
  31. // $return = $this->service->insert_tp($info,$xl_bh,$path);
  32. $image = $this->insertImages($info,$series,$path,$path);
  33. // return ServerResponse::getSuccess('success',$return);
  34. }else{
  35. return json_encode(['status'=>'fail','code'=>'2000','msg'=>$file->getError()]);
  36. }
  37. }else{
  38. return json_encode(['status'=>'fail','code'=>'2000','msg'=>'不存在上传的文件']);
  39. }
  40. // }catch(Exception $e){
  41. // return json_encode(['status'=>'fail','code'=>'2000','msg'=>$e->getMessage()]);
  42. // }
  43. }
  44. public function insertPatient($info)
  45. {
  46. $data = [
  47. 'id'=>UUIDs::uuid16(),
  48. 'name'=>$info['patientName'],
  49. 'sex'=>$info['patientSex'],
  50. 'age'=>$info['patientAge'],
  51. 'birthday'=>$info['birthDate'],
  52. 'createdAt'=>date('Y-m-d H:i:s'),
  53. 'temp_patient_id'=>$info['patientId'],
  54. 'institution_id'=>$info['institutionCode'],
  55. ];
  56. DB::table('patient_infos')->insert($data);
  57. return $data;
  58. }
  59. public function insertExam($info,$patient)
  60. {
  61. $data = [
  62. 'id'=>UUIDs::uuid16(),
  63. 'patient_id'=>$patient['id'],
  64. 'institution_id'=>$info['institutionCode'],
  65. 'patient_num'=>$info['patientId'],
  66. 'accession_num'=>$info['accessionNumber'],
  67. 'exam_datetime'=>$info['studyDate'],
  68. 'exam_class'=>$info['modality'],
  69. 'study_id'=>$info['studyId'],
  70. 'study_uid'=>$info['studyUid'],
  71. 'illness_desc'=>$info['studyDescription'],
  72. 'createdAt'=>date('Y-m-d H:i:s'),
  73. ];
  74. DB::table('exams')->insert($data);
  75. return $data;
  76. }
  77. public function insertSeries($info,$exam)
  78. {
  79. $data = [
  80. 'id'=>UUIDs::uuid16(),
  81. 'study_id'=>$info['studyId'],
  82. 'seriesuid'=>$info['seriesuid'],
  83. 'series_num'=>$info['seriesNumber'],
  84. 'modality'=>$info['modality'],
  85. 'description'=>$info['seriesDescription'],
  86. 'createdAt'=>date('Y-m-d H:i:s'),
  87. ];
  88. DB::table('series')->insert($data);
  89. return $data;
  90. }
  91. public function insertImages($info,$series,$path,$patient)
  92. {
  93. $data = [
  94. 'id'=>UUIDs::uuid16(),
  95. 'series_id'=>$series['id'],
  96. 'image_id'=>$info['imageId'],
  97. 'sop_uid'=>$info['SOPInstanceUID'],
  98. 'image_number'=>$info['imageNumber'],
  99. 'owner'=>$patient['id'],
  100. 'window_width'=>$info['windowWidth'],
  101. 'windo_center'=>$info['windowCenter'],
  102. 'rows'=>$info['rows'],
  103. 'columns'=>$info['columns'],
  104. 'pixe_spacing'=>$info['pixelSpacing'],
  105. 'image_position'=>$info['imagePosition'],
  106. 'image_orientation'=>$info['imageOrientation'],
  107. 'createdAt'=>date('Y-m-d H:i:s'),
  108. 'institution_id'=>$info['institutionCode'],
  109. 'local_url'=>ROOT_PATH . $path,
  110. 'remote_url'=>DS.$path,
  111. 'frame'=>$info['numberOfFrames'],
  112. ];
  113. DB::table('images')->insert($data);
  114. return $data;
  115. }
  116. }