CommonServies.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\zskk\servies;
  4. use app\common\library\Gm;
  5. use app\common\library\Handle;
  6. use app\zskk\model\CallRecord;
  7. use app\zskk\model\Patient;
  8. use think\facade\Config;
  9. use think\facade\Db;
  10. class CommonServies
  11. {
  12. public $patientModel = null;
  13. public $callRecordModel = null;
  14. public function __construct(Patient $patientModel, CallRecord $callRecord)
  15. {
  16. $this->patientModel = $patientModel;
  17. $this->callRecordModel = $callRecord;
  18. }
  19. public function getMpiModel($idCard)
  20. {
  21. $mpiIdCard = Gm::encrypt(Config::get('gm.key'),$idCard);
  22. $mpiModel = $this->patientModel->getMpi($mpiIdCard);
  23. if($mpiModel) {
  24. return $mpiModel;
  25. }
  26. $mpiKey = Handle::makeMpiKey($idCard);
  27. $mpi = Handle::makeMpi();
  28. $this->patientModel->saveMpi($mpi, $idCard, $mpiKey);
  29. return [
  30. 'MPI' => $mpi,
  31. 'ID_CARDNUM' => $idCard,
  32. 'MPI_KEY' => $mpiKey
  33. ];
  34. }
  35. public function handlePATIENT($data, $MEDICAL_INFORMATION)
  36. {
  37. // 姓名
  38. // 证件类型
  39. // 证件号码
  40. // 性别
  41. // 出生日期
  42. $NAME = $data['NAME'];
  43. $ID_CARD_CODE = $data['ID_CARD_CODE'];
  44. $ID_CARDNUM = $data['ID_CARDNUM'];
  45. $GENDER_CODE = $data['GENDER_CODE'];
  46. $BIRTH_DATE = $data['BIRTH_DATE'];
  47. $ID_CARD = $this->getID_CARDByCode($ID_CARD_CODE);
  48. $GENDER = $this->getGENDERByCode($GENDER_CODE);
  49. $MPI_MODEL = $this->getMpiModel($ID_CARDNUM);
  50. $MPI_KEY = $MPI_MODEL['MPI_KEY'];
  51. $MPI = $MPI_MODEL['MPI'];
  52. $PATIENT_CODE = $this->getPATIENT_CODE($MPI_KEY, $MEDICAL_INFORMATION['ORGCODE'], $MEDICAL_INFORMATION['HOS_EMPI']);
  53. $PATIENT = [
  54. 'NAME' => $NAME,
  55. 'PATIENT_CODE' => $PATIENT_CODE,
  56. 'ID_CARD_CODE' => $ID_CARD_CODE,
  57. 'ID_CARD' => $ID_CARD,
  58. 'ID_CARDNUM' => $ID_CARDNUM,
  59. 'GENDER_CODE' => $GENDER_CODE,
  60. 'GENDER' => $GENDER,
  61. 'BIRTH_DATE' => $BIRTH_DATE,
  62. 'MPI_KEY' => $MPI_KEY,
  63. 'MPI' => $MPI,
  64. 'create_time' => $MEDICAL_INFORMATION['ENCOUNTER_DATE'],
  65. 'PHONE' => $data['PHONE'],
  66. ];
  67. return $PATIENT;
  68. }
  69. public function handleMEDICAL_INFORMATION($data, $PATIENT) {
  70. // 就诊类型
  71. // 就诊卡号
  72. // 就诊号
  73. // 医院主索引
  74. // 就诊时间
  75. // 就诊科室名称
  76. // 主诉
  77. // 年龄
  78. // 机构编码
  79. // 机构名称
  80. // 诊断编码
  81. // 诊断名称
  82. // 接诊医生名称
  83. // 接诊医生编号
  84. $CLASS_CODE = $data['CLASS_CODE'];
  85. $ENCOUNTER_CARD_NO = $data['ENCOUNTER_CARD_NO'];
  86. $SERIESNUM = $data['SERIESNUM'];
  87. $HOS_EMPI = $data['HOS_EMPI'] ?? '';
  88. $ENCOUNTER_DATE = $data['ENCOUNTER_DATE'];
  89. $DEPTNAME = $data['DEPTNAME'];
  90. $CHIEFCOMPLAINT = $data['CHIEFCOMPLAINT'];
  91. $AGE = $data['AGE'];
  92. $ORGCODE = $data['ORGCODE'];
  93. $ORGNAME = $data['ORGNAME'];
  94. $DIAGNOSECODE = $data['DIAGNOSECODE'];
  95. $DIAGNOSENAME = $data['DIAGNOSENAME'];
  96. $DOCTORNAME = $data['DOCTORNAME'];
  97. $DOCTORCODE = $data['DOCTORCODE'];
  98. $PATIENT_CODE = $PATIENT['PATIENT_CODE'];
  99. $CLASS = $this->getCLASSByCode($CLASS_CODE);
  100. $NAME = $PATIENT['NAME'];
  101. $GENDER = $PATIENT['GENDER'];
  102. $GENDER_CODE = $PATIENT['GENDER_CODE'];
  103. $MPI = $PATIENT['MPI'];
  104. $MPI_KEY = $PATIENT['MPI_KEY'];
  105. $CALL_FLAG = $this->getCALL_FLAG($DOCTORNAME, $ORGNAME, $MPI_KEY);
  106. $MEDICAL_INFORMATION = [
  107. 'PATIENT_CODE' => $PATIENT_CODE,
  108. 'CLASS_CODE' => $CLASS_CODE,
  109. 'ENCOUNTER_CARD_NO' => $ENCOUNTER_CARD_NO,
  110. 'SERIESNUM' => $SERIESNUM,
  111. 'HOS_EMPI' => $HOS_EMPI,
  112. 'ENCOUNTER_DATE' => $ENCOUNTER_DATE,
  113. 'DEPTNAME' => $DEPTNAME,
  114. 'CHIEFCOMPLAINT' => $CHIEFCOMPLAINT,
  115. 'AGE' => $AGE,
  116. 'ORGCODE' => $ORGCODE,
  117. 'ORGNAME' => $ORGNAME,
  118. 'DIAGNOSECODE' => $DIAGNOSECODE,
  119. 'DIAGNOSENAME' => $DIAGNOSENAME,
  120. 'CLASS' => $CLASS,
  121. 'NAME' => $NAME,
  122. 'GENDER' => $GENDER,
  123. 'GENDER_CODE' => $GENDER_CODE,
  124. 'MPI' => $MPI,
  125. 'MPI_KEY' => $MPI_KEY,
  126. 'DOCTORNAME' => $DOCTORNAME,
  127. 'DOCTORCODE' => $DOCTORCODE,
  128. 'CALL_FLAG' => $CALL_FLAG,
  129. ];
  130. return $MEDICAL_INFORMATION;
  131. }
  132. public function getCALL_FLAG($DOCTORCODE, $ORGNAME, $MPI_KEY) {
  133. // $res = $this->callRecordModel->field('ID')
  134. // ->where('DOCTORCODE', '=', $DOCTORCODE)
  135. // ->where('ORGNAME', '=', $ORGNAME)
  136. // ->where('MPI_KEY', '=', $MPI_KEY)
  137. // ->find();
  138. // if($res) {
  139. // return 1;
  140. // }
  141. // return 0;
  142. return rand(0, 1);
  143. }
  144. public function handleEXAM($data, $MEDICAL_INFORMATION) {
  145. $EXAM_APPLICATIONS = array();
  146. $EXAM_REPORTS = array();
  147. $MPI = $MEDICAL_INFORMATION['MPI'];
  148. $MPI_KEY = $MEDICAL_INFORMATION['MPI_KEY'];
  149. $PATIENT_CODE = $MEDICAL_INFORMATION['PATIENT_CODE'];
  150. $NAME = $MEDICAL_INFORMATION['NAME'];
  151. $SERIESNUM = $MEDICAL_INFORMATION['SERIESNUM'];
  152. $GENDER = $MEDICAL_INFORMATION['GENDER'];
  153. $GENDER_CODE = $MEDICAL_INFORMATION['GENDER_CODE'];
  154. $AGE = $MEDICAL_INFORMATION['AGE'];
  155. // foreach($datas as $data) {
  156. // 申请单编号/医嘱编号
  157. // 报告单编号
  158. // 检查类型
  159. // 检查项目名称
  160. // 检查项目编码
  161. // 检查部位
  162. // 检查所见/影像所见
  163. // 影像诊断/意见
  164. // 检查结果类别
  165. // 互认范围
  166. // 互认项目编码
  167. // 报告机构
  168. // 报告机构编码
  169. // 报告科室名称
  170. // 报告医生姓名
  171. // 审核医师姓名
  172. // 报告时间
  173. // 检查时间
  174. // 报告单内容
  175. // 互认项目
  176. // REQUESTID
  177. // REPORTID
  178. // DEVICETYPE_CODE
  179. // EXAM_ITEMNAME
  180. // EXAM_ITEMNAME_CODE
  181. // BODYSITE
  182. // OBSERVATIONS_COMMENT
  183. // OBSERVATIONS_RESULT
  184. // RESULT_STATUS_CODE
  185. // HR_RANGE
  186. // HR_ITEMNAME_CODE
  187. // ORGNAME
  188. // ORGCODE
  189. // DEPTNAME
  190. // PRACTITIONERNAME
  191. // AUDITNAME
  192. // REPORTTIME
  193. // STUDYTIME
  194. // REPORT
  195. // HR_ITEMNAME
  196. $REQUESTID = $data['REQUESTID'];
  197. $REPORTID = $data['REPORTID'];
  198. $DEVICETYPE_CODE = $data['DEVICETYPE_CODE'];
  199. $EXAM_ITEMNAME = $data['EXAM_ITEMNAME'];
  200. $EXAM_ITEMNAME_CODE = $data['EXAM_ITEMNAME_CODE'];
  201. $BODYSITE = $data['BODYSITE'];
  202. $STUDYUID = $data['STUDYUID'];
  203. $ACCESSION_NUM = $data['ACCESSION_NUM'];
  204. $STUDY_ID = '';
  205. if(!empty($STUDYUID))
  206. {
  207. $EXAMS = Db::query("select STUDY_ID from PACS.EXAMS WHERE STUDYUID='$STUDYUID'");
  208. if(!empty($EXAMS))
  209. {
  210. $STUDY_ID = $EXAMS[0]['STUDY_ID'] ?? '';
  211. }
  212. }
  213. if(!empty($STUDY_ID) && !empty($ACCESSION_NUM))
  214. {
  215. $EXAMS = Db::query("select STUDY_ID from PACS.EXAMS WHERE ACCESSION_NUM='$ACCESSION_NUM'");
  216. if(!empty($EXAMS))
  217. {
  218. $STUDY_ID = $EXAMS[0]['STUDY_ID'] ?? '';
  219. }
  220. }
  221. // $OBSERVATIONS_COMMENT = $data['OBSERVATIONS_COMMENT'];
  222. // $OBSERVATIONS_RESULT = $data['OBSERVATIONS_RESULT'];
  223. // $RESULT_STATUS_CODE = $data['RESULT_STATUS_CODE'];
  224. $HR_RANGE = '阳泉-HR';
  225. $HR_ITEMNAME_CODE = $data['HR_ITEMNAME_CODE'];
  226. $ORGNAME = $MEDICAL_INFORMATION['ORGNAME'];
  227. $ORGCODE = $MEDICAL_INFORMATION['ORGCODE'];
  228. $DEPTNAME = $MEDICAL_INFORMATION['DEPTNAME'];
  229. // $PRACTITIONERNAME = $data['PRACTITIONERNAME'];
  230. // $AUDITNAME = $data['AUDITNAME'];
  231. // $REPORTTIME = $data['REPORTTIME'];
  232. $STUDYTIME = $data['STUDYTIME'];
  233. // $REPORT = $data['REPORT'];
  234. $HR_ITEMNAME = $data['HR_ITEMNAME'];
  235. $RECOG_STATUS = '';
  236. if(!empty($HR_ITEMNAME_CODE) && $HR_ITEMNAME_CODE !='-')
  237. {
  238. $DICT_DATA = $this->patientModel->getExamDict(['XM_CODE'=>$HR_ITEMNAME_CODE],'XM');
  239. if($DICT_DATA['XM'] == $HR_ITEMNAME)
  240. {
  241. $RECOG_STATUS = '*';
  242. }
  243. }
  244. // $RECOG_STATUS = $data['RECOG_STATUS'];
  245. $EXAM_APPLICATION_CODE = $this->getEXAM_APPLICATION_CODE($PATIENT_CODE, $REQUESTID);
  246. $EXAM_REPORT_CODE = $this->getEXAM_REPORT_CODE($PATIENT_CODE, $REPORTID);
  247. // $RESULT_STATUS = $this->getRESULT_STATUSByCode($RESULT_STATUS_CODE);
  248. $DEVICETYPE = $this->getDEVICETYPEByCode($DEVICETYPE_CODE);
  249. // $RECOG_STATUS = $this->getRECOG_STATUS($RECOG_STATUS_CODE);
  250. // $EXAM_APPLICATION = [];
  251. $EXAM_REPORT = [
  252. 'MPI' => $MPI,
  253. 'MPI_KEY' => $MPI_KEY,
  254. 'PATIENT_CODE' => $PATIENT_CODE,
  255. 'NAME' => $NAME,
  256. 'SERIESNUM' => $SERIESNUM,
  257. 'GENDER' => $GENDER,
  258. 'GENDER_CODE' => $GENDER_CODE,
  259. 'AGE' => $AGE,
  260. 'REQUESTID' => $REQUESTID,
  261. 'REPORTID' => $REPORTID,
  262. 'DEVICETYPE_CODE' => $DEVICETYPE_CODE,
  263. 'EXAM_ITEMNAME' => $EXAM_ITEMNAME,
  264. 'EXAM_ITEMNAME_CODE' => $EXAM_ITEMNAME_CODE,
  265. 'BODYSITE' => $BODYSITE,
  266. // 'OBSERVATIONS_COMMENT' => $OBSERVATIONS_COMMENT,
  267. // 'OBSERVATIONS_RESULT' => $OBSERVATIONS_RESULT,
  268. // 'RESULT_STATUS_CODE' => $RESULT_STATUS_CODE,
  269. 'HR_RANGE' => $HR_RANGE,
  270. 'HR_ITEMNAME_CODE' => $HR_ITEMNAME_CODE,
  271. 'ORGNAME' => $ORGNAME,
  272. 'ORGCODE' => $ORGCODE,
  273. 'DEPTNAME' => $DEPTNAME,
  274. // 'PRACTITIONERNAME' => $PRACTITIONERNAME,
  275. // 'AUDITNAME' => $AUDITNAME,
  276. // 'REPORTTIME' => $REPORTTIME,
  277. 'STUDYTIME' => $STUDYTIME,
  278. // 'REPORT' => $REPORT,
  279. 'EXAM_APPLICATION_CODE' => $EXAM_APPLICATION_CODE,
  280. 'EXAM_REPORT_CODE' => $EXAM_REPORT_CODE,
  281. // 'RESULT_STATUS' => $RESULT_STATUS,
  282. 'DEVICETYPE' => $DEVICETYPE,
  283. 'HR_ITEMNAME' => $HR_ITEMNAME,
  284. 'DOCTORNAME' => $MEDICAL_INFORMATION['DOCTORNAME'],
  285. 'DOCTORCODE' => $MEDICAL_INFORMATION['DOCTORCODE'],
  286. 'CALL_FLAG' => $MEDICAL_INFORMATION['CALL_FLAG'],
  287. 'RECOG_STATUS' => $RECOG_STATUS,
  288. // todo
  289. 'create_time' => date('Y-m-d H:i:s'),
  290. 'STUDYUID' => $STUDYUID,
  291. 'ACCESSION_NUM' => $ACCESSION_NUM,
  292. 'STUDY_ID'=>$STUDY_ID
  293. ];
  294. // $EXAM_APPLICATIONS[] = $EXAM_APPLICATION;
  295. $EXAM_REPORTS[] = $EXAM_REPORT;
  296. // }
  297. return [
  298. // 'EXAM_APPLICATIONS' => $EXAM_APPLICATIONS,
  299. 'EXAM_REPORTS' => $EXAM_REPORTS,
  300. ];
  301. }
  302. public function handleINSPECT_REPORTS($params, $MEDICAL_INFORMATION) {
  303. $data = $params['INSPECT_REPORTS'];
  304. $INSPECT_REPORTS = array();
  305. $INSPECT_REPORT_ITEMS = array();
  306. $MPI = $MEDICAL_INFORMATION['MPI'];
  307. $MPI_KEY = $MEDICAL_INFORMATION['MPI_KEY'];
  308. $PATIENT_CODE = $MEDICAL_INFORMATION['PATIENT_CODE'];
  309. $NAME = $MEDICAL_INFORMATION['NAME'];
  310. $SERIESNUM = $MEDICAL_INFORMATION['SERIESNUM'];
  311. $GENDER = $MEDICAL_INFORMATION['GENDER'];
  312. $GENDER_CODE = $MEDICAL_INFORMATION['GENDER_CODE'];
  313. $AGE = $MEDICAL_INFORMATION['AGE'];
  314. // 报告单编号
  315. // 标本类别
  316. // 检验项目名称
  317. // 检测项目类型
  318. // 报告医生姓名
  319. // 审核医师姓名
  320. // 报告机构
  321. // 报告机构编码
  322. // 报告科室名称
  323. // 报告评语
  324. // 报告时间
  325. // 报告单
  326. // 互认项目编码
  327. // 互认范围
  328. // 互认项目
  329. // REPORTID
  330. // SPECIMEN_TYPE
  331. // LAB_ITEMNAME
  332. // LAB_ITEMNAME_TYPE_CODE
  333. // PRACTITIONERNAME
  334. // AUDITNAME
  335. // ORGNAME
  336. // ORGCODE
  337. // DEPTNAME
  338. // REPORT_COMMENT
  339. // REPORTTIME
  340. // REPORT
  341. // LAB_HR_ITEMNAME_CODE
  342. // HR_RANGE
  343. // LAB_HR_ITEMNAME
  344. // foreach($datas as $data) {
  345. $REPORTID = $data['REPORTID'];
  346. $SPECIMEN_TYPE = $data['SPECIMEN_TYPE'];
  347. $LAB_ITEMNAME = $data['LAB_ITEMNAME'];
  348. $LAB_ITEMNAME_TYPE_CODE = $data['LAB_ITEMNAME_TYPE_CODE'];
  349. $PRACTITIONERNAME = $data['PRACTITIONERNAME'];
  350. $AUDITNAME = $data['AUDITNAME'];
  351. $ORGNAME = $MEDICAL_INFORMATION['ORGNAME'];
  352. $ORGCODE = $MEDICAL_INFORMATION['ORGCODE'];
  353. $DEPTNAME = $MEDICAL_INFORMATION['DEPTNAME'];
  354. $REPORT_COMMENT = $data['REPORT_COMMENT'];
  355. $REPORTTIME = $data['REPORTTIME'];
  356. $REPORT = $data['REPORT'];
  357. $LAB_HR_ITEMNAME_CODE = $data['LAB_HR_ITEMNAME_CODE'];
  358. $LAB_HR_ITEMNAME = $data['LAB_HR_ITEMNAME'];
  359. $RECOG_STATUS = '';
  360. $itemLabDict = $this->patientModel->getItemLab(['BSYBBM'=>$LAB_HR_ITEMNAME_CODE],'ITEMTYPE,XMMC');
  361. if($LAB_HR_ITEMNAME_CODE != '-' && !empty($LAB_HR_ITEMNAME_CODE))
  362. {
  363. if(($itemLabDict['XMMC'] ?? '') == $LAB_HR_ITEMNAME)
  364. {
  365. $RECOG_STATUS = '*';
  366. }
  367. }
  368. $itemType = $itemLabDict['ITEMTYPE'] ?? '';
  369. $HR_RANGE = '阳泉-HR';
  370. // $SPECIMEN_TYPE = $this->getSPECIMEN_TYPEByCode($SPECIMEN_TYPE_CODE);
  371. $LAB_ITEMNAME_TYPE = $this->getLAB_ITEMNAME_TYPEByCode($LAB_ITEMNAME_TYPE_CODE);
  372. $INSPECT_REPORT_CODE = $this->getINSPECT_REPORT_CODE($PATIENT_CODE, $REPORTID);
  373. // $RECOG_STATUS = $data['RECOG_STATUS'];
  374. // $RECOG_STATUS_CODE = $data['RECOG_STATUS_CODE'];
  375. // $RECOG_STATUS = $this->getRECOG_STATUS($RECOG_STATUS_CODE);
  376. $INSPECT_REPORT = [
  377. 'MPI' => $MPI,
  378. 'MPI_KEY' => $MPI_KEY,
  379. 'PATIENT_CODE' => $PATIENT_CODE,
  380. 'NAME' => $NAME,
  381. 'SERIESNUM' => $SERIESNUM,
  382. 'GENDER' => $GENDER,
  383. 'GENDER_CODE' => $GENDER_CODE,
  384. 'AGE' => $AGE,
  385. 'REPORTID' => $REPORTID,
  386. // 'SPECIMEN_TYPE_CODE' => $SPECIMEN_TYPE_CODE,
  387. 'LAB_ITEMNAME' => $LAB_ITEMNAME,
  388. 'LAB_ITEMNAME_TYPE_CODE' => $LAB_ITEMNAME_TYPE_CODE,
  389. 'LAB_ITEMNAME_TYPE' => $LAB_ITEMNAME_TYPE,
  390. 'PRACTITIONERNAME' => $PRACTITIONERNAME,
  391. 'AUDITNAME' => $AUDITNAME,
  392. 'ORGNAME' => $ORGNAME,
  393. 'ORGCODE' => $ORGCODE,
  394. 'DEPTNAME' => $DEPTNAME,
  395. 'REPORT_COMMENT' => $REPORT_COMMENT,
  396. 'REPORTTIME' => $REPORTTIME,
  397. 'REPORT' => $REPORT,
  398. 'LAB_HR_ITEMNAME_CODE' => $LAB_HR_ITEMNAME_CODE,
  399. 'ITEMTYPE'=>$itemType,
  400. 'HR_RANGE' => $HR_RANGE,
  401. 'LAB_HR_ITEMNAME' => $LAB_HR_ITEMNAME,
  402. 'SPECIMEN_TYPE' => $SPECIMEN_TYPE,
  403. 'INSPECT_REPORT_CODE' => $INSPECT_REPORT_CODE,
  404. // 'RECOG_STATUS_CODE' => $RECOG_STATUS_CODE,
  405. 'RECOG_STATUS' => $RECOG_STATUS,
  406. 'DOCTORNAME' => $MEDICAL_INFORMATION['DOCTORNAME'],
  407. 'DOCTORCODE' => $MEDICAL_INFORMATION['DOCTORCODE'],
  408. 'CALL_FLAG' => $MEDICAL_INFORMATION['CALL_FLAG'],
  409. // TODO
  410. 'create_time' => $REPORTTIME,
  411. ];
  412. $this->handleINSPECT_REPORT_ITEMS($INSPECT_REPORT_ITEMS, $params['INSPECT_REPORT_ITEMS'],[
  413. 'REPORTID' => $REPORTID,
  414. 'INSPECT_REPORT_CODE' => $INSPECT_REPORT_CODE,
  415. 'ORGCODE' => $ORGCODE,
  416. ]);
  417. $INSPECT_REPORTS[] = $INSPECT_REPORT;
  418. // }
  419. return [
  420. 'INSPECT_REPORT_ITEMS' => $INSPECT_REPORT_ITEMS,
  421. 'INSPECT_REPORTS' => $INSPECT_REPORTS,
  422. ];
  423. }
  424. public function handleINSPECT_REPORT_ITEMS(&$INSPECT_REPORT_ITEMS, $datas, $INSPECT_REPORT): void {
  425. // 检验细项名称/抗生素
  426. // 检验细项缩写/英文
  427. // *检验细项序号(1-2)
  428. // 检验细项测量值(1)
  429. // 检验细项结果计量单位(1)
  430. // 检验细项结果/微生物鉴定结果
  431. // 药敏结果(2)
  432. // 参考值范围(1)
  433. // 检测方法(1)
  434. // KB*(2)
  435. // MIC*(2)
  436. // 敏感度(2)
  437. // 互认项目编码(1-2)
  438. // 互认范围(1-2)
  439. // 互认标识(1-2)
  440. // 互认项目
  441. // LAB_ITEMDETAILNAME
  442. // LAB_ITEMDETAILNAME_EN
  443. // LAB_ITEMDETAILNAME_NUMBER
  444. // LAB_ITEMDETAILVALUE
  445. // LAB_ITEMDETAILSPEC
  446. // LAB_ITEMDETAILINTERPRETATION
  447. // LAB_ITEMDETAILINTERPRETATION_BIA
  448. // LAB_ITEMDETAILRANGE
  449. // LAB_METHOD
  450. // KB
  451. // MIC
  452. // LAB_ITEMDETAILINTERPRE
  453. // LAB_HR_ITEMDETAILNAME_CODE
  454. // HR_RANGE
  455. // RECOG_STATUS
  456. // LAB_HR_ITEMDETAILNAME
  457. $INSPECT_REPORT_CODE = $INSPECT_REPORT['INSPECT_REPORT_CODE'];
  458. $REPORTID = $INSPECT_REPORT['REPORTID'];
  459. $ORGCODE = $INSPECT_REPORT['ORGCODE'];
  460. foreach($datas as $data) {
  461. $LAB_ITEMDETAILNAME = $data['LAB_ITEMDETAILNAME'];
  462. $LAB_ITEMDETAILNAME_EN = $data['LAB_ITEMDETAILNAME_EN'];
  463. $LAB_ITEMDETAILNAME_NUMBER = $data['LAB_ITEMDETAILNAME_NUMBER'];
  464. $LAB_ITEMDETAILVALUE = $data['LAB_ITEMDETAILVALUE'];
  465. $LAB_ITEMDETAILSPEC = $data['LAB_ITEMDETAILSPEC'];
  466. $LAB_ITEMDETAILINTERPRETATION = $data['LAB_ITEMDETAILINTERPRETATION'];
  467. $LAB_ITEMDETAILINTERPRETATION_BIA = $data['LAB_ITEMDETAILINTERPRETATION_BIA'] ?? '';
  468. $LAB_ITEMDETAILRANGE = $data['LAB_ITEMDETAILRANGE'];
  469. $LAB_METHOD = $data['LAB_METHOD'];
  470. $KB = $data['KB'];
  471. $MIC = $data['MIC'];
  472. $LAB_ITEMDETAILINTERPRE = $data['LAB_ITEMDETAILINTERPRE'];
  473. $LAB_HR_ITEMDETAILNAME_CODE = $data['LAB_HR_ITEMDETAILNAME_CODE'];
  474. // $HR_RANGE = $data['HR_RANGE'];
  475. // $RECOG_STATUS = $data['RECOG_STATUS'];
  476. $LAB_HR_ITEMDETAILNAME = $data['LAB_HR_ITEMDETAILNAME'];
  477. $RECOG_STATUS = '';
  478. if(!empty($LAB_HR_ITEMDETAILNAME_CODE) && $LAB_HR_ITEMDETAILNAME_CODE != '-')
  479. {
  480. $DICT_DATA = $this->patientModel->getItemLab(['BSYBBM'=>$LAB_HR_ITEMDETAILNAME_CODE],'XMMC');
  481. if(($DICT_DATA['XMMC'] ?? '') == $LAB_HR_ITEMDETAILNAME)
  482. {
  483. $RECOG_STATUS = '*';
  484. }
  485. }
  486. $INSPECT_REPORT_ITEM = [
  487. 'REPORTID' => $REPORTID,
  488. 'INSPECT_REPORT_CODE' => $INSPECT_REPORT_CODE,
  489. 'ORGCODE' => $ORGCODE,
  490. 'LAB_ITEMDETAILNAME' => $LAB_ITEMDETAILNAME,
  491. 'LAB_ITEMDETAILNAME_EN' => $LAB_ITEMDETAILNAME_EN,
  492. 'LAB_ITEMDETAILNAME_NUMBER' => $LAB_ITEMDETAILNAME_NUMBER,
  493. 'LAB_ITEMDETAILVALUE' => $LAB_ITEMDETAILVALUE,
  494. 'LAB_ITEMDETAILSPEC' => $LAB_ITEMDETAILSPEC,
  495. 'LAB_ITEMDETAILINTERPRETATION' => $LAB_ITEMDETAILINTERPRETATION,
  496. 'LAB_ITEMDETAILINTERPRETATION_BIA' => $LAB_ITEMDETAILINTERPRETATION_BIA,
  497. 'LAB_ITEMDETAILRANGE' => $LAB_ITEMDETAILRANGE,
  498. 'LAB_METHOD' => $LAB_METHOD,
  499. 'KB' => $KB,
  500. 'MIC' => $MIC,
  501. 'LAB_ITEMDETAILINTERPRE' => $LAB_ITEMDETAILINTERPRE,
  502. 'LAB_HR_ITEMDETAILNAME_CODE' => $LAB_HR_ITEMDETAILNAME_CODE,
  503. // 'HR_RANGE' => $HR_RANGE,
  504. 'RECOG_STATUS' => $RECOG_STATUS,
  505. 'LAB_HR_ITEMDETAILNAME' => $LAB_HR_ITEMDETAILNAME,
  506. ];
  507. $INSPECT_REPORT_ITEMS[] = $INSPECT_REPORT_ITEM;
  508. }
  509. }
  510. public function getINSPECT_REPORT_CODE($PATIENT_CODE, $REPORTID): string {
  511. return md5($PATIENT_CODE.$REPORTID);
  512. }
  513. public function getEXAM_APPLICATION_CODE($PATIENT_CODE, $EXAM_REQUESTID): string {
  514. return md5($PATIENT_CODE.$EXAM_REQUESTID);
  515. }
  516. public function getEXAM_REPORT_CODE($PATIENT_CODE, $REPORTID): string {
  517. return md5($PATIENT_CODE.$REPORTID);
  518. }
  519. public function getPATIENT_CODE($MPI_KEY, $ORGCODE, $SERIESNUM): string {
  520. return md5($MPI_KEY.$ORGCODE.$SERIESNUM);
  521. }
  522. public function getID_CARDByCode($code) {
  523. return $this->patientModel->getDictNameByCode($code, '3');
  524. }
  525. public function getGENDERByCode($code) {
  526. return $this->patientModel->getDictNameByCode($code, '1');
  527. }
  528. public function getCLASSByCode($code) {
  529. return $this->patientModel->getDictNameByCode($code, '5');
  530. }
  531. public function getRESULT_STATUSByCode($code) {
  532. return $this->patientModel->getDictNameByCode($code, '11');
  533. }
  534. public function getDEVICETYPEByCode($code) {
  535. return $this->patientModel->getDictNameByCode($code, '10');
  536. }
  537. public function getLAB_ITEMNAME_TYPEByCode($code) {
  538. return $this->patientModel->getDictNameByCode($code, '12');
  539. }
  540. }