Dcom.php 4.8 KB

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