Patient.php 14 KB

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