Patient.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. <?php
  2. namespace app\zskk\model;
  3. use app\admin\model\dict\Commondata;
  4. use app\admin\model\dict\Labitem;
  5. use app\common\model\ZskkModel;
  6. use think\db\exception\DataNotFoundException;
  7. use think\db\exception\DbException;
  8. use think\db\exception\ModelNotFoundException;
  9. /**
  10. * ZskkTest模型
  11. * @property int $id ID
  12. * @property string $a 测试参数a
  13. * @property string $b 测试参数b
  14. * @property string $c 测试参数c
  15. */
  16. class Patient extends ZskkModel
  17. {
  18. protected array $encrypts = ['ID_CARDNUM','NAME','INSUR_CARD_NO'];
  19. protected array $blurs = ['ID_CARDNUM','NAME','INSUR_CARD_NO'];
  20. protected array $blur_funs = [
  21. 'NAME' => 'blur1',
  22. 'ID_CARDNUM' => 'blur2',
  23. 'INSUR_CARD_NO' => 'blur3'
  24. ];
  25. protected array $decrypts = ['ID_CARDNUM','NAME','INSUR_CARD_NO','PATIENTNAME','CARDNUM'];
  26. public function saveMpi($mpi,$idCard,$mpiKey)
  27. {
  28. (new Mpi())->save(['MPI'=>$mpi,'ID_CARDNUM'=>$idCard,'MPI_KEY'=>$mpiKey]);
  29. }
  30. public function getPatientsByID_CARDNUM($ID_CARDNUM)
  31. {
  32. return (new Patient())->where('ID_CARDNUM', $ID_CARDNUM)->field(['NAME','ID_CARD_CODE','ID_CARDNUM','GENDER_CODE','BIRTH_DATE','PATIENT_CODE'])->select();
  33. }
  34. /**
  35. * @throws DataNotFoundException
  36. * @throws \think\exception\DbException
  37. * @throws ModelNotFoundException
  38. * @throws DbException
  39. */
  40. public function getMpi($idCard)
  41. {
  42. return (new Mpi())->where('ID_CARDNUM',$idCard)->find();
  43. }
  44. /**
  45. * @throws DataNotFoundException
  46. * @throws \think\exception\DbException
  47. * @throws ModelNotFoundException
  48. * @throws DbException
  49. */
  50. public function getMpiData($where)
  51. {
  52. return (new Mpi())->where($where)->find();
  53. }
  54. public function saveMedical($data):void
  55. {
  56. $MedicalInformation = new MedicalInformation;
  57. $MedicalInformation->save($data);
  58. }
  59. /**
  60. * @throws \Exception
  61. */
  62. public function saveDiagnose($data):void
  63. {
  64. $diagnose = new Diagnose();
  65. $diagnose->saveAll($data);
  66. }
  67. /**
  68. * @throws \Exception
  69. */
  70. public function saveApplication($data):void
  71. {
  72. $ExamApplication = new ExamApplication;
  73. $ExamApplication->saveAll($data);
  74. }
  75. /**
  76. * @throws \Exception
  77. */
  78. public function saveOrders($data):void
  79. {
  80. $MedicalOrders = new MedicalOrders;
  81. $MedicalOrders->saveAll($data);
  82. }
  83. /**
  84. * @throws \Exception
  85. */
  86. public function saveExamReport($data):void
  87. {
  88. $ExamReport = new ExamReport;
  89. $ExamReport->saveAll($data);
  90. }
  91. /**
  92. * @throws \Exception
  93. */
  94. public function saveInspectReport($data):void
  95. {
  96. $InspectReport = new InspectReport;
  97. $InspectReport->saveAll($data);
  98. }
  99. /**
  100. * @throws \Exception
  101. */
  102. public function saveLabData($data):void
  103. {
  104. $LabData = new LabData;
  105. $LabData->saveAll($data);
  106. }
  107. public function saveBiInspect($data): void
  108. {
  109. $biInspect = new BiInspectReport();
  110. $biInspect->saveAll($data);
  111. }
  112. /**
  113. * @throws \Exception
  114. */
  115. public function saveLabDataOrganism($data):void
  116. {
  117. $LabData = new LabDataOrganism;
  118. $LabData->saveAll($data);
  119. }
  120. /**
  121. * @throws ModelNotFoundException
  122. * @throws DbException
  123. * @throws DataNotFoundException
  124. */
  125. public function getMapping($where):array
  126. {
  127. return (new Mapping)->where($where)->select()->toArray();
  128. }
  129. /**
  130. * @throws ModelNotFoundException
  131. * @throws DbException
  132. * @throws DataNotFoundException
  133. */
  134. public function getAllMapping($where=[]):array
  135. {
  136. return (new Mapping)->where($where)->select()->toArray();
  137. }
  138. /**
  139. * @throws ModelNotFoundException
  140. * @throws DataNotFoundException
  141. * @throws DbException
  142. */
  143. public function getPatient($where,$field =['NAME', 'MPI','MPI_KEY', 'GENDER', 'ID_CARD', 'ID_CARD_CODE','ID_CARDNUM','GENDER_CODE','BIRTH_DATE','PATIENT_CODE','NAME AS PATIENTNAME','ID_CARDNUM AS CARDNUM'] )
  144. {
  145. return (new Patient())->where($where)->field($field)->find();
  146. }
  147. public function getMedical($patientCode,$medicalWhere=[],$field=['SERIESNUM','CLASS_CODE', 'CLASS', 'ENCOUNTER_CARD_NO', 'RECORD_CODE', 'HOS_EMPI', 'NAME', 'ENCOUNTER_DATE', 'DEPTNAME', 'CHIEFCOMPLAINT', 'ORGCODE', 'ORGNAME', 'AGE', 'GENDER', 'GENDER_CODE', 'DIAGNOSECODE', 'DIAGNOSENAME','DOCTORNAME','DOCTORCODE'])
  148. {
  149. return (new MedicalInformation())->where('PATIENT_CODE',$patientCode)->where($medicalWhere)->field($field)->find();
  150. }
  151. public function getDiagnoses($patientCode)
  152. {
  153. return (new Diagnose())->where('PATIENT_CODE',$patientCode)->field(['DIAGNOSECODE','DIAGNOSENAME'])->select()->toArray();
  154. }
  155. public function getApplication($patientCode)
  156. {
  157. return (new ExamApplication())->where('PATIENT_CODE',$patientCode)->field(['EXAM_APPLICATION_CODE','REQUESTID','NAME','SERIESNUM','DEVICETYPE','DEVICETYPE_CODE','EXAM_ITEMNAME','EXAM_ITEMNAME_CODE','BODYSITE_CATEG','BODYSITE_CATEG_CODE','BODYSITE','EXAM_METHOD','ORGCODE','ORGNAME','DEPTNAME','PRACTITIONERNAME','REQUESTTIME','GENDER','GENDER_CODE','AGE'])->select()->toArray();
  158. }
  159. public function getOrders($patientCode)
  160. {
  161. return (new MedicalOrders())->where('PATIENT_CODE',$patientCode)->field(['MEDICAL_ORDER_CODE','ORDERID','NAME','SERIESNUM','LAB_ITEMNAME','LAB_ITEMNAME_CODE','SPECIMEN_TYPE','SPECIMEN_NUM','SPECIMEN_STATUS','SPECIMEN_COLLETIME','SPECIMEN_RECEITIME','ORGCODE','ORGNAME','DEPTNAME','PRACTITIONERNAME','REQUESTTIME','REPORTSTATUS','REPORTSTATUS_CODE','GENDER','GENDER_CODE','AGE'])->select()->toArray();
  162. }
  163. public function getExam($patientCode,$where=[])
  164. {
  165. // return (new ExamReport())->where('PATIENT_CODE',$patientCode)->field(['NAME','SERIESNUM', 'EXAM_REQUESTID', 'REPORTID', 'EXAM_ITEMNAME', 'BODYSITE_CATEG', 'BODYSITE_CATEG_CODE', 'BODYSITE', 'OBSERVATIONS_COMMENT', 'OBSERVATIONS_RESULT', 'BODYSITE_CATEG_CODE', 'BODYSITE', 'OBSERVATIONS_COMMENT', 'OBSERVATIONS_RESULT', 'IMAGES', 'DICOM_INDEXID', 'DICOM_INDEXID', 'OBSERVATIONS_COMMENT', 'OBSERVATIONS_RESULT', 'IMAGES', 'DICOM_INDEXID', 'EXAM_ITEMNAME','EXAM_APPLICATION_CODE','STUDYTIME','EXAM_ITEMNAME_CODE','EXAM_REPORT_CODE','PRACTITIONERNAME'])->select()->toArray();
  166. return (new ExamReport())->where('PATIENT_CODE',$patientCode)->where($where)->field(['REQUESTID','REPORTID','DEVICETYPE_CODE','EXAM_ITEMNAME','EXAM_ITEMNAME_CODE','BODYSITE','OBSERVATIONS_COMMENT','OBSERVATIONS_RESULT','RESULT_STATUS_CODE', 'RESULT_STATUS', 'HR_RANGE','HR_ITEMNAME_CODE', 'HR_ITEMNAME', 'ORGNAME','ORGCODE','DEPTNAME','PRACTITIONERNAME','AUDITNAME','REPORTTIME','STUDYTIME','REPORT'])->select()->toArray();
  167. }
  168. public function getExamReport($where,$field)
  169. {
  170. return (new ExamReport())->where($where)->field($field)->find();
  171. }
  172. public function getInspect($patientCode,$where=[])
  173. {
  174. // return (new InspectReport())->where('PATIENT_CODE',$patientCode)->field(['NAME','SERIESNUM', 'EXAM_REQUESTID', 'REPORTID', 'SPECIMEN_TYPE', 'ORGCODE', 'ORGNAME', 'DEPTNAME', 'PRACTITIONERNAME', 'AUDITNAME', 'REPORTTIME', 'REPORTSTATUS', 'GENDER', 'GENDER_CODE', 'AGE', 'LAB_ITEMNAME', 'LAB_ITEMNAME_CODE', 'LAB_ITEMNAME_NUMBER', 'LAB_HR_STATUS', 'LAB_HR_ITEMNAME', 'LAB_HR_ITEMNAME_CODE','INSPECT_REPORT_CODE'])->select()->toArray();
  175. return (new InspectReport())->where('PATIENT_CODE',$patientCode)->where($where)->field(['REPORTID','LAB_ITEMNAME','LAB_ITEMNAME_TYPE_CODE','PRACTITIONERNAME','AUDITNAME','ORGNAME','ORGCODE','DEPTNAME','REPORT_COMMENT','REPORTTIME','REPORT','LAB_HR_ITEMNAME_CODE', 'LAB_HR_ITEMNAME', 'HR_RANGE','SPECIMEN_TYPE','INSPECT_REPORT_CODE','RECOG_STATUS'])->select()->toArray();
  176. }
  177. public function getInspectData($where,$field)
  178. {
  179. return (new InspectReport())->where($where)->field($field)->find();
  180. }
  181. public function getLab($reportCode)
  182. {
  183. // return (new LabData())->where('INSPECT_REPORT_CODE',$reportCode)->field(['EXAM_REQUESTID','REPORTID', 'ORGCODE', 'LAB_ITEMDETAILNAME', 'LAB_ITEMDETAILNAME_CODE', 'LAB_ITEMDETAILNAME_NUMBER', 'LAB_ITEMDETAILVALUE', 'LAB_ITEMDETAILSPEC', 'LAB_ITEMDETAILINTERPRETATION', 'LAB_ITEMDETAILRANGE', 'CRITICAL_RANGE', 'LAB_HR_ITEMDETAIL_STATUS', 'LAB_HR_ITEMDETAILNAME', 'LAB_HR_ITEMDETAILNAME_CODE'])->select()->toArray();
  184. return (new LabData())->where('INSPECT_REPORT_CODE',$reportCode)->field(['LAB_ITEMDETAILNAME','LAB_ITEMDETAILNAME_EN','LAB_ITEMDETAILNAME_NUMBER','LAB_ITEMDETAILVALUE','LAB_ITEMDETAILSPEC','LAB_ITEMDETAILINTERPRETATION','LAB_ITEMDETAILINTERPRETATION_BIA','LAB_ITEMDETAILRANGE','CRITICAL_RANGE','LAB_METHOD','KB','MIC','LAB_ITEMDETAILINTERPRE','LAB_HR_ITEMDETAILNAME_CODE','LAB_HR_ITEMDETAILNAME','HR_RANGE','RECOG_STATUS','LAB_ITEMDETAILNAME_CODE'])->order('LAB_ITEMDETAILNAME_NUMBER')->select()->toArray();
  185. }
  186. public function updateMiddleStatus($id,$update):void
  187. {
  188. (new MiddleStorage())->where('id',$id)->update($update);
  189. }
  190. public function getMpiByKey($key)
  191. {
  192. return (new Mpi())->where('MPI_KEY',$key)->value('mpi');
  193. }
  194. public function getDictNameByCode($code, $type)
  195. {
  196. return (new Commondata())->where('code',$code)->where('type', $type)->value('name');
  197. }
  198. public function saveRepeatData($data)
  199. {
  200. (new RepeatPost())->save($data);
  201. }
  202. public function HospitalPatient($data)
  203. {
  204. $model = new HospitalPatient();
  205. if(empty($data['MPI_KEY']))
  206. {
  207. $model->where('PATIENT_CODE', $data['PATIENT_CODE'])->delete();
  208. }else{
  209. $info = $model->where('PATIENT_CODE', $data['PATIENT_CODE'])->find();
  210. if (empty($info)) {
  211. $model->save($data);
  212. // HospitalPatient::insert($data);
  213. } else {
  214. // $info->data($data);
  215. // $model->where('PATIENT_CODE',$data['PATIENT_CODE'])->update($data);
  216. $info->save($data);
  217. // HospitalPatient::where('PATIENT_CODE',$data['PATIENT_CODE'])->update($data);
  218. }
  219. }
  220. }
  221. public function saveRepeatPatient($data): void
  222. {
  223. $model = new DelPatient();
  224. unset($data['ID']);
  225. $model->save($data);
  226. }
  227. public function delOldPatient($where): void
  228. {
  229. $this->where($where)->delete();
  230. }
  231. public function saveRepeatInformation($data): void
  232. {
  233. $model = new DelMedicalInformation();
  234. unset($data['ID']);
  235. $model->save($data);
  236. }
  237. public function delOldInformation($where): void
  238. {
  239. $model = new MedicalInformation();
  240. $model->where($where)->delete();
  241. }
  242. public function saveRepeatReport($data): void
  243. {
  244. $model = new DelExamReport();
  245. unset($data['ID']);
  246. $model->save($data);
  247. }
  248. public function delOldReport($where): void
  249. {
  250. $model = new ExamReport();
  251. $model->where($where)->delete();
  252. }
  253. public function saveRepeatInspect($data): void
  254. {
  255. $model = new DelInspectReport();
  256. unset($data['ID']);
  257. $model->save($data);
  258. }
  259. public function delOldInspect($where): void
  260. {
  261. $model = new InspectReport();
  262. $model->where($where)->delete();
  263. }
  264. public function getOldLab($where)
  265. {
  266. $arr = (new LabData())->where('INSPECT_REPORT_CODE','in',$where)->select()->toArray();
  267. return $arr;
  268. }
  269. public function delOldLab($where)
  270. {
  271. (new LabData())->where('INSPECT_REPORT_CODE','in',$where)->delete();
  272. }
  273. public function saveRepeatLab($data)
  274. {
  275. $model = new DelLabData();
  276. $model->saveAll($data);
  277. }
  278. public function getBiInspect($where)
  279. {
  280. $arr = (new BiInspectReport())->where('INSPECT_REPORT_CODE','in',$where)->select()->toArray();
  281. return $arr;
  282. }
  283. public function delBiInspect($where)
  284. {
  285. (new BiInspectReport())->where('INSPECT_REPORT_CODE','in',$where)->delete();
  286. }
  287. public function saveRepeatBiInspect($data)
  288. {
  289. $model = new DelBiInspectReport();
  290. $model->saveAll($data);
  291. }
  292. public function getItemLab($where, $value)
  293. {
  294. $model = new Labitem();
  295. return $model->where($where)->field($value)->find();
  296. }
  297. public function getHospitalData($param)
  298. {
  299. $model = new TestHospitalData();
  300. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  301. }
  302. public function getCheck($param)
  303. {
  304. $model = new TestCheckRecognition();
  305. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  306. }
  307. public function getInpection($param)
  308. {
  309. $model = new TestInspectionRecognition();
  310. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  311. }
  312. }