Patient.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  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 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'])
  152. {
  153. return (new MedicalInformation())->where($medicalWhere)->field($field)->find();
  154. }
  155. public function getDiagnoses($patientCode)
  156. {
  157. return (new Diagnose())->where('PATIENT_CODE',$patientCode)->field(['DIAGNOSECODE','DIAGNOSENAME'])->select()->toArray();
  158. }
  159. public function getApplication($patientCode)
  160. {
  161. 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();
  162. }
  163. public function getOrders($patientCode)
  164. {
  165. 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();
  166. }
  167. public function getExam($patientCode,$where=[])
  168. {
  169. // 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();
  170. 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();
  171. }
  172. public function getExamReport($where,$field)
  173. {
  174. return (new ExamReport())->where($where)->field($field)->find();
  175. }
  176. public function getInspect($patientCode,$where=[])
  177. {
  178. // 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();
  179. 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();
  180. }
  181. public function getInspectData($where,$field)
  182. {
  183. return (new InspectReport())->where($where)->field($field)->find();
  184. }
  185. public function getLab($reportCode)
  186. {
  187. // 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();
  188. 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();
  189. }
  190. public function updateMiddleStatus($id,$update):void
  191. {
  192. (new MiddleStorage())->where('id',$id)->update($update);
  193. }
  194. public function getMpiByKey($key)
  195. {
  196. return (new Mpi())->where('MPI_KEY',$key)->value('mpi');
  197. }
  198. public function getDictNameByCode($code, $type)
  199. {
  200. return (new Commondata())->where('code',$code)->where('type', $type)->value('name');
  201. }
  202. public function saveRepeatData($data)
  203. {
  204. (new RepeatPost())->save($data);
  205. }
  206. public function HospitalPatient($data)
  207. {
  208. $model = new HospitalPatient();
  209. if(empty($data['MPI_KEY']))
  210. {
  211. $model->where('PATIENT_CODE', $data['PATIENT_CODE'])->delete();
  212. }else{
  213. $info = $model->where('PATIENT_CODE', $data['PATIENT_CODE'])->find();
  214. if (empty($info)) {
  215. $model->save($data);
  216. // HospitalPatient::insert($data);
  217. } else {
  218. // $info->data($data);
  219. // $model->where('PATIENT_CODE',$data['PATIENT_CODE'])->update($data);
  220. $info->save($data);
  221. // HospitalPatient::where('PATIENT_CODE',$data['PATIENT_CODE'])->update($data);
  222. }
  223. }
  224. }
  225. public function saveRepeatPatient($data): void
  226. {
  227. $model = new DelPatient();
  228. unset($data['ID']);
  229. $model->save($data);
  230. }
  231. public function delOldPatient($where): void
  232. {
  233. $this->where($where)->delete();
  234. }
  235. public function saveRepeatInformation($data): void
  236. {
  237. $model = new DelMedicalInformation();
  238. unset($data['ID']);
  239. $model->save($data);
  240. }
  241. public function delOldInformation($where): void
  242. {
  243. $model = new MedicalInformation();
  244. $model->where($where)->delete();
  245. }
  246. public function saveRepeatReport($data): void
  247. {
  248. $model = new DelExamReport();
  249. unset($data['ID']);
  250. $model->save($data);
  251. }
  252. public function delOldReport($where): void
  253. {
  254. $model = new ExamReport();
  255. $model->where($where)->delete();
  256. }
  257. public function saveRepeatInspect($data): void
  258. {
  259. $model = new DelInspectReport();
  260. unset($data['ID']);
  261. $model->save($data);
  262. }
  263. public function delOldInspect($where): void
  264. {
  265. $model = new InspectReport();
  266. $model->where($where)->delete();
  267. }
  268. public function getOldLab($where)
  269. {
  270. $arr = (new LabData())->where('INSPECT_REPORT_CODE','in',$where)->select()->toArray();
  271. return $arr;
  272. }
  273. public function delOldLab($where)
  274. {
  275. (new LabData())->where('INSPECT_REPORT_CODE','in',$where)->delete();
  276. }
  277. public function saveRepeatLab($data)
  278. {
  279. $model = new DelLabData();
  280. $model->saveAll($data);
  281. }
  282. public function getBiInspect($where)
  283. {
  284. $arr = (new BiInspectReport())->where('INSPECT_REPORT_CODE','in',$where)->select()->toArray();
  285. return $arr;
  286. }
  287. public function delBiInspect($where)
  288. {
  289. (new BiInspectReport())->where('INSPECT_REPORT_CODE','in',$where)->delete();
  290. }
  291. public function saveRepeatBiInspect($data)
  292. {
  293. $model = new DelBiInspectReport();
  294. $model->saveAll($data);
  295. }
  296. public function getItemLab($where, $value)
  297. {
  298. $model = new Labitem();
  299. return $model->where($where)->field($value)->find();
  300. }
  301. public function getHospitalData($param)
  302. {
  303. $model = new TestHospitalData();
  304. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  305. }
  306. public function getCheck($param)
  307. {
  308. $model = new TestCheckRecognition();
  309. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  310. }
  311. public function getInpection($param)
  312. {
  313. $model = new TestInspectionRecognition();
  314. return $model->where('TYPE',$param['type'] ?? 1)->select()->toArray();
  315. }
  316. }