PatientServies.php 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520
  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\Mpi;
  7. use app\zskk\model\Patient;
  8. use think\db\exception\DataNotFoundException;
  9. use think\db\exception\DbException;
  10. use think\db\exception\ModelNotFoundException;
  11. use think\Exception;
  12. use think\facade\Config;
  13. use think\facade\Log;
  14. use Throwable;
  15. use app\common\controller\ZskkApi;
  16. use app\zskk\model\BiInspectReport;
  17. use app\zskk\model\DelBiInspectReport;
  18. use app\zskk\model\DelExamReport;
  19. use app\zskk\model\DelInspectReport;
  20. use app\zskk\model\DelLabData;
  21. use app\zskk\model\DelMedicalInformation;
  22. use app\zskk\model\DelPatient;
  23. use app\zskk\model\ExamReport;
  24. use app\zskk\model\HospitalPatient;
  25. use app\zskk\model\InspectReport;
  26. use app\zskk\model\LabData;
  27. use app\zskk\model\MedicalInformation;
  28. use think\facade\Db;
  29. class PatientServies
  30. {
  31. public $patientModel = null;
  32. public $commonServies = null;
  33. public function __construct(Patient $patientModel, CommonServies $commonServies)
  34. {
  35. // parent::__construct();
  36. $this->patientModel = $patientModel;
  37. $this->commonServies = $commonServies;
  38. }
  39. /**
  40. * @throws DataNotFoundException
  41. * @throws ModelNotFoundException
  42. * @throws DbException
  43. * @throws Exception
  44. */
  45. public function makeMappingData($params, $mpKey='0', $action='save', $type=1): array
  46. {
  47. $return = [];
  48. $mapping = $this->patientModel->getMapping(['MPKEY'=>$mpKey,'ACTION'=>$action,'PARAM_TYPE'=>$type]);
  49. $all = $this->patientModel->getAllMapping(['ACTION'=>$action,'PARAM_TYPE'=>$type]);
  50. $allMapping = [];
  51. foreach ($all as $k=>$v)
  52. {
  53. $allMapping[$v['MPKEY']][] = $v;
  54. }
  55. $mappingArr = [];
  56. foreach ($mapping as $v)
  57. {
  58. $childMapping = [];
  59. if($v['TYPE'] == 'object' || $v['TYPE'] == 'array')
  60. {
  61. $childMapping = $allMapping[$v['MKEY']] ?? [];
  62. }
  63. $child = [];
  64. if(!empty($childMapping))
  65. {
  66. foreach ($childMapping as $value)
  67. {
  68. $child[$value['MKEY']] = ['KEY'=>$value['KEY'],'MPKEY'=>$value['MPKEY'],'MKEY'=>$v['MKEY'],'TYPE'=>$value['TYPE'],'action'=>$v['ACTION']];
  69. }
  70. }
  71. $mappingArr[$v['MKEY']] = ['KEY'=>$v['KEY'],'MPKEY'=>$v['MPKEY'],'MKEY'=>$v['MKEY'],'TYPE'=>$v['TYPE'],'CHILD'=>$child,'ACTION'=>$v['ACTION']];
  72. }
  73. foreach ($params as $k=>$v)
  74. {
  75. if(is_array($v))
  76. {
  77. foreach ($v as $key=>$value)
  78. {
  79. if(is_array($value))
  80. {
  81. $returnArr = $this->makeMappingData($value,$mappingArr[$k]['MKEY'],$mappingArr[$k]['ACTION'],$type);
  82. $return[$mappingArr[$k]['KEY']][] = $returnArr;
  83. }else{
  84. if(!empty($mappingArr[$k]['CHILD']))
  85. {
  86. if(isset($mappingArr[$k]['CHILD'][$key]['KEY']))
  87. {
  88. $return[$mappingArr[$k]['KEY']][$mappingArr[$k]['CHILD'][$key]['KEY']] = $value;
  89. }
  90. }
  91. }
  92. }
  93. }else{
  94. if(isset($mappingArr[$k]['KEY']))
  95. {
  96. $return[$mappingArr[$k]['KEY']] = $v;
  97. }
  98. }
  99. }
  100. ksort($return);
  101. return $return;
  102. }
  103. public function saveMpi($mpi, $idCard,$mpiKey)
  104. {
  105. $this->patientModel->saveMpi($mpi,$idCard,$mpiKey);
  106. }
  107. public function savePatient($data,$mpi,$mpiKey,$patientCode):void
  108. {
  109. $arr = $this->makePatient($data,$mpi,$mpiKey,$patientCode);
  110. $this->patientModel->save($arr);
  111. }
  112. /**
  113. * @throws DataNotFoundException
  114. * @throws \think\exception\DbException
  115. * @throws ModelNotFoundException
  116. * @throws DbException
  117. */
  118. public function getMpi($idCard)
  119. {
  120. $idCard = Gm::encrypt(Config::get('gm.key'),$idCard);
  121. return $this->patientModel->getMpi($idCard);
  122. }
  123. public function makePatient($data, $mpi,$mpiKey, $patientCode): array
  124. {
  125. $arr = [];
  126. $arr['MPI'] = $mpi;
  127. $arr['MPI_KEY'] = $mpiKey;
  128. $arr['PATIENT_CODE'] = $patientCode;
  129. $arr['NAME'] = $data['NAME'] ?? '';
  130. $arr['INSUR_CARD_NO'] = $data['INSUR_CARD_NO'] ?? '';
  131. $arr['ID_CARD_CODE'] = $data['ID_CARD_CODE'] ?? '';
  132. $arr['ID_CARD'] = $data['ID_CARD'] ?? '';
  133. $arr['ID_CARDNUM'] = $data['ID_CARDNUM'] ?? '';
  134. $arr['GENDER'] = $data['GENDER'] ?? '';
  135. $arr['GENDER_CODE'] = $data['GENDER_CODE'] ?? '';
  136. $arr['BIRTH_DATE'] = $data['BIRTH_DATE'] ?? '';
  137. $arr['MARITAL_STATUS_CODE'] = $data['MARITAL_STATUS_CODE'] ?? '';
  138. $arr['MARITAL_STATUS'] = $data['MARITAL_STATUS'] ?? '';
  139. $arr['ADDRESS'] = $data['ADDRESS'] ?? '';
  140. $arr['ECARD_NO'] = $data['ECARD_NO'] ?? '';
  141. return $arr;
  142. }
  143. public function saveMedical($medical,$mpi,$patientCode):void
  144. {
  145. $arr = $this->makeMedical($medical,$mpi,$patientCode);
  146. $this->patientModel->saveMedical($arr);
  147. }
  148. public function makeMedical($medical,$mpi,$patientCode):array
  149. {
  150. $arr = [];
  151. $arr['MPI'] = $mpi;
  152. $arr['PATIENT_CODE'] = $patientCode;
  153. $arr['SERIESNUM'] = $medical['SERIESNUM'];
  154. $arr['CLASS_CODE'] = $medical['CLASS_CODE'];
  155. $arr['CLASS'] = $medical['CLASS'];
  156. $arr['ENCOUNTER_CARD_NO'] = $medical['ENCOUNTER_CARD_NO'];
  157. $arr['RECORD_CODE'] = $medical['RECORD_CODE'];
  158. $arr['HOS_EMPI'] = $medical['HOS_EMPI'];
  159. $arr['NAME'] = $medical['NAME'];
  160. $arr['ENCOUNTER_DATE'] = $medical['ENCOUNTER_DATE'];
  161. $arr['DEPTNAME'] = $medical['DEPTNAME'];
  162. $arr['CHIEFCOMPLAINT'] = $medical['CHIEFCOMPLAINT'];
  163. $arr['ORGCODE'] = $medical['ORGCODE'];
  164. $arr['ORGNAME'] = $medical['ORGNAME'];
  165. $arr['AGE'] = $medical['AGE'];
  166. $arr['GENDER'] = $medical['GENDER'];
  167. $arr['GENDER_CODE'] = $medical['GENDER_CODE'];
  168. return $arr;
  169. }
  170. public function saveDiagnose($diagnose, $patientCode)
  171. {
  172. $arr = [];
  173. foreach ($diagnose as $v)
  174. {
  175. $data = $this->makeDiagnose($v,$patientCode);
  176. $arr[] = $data;
  177. }
  178. $this->patientModel->saveDiagnose($arr);
  179. }
  180. public function makeDiagnose($diagnose, $patientCode):array
  181. {
  182. $data = [];
  183. $data['PATIENT_CODE'] = $patientCode;
  184. $data['DIAGNOSECODE'] = $diagnose['DIAGNOSECODE'];
  185. $data['DIAGNOSENAME'] = $diagnose['DIAGNOSENAME'];
  186. return $data;
  187. }
  188. public function saveApplication($application, $mpi, $patientCode):void
  189. {
  190. $arr = [];
  191. foreach ($application as $v)
  192. {
  193. $data = $this->makeApplication($v,$mpi,$patientCode);
  194. $arr[] = $data;
  195. }
  196. $this->patientModel->saveApplication($arr);
  197. }
  198. public function makeApplication($application, $mpi, $patientCode):array
  199. {
  200. $data = [];
  201. $applicationCode = Handle::makeApplicationCode($patientCode,$application['REQUESTID']);
  202. $data['MPI'] = $mpi;
  203. $data['PATIENT_CODE'] = $patientCode;
  204. $data['EXAM_APPLICATION_CODE'] = $applicationCode;
  205. $data['REQUESTID'] = $application['REQUESTID'];
  206. $data['NAME'] = $application['NAME'];
  207. $data['SERIESNUM'] = $application['SERIESNUM'];
  208. $data['DEVICETYPE'] = $application['DEVICETYPE'];
  209. $data['DEVICETYPE_CODE'] = $application['DEVICETYPE_CODE'];
  210. $data['EXAM_ITEMNAME'] = $application['EXAM_ITEMNAME'];
  211. $data['EXAM_ITEMNAME_CODE'] = $application['EXAM_ITEMNAME_CODE'];
  212. $data['BODYSITE_CATEG'] = $application['BODYSITE_CATEG'];
  213. $data['BODYSITE_CATEG_CODE'] = $application['BODYSITE_CATEG_CODE'];
  214. $data['BODYSITE'] = $application['BODYSITE'];
  215. $data['EXAM_METHOD'] = $application['EXAM_METHOD'];
  216. $data['ORGCODE'] = $application['ORGCODE'];
  217. $data['ORGNAME'] = $application['ORGNAME'];
  218. $data['DEPTNAME'] = $application['DEPTNAME'];
  219. $data['PRACTITIONERNAME'] = $application['PRACTITIONERNAME'];
  220. $data['REQUESTTIME'] = $application['REQUESTTIME'];
  221. $data['AGE'] = $application['AGE'];
  222. $data['GENDER'] = $application['GENDER'];
  223. $data['GENDER_CODE'] = $application['GENDER_CODE'];
  224. return $data;
  225. }
  226. public function saveOrders($orders,$mpi,$patientCode): void
  227. {
  228. $arr = [];
  229. $medicalOrderCode = '';
  230. foreach ($orders as $k=>$v)
  231. {
  232. $data = $this->makeOrders($v,$mpi,$patientCode);
  233. $arr[] = $data;
  234. }
  235. $this->patientModel->saveOrders($arr);
  236. }
  237. public function makeOrders($orders,$mpi,$patientCode):array
  238. {
  239. $medicalOrderCode = Handle::makeMedicalOrderCode($patientCode,$orders['ORDERID'],$orders['LAB_ITEMNAME_CODE']);
  240. $data = [];
  241. $data['MPI'] = $mpi;
  242. $data['PATIENT_CODE'] = $patientCode;
  243. $data['MEDICAL_ORDER_CODE'] = $medicalOrderCode;
  244. $data['ORDERID'] = $orders['ORDERID'];
  245. $data['NAME'] = $orders['NAME'];
  246. $data['SERIESNUM'] = $orders['SERIESNUM'];
  247. $data['LAB_ITEMNAME'] = $orders['LAB_ITEMNAME'];
  248. $data['LAB_ITEMNAME_CODE'] = $orders['LAB_ITEMNAME_CODE'];
  249. $data['SPECIMEN_TYPE'] = $orders['SPECIMEN_TYPE'];
  250. $data['SPECIMEN_NUM'] = $orders['SPECIMEN_NUM'];
  251. $data['SPECIMEN_STATUS'] = $orders['SPECIMEN_STATUS'];
  252. $data['SPECIMEN_COLLETIME'] = $orders['SPECIMEN_COLLETIME'];
  253. $data['SPECIMEN_RECEITIME'] = $orders['SPECIMEN_RECEITIME'];
  254. $data['ORGCODE'] = $orders['ORGCODE'];
  255. $data['ORGNAME'] = $orders['ORGNAME'];
  256. $data['DEPTNAME'] = $orders['DEPTNAME'];
  257. $data['PRACTITIONERNAME'] = $orders['PRACTITIONERNAME'];
  258. $data['REQUESTTIME'] = $orders['REQUESTTIME'];
  259. $data['REPORTSTATUS'] = $orders['REPORTSTATUS'];
  260. $data['REPORTSTATUS_CODE'] = $orders['REPORTSTATUS_CODE'];
  261. $data['AGE'] = $orders['AGE'];
  262. $data['GENDER'] = $orders['GENDER'];
  263. $data['GENDER_CODE'] = $orders['GENDER_CODE'];
  264. $data['TYPE'] = $orders['TYPE'];
  265. return $data;
  266. }
  267. public function saveExamReport($exam,$mpi,$patientCode,$exam_code = false): void
  268. {
  269. $arr = [];
  270. foreach ($exam as $v)
  271. {
  272. $data = $this->makeExamReport($v,$mpi,$patientCode,$exam_code);
  273. $data['IMAGES'] = $this->makeUrl($data['IMAGES']);
  274. $arr[] = $data;
  275. }
  276. $this->patientModel->saveExamReport($arr);
  277. }
  278. public function makeExamReport($exam,$mpi,$patientCode,$exam_code):array
  279. {
  280. $examReportCode = Handle::makeExamReportCode($patientCode,$exam['REPORTID']);
  281. $applicationCode = Handle::makeApplicationCode($patientCode,$exam['EXAM_REQUESTID']);
  282. $data = [];
  283. $data['MPI'] = $mpi;
  284. $data['PATIENT_CODE'] = $patientCode;
  285. $data['EXAM_APPLICATION_CODE'] = $applicationCode;
  286. $data['EXAM_REPORT_CODE'] = $examReportCode;
  287. $data['NAME'] = $exam['NAME'];
  288. $data['SERIESNUM'] = $exam['SERIESNUM'];
  289. $data['EXAM_REQUESTID'] = $exam['EXAM_REQUESTID'];
  290. $data['REPORTID'] = $exam['REPORTID'];
  291. $data['EXAM_ITEMNAME'] = $exam['EXAM_ITEMNAME'];
  292. $data['BODYSITE_CATEG'] = $exam['BODYSITE_CATEG'];
  293. $data['BODYSITE_CATEG_CODE'] = $exam['BODYSITE_CATEG_CODE'];
  294. $data['BODYSITE'] = $exam['BODYSITE'];
  295. $data['OBSERVATIONS_COMMENT'] = $exam['OBSERVATIONS_COMMENT'];
  296. $data['OBSERVATIONS_RESULT'] = $exam['OBSERVATIONS_RESULT'];
  297. $data['IMAGES'] = $exam['IMAGES'];
  298. $data['DICOM_INDEXID'] = $exam['DICOM_INDEXID'];
  299. $data['ORGCODE'] = $exam['ORGCODE'];
  300. $data['ORGNAME'] = $exam['ORGNAME'];
  301. $data['DEPTNAME'] = $exam['DEPTNAME'];
  302. $data['PRACTITIONERNAME'] = $exam['PRACTITIONERNAME'];
  303. $data['AUDITNAME'] = $exam['AUDITNAME'];
  304. $data['REPORTTIME'] = $exam['REPORTTIME'];
  305. $data['REPORTSTATUS'] = $exam['REPORTSTATUS'];
  306. $data['GENDER'] = $exam['GENDER'];
  307. $data['GENDER_CODE'] = $exam['GENDER_CODE'];
  308. $data['AGE'] = $exam['AGE'];
  309. $data['STUDYTIME'] = $exam['STUDYTIME'];
  310. // $data['EXAM_ITEMNAME_CODE'] = $exam_code;
  311. return $data;
  312. }
  313. public function saveInspectReport($inspect, $mpi, $patientCode): void
  314. {
  315. $arr = [];
  316. $labArr = [];
  317. $labArrOrganism = [];
  318. foreach ($inspect as $v) {
  319. $inspectReportCode = Handle::makeInspectReportCode($patientCode, $v['REPORTID']);
  320. $data = $this->makeInspect($v,$mpi,$patientCode,$inspectReportCode);
  321. $arr[] = $data;
  322. foreach ($v['INSPECT_REPORT_ITEMS'] as $value)
  323. {
  324. // $lab = $this->makeLab($value,$inspectReportCode);
  325. $lab = $this->makeLabOrganism($value,$inspectReportCode);
  326. $labArr[] = $lab;
  327. }
  328. // if($v['type'] == 1)
  329. // {
  330. // // 正常检验
  331. // }else{
  332. // // 微生物检验
  333. // foreach ($v['INSPECT_REPORT_ITEMS'] as $value)
  334. // {
  335. // $lab2 = $this->makeLabOrganism($value,$inspectReportCode);
  336. // $labArrOrganism[] = $lab2;
  337. // }
  338. // }
  339. }
  340. $this->patientModel->saveInspectReport($arr);
  341. if(!empty($labArr)) {
  342. $this->patientModel->saveLabData($labArr);
  343. }
  344. // if(!empty($labArrOrganism))
  345. // {
  346. // $this->patientModel->saveLabDataOrganism($labArrOrganism);
  347. // }
  348. }
  349. public function makeInspect($inspect,$mpi,$patientCode,$inspectReportCode)
  350. {
  351. $data = [];
  352. $medicalOrderCode = Handle::makeMedicalOrderCode($patientCode,$inspect['EXAM_REQUESTID'],$inspect['LAB_ITEMNAME_CODE']);
  353. $data['MPI'] = $mpi;
  354. $data['PATIENT_CODE'] = $patientCode;
  355. $data['MEDICAL_ORDER_CODE'] = $medicalOrderCode;
  356. $data['INSPECT_REPORT_CODE'] = $inspectReportCode;
  357. $data['NAME'] = $inspect['NAME'];
  358. $data['SERIESNUM'] = $inspect['SERIESNUM'];
  359. $data['EXAM_REQUESTID'] = $inspect['EXAM_REQUESTID'];
  360. $data['REPORTID'] = $inspect['REPORTID'];
  361. $data['LAB_ITEMNAME'] = $inspect['LAB_ITEMNAME'];
  362. $data['LAB_ITEMNAME_CODE'] = $inspect['LAB_ITEMNAME_CODE'];
  363. $data['LAB_ITEMNAME_NUMBER'] = $inspect['LAB_ITEMNAME_NUMBER'];
  364. $data['LAB_HR_STATUS'] = $inspect['LAB_HR_STATUS'];
  365. $data['LAB_HR_ITEMNAME'] = $inspect['LAB_HR_ITEMNAME'];
  366. $data['LAB_HR_ITEMNAME_CODE'] = $inspect['LAB_HR_ITEMNAME_CODE'];
  367. $data['SPECIMEN_TYPE'] = $inspect['SPECIMEN_TYPE'];
  368. $data['ORGNAME'] = $inspect['ORGNAME'];
  369. $data['ORGCODE'] = $inspect['ORGCODE'];
  370. $data['PRACTITIONERNAME'] = $inspect['PRACTITIONERNAME'];
  371. $data['DEPTNAME'] = $inspect['DEPTNAME'];
  372. $data['REPORTTIME'] = $inspect['REPORTTIME'];
  373. $data['AUDITNAME'] = $inspect['AUDITNAME'];
  374. $data['REPORTSTATUS'] = $inspect['REPORTSTATUS'];
  375. $data['GENDER'] = $inspect['GENDER'];
  376. $data['GENDER_CODE'] = $inspect['GENDER_CODE'];
  377. $data['AGE'] = $inspect['AGE'];
  378. $data['TYPE'] = $inspect['TYPE'];
  379. return $data;
  380. }
  381. public function saveHospitalPatient($mpiKey, $mpi, $patientCode, $patientData, $medical, $diagnoses, $orders, $application) {
  382. $data = $this->makeHospitalPatientData($mpiKey, $mpi, $patientCode, $patientData, $medical, $diagnoses, $orders, $application);
  383. $model = new HospitalPatient();
  384. $model->save($data);
  385. }
  386. private function makeHospitalPatientData($mpiKey, $mpi, $patientCode, $patientData, $medical, $diagnoses, $orders, $applications) {
  387. $data = [];
  388. $patient = $this->makePatient($patientData,$mpi, $mpiKey,$patientCode);
  389. $medical = $this->makeMedical($medical,$mpiKey,$patientCode);
  390. $diagnose = $this->makeDiagnoseNameAndCodes($diagnoses);
  391. $order = $this->makeOrderNameAndCodes($orders);
  392. $application = $this->makeApplicationsNameAndCodes($applications);
  393. $data['MPI_KEY'] = $mpiKey;
  394. $data['PATIENT_CODE'] = $patient['PATIENT_CODE'];
  395. $data['ORGNAME'] = $medical['ORGNAME'];
  396. $data['NAME'] = $patient['NAME'];
  397. $data['GENDER'] = $patient['GENDER'];
  398. $data['AGE'] = $medical['AGE'];
  399. $data['ID_CARDNUM'] = $patient['ID_CARDNUM'];
  400. $data['MPI'] = $mpi;
  401. $data['ENCOUNTER_DATE'] = $medical['ENCOUNTER_DATE'];
  402. $data['CHIEFCOMPLAINT'] = $medical['CHIEFCOMPLAINT'];
  403. $data['DIAGNOSENAME'] = $diagnose['DIAGNOSENAME'];
  404. $data['LAB_ITEMNAME'] = $order['LAB_ITEMNAME'];
  405. $data['EXAM_ITEMNAME'] = $application['EXAM_ITEMNAME'];
  406. $data['INSUR_CARD_NO'] = $patient['INSUR_CARD_NO'];
  407. $data['ID_CARD_CODE'] = $patient['ID_CARD_CODE'];
  408. $data['ID_CARD'] = $patient['ID_CARD'];
  409. $data['GENDER_CODE'] = $patient['GENDER_CODE'];
  410. $data['BIRTH_DATE'] = $patient['BIRTH_DATE'];
  411. $data['MARITAL_STATUS_CODE'] = $patient['MARITAL_STATUS_CODE'];
  412. $data['MARITAL_STATUS'] = $patient['MARITAL_STATUS'];
  413. $data['ADDRESS'] = $patient['ADDRESS'];
  414. $data['ECARD_NO'] = $patient['ECARD_NO'];
  415. $data['SERIESNUM'] = $medical['SERIESNUM'];
  416. $data['CLASS_CODE'] = $medical['CLASS_CODE'];
  417. $data['CLASS'] = $medical['CLASS'];
  418. $data['ENCOUNTER_CARD_NO'] = $medical['ENCOUNTER_CARD_NO'];
  419. $data['RECORD_CODE'] = $medical['RECORD_CODE'];
  420. $data['HOS_EMPI'] = $medical['HOS_EMPI'];
  421. $data['DEPTNAME'] = $medical['DEPTNAME'];
  422. $data['DIAGNOSECODE'] = $diagnose['DIAGNOSECODE'];
  423. $data['LAB_ITEMNAME_CODE'] = $order['LAB_ITEMNAME_CODE'];
  424. $data['EXAM_ITEMNAME_CODE'] = $application['EXAM_ITEMNAME_CODE'];
  425. $data['ORGCODE'] = $medical['ORGCODE'];
  426. return $data;
  427. }
  428. public function makeUploadHospitalPatient($patientCode): array
  429. {
  430. $where = ['PATIENT_CODE'=>$patientCode];
  431. $patient = $this->patientModel->getPatient($where);
  432. if(empty($patient))
  433. {
  434. $where['MPI_KEY'] = '';
  435. return $where;
  436. }
  437. $medical = $this->patientModel->getMedical($patientCode);
  438. $exam = $this->patientModel->getExam($patientCode);
  439. $inspect = $this->patientModel->getInspect($patientCode);
  440. $data['PATIENT_CODE'] = $patient['PATIENT_CODE'];
  441. $data['MPI_KEY'] = $patient['MPI_KEY'];
  442. $data['NAME'] = $patient['NAME'];
  443. $data['GENDER'] = $patient['GENDER'];
  444. $data['ORGNAME'] = $medical['ORGNAME'];
  445. $data['AGE'] = $medical['AGE'];
  446. $age_last = substr( $data['AGE'], -1);
  447. $age_num = substr( $data['AGE'], 0,-1);
  448. $last = match ($age_last) {
  449. 'Y' => '365',
  450. 'M' => '30',
  451. 'W' => '7',
  452. 'D' => '1',
  453. default => $age_last,
  454. };
  455. $data['AGE_DAY'] = ((int)$last)*((int)$age_num);
  456. $data['ID_CARDNUM'] = $patient['ID_CARDNUM'];
  457. $data['MPI'] = $patient['MPI'];
  458. $data['ENCOUNTER_DATE'] = $medical['ENCOUNTER_DATE'];
  459. $data['CHIEFCOMPLAINT'] = $medical['CHIEFCOMPLAINT'];
  460. $data['DIAGNOSENAME'] = $medical['DIAGNOSENAME'];
  461. if(!empty($inspect))
  462. {
  463. $code = [];
  464. $code_name = [];
  465. foreach ($inspect as $v)
  466. {
  467. if(!empty($v['LAB_HR_ITEMNAME_CODE']))
  468. {
  469. $code[] = $v['LAB_HR_ITEMNAME_CODE'];
  470. $code_name[] = $v['LAB_HR_ITEMNAME'];
  471. }else{
  472. // $inspectItem = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
  473. // foreach ($inspectItem as $value)
  474. // {
  475. // if(!empty($value['LAB_HR_ITEMDETAILNAME_CODE']))
  476. // {
  477. // $code[] = $value['LAB_HR_ITEMDETAILNAME_CODE'];
  478. // $code_name[] = $value['LAB_HR_ITEMDETAILNAME'];
  479. // }
  480. // }
  481. }
  482. }
  483. $data['LAB_ITEMNAME'] = implode(',',$code_name); //检验项目
  484. $data['LAB_ITEMNAME_CODE'] = implode(',',$code);
  485. }
  486. if(!empty($exam))
  487. {
  488. $item_exam = [];
  489. $item_exam_code = [];
  490. foreach ($exam as $k=>$v)
  491. {
  492. $item_exam[] = $v['HR_ITEMNAME'];
  493. $item_exam_code[] = $v['HR_ITEMNAME_CODE'];
  494. }
  495. $data['EXAM_ITEMNAME'] = implode(',',$item_exam); //检查项目
  496. $data['EXAM_ITEMNAME_CODE'] = implode(',',$item_exam_code); //检查项目
  497. }
  498. $data['ID_CARD_CODE'] = $patient['ID_CARD_CODE'];
  499. $data['ID_CARD'] = $patient['ID_CARD'];
  500. $data['GENDER_CODE'] = $patient['GENDER_CODE'];
  501. $data['BIRTH_DATE'] = $patient['BIRTH_DATE'];
  502. $data['SERIESNUM'] = $medical['SERIESNUM'];
  503. $data['CLASS_CODE'] = $medical['CLASS_CODE'];
  504. $data['CLASS'] = $medical['CLASS'];
  505. $data['ENCOUNTER_CARD_NO'] = $medical['ENCOUNTER_CARD_NO'];
  506. $data['HOS_EMPI'] = $medical['HOS_EMPI'];
  507. $data['DEPTNAME'] = $medical['DEPTNAME'];
  508. $data['DIAGNOSECODE'] = $medical['DIAGNOSECODE'];
  509. $data['ORGCODE'] = $medical['ORGCODE'];
  510. // todo
  511. $data['create_time'] = date('Y-m-d H:i:s');
  512. return $data;
  513. }
  514. public function saveUploadHospitalPatient($patientCode)
  515. {
  516. $data = $this->makeUploadHospitalPatient($patientCode);
  517. $this->patientModel->HospitalPatient($data);
  518. }
  519. private function makeDiagnoseNameAndCodes($diagnoses) {
  520. $DIAGNOSECODES = array_map(function($diagnose) {
  521. return $diagnose['DIAGNOSECODE'];
  522. }, $diagnoses);
  523. $DIAGNOSENAMES = array_map(function($diagnose) {
  524. return $diagnose['DIAGNOSENAME'];
  525. }, $diagnoses);
  526. return [
  527. 'DIAGNOSECODE' => implode(',', $DIAGNOSECODES),
  528. 'DIAGNOSENAME' => implode(',', $DIAGNOSENAMES)
  529. ];
  530. }
  531. private function makeOrderNameAndCodes($orders) {
  532. $LAB_ITEMNAME_CODES = array_map(function($order) {
  533. return $order['LAB_ITEMNAME_CODE'];
  534. }, $orders);
  535. $LAB_ITEMNAMES = array_map(function($order) {
  536. return $order['LAB_ITEMNAME'];
  537. }, $orders);
  538. return [
  539. 'LAB_ITEMNAME_CODE' => implode(',', $LAB_ITEMNAME_CODES),
  540. 'LAB_ITEMNAME' => implode(',', $LAB_ITEMNAMES)
  541. ];
  542. }
  543. private function makeApplicationsNameAndCodes($applications) {
  544. $EXAM_ITEMNAME_CODES = array_map(function($application) {
  545. return $application['EXAM_ITEMNAME_CODE'];
  546. }, $applications);
  547. $EXAM_ITEMNAMES = array_map(function($application) {
  548. return $application['EXAM_ITEMNAME'];
  549. }, $applications);
  550. return [
  551. 'EXAM_ITEMNAME_CODE' => implode(',', $EXAM_ITEMNAME_CODES),
  552. 'EXAM_ITEMNAME' => implode(',', $EXAM_ITEMNAMES)
  553. ];
  554. }
  555. public function makeLab($lab,$inspectReportCode)
  556. {
  557. $labArr = [];
  558. $labArr['INSPECT_REPORT_CODE'] = $inspectReportCode;
  559. $labArr['INSPECT_REPORT_ITEM_CODE'] = Handle::makeInspectReportItemCode($inspectReportCode,$lab['LAB_ITEMDETAILNAME_CODE']);
  560. $labArr['EXAM_REQUESTID'] = $lab['EXAM_REQUESTID'];
  561. $labArr['REPORTID'] = $lab['REPORTID'];
  562. $labArr['ORGCODE'] = $lab['ORGCODE'];
  563. $labArr['LAB_ITEMDETAILNAME'] = $lab['LAB_ITEMDETAILNAME'];
  564. $labArr['LAB_ITEMDETAILNAME_NUMBER'] = $lab['LAB_ITEMDETAILNAME_NUMBER'];
  565. $labArr['LAB_ITEMDETAILNAME_CODE'] = $lab['LAB_ITEMDETAILNAME_CODE'];
  566. $labArr['LAB_ITEMDETAILVALUE'] = $lab['LAB_ITEMDETAILVALUE'];
  567. $labArr['LAB_ITEMDETAILSPEC'] = $lab['LAB_ITEMDETAILSPEC'];
  568. $labArr['LAB_ITEMDETAILINTERPRETATION'] = $lab['LAB_ITEMDETAILINTERPRETATION'];
  569. $labArr['LAB_ITEMDETAILRANGE'] = $lab['LAB_ITEMDETAILRANGE'];
  570. $labArr['CRITICAL_RANGE'] = $lab['CRITICAL_RANGE'];
  571. $labArr['LAB_HR_ITEMDETAIL_STATUS'] = $lab['LAB_HR_ITEMDETAIL_STATUS'];
  572. $labArr['LAB_HR_ITEMDETAILNAME'] = $lab['LAB_HR_ITEMDETAILNAME'];
  573. $labArr['LAB_HR_ITEMDETAILNAME_CODE'] = $lab['LAB_HR_ITEMDETAILNAME_CODE'];
  574. return $labArr;
  575. }
  576. public function makeLabOrganism($lab,$inspectReportCode)
  577. {
  578. $data['INSPECT_REPORT_CODE'] = $inspectReportCode;
  579. $data['INSPECT_REPORT_ITEM_CODE'] = Handle::makeInspectReportItemCode($inspectReportCode,$lab['LAB_ITEMDETAILNAME_CODE']);
  580. $data['EXAM_REQUESTID'] = $lab['EXAM_REQUESTID'] ?? '';
  581. $data['REPORTID'] = $lab['REPORTID'] ?? '';
  582. $data['ORGCODE'] = $lab['ORGCODE'] ?? '';
  583. $data['LAB_ITEMDETAILNAME'] = $lab['LAB_ITEMDETAILNAME'] ?? '';
  584. $data['LAB_ITEMDETAILNAME_EN'] = $lab['LAB_ITEMDETAILNAME_EN'] ?? '';
  585. $data['LAB_ITEMDETAILNAME_CODE'] = $lab['LAB_ITEMDETAILNAME_CODE'] ?? '';
  586. $data['LAB_ITEMDETAILNAME_NUMBER'] = $lab['LAB_ITEMDETAILNAME_NUMBER'] ?? '';
  587. $data['LAB_ITEMDETAILVALUE'] = $lab['LAB_ITEMDETAILVALUE'] ?? '';
  588. $data['LAB_ITEMDETAILSPEC'] = $lab['LAB_ITEMDETAILSPEC'] ?? '';
  589. $data['LAB_ITEMDETAILINTERPRETATION'] = $lab['LAB_ITEMDETAILINTERPRETATION'] ?? '';
  590. $data['LAB_ITEMDETAILINTERPRETATION_BIA'] = $lab['LAB_ITEMDETAILINTERPRETATION_BIA'] ?? '';
  591. $data['LAB_ITEMDETAILRANGE'] = $lab['LAB_ITEMDETAILRANGE'] ?? '';
  592. $data['CRITICAL_RANGE'] = $lab['CRITICAL_RANGE'] ?? '';
  593. $data['LAB_HR_ITEMDETAIL_STATUS'] = $lab['LAB_HR_ITEMDETAIL_STATUS'] ?? '';
  594. $data['LAB_HR_ITEMDETAILNAME'] = $lab['LAB_HR_ITEMDETAILNAME'] ?? '';
  595. $data['LAB_HR_ITEMDETAILNAME_CODE'] = $lab['LAB_HR_ITEMDETAILNAME_CODE'] ?? '';
  596. $data['LAB_METHOD'] = $lab['LAB_METHOD'] ?? '';
  597. $data['KB'] = $lab['KB'] ?? '';
  598. $data['MIC'] = $lab['MIC'] ?? '';
  599. $data['LAB_ITEMDETAILINTERPRE'] = $lab['LAB_ITEMDETAILINTERPRE'] ?? '';
  600. return $data;
  601. }
  602. // /**
  603. // * @throws ModelNotFoundException
  604. // * @throws DbException
  605. // * @throws DataNotFoundException
  606. // */
  607. // public function getPatient($where): array|string
  608. // {
  609. // $patient = $this->patientModel->getPatient($where);
  610. // if(empty($patient))
  611. // {
  612. // return '无法找到患者信息';
  613. // }
  614. // $medical = $this->patientModel->getMedical($patient['PATIENT_CODE']);
  615. // $mpi = $this->patientModel->getMpiByKey($patient['MPI']);
  616. // $diagnoses = $this->patientModel->getDiagnoses($patient['PATIENT_CODE']);
  617. // $application = $this->patientModel->getApplication($patient['PATIENT_CODE']);
  618. // $orders = $this->patientModel->getOrders($patient['PATIENT_CODE']);
  619. // $exam = $this->patientModel->getExam($patient['PATIENT_CODE']);
  620. // $app_data = [];
  621. // foreach ($application as $key=>$value)
  622. // {
  623. // $app_data[$value['EXAM_APPLICATION_CODE']] = $value['DEVICETYPE_CODE'];
  624. // }
  625. // foreach ($exam as $kkk=>$vvv)
  626. // {
  627. // $exam[$kkk]['DEVICETYPE_CODE'] = $app_data[$vvv['EXAM_APPLICATION_CODE']] ?? '';
  628. // }
  629. // $inspect = $this->patientModel->getInspect($patient['PATIENT_CODE']);
  630. // foreach ($inspect as $kk=>$vv)
  631. // {
  632. // $lab = $this->patientModel->getLab($vv['INSPECT_REPORT_CODE']);
  633. // $inspect[$kk]['INSPECT_REPORT_ITEMS'] = $lab;
  634. // }
  635. // unset($patient['ID']);
  636. // unset($patient['PATIENT_CODE']);
  637. // unset($patient['MPI']);
  638. // $patient['MPI'] = $mpi;
  639. // unset($patient['create_time']);
  640. // unset($patient['update_time']);
  641. // return [
  642. // 'PATIENT'=>$patient,
  643. // 'MEDICAL_INFORMATION'=>$medical,
  644. // 'DIAGNOSES'=>$diagnoses,
  645. // 'EXAM_APPLICATIONS'=>$application,
  646. // 'MEDICAL_ORDERS'=>$orders,
  647. // 'EXAM_REPORTS'=>$exam,
  648. // 'INSPECT_REPORTS'=>$inspect
  649. // ];
  650. // }
  651. /**
  652. * @throws ModelNotFoundException
  653. * @throws DbException
  654. * @throws DataNotFoundException
  655. */
  656. public function getPatientSign($where,$medicalWhere,$RESULT,$all ): bool|array
  657. {
  658. $patient = $this->patientModel->getPatient($where);
  659. if(empty($patient))
  660. {
  661. return false;
  662. }
  663. $patient = $patient->toArray();
  664. $medical = $this->patientModel->getMedical($patient['PATIENT_CODE'],$medicalWhere);
  665. $medical = empty($medical) ? $medical : $medical->toArray();
  666. if(empty($medical))
  667. {
  668. return false;
  669. }
  670. $examWhere = [];
  671. if($all == '0')
  672. {
  673. $examWhere = ['RECOG_STATUS'=>'*'];
  674. }
  675. $exam = $this->patientModel->getExam($patient['PATIENT_CODE'],$examWhere);
  676. if(!empty($exam) && $RESULT == 1)
  677. {
  678. return $exam;
  679. }
  680. $inspect = $this->patientModel->getInspect($patient['PATIENT_CODE']);
  681. unset($patient['PATIENT_CODE']);
  682. $inspectData = [];
  683. $return = false;
  684. foreach ($inspect as $k=>$v)
  685. {
  686. $RECOG = 0;
  687. if($v['RECOG_STATUS'] == '*' && $RESULT == 1)
  688. {
  689. $RECOG = 1;
  690. $return = true;
  691. }
  692. $lab = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
  693. if(!empty($lab))
  694. {
  695. foreach ($lab as $key=>$value)
  696. {
  697. if($value['RECOG_STATUS'] == '*')
  698. {
  699. $RECOG = 1;
  700. }
  701. }
  702. }
  703. if($RECOG == 1)
  704. {
  705. $return = true;
  706. $v['LAB_DATA'] = $lab;
  707. $inspectData[] = $v;
  708. }else{
  709. unset($inspect[$k]);
  710. }
  711. }
  712. $data = [
  713. 'PATIENT'=>$patient,
  714. 'MEDICAL_INFORMATION'=>$medical,
  715. 'EXAM_REPORTS'=>$exam,
  716. 'INSPECT_REPORTS'=>$inspectData
  717. ];
  718. if($RESULT == 1)
  719. {
  720. return $return;
  721. }else{
  722. return $data;
  723. }
  724. }
  725. /**
  726. * @throws ModelNotFoundException
  727. * @throws DbException
  728. * @throws DataNotFoundException
  729. */
  730. public function getHrPatient($where,$hr=0,$medicalWhere = []): array|string
  731. {
  732. $patient = $this->patientModel->getPatient($where);
  733. if(empty($patient))
  734. {
  735. return [];
  736. }
  737. $patient = $patient->toArray();
  738. $medical = $this->patientModel->getMedical($patient['PATIENT_CODE'],$medicalWhere);
  739. if(empty($medical))
  740. {
  741. return [];
  742. }
  743. $medical = empty($medical) ? $medical : $medical->toArray();
  744. $examWhere = [];
  745. $inspectWhere = [];
  746. if($hr == 1)
  747. {
  748. $examWhere = ['RECOG_STATUS'=>'*'];
  749. }
  750. $exam = $this->patientModel->getExam($patient['PATIENT_CODE'],$examWhere);
  751. $inspect = $this->patientModel->getInspect($patient['PATIENT_CODE'],$inspectWhere);
  752. $inspectArr = [];
  753. unset($patient['PATIENT_CODE']);
  754. foreach ($inspect as $k=>$v)
  755. {
  756. $recog = '0';
  757. $lab = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
  758. unset($inspect[$k]['INSPECT_REPORT_CODE']);
  759. if($hr == 1)
  760. {
  761. $labArr = [];
  762. foreach ($lab as $value)
  763. {
  764. if($value['RECOG_STATUS'] == '*')
  765. {
  766. $recog = '1';
  767. $labArr[] = $value;
  768. }
  769. }
  770. if($recog == '0')
  771. {
  772. continue;
  773. }
  774. $inspect[$k]['INSPECT_REPORT_ITEMS'] = $labArr;
  775. $inspectArr[] = $inspect[$k];
  776. }else{
  777. $inspect[$k]['INSPECT_REPORT_ITEMS'] = $lab;
  778. $inspectArr[] = $inspect[$k];
  779. }
  780. }
  781. if(empty($exam) && empty($inspectArr))
  782. {
  783. return [];
  784. }
  785. $data = [
  786. 'PATIENT'=>$patient,
  787. 'MEDICAL_INFORMATION'=>$medical,
  788. 'EXAM_REPORTS'=>$exam,
  789. 'INSPECT_REPORTS'=>$inspectArr
  790. ];
  791. return $data;
  792. }
  793. /**
  794. * @throws ModelNotFoundException
  795. * @throws DbException
  796. * @throws DataNotFoundException
  797. */
  798. public function getPatient($where,$medicalWhere = []): array|string
  799. {
  800. $patient = $this->patientModel->getPatient($where);
  801. if(empty($patient))
  802. {
  803. return '无法找到患者信息';
  804. }
  805. $patient = $patient->toArray();
  806. $medical = $this->patientModel->getMedical($patient['PATIENT_CODE'],$medicalWhere);
  807. $medical = empty($medical) ? $medical : $medical->toArray();
  808. $exam = $this->patientModel->getExam($patient['PATIENT_CODE']);
  809. $inspect = $this->patientModel->getInspect($patient['PATIENT_CODE']);
  810. unset($patient['PATIENT_CODE']);
  811. foreach ($inspect as $k=>$v)
  812. {
  813. $lab = $this->patientModel->getLab($v['INSPECT_REPORT_CODE']);
  814. $inspect[$k]['INSPECT_REPORT_ITEMS'] = $lab;
  815. unset($inspect[$k]['INSPECT_REPORT_CODE']);
  816. }
  817. $data = [
  818. 'PATIENT'=>$patient,
  819. 'MEDICAL_INFORMATION'=>$medical,
  820. 'EXAM_REPORTS'=>$exam,
  821. 'INSPECT_REPORTS'=>$inspect
  822. ];
  823. return $data;
  824. }
  825. public function updateMiddleStatus($id, $update): void
  826. {
  827. $this->patientModel->updateMiddleStatus($id, $update);
  828. }
  829. public function checkPostExamReport($params): array {
  830. $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION'],$params['MEDICAL_INFORMATION']['HOS_EMPI']);
  831. $MEDICAL_INFORMATION = $this->commonServies->handleMEDICAL_INFORMATION($params['MEDICAL_INFORMATION'], $PATIENT);
  832. $EXAM = $this->commonServies->handleEXAM($params['EXAM_REPORTS'], $MEDICAL_INFORMATION);
  833. // $EXAM_APPLICATIONS = $EXAM['EXAM_APPLICATIONS'];
  834. $EXAM_REPORTS = $EXAM['EXAM_REPORTS'];
  835. foreach ($EXAM_REPORTS as &$v)
  836. {
  837. if(!empty($v['REPORT']))
  838. {
  839. $v['REPORT'] = $this->makeUrl($v['REPORT']);
  840. }
  841. }
  842. return [
  843. "PATIENT" => $PATIENT,
  844. "MEDICAL_INFORMATION" => $MEDICAL_INFORMATION,
  845. // "EXAM_APPLICATIONS" => $EXAM_APPLICATIONS,
  846. "EXAM_REPORTS" => $EXAM_REPORTS,
  847. ];
  848. }
  849. public function checkPostLisReport($params): array {
  850. $PATIENT = $this->commonServies->handlePATIENT($params['PATIENT'], $params['MEDICAL_INFORMATION'],$params['INSPECT_REPORTS']['REPORTID']);
  851. $MEDICAL_INFORMATION = $this->commonServies->handleMEDICAL_INFORMATION($params['MEDICAL_INFORMATION'], $PATIENT);
  852. $reportModel = $this->commonServies->handleINSPECT_REPORTS($params, $MEDICAL_INFORMATION);
  853. $INSPECT_REPORTS = $reportModel['INSPECT_REPORTS'];
  854. $INSPECT_REPORT_ITEMS = $reportModel['INSPECT_REPORT_ITEMS'];
  855. foreach ($INSPECT_REPORTS as &$v)
  856. {
  857. if(!empty($v['REPORT']))
  858. {
  859. $v['REPORT'] = $this->makeUrl($v['REPORT']);
  860. }
  861. }
  862. return [
  863. "PATIENT" => $PATIENT,
  864. "MEDICAL_INFORMATION" => $MEDICAL_INFORMATION,
  865. "INSPECT_REPORTS" => $INSPECT_REPORTS,
  866. "INSPECT_REPORT_ITEMS" => $INSPECT_REPORT_ITEMS,
  867. ];
  868. }
  869. /*
  870. * 上传检查数据
  871. */
  872. public function postExamInfo($params): string
  873. {
  874. // try {
  875. $check = $this->checkPostExamReport($params);
  876. $this->handlePatient($check['PATIENT']);
  877. $MEDICAL_INFORMATION = $check['MEDICAL_INFORMATION'];
  878. $information = $this->patientModel->getMedical($MEDICAL_INFORMATION['PATIENT_CODE'],[],'*');
  879. if(!empty($information))
  880. {
  881. $this->patientModel->saveRepeatInformation($information);
  882. $this->patientModel->delOldInformation(['PATIENT_CODE'=>$information['PATIENT_CODE']]);
  883. }
  884. $MEDICAL_INFORMATION_INSERT = $MEDICAL_INFORMATION;
  885. $MEDICAL_INFORMATION_INSERT['create_time'] = $check['EXAM_REPORTS'][0]['create_time'];
  886. $this->patientModel->saveMedical($MEDICAL_INFORMATION_INSERT);
  887. $EXAM_REPORTS = $check['EXAM_REPORTS'];
  888. $this->saveExamData($EXAM_REPORTS);
  889. $this->saveUploadHospitalPatient($MEDICAL_INFORMATION['PATIENT_CODE']);
  890. return 'success';
  891. // }catch (\Exception $e)
  892. // {
  893. // return $e->getMessage();
  894. // }
  895. }
  896. public function postExamReport($params): string
  897. {
  898. $hosEmpi = $params['MEDICAL_INFORMATION']['HOS_EMPI'] ?? '';
  899. if($params['MEDICAL_INFORMATION']['ORGCODE'] == '121403004061412685')
  900. {
  901. Log::record('阳泉一院的检验报告信息参数'.json_encode($params));
  902. }
  903. if(!empty($hosEmpi))
  904. {
  905. $hosEmpi = explode(';',$hosEmpi);
  906. }
  907. if(!empty($hosEmpi))
  908. {
  909. foreach ($hosEmpi as $v)
  910. {
  911. $information = $this->patientModel->getMedicalData(['HOS_EMPI'=>$v,'ORGCODE'=>$params['MEDICAL_INFORMATION']['ORGCODE']],'*');
  912. if(empty($information))
  913. {
  914. return '';
  915. }
  916. $EXAM_REPORTS = $this->makeExamData($params['EXAM_REPORTS']);
  917. // Log::record('检查报告的hosempi为'.$v);
  918. // Log::record('患者code为'.$information['PATIENT_CODE']);
  919. $report = $this->patientModel->getExamReport(['PATIENT_CODE'=>$information['PATIENT_CODE'],'HOS_EMPI'=>$v],'*');
  920. if(empty($report))
  921. {
  922. return '';
  923. }
  924. $report->save($EXAM_REPORTS);
  925. }
  926. }
  927. return 'success';
  928. }
  929. public function makeExamData($report)
  930. {
  931. $RESULT_STATUS = $this->commonServies->getRESULT_STATUSByCode($report['RESULT_STATUS_CODE']);
  932. $report['RESULT_STATUS'] = $RESULT_STATUS;
  933. if(empty($report['AUDITTIME']))
  934. {
  935. unset($report['AUDITTIME']);
  936. }
  937. if(empty($report['STUDYTIME']))
  938. {
  939. unset($report['STUDYTIME']);
  940. }
  941. return $report;
  942. }
  943. public function saveExamData($EXAM_REPORTS)
  944. {
  945. $EXAM_REPORTS_INSERT = [];
  946. foreach ($EXAM_REPORTS as $k=>$v)
  947. {
  948. $report = $this->patientModel->getExamReport(['EXAM_REPORT_CODE'=>$v['EXAM_REPORT_CODE']],'*');
  949. if(!empty($report))
  950. {
  951. $this->patientModel->saveRepeatReport($report);
  952. $this->patientModel->delOldReport(['EXAM_REPORT_CODE'=>$v['EXAM_REPORT_CODE']]);
  953. }
  954. $EXAM_REPORTS_INSERT[] = $v;
  955. }
  956. $this->patientModel->saveExamReport($EXAM_REPORTS_INSERT);
  957. }
  958. public function makeUrl($base64_string)
  959. {
  960. if(empty($base64_string))
  961. {
  962. return '';
  963. }
  964. if(strrpos($base64_string,'http') !== false || strrpos($base64_string,'https') !== false)
  965. {
  966. // 传参url
  967. $arr = explode('.',$base64_string);
  968. $hz = end($arr);
  969. $filePath = $_SERVER['DOCUMENT_ROOT'].'/report/'.time().rand(0,9999).'.'.$hz; // 本地文件路径
  970. $savePath = $_SERVER['HTTP_HOST'].'/report/'.time().rand(0,9999).'.'.$hz; // 本地文件路径
  971. // 检查目标 URL 是否有效
  972. if (!filter_var($base64_string, FILTER_VALIDATE_URL)) {
  973. return '';
  974. }
  975. // 创建流上下文并设置超时时间为 5 秒
  976. $context = stream_context_create([
  977. 'http' => [
  978. 'timeout' => 5 // 设置超时时间为 5 秒
  979. ]
  980. ]);
  981. // 获取文件内容
  982. try{
  983. $content = file_get_contents($base64_string, false, $context);
  984. }catch (\Exception $e){
  985. return '';
  986. }
  987. // 检查是否成功获取文件内容
  988. if ($content === false) {
  989. return '';
  990. }
  991. // 保存文件到本地目录
  992. $result = file_put_contents($filePath, $content);
  993. // 检查是否成功保存文件
  994. if ($result === false) {
  995. return '';
  996. }
  997. }else{
  998. // 将Base64字符串分割成数据和文件类型
  999. list($type, $data) = explode(';', $base64_string);
  1000. list(,$hz) = explode('/',$type);
  1001. list(, $data) = explode(',', $data);
  1002. // 将Base64解码成二进制数据
  1003. $decodedData = base64_decode($data);
  1004. $filePath = $_SERVER['DOCUMENT_ROOT'].'/report/'.time().rand(0,9999).'.'.$hz; // 本地文件路径
  1005. $savePath = $_SERVER['HTTP_HOST'].'/report/'.time().rand(0,9999).'.'.$hz; // 本地文件路径
  1006. // 将数据写入到文件
  1007. file_put_contents($filePath, $decodedData);
  1008. }
  1009. return $savePath;
  1010. }
  1011. /*
  1012. * 删除检验数据
  1013. */
  1014. public function delLabReport($params,$orgCode)
  1015. {
  1016. $INSPECT_REPORT = $this->checkDelLibReport($params,$orgCode);
  1017. $this->doneDelLibReport($INSPECT_REPORT);
  1018. }
  1019. /*
  1020. * 删除检查数据
  1021. */
  1022. public function delExamReport($params,$orgCode)
  1023. {
  1024. $EXAM_REPORT = $this->checkDelExamReport($params,$orgCode);
  1025. $this->doneDelExamReport($EXAM_REPORT);
  1026. }
  1027. public function checkDelLibReport($params,$orgCode) {
  1028. $REPORTID = $params['REPORTID'];
  1029. $ID_CARDNUM = $params['ID_CARDNUM'];
  1030. return $this->getINSPECT_REPORT($REPORTID, $ID_CARDNUM,$orgCode);
  1031. }
  1032. public function checkDelExamReport($params,$orgCode) {
  1033. $REQUESTID = $params['REQUESTID'];
  1034. $ID_CARDNUM = $params['ID_CARDNUM'];
  1035. return $this->getEXAM_REPORT($REQUESTID, $ID_CARDNUM,$orgCode);
  1036. }
  1037. public function getEXAM_REPORT($REQUESTID, $ID_CARDNUM,$orgCode) {
  1038. $mpiModel = new Mpi();
  1039. $mpiData = $mpiModel
  1040. ->where('ID_CARDNUM', Gm::encrypt(Config::get('gm.key'), $ID_CARDNUM))
  1041. ->find();
  1042. $model = new ExamReport();
  1043. $report = $model
  1044. ->where('REQUESTID', $REQUESTID)
  1045. ->where('ORGCODE', $orgCode)
  1046. ->where('MPI', $mpiData['MPI'])
  1047. ->find();
  1048. if(!$report) {
  1049. // todo 未找到检查报告异常抛出
  1050. }
  1051. return $report;
  1052. }
  1053. public function getINSPECT_REPORT($REPORTID, $ID_CARDNUM,$orgCode) {
  1054. $mpiModel = new Mpi();
  1055. $mpiData = $mpiModel
  1056. ->where('ID_CARDNUM', Gm::encrypt(Config::get('gm.key'), $ID_CARDNUM))
  1057. ->find();
  1058. // todo 根据报告单号和身份证号获取检验报告标识
  1059. $model = new InspectReport();
  1060. $report = $model
  1061. ->where('REPORTID', $REPORTID)
  1062. ->where('ORGCODE', $orgCode)
  1063. ->where('MPI', $mpiData['MPI'])
  1064. ->find();
  1065. if(!$report) {
  1066. // todo 未找到检验报告异常抛出
  1067. }
  1068. return $report;
  1069. }
  1070. public function doneDelLibReport($INSPECT_REPORT) {
  1071. Db::startTrans();
  1072. try {
  1073. $newModel = new DelInspectReport();
  1074. $this->_delModelAndCreateNewModel($INSPECT_REPORT, $newModel);
  1075. $this->doneDelLabData($INSPECT_REPORT['INSPECT_REPORT_CODE']);
  1076. $this->doneDelBiInspectReport($INSPECT_REPORT['INSPECT_REPORT_CODE']);
  1077. $this->doneDelMedicalInformation($INSPECT_REPORT['PATIENT_CODE']);
  1078. $this->doneUpdateHrData($INSPECT_REPORT['PATIENT_CODE']);
  1079. $this->doneUpdateCache($INSPECT_REPORT['PATIENT_CODE']);
  1080. Db::commit();
  1081. } catch(Exception $e) {
  1082. Db::rollback();
  1083. }
  1084. }
  1085. public function doneDelLabData($INSPECT_REPORT_CODE) {
  1086. $model = new LabData();
  1087. $labs = $model->where('INSPECT_REPORT_CODE', $INSPECT_REPORT_CODE)->select();
  1088. foreach($labs as $lab) {
  1089. $this->_delModelAndCreateNewModel($lab, new DelLabData());
  1090. }
  1091. }
  1092. public function doneUpdateHrData($PATIENT_CODE) {
  1093. // TODO 更新互认相关数据 hospital_patient
  1094. $this->saveUploadHospitalPatient($PATIENT_CODE);
  1095. }
  1096. public function doneUpdateCache($PATIENT_CODE) {
  1097. // TODO 更新相关缓存数据
  1098. // 记录PATIENT_CODE删除时间和内容
  1099. }
  1100. public function doneDelBiInspectReport($INSPECT_REPORT_CODE) {
  1101. $model = new BiInspectReport();
  1102. $labs = $model->where('INSPECT_REPORT_CODE', $INSPECT_REPORT_CODE)->select();
  1103. foreach($labs as $lab) {
  1104. $this->_delModelAndCreateNewModel($lab, new DelBiInspectReport());
  1105. }
  1106. }
  1107. public function doneDelExamReport($EXAM_REPORT) {
  1108. Db::startTrans();
  1109. try {
  1110. $newModel = new DelExamReport();
  1111. $this->_delModelAndCreateNewModel($EXAM_REPORT, $newModel);
  1112. $this->doneDelMedicalInformation($EXAM_REPORT['PATIENT_CODE']);
  1113. $this->doneUpdateHrData($EXAM_REPORT['PATIENT_CODE']);
  1114. $this->doneUpdateCache($EXAM_REPORT['PATIENT_CODE']);
  1115. Db::commit();
  1116. } catch(Exception $e) {
  1117. Db::rollback();
  1118. }
  1119. }
  1120. public function _delModelAndCreateNewModel($dataModel, $newModel) {
  1121. $id = $dataModel['ID'];
  1122. $arr = $dataModel;
  1123. $arr['del_time'] = time();
  1124. unset($arr['ID']);
  1125. $newModel->save($dataModel);
  1126. $dataModel->where('ID',$id)->delete();
  1127. }
  1128. public function doneDelMedicalInformation($PATIENT_CODE) {
  1129. $examModel = new ExamReport();
  1130. $res = $examModel->field('PATIENT_CODE')->where('PATIENT_CODE', $PATIENT_CODE)->find();
  1131. if($res) {
  1132. return;
  1133. }
  1134. $inspectModel = new InspectReport();
  1135. $res = $inspectModel->field('PATIENT_CODE')->where('PATIENT_CODE', $PATIENT_CODE)->find();
  1136. if($res) {
  1137. return;
  1138. }
  1139. $model = new MedicalInformation();
  1140. $newModel = new DelMedicalInformation();
  1141. $info = $model->where('PATIENT_CODE', $PATIENT_CODE)->find();
  1142. $this->_delModelAndCreateNewModel($info, $newModel);
  1143. $this->doneDelPatient($PATIENT_CODE);
  1144. }
  1145. public function doneDelPatient($PATIENT_CODE) {
  1146. $model = new Patient();
  1147. $newModel = new DelPatient();
  1148. $patient = $model->where('PATIENT_CODE', $PATIENT_CODE)->find();
  1149. $this->_delModelAndCreateNewModel($patient, $newModel);
  1150. }
  1151. /*
  1152. * 上传检验数据
  1153. */
  1154. public function postLabReport($params): string
  1155. {
  1156. // try{
  1157. $check = $this->checkPostLisReport($params);
  1158. $this->handlePatient($check['PATIENT']);
  1159. $MEDICAL_INFORMATION = $check['MEDICAL_INFORMATION'];
  1160. $information = $this->patientModel->getMedical($MEDICAL_INFORMATION['PATIENT_CODE'],[],'*');
  1161. if(!empty($information))
  1162. {
  1163. $this->patientModel->saveRepeatInformation($information);
  1164. $this->patientModel->delOldInformation(['PATIENT_CODE'=>$information['PATIENT_CODE']]);
  1165. }
  1166. $MEDICAL_INFORMATION_INSERT = $MEDICAL_INFORMATION;
  1167. $MEDICAL_INFORMATION_INSERT['create_time'] = $check['INSPECT_REPORTS'][0]['create_time'];
  1168. $this->patientModel->saveMedical($MEDICAL_INFORMATION_INSERT);
  1169. $INSPECT_REPORTS = $check['INSPECT_REPORTS'];
  1170. $INSPECT_REPORTS_INSERT = [];
  1171. $newArr = [];
  1172. $hrNullData = [];
  1173. $INSPECT_REPORT_CODE = [];
  1174. $bi = [];
  1175. foreach ($INSPECT_REPORTS as $k=>$v)
  1176. {
  1177. $INSPECT_REPORT_CODE[] = $v['INSPECT_REPORT_CODE'];
  1178. $inspect = $this->patientModel->getInspectData(['INSPECT_REPORT_CODE'=>$v['INSPECT_REPORT_CODE']],'*');
  1179. if(!empty($inspect))
  1180. {
  1181. //存在 删除并存储历史
  1182. $this->patientModel->saveRepeatInspect($inspect);
  1183. $this->patientModel->delOldInspect(['INSPECT_REPORT_CODE'=>$v['INSPECT_REPORT_CODE']]);
  1184. }
  1185. if(!empty($v['LAB_HR_ITEMNAME_CODE']))
  1186. {
  1187. $newArr[] = $v;
  1188. $bi[] = $v['INSPECT_REPORT_CODE'];
  1189. }else{
  1190. $hrNullData[$v['INSPECT_REPORT_CODE']] = $v;
  1191. }
  1192. $INSPECT_REPORTS_INSERT[] = $v;
  1193. }
  1194. if(!empty($INSPECT_REPORTS_INSERT))
  1195. {
  1196. $this->patientModel->saveInspectReport($INSPECT_REPORTS_INSERT);
  1197. }
  1198. if(!empty($INSPECT_REPORT_CODE))
  1199. {
  1200. $oldItems = $this->patientModel->getOldLab($INSPECT_REPORT_CODE);
  1201. if(!empty($oldItems))
  1202. {
  1203. $this->patientModel->delOldLab($INSPECT_REPORT_CODE);
  1204. $delItems = [];
  1205. foreach ($oldItems as $k=>$v)
  1206. {
  1207. unset($v['ID']);
  1208. $delItems[] = $v;
  1209. }
  1210. if(!empty($delItems))
  1211. {
  1212. $this->patientModel->saveRepeatLab($delItems);
  1213. }
  1214. }
  1215. }
  1216. $INSPECT_REPORT_ITEMS = $check['INSPECT_REPORT_ITEMS'];
  1217. $INSPECT_REPORT_ITEMS_INSERT = [];
  1218. foreach ($INSPECT_REPORT_ITEMS as $k=>$v)
  1219. {
  1220. if(isset($hrNullData[$v['INSPECT_REPORT_CODE']]))
  1221. {
  1222. // 存在互认项目编码为空的检验报告子项
  1223. $labChild = $hrNullData[$v['INSPECT_REPORT_CODE']];
  1224. $labChild['LAB_HR_ITEMNAME_CODE'] = $v['LAB_HR_ITEMDETAILNAME_CODE'];
  1225. $labChild['LAB_HR_ITEMNAME'] = $v['LAB_HR_ITEMDETAILNAME'];
  1226. $newArr[] = $labChild;
  1227. $bi[] = $v['INSPECT_REPORT_CODE'];
  1228. }
  1229. $INSPECT_REPORT_ITEMS_INSERT[] = $v;
  1230. }
  1231. if(!empty($INSPECT_REPORT_ITEMS_INSERT))
  1232. {
  1233. $this->patientModel->saveLabData($INSPECT_REPORT_ITEMS_INSERT);
  1234. }
  1235. if(!empty($newArr))
  1236. {
  1237. $biInspect = $this->patientModel->getBiInspect($bi);
  1238. foreach ($biInspect as $k=>$v)
  1239. {
  1240. unset($biInspect[$k]['ID']);
  1241. }
  1242. $this->patientModel->saveRepeatBiInspect($biInspect);
  1243. $this->patientModel->delBiInspect($bi);
  1244. $this->patientModel->saveBiInspect($newArr);
  1245. }
  1246. $this->saveUploadHospitalPatient($check['PATIENT']['PATIENT_CODE']);
  1247. return 'success';
  1248. // }catch (\Exception $e)
  1249. // {
  1250. // return $e->getMessage();
  1251. // }
  1252. }
  1253. public function checkExam($data)
  1254. {
  1255. $info = $this->patientModel->getPatient(['PATIENT_CODE'=>$data['PATIENT_CODE']],'*');
  1256. return $info;
  1257. }
  1258. public function saveNormalPatient($params, $mpiKey, $patientCode, $mpi): void
  1259. {
  1260. $mpiData = $this->patientModel->getMpi($params['ID_CARDNUM']);
  1261. if(!empty($mpiData))
  1262. {
  1263. $this->saveMpi($mpi,$params['ID_CARDNUM'],$mpiKey);
  1264. }
  1265. $PData = $this->patientModel->getPatient(['PATIENT_CODE'=>$patientCode]);
  1266. if(empty($PData))
  1267. {
  1268. // 直接存储 患者信息
  1269. $this->savePatient($params['PATIENT'],$mpi,$mpiKey,$patientCode);
  1270. }else{
  1271. // todo 存储到备用表里
  1272. // $patient = $this->makePatient($params,$mpiKey,$patientCode);
  1273. }
  1274. $MData = $this->patientModel->getMedical($patientCode);
  1275. if(empty($MData))
  1276. {
  1277. // 直接存储 就诊信息
  1278. $this->saveMedical($params['MEDICAL_INFORMATION'],$mpiKey,$patientCode);
  1279. }else{
  1280. // todo 存储到备用表里
  1281. }
  1282. }
  1283. /**
  1284. * @param $PATIENT1
  1285. * @return void
  1286. */
  1287. public function handlePatient($PATIENT1)
  1288. {
  1289. $PATIENT = $PATIENT1;
  1290. $data = $this->checkExam($PATIENT);
  1291. if ($data) {
  1292. //存在 删除 并存储历史记录
  1293. $this->patientModel->saveRepeatPatient($data);
  1294. $this->patientModel->delOldPatient(['PATIENT_CODE'=>$data['PATIENT_CODE']]);
  1295. }
  1296. $this->patientModel->save($PATIENT);
  1297. }
  1298. public function getIdCard($mpi)
  1299. {
  1300. $mpiData = $this->patientModel->getMpiData(['MPI'=>$mpi]);
  1301. return $mpiData['ID_CARDNUM'];
  1302. }
  1303. public function login($params)
  1304. {
  1305. if($params['username'] == 'admin' && $params['password'] == '123456')
  1306. {
  1307. return 'success';
  1308. }
  1309. return '账号或密码错误';
  1310. }
  1311. public function getHospitalData($params)
  1312. {
  1313. $data = $this->patientModel->getHospitalData($params);
  1314. return $data;
  1315. }
  1316. public function getCheck($params)
  1317. {
  1318. $data = $this->patientModel->getCheck($params);
  1319. return $data;
  1320. }
  1321. public function getInpection($params)
  1322. {
  1323. $data = $this->patientModel->getInpection($params);
  1324. return $data;
  1325. }
  1326. public function syncExam($params)
  1327. {
  1328. $study_id = $params['study_id'];
  1329. $studyUid = $params['studyUid'];
  1330. $exam = $this->patientModel->saveReportStudy($studyUid,$study_id);
  1331. return 'success';
  1332. }
  1333. public function getMedical($mpi)
  1334. {
  1335. $where = ['mpi'=>$mpi];
  1336. $arr = $this->patientModel->getOneMedicalInformation($where);
  1337. return $arr;
  1338. }
  1339. public function getPatientExam($params)
  1340. {
  1341. $idCard = Gm::encrypt(Config::get('gm.key'),$params['id_card']);
  1342. $where = [];
  1343. $time = $params['time'] ?? '';
  1344. if(!empty($time))
  1345. {
  1346. $time = explode(',',$time);
  1347. $where = "CREATE_TIME BETWEEN '$time[0]' and '$time[1]'";
  1348. }
  1349. $patient = $this->patientModel->getPatientsByID_CARDNUM($idCard,$where);
  1350. $list = [];
  1351. foreach ($patient as $v)
  1352. {
  1353. $exam = $this->patientModel->getExam($v['PATIENT_CODE']);
  1354. $medical = $this->patientModel->getMedical($v['PATIENT_CODE']);
  1355. foreach ($exam as $value)
  1356. {
  1357. if(!empty($value))
  1358. {
  1359. $value['AGE'] = $medical['AGE'];
  1360. $value['GENDER'] = $medical['GENDER'];
  1361. $value['PHONE'] = $v['PHONE'];
  1362. $list[] = $value;
  1363. }
  1364. }
  1365. }
  1366. return $list;
  1367. }
  1368. public function getExamData($params)
  1369. {
  1370. $arr = $this->patientModel->getExamData($params['patient_code']);
  1371. return $arr;
  1372. }
  1373. public function getPatientLab($params)
  1374. {
  1375. $idCard = Gm::encrypt(Config::get('gm.key'),$params['id_card']);
  1376. $where = [];
  1377. $time = $params['time'] ?? '';
  1378. if(!empty($time))
  1379. {
  1380. $time = explode(',',$time);
  1381. $where = "CREATE_TIME BETWEEN '$time[0]' and '$time[1]'";
  1382. }
  1383. $patient = $this->patientModel->getPatientsByID_CARDNUM($idCard,$where);
  1384. $list = [];
  1385. foreach ($patient as $v)
  1386. {
  1387. $arr = [];
  1388. $lab = $this->patientModel->getInspect($v['PATIENT_CODE']);
  1389. $medical = $this->patientModel->getMedical($v['PATIENT_CODE']);
  1390. foreach ($lab as $value)
  1391. {
  1392. if(!empty($value))
  1393. {
  1394. $value['AGE'] = $medical['AGE'];
  1395. $value['GENDER'] = $medical['GENDER'];
  1396. $value['PHONE'] = $v['PHONE'];
  1397. $list[] = $value;
  1398. }
  1399. $list[] = $value;
  1400. }
  1401. }
  1402. return $list;
  1403. }
  1404. public function getLabData($params)
  1405. {
  1406. $inspect = $this->patientModel->getInspectReport($params['INSPECT_REPORT_CODE']);
  1407. $lab = $this->patientModel->getLab($params['INSPECT_REPORT_CODE']);
  1408. $inspect['child'] = $lab;
  1409. return $inspect;
  1410. }
  1411. }