SyncHisController.class.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. if (!defined('IS_INITPHP')) exit('Access Denied!');
  3. class SyncHisController extends BaseController {
  4. public function IndexAction(){
  5. $this->display();
  6. }
  7. public function getSyncHisAction(){
  8. $hospitalId =C('HOSPITALID');
  9. $hisUrl =C('HIS_URL');
  10. $maxRegDays =C('maxRegDays');
  11. $appKey= md5(C('APPKEY')."|".date("Y-m-d", time()));
  12. //$this->getHospitalInfo($hospitalId,$hisUrl,$appKey);
  13. //$this->getDeptInfo($hospitalId,$hisUrl,$appKey);
  14. //$this->getDoctorInfo($hospitalId,$hisUrl,$appKey);
  15. //$this->getRegInfo($hospitalId,$hisUrl,$appKey,$maxRegDays);
  16. //$this->getTimeRegInfo($hospitalId,$hisUrl,$appKey);
  17. //删除今天前的数据
  18. $this->delRegList();
  19. }
  20. //删除今天前的数据
  21. public function delRegList() {
  22. $sqlString ="DELETE FROM hz_reginfo WHERE regDate<DATE('".date("Y-m-d", time())."')";
  23. $sqlData = call_user_func(array($_ENV["dbDao"],"delete"),$sqlString,"entity");
  24. }
  25. //医院信息查询接口
  26. public function getHospitalInfo($hospitalId,$hisUrl,$appKey) {
  27. $postData="<?xml version=\"1.0\" encoding=\"UTF-8\"?><req><hospitalId>$hospitalId</hospitalId></req>";
  28. $postUrl = $hisUrl."?c=NfyyApi&a=getHospitalInfo&appkey=".$appKey;
  29. $xmldata = call_user_func(array($_ENV["commonClass"],"sendDataByCurl"),$postUrl,$postData);
  30. $sqlString ="select id from hz_hospitalinfo where hospitalId='$hospitalId'";
  31. $sqlData = call_user_func(array($_ENV["dbDao"],"select"),$sqlString,"entity");
  32. if ($sqlData) {
  33. $sqlString ="update hz_hospitalinfo set hospitalName='".trim(strval($xmldata->hospitalName))."',addr='".trim(strval($xmldata->addr))."',tel='".trim(strval($xmldata->tel))."',webSite='".trim(strval($xmldata->webSite))."',hospitalLevel='".trim(strval($xmldata->hospLevel))."',hospitalArea='".trim(strval($xmldata->hospArea))."',info='".trim(strval($xmldata->desc))."',maxRegDays='".trim(strval($xmldata->maxRegDays))."',startRegTime='".trim(strval($xmldata->startRegTime))."',stopRegTime='".trim(strval($xmldata->stopRegTime))."',stopBookTimeM='".trim(strval($xmldata->stopBookTimeM))."',stopBookTimeA='".trim(strval($xmldata->stopBookTimeA))."' where hospitalId='$hospitalId'";
  34. call_user_func(array($_ENV["dbDao"],"update"),$sqlString,"return");
  35. }else{
  36. $sqlString ="insert into hz_hospitalinfo(hospitalId,hospitalName,addr,tel,webSite,hospitalLevel,hospitalArea,info,maxRegDays,startRegTime,stopRegTime,stopBookTimeM,stopBookTimeA,createDate) VALUES('".$hospitalId."','".trim(strval($xmldata->hospitalName))."','".trim(strval($xmldata->addr))."','".trim(strval($xmldata->tel))."','".trim(strval($xmldata->webSite))."','".trim(strval($xmldata->hospLevel))."','".trim(strval($xmldata->hospArea))."','".trim(strval($xmldata->desc))."','".trim(strval($xmldata->maxRegDays))."','".trim(strval($xmldata->startRegTime))."','".trim(strval($xmldata->stopRegTime))."','".trim(strval($xmldata->stopBookTimeM))."','".trim(strval($xmldata->stopBookTimeA))."','".date("Y-m-d H:i:s", time())."')";
  37. call_user_func(array($_ENV["dbDao"],"insert"),$sqlString,"return");
  38. }
  39. }
  40. //科室信息查询接口
  41. public function getDeptInfo($hospitalId,$hisUrl,$appKey) {
  42. $postData="<?xml version=\"1.0\" encoding=\"UTF-8\"?><req><hospitalId>$hospitalId</hospitalId><deptId></deptId></req>";
  43. $postUrl = $hisUrl."?c=NfyyApi&a=getDeptInfo&appkey=".$appKey;
  44. $xmldata = call_user_func(array($_ENV["commonClass"],"sendDataByCurlStr"),$postUrl,$postData);
  45. print_r($xmldata);
  46. foreach($xmldata as $key=>$value){
  47. $sqlString ="select id from hz_deptinfo where hospitalId='$hospitalId' and deptId ='$value->deptId'";
  48. $sqlData = call_user_func(array($_ENV["dbDao"],"select"),$sqlString,"entity");
  49. if ($sqlData) {
  50. $sqlString ="update hz_deptinfo set deptId='$value->deptId',deptName='$value->deptName',parentId='$value->parentId',info='$value->desc' where id='".$sqlData['id']."'";
  51. call_user_func(array($_ENV["dbDao"],"update"),$sqlString,"return");
  52. }else{
  53. $sqlString ="insert into hz_deptinfo(hospitalId,deptId,deptName,parentId,info) VALUES('$hospitalId','$value->deptId','$value->deptName','$value->parentId','$value->desc')";
  54. call_user_func(array($_ENV["dbDao"],"insert"),$sqlString,"return");
  55. }
  56. }
  57. }
  58. //医生信息查询接口
  59. public function getDoctorInfo($hospitalId,$hisUrl,$appKey){
  60. $postData="<?xml version=\"1.0\" encoding=\"UTF-8\"?><req><hospitalId>$hospitalId</hospitalId><deptId/><doctorId/></req>";
  61. $postUrl = $hisUrl."?c=NfyyApi&a=getDoctorInfo&appkey=".$appKey;
  62. $xmldata = call_user_func(array($_ENV["commonClass"],"sendDataByCurl"),$postUrl,$postData);
  63. foreach($xmldata as $key=>$value){
  64. $sqlString ="select id from hz_doctorinfo where hospitalId='$hospitalId' and deptId ='$value->deptId' and doctorId ='$value->doctorId'";
  65. $sqlData = call_user_func(array($_ENV["dbDao"],"select"),$sqlString,"entity");
  66. if ($sqlData) {
  67. $sqlString ="update hz_doctorinfo set deptId='$value->deptId',doctorId='$value->doctorId',doctorName='$value->doctorName',title='$value->Title',fee='$value->Fe',sex='".trim($value->Gender == "M" ? "男":"女")."',info='$value->desc' where id='".$sqlData['id']."'";
  68. call_user_func(array($_ENV["dbDao"],"update"),$sqlString,"return");
  69. }else{
  70. $sqlString ="insert into hz_doctorinfo(hospitalId,deptId,doctorId,doctorName,title,fee,sex,info) VALUES('$hospitalId','$value->deptId','$value->doctorId','$value->doctorName','$value->Title','$value->Fee','".trim($value->Gender == "M" ? "男":"女")."','$value->desc')";
  71. call_user_func(array($_ENV["dbDao"],"insert"),$sqlString,"return");
  72. }
  73. }
  74. }
  75. //医生号源信息查询接口
  76. public function getRegInfo($hospitalId,$hisUrl,$appKey,$maxRegDays){
  77. $sqlString ="select id,deptId from hz_deptinfo where hospitalId='$hospitalId' and parentId <>'-1'";
  78. $sqlDataList = call_user_func(array($_ENV["dbDao"],"select"),$sqlString,"list");
  79. foreach($sqlDataList as $key=>$deptInfo){
  80. $postData="<?xml version=\"1.0\" encoding=\"UTF-8\"?><req><hospitalId>$hospitalId</hospitalId><deptId>".$deptInfo['deptId']."</deptId><doctorId></doctorId><startDate>".date("Y-m-d",strtotime("+6 day"))."</startDate><endDate>".date("Y-m-d", strtotime("+".$maxRegDays." day"))."</endDate></req>";
  81. $postUrl = $hisUrl."?c=NfyyApi&a=getRegInfo&appkey=".$appKey;
  82. $xmldata = call_user_func(array($_ENV["commonClass"],"sendDataByCurl"),$postUrl,$postData);
  83. foreach($xmldata as $key=>$ri){
  84. $TimeRegInfoList = $ri->TimeRegInfoList;
  85. foreach($TimeRegInfoList as $key=>$tril){
  86. $timeRegInfo = $tril->timeRegInfo;
  87. foreach($timeRegInfo as $key=>$tri){
  88. $sqlString ="select id from hz_reginfo where hospitalId='$hospitalId' and deptId='".$deptInfo['deptId']."' and doctorId='$ri->doctorId' and regDate='$tril->regDate' and timeFlag ='$tri->timeFlag'";
  89. $sqlData = call_user_func(array($_ENV["dbDao"],"select"),$sqlString,"entity");
  90. if ($sqlData) {
  91. $sqlString ="update hz_reginfo set deptId='".$deptInfo['deptId']."',doctorId='$ri->doctorId',doctorName='$ri->doctorName',regDate='$tril->regDate',regWeekDay='$tril->regWeekDay',timeFlag='$tri->timeFlag',regStatus='$tri->regStatus',regTotalCount='$tri->regTotalCount',regLeaveCount='$tri->regleaveCount',regFee='$tri->regFee',treatFee='$tri->treatFee',isTimeReg='$tri->isTimeReg' where id='".$sqlData['id']."'";
  92. call_user_func(array($_ENV["dbDao"],"update"),$sqlString,"return");
  93. }else{
  94. $sqlString ="insert into hz_reginfo(hospitalId,deptId,doctorId,doctorName,regDate,regWeekDay,timeFlag,regStatus,regTotalCount,regleaveCount,regFee,treatFee,isTimeReg) VALUES('$hospitalId','".$deptInfo['deptId']."','$ri->doctorId','$ri->doctorName','$tril->regDate','$tril->regWeekDay','$tri->timeFlag','$tri->regStatus','$tri->regTotalCount','$tri->regleaveCount','$tri->regFee','$tri->treatFee','$tri->isTimeReg')";
  95. call_user_func(array($_ENV["dbDao"],"insert"),$sqlString,"return");
  96. }
  97. }
  98. }
  99. }
  100. }
  101. }
  102. //医生号源分时信息查询接口
  103. public function getTimeRegInfo($hospitalId,$hisUrl,$appKey) {
  104. $postData="<?xml version=\"1.0\" encoding=\"UTF-8\"?><req><hospitalId>$hospitalId</hospitalId><deptId>220701</deptId><doctorId>PJ1</doctorId><regDate>2015-10-15</regDate><timeFlag>2</timeFlag></req>";
  105. $postUrl = $hisUrl."?c=NfyyApi&a=getTimeRegInfo&appkey=".$appKey;
  106. $xmldata = call_user_func(array($_ENV["commonClass"],"sendDataByCurl"),$postUrl,$postData);
  107. $timeRegInfo=$xmldata;
  108. foreach($timeRegInfo as $key=>$tri){
  109. echo trim($tri->startTime)."<br/>";
  110. echo trim($tri->endTime)."<br/>";
  111. echo trim($tri->regTotalCount)."<br/>";
  112. echo trim($tri->regLeaveCount)."<br/>";
  113. }
  114. }
  115. }