Ejemplo n.º 1
0
    public function __construct($request, $response) 
    {
        parent::__construct($request, $response);

        $response->controller = $request->controller;
        $response->action = $request->action;
        $this->user = $response->user;
        $response->wwwUrl = "http://www.".URL_PREFIX."haodf.com";
        $response->imgUrl = "http://i1.hdfimg.com";

        if($this->user != null && $this->user->isNull() == false)
        {
            $unFinishedTask = CheckupClient::getInstance()->getUserTemporaryCanDoTickets($this->user->id);
            $unFinishedTask = array_merge($unFinishedTask, CheckupClient::getInstance()->getUserCycleTemporaryCanDoTickets($this->user->id));
            $followupTask = array();
            $customizeTask = CheckupClient::getInstance()->getUserCustomizationCanDoTickets($this->user->id);
            if(empty($customizeTask) == false)
            {
                $followupTask = $customizeTask;
            }
            else
            {
                $followupTask = CheckupClient::getInstance()->getUserFollowupCanDoTickets($this->user->id);
            }
            $unFinishedTask = array_merge($unFinishedTask, $followupTask);
            $response->unFinishedTask = $unFinishedTask;
        }
        
    }
Ejemplo n.º 2
0
 public function getUnFinishedCheckupTickets($userId)
 {/*{{{*/
     $user = DAL::get()->find('user', $userId);
     if($user->isNull())
     {
         $this->setErrorCode(107);//账户不存在
         return 0;
     }
     $unFinishedTickets = CheckupClient::getInstance()->getUserTemporaryCanDoTickets($user->id);
     $unFinishedTickets = array_merge($unFinishedTickets, CheckupClient::getInstance()->getUserCycleTemporaryCanDoTickets($user->id));
     $followupTickets = array();
     $customizeTickets = CheckupClient::getInstance()->getUserCustomizationCanDoTickets($user->id);
     if(empty($customizeTickets) == false)
     {
         $followupTickets = $customizeTickets;
     }
     else
     {
         $followupTickets = CheckupClient::getInstance()->getUserFollowupCanDoTickets($user->id);
     }
     $unFinishedTickets = array_merge($unFinishedTickets, $followupTickets);
     $info = array();
     foreach($unFinishedTickets as $checkupTicket) 
     {  
         $info[] = array('startTime'=>$checkupTicket->startTime->toShortString(),'displayName'=>$checkupTicket->task->getDisplayName(),'checkupTicketId'=>$checkupTicket->id);
     }
     $this->content = $info;
 }/*}}}*/
Ejemplo n.º 3
0
 public function resetLeaveHospitalDate($request, $response)
 {
     /*{{{*/
     $auditor = $this->auditor;
     $ownerId = $request->ownerid;
     if (FollowupOwner::isFollowupSuperAuditor($auditor) && false == empty($ownerId)) {
         $followupOwner = DAL::get()->find("FollowupOwner", $ownerId);
         if (false == $followupOwner->isNull()) {
             CheckupClient::getInstance()->cancelUserAllCheckupTicket($followupOwner->user->id);
         }
     } else {
         echo "您不是随访系统的超级管理员!<a href='#' onclick='window.history.go(-1)'>返回</a>";
         return parent::DIRECT_OUTPUT;
     }
     $response->setRedirect($response->router->urlfor("followup/nextsignin", array("signinId" => $ownerId)));
 }
Ejemplo n.º 4
0
 public function addTemporaryTask($request, $response)
 {
     /*{{{*/
     // 跟进任务时间要晚于今天
     if (XDateTime::dayDiff(XDateTime::today(), XDateTime::valueOf($request->nfstasktime)) < 1) {
         echo '跟进任务日期要晚于今天';
         exit;
     }
     $doctorPatientRefId = $request->doctorPatientRefId;
     $doctorPatientRef = DAL::get()->find('DoctorPatientRef', $doctorPatientRefId);
     $qids = $request->var;
     $questions = array();
     $categories = array();
     $tpls = array();
     foreach ($qids as $qid) {
         $question = DAL::get()->find('nfsquestion', $qid);
         if ($question->isNull()) {
             $category = DAL::get()->find('questioncategory', $qid);
             if ($category->isScale()) {
                 $questionArr = $category->questions;
                 $firstQuestion = array_shift($questionArr);
                 $firstQuestionId = $firstQuestion->id;
                 $scaleTplId = NfsClient::getInstance()->createQuestionNaireTpl(array($category), $category->name, QuestionNaireTpl::TYPE_LINK, $firstQuestionId);
                 $scaleTpl = DAL::get()->find('questionnairetpl', $scaleTplId);
                 $tpls[] = $scaleTpl;
                 continue;
             }
             $categories[$category->id] = $category;
             $tmpQuestions = $category->getQuestions();
             foreach ($tmpQuestions as $tmpQuestion) {
                 $questions[$tmpQuestion->id] = $tmpQuestion;
             }
         } else {
             $questions[$question->id] = $question;
         }
     }
     $questionCates = array();
     $questionStr = "";
     foreach ($questions as $question) {
         $hasInclude = false;
         foreach ($categories as $category) {
             $questionCates[$category->id] = $category;
             if ($category->hasInclude($question->category)) {
                 $hasInclude = true;
             }
         }
         if ($hasInclude == false) {
             $questionCates[$question->category->id] = $question->category;
         }
         $questionStr .= $question->category->name . "-" . $question->title . " ";
     }
     $checkupName = $request->checkupname;
     if (empty($questionCates) == false) {
         $questionTplId = NfsClient::getInstance()->createQuestionNaireTpl($questionCates, $checkupName, QuestionNaireTpl::TYPE_CHECK, 0, QuestionNaireTpl::IS_SHOW_BUTTON_NO);
         $questionTpl = DAL::get()->find('QuestionNaireTpl', $questionTplId);
         $tpls[] = $questionTpl;
         $questionNaire = NfsClient::getInstance()->createQuNaire($doctorPatientRef->space, $questionTpl, $questions);
     }
     $description = $request->shuoming == null ? '' : $request->shuoming;
     $checkupDateTime = XDateTime::valueOf($request->checkuptime);
     $isCycleTemporaryTask = $request->iscycletemporarytask != null ? true : false;
     $cycleDay = $request->cycleday;
     $nfsDisease = DAL::get()->find('nfsDisease', $request->nfsdiseaseid);
     if ($nfsDisease->isNull()) {
         echo "随访的疾病不存在,请核实。。。";
         exit;
     }
     if ($isCycleTemporaryTask == true) {
         CheckupClient::getInstance()->addUserCycleTemporaryTask($nfsDisease, $doctorPatientRef->user->id, $doctorPatientRef->space->id, $checkupDateTime, $checkupName, $tpls, $cycleDay, $description);
     } else {
         CheckupClient::getInstance()->addUserTemporaryTask($nfsDisease, $doctorPatientRef->user->id, $doctorPatientRef->space->id, $checkupDateTime, $checkupName, $tpls, $description);
     }
     //添加电话任务
     $doctorPatientPost = DoctorPatientPostClient::getInstance()->getOnePostByRefId($doctorPatientRef->id);
     //电话咨询任务的模板
     $model = DAL::get()->find_by_title('nfsTaskModel', '临时复查跟踪任务');
     $desc = "复查名称:" . $checkupName . "\n复查日期:" . $checkupDateTime . "\n说明:" . $description . "\n复查项:" . $questionStr;
     if ($doctorPatientPost->isNull() == false && $model->isNull() == false) {
         $role = DAL::get()->find_by_name("followupAuditorRole", FollowupAuditorRole::NAME_ASSISTANTDOCTOROPERATION);
         $deadline = XDateTime::valueOf($request->nfstasktime);
         TaskClient::getInstance()->addTask(array($model), $doctorPatientPost, $doctorPatientRef->space, $doctorPatientRef->user, $this->auditor, $deadline, $desc, $role->id);
     }
     $response->setRedirect($response->router->urlfor('nfsaudit/managetemporarytask', array('refid' => $doctorPatientRefId)));
 }
Ejemplo n.º 5
0
 public function ajaxFinishTask($request, $response)
 {/*{{{*/
     $ticketId = $request->ins;
     CheckupClient::getInstance()->markFinished($this->user->id, $ticketId, null, null);
 }/*}}}*/
Ejemplo n.º 6
0
    $spanCss = 'dil reveiwHis-list-wd';
    $emCss = 'gray2';
    $taskTitle = $checkupTask->getDisplayName();// . $checkupTask->getDayNumFromStart();
    if(false == $thisTicket->isNull())
    {
        $status = $thisTicket->getDisplayStatus();
        if(false == empty($ticketId) && $ticketId == $thisTicket->id)
        {
            $spanCss = 'dil reveiwHis-list-wdActive reveiwHis-list-wd';
            $emCss = 'reveiwHis-list-wd-color';
        }
        $taskTitle = "<a href='?ticketId=$thisTicket->id' class='blue'>$taskTitle</a>";
    }
    if ($checkupTask->isTemporaryTask()) {
        $headTicket = CheckupClient::getInstance()->getUserTemporaryTicket4Task($user->id,$checkupTask->queue->firstTask->id);
        $status = CheckupClient::getInstance()->getNextTaskTime($headTicket->id)->toShortString();
    } else if ($checkupTask->isCycleTemporaryTask()) {
        $status = isset($cycleTaskTimeMap[$checkupTask->id])?$cycleTaskTimeMap[$checkupTask->id]->toShortString():'';
    }
?>
        <span class="<?=$spanCss ?>" ><?=$taskTitle ?><em class="<?=$emCss ?>">(<?=$status?>)</em></span>
<?php } 
        $spanCss = 'dil reveiwHis-list-wd';
        if($currentTicketId == CheckupTicket::ID_TEMPORARY_TICKETID)
        {
            $spanCss = 'dil reveiwHis-list-wdActive reveiwHis-list-wd';
            $emCss = 'reveiwHis-list-wd-color';
        }
?>
        <span class="<?=$spanCss?>" ><a class='blue' href='?userid=<?=$user->id?>&ticketId=<?=CheckupTicket::ID_TEMPORARY_TICKETID?>'>临时复查</a></span>
        </div>
  <td>
<?php 
            if (isset($checkupTicketArray[$nowTask->id])) {
                $status = $checkupTicketArray[$nowTask->id]->getDisplayStatus();
            } else {
                $status = '未到期';
            }
            echo $nowTask->isCycleTemporaryTask() ? '' : $status;
            ?>
  </td>
  <td>
<?php 
            if (isset($checkupTicketArray[$nowTask->id])) {
                echo $checkupTicketArray[$nowTask->id]->startTime->toShortString();
            } else {
                echo CheckupClient::getInstance()->getNextTaskTime($checkupTicketArray[$queue->firstTask->id]->id)->toShortString();
            }
            ?>
  </td>
  <td>
<?php 
            foreach ($nowTask->getRelateEntities() as $tpl) {
                foreach ($tpl->quNaireTplCategoryRefs as $ref) {
                    echo $ref->questionCategory->name . '<br />';
                }
            }
            ?>
  </td>
  <td><?php 
            echo $nowTask->isCycleTemporaryTask() ? $nowTask->queue->cycleDay : '';
            ?>
 private function getTaskList($tempTaskList)
 {
     /*{{{*/
     if (empty($tempTaskList) == false) {
         $checkupTaskArray['temporarytask']['checkupTasks'] = $tempTaskList;
     }
     $tmpCycleQueueList = CheckupClient::getInstance()->getUserCycleTemporaryQueues($user->id);
     $cycleTaskTimeMap = array();
     foreach ($tmpCycleQueueList as $tmpCycleQueue) {
         $firstTicket = CheckupClient::getInstance()->getUserEffectedTicket4Task($user->id, $tmpCycleQueue->firstTask->id);
         if ($firstTicket->isNull()) {
             continue;
         }
         $curTime = $firstTicket->startTime;
         for ($task = $tmpCycleQueue->firstTask; $task->isNull() == false; $task = DAL::get()->find('CheckupTask', $task->nextTaskId)) {
             $cycleTaskTimeMap[$task->id] = $curTime;
             $curTime = XDateTime::valueOf(CheckupClient::getInstance()->getNextCycleTaskStartTime($curTime, $task->id));
         }
     }
 }
Ejemplo n.º 9
0
 public function ajaxResendCheckupSMS($request, $response)
 {
     /*{{{*/
     $request->convertToGBK();
     $followupCustomer = DAL::get()->find("followupcustomer", $request->customerid);
     $nfstask = DAL::get()->find('nfstask', $request->nfstaskid);
     $sent = CheckupClient::getInstance()->sendMes4CheckupBeforeSignin($followupCustomer, $followupCustomer->getNearestCheckupDay(), $request->mobile);
     if (false != $sent) {
         FollowupCustomerClient::getInstance()->addCustomerInfoRecord($followupCustomer->id, $this->auditor, $nfstask, '补发' . $followupCustomer->getNearestCheckupDay()->toShortString() . '复查短信', XDateTime::now());
         $msg = '亲,发送成功!';
     } else {
         $msg = '发送失败!';
     }
     $msg = mb_convert_encoding($msg, 'utf-8', 'gbk');
     $out = array('message' => $msg);
     echo json_encode($out);
     return parent::DIRECT_OUTPUT;
 }
		public function followupInfo($request, $response)
		{/*{{{*/
				$hospitalCaseNo = $request->hospitalcaseno;
				$response->hospitalCaseNo = $hospitalCaseNo;

				$realName = $request->realname;
				$response->realName = $realName;

				$userName = $request->username;
				$response->userName = $userName;

				$spaceId = $this->_newSpace->id;
				$currentDiseaseSpaceRef = DAL::get()->find_by_spaceid('NfsDiseaseSpaceRef', $spaceId);

				$ownerIds = array();
				//如果什么都没填直接点击搜索
				if(empty($hospitalCaseNo) && empty($realName) && empty($userName))
				{
						$page = $request->getRequest('page', 1);
						$count = 15;
						$res = FollowupClient::getInstance()->getOwnerOfOneDiseaseBySpaceId($page, $count, $spaceId);
						$ownerIds = $res['ids'];
						if (false == empty($res['pageInfo'])) 
						{
								$response->pagelink = PageNav::getNavLink(
												PageNav::getPageNavTemplate('/adminpatient/followupinfo?page='),
												$res['pageInfo']['nowpage'], $res['pageInfo']['pagesize'],
												$res['pageInfo']['total']);
						}
				}
				else
				{
						$ownerList = array();
						//如果是点击列表中的链接
						if(false == empty($userName))
						{
								$user  = UserClient::getInstance()->getByUserName($userName);
								$owner = FollowupClient::getInstance()->getOpenedFollowupOwnerByUser($user->id);
								$diseaseSpaceRef = DAL::get()->find_by_spaceid('NfsDiseaseSpaceRef', $owner->space->id);
								if($diseaseSpaceRef->nfsDisease->id == $currentDiseaseSpaceRef->nfsDisease->id)
								{
										$ownerIds[] = $owner->id;
								}
						}
						//如果是填写病历号或真实姓名
						else
						{
								$ownerIdArr = FollowupClient::getInstance()->getOwnerByHospitalCaseNOAndRealName($hospitalCaseNo, $realName);
								$ownerList = DAL::get()->find('FollowupOwner', $ownerIdArr);
								foreach($ownerList as $owner)
								{
										$diseaseSpaceRef = DAL::get()->find_by_spaceid('NfsDiseaseSpaceRef', $owner->space->id);
										if($diseaseSpaceRef->nfsDisease->id == $currentDiseaseSpaceRef->nfsDisease->id)
										{
												$ownerIds[] = $owner->id;
										}
								}
						}
				}
				$response->ownerIds = $ownerIds;


				if(1 == count($ownerIds))
				{
						$owner = DAL::get()->find('FollowupOwner', $ownerIds[0]);
						$response->owner = $owner;
						$user = $owner->user;

						//用于上一条,下一条 看能不能改下
						$res = FollowupClient::getInstance()->getOwnerOfOneDiseaseBySpaceId(0, 2000, $spaceId);
						$allOwnerIds = $res['ids'];
						$key = array_search($ownerIds[0], $allOwnerIds);

						$preKey  = $key - 1;
						if($preKey >= 0)
						{
								$preOwner  = DAL::get()->find('FollowupOwner', $allOwnerIds[$preKey]);
								$preOwnerUserName = $preOwner->user->name;
								$response->preOwnerUserName = $preOwnerUserName;
						}

						$nextKey = $key + 1;
						if($nextKey <= count($allOwnerIds) - 1)
						{
								$nextOwner = DAL::get()->find('FollowupOwner', $allOwnerIds[$nextKey]);
								$nextOwnerUserName = $nextOwner->user->name;
								$response->nextOwnerUserName = $nextOwnerUserName;
						}



						//PCI手术信息
						$category = DAL::get()->find_by_name('HealthRecordProblemCategory', '二、PCI手术信息');
						$healthProblems = $category->problems;
						$problemIds = array_keys($healthProblems);
						$answerList = HealthRecordClient::getInstance()->getHealthAnswerList4Initial($owner->user->id, $problemIds);
						$myAnswerList = array();
						foreach($answerList as $answer)
						{
								if($answer->isNull() == false)
								{
										$myAnswerList[$answer->ref->problem->id] = $answer; 
								}
						}
						$response->healthProblems = $healthProblems;
						$response->myAnswerList = $myAnswerList;




						//当前用药信息
						$medicineUserSchemes = MedicineClient::getInstance()->getUserCurrentMedicineScheme($user->id);
						$response->medicineUserSchemes = $medicineUserSchemes;

						$ref = DAL::get()->find_by_spaceid_and_patientid('DoctorPatientRef', $owner->space->id, $owner->patient->id); 
						$response->refId = $ref->getEncodeId();



						//复查信息
						if($user->isNull())
						{
								echo '操作的用户不存在';
								return parent::DIRECT_OUTPUT;
						}

						$patientSignin = $user->getFollowupPatientSignin($spaceId);
						//随访已经关闭
						if($patientSignin->isNull()== false && $patientSignin->isCloseFollowup())
						{
								echo '所操作的用户不是随访用户或随访已经关闭';
								return parent::DIRECT_OUTPUT;
						}

						$response->user = $user;
						$response->patient= $patientSignin->patient;
						$ticketId = $request->ticketId;
						$checkupTaskArray = array();
						$checkupQueues = array();
						$customizeQueues = CheckupClient::getInstance()->getUserCustomizeQueue($user->id);
						if(empty($customizeQueues) == false)
						{
								$checkupQueues = $customizeQueues;
						}
						else
						{
								$checkupQueues = CheckupClient::getInstance()->getUserFollowupQueues($user->id);
						}
						foreach($checkupQueues as $checkupQueue)
						{
								$filter = 'checkuptaskqueueid='.$checkupQueue->id;
								$checkupTasks = array();
								// 对任务排序
								$taskArray = DAL::get()->find_all_by_condition('checkuptask', $filter);
								$queue = $checkupQueue;
								$nowTask = $queue->firstTask;
								$nextTaskId = $nowTask->nextTaskId;
								while ($nextTaskId != 0) 
								{
										$nowTask = $taskArray[$nextTaskId];
										$nextTaskId = $nowTask->nextTaskId;
										if ($nowTask->isUsed()) 
										{
												$checkupTasks[] = $nowTask;
										}
								}
								$checkupTaskArray[$checkupQueue->id]['checkupTasks'] = $checkupTasks;
						}
						if(empty($ticketId)) 
						{
								$tL = CheckupClient::getInstance()->getUserLastTickets($user->id);
								foreach ($tL as $t)
								{
										if ($t->task->isUsed() && ($t->task->isCustomizeTask() || $t->task->isFollowupTask() || $t->task->isTemporaryTask())) 
										{
												$ticketId = $t->id;
												break;
										}
								}
						}
						// 读取临时任务
						// todo::zxh 封装个方法
						$tempTaskList = CheckupClient::getInstance()->getUserEffectedTemporaryTasks($user->id);
						if (empty($tempTaskList) == false) {
								$checkupTaskArray['temporarytask']['checkupTasks'] = $tempTaskList;
						}
						$tmpCycleQueueList = CheckupClient::getInstance()->getUserCycleTemporaryQueues($user->id);
						$cycleTaskTimeMap = array();
						foreach ($tmpCycleQueueList as $tmpCycleQueue) {
								$firstTicket = CheckupClient::getInstance()->getUserEffectedTicket4Task($user->id, $tmpCycleQueue->firstTask->id);
								if ($firstTicket->isNull()) continue;
								$curTime = $firstTicket->startTime;
								for ($task = $tmpCycleQueue->firstTask; $task->isNull() == false; $task = DAL::get()->find('CheckupTask', $task->nextTaskId)) {
										$cycleTaskTimeMap[$task->id] = $curTime;
										$curTime = XDateTime::valueOf(CheckupClient::getInstance()->getNextCycleTaskStartTime($curTime, $task->id));
								}
						}
						$response->cycleTaskTimeMap = $cycleTaskTimeMap;

						if(empty($checkupTaskArray)) 
						{
								echo '此患者没有复查任务';
								return parent::DIRECT_OUTPUT;
						}

						$response->checkupTaskArray = $checkupTaskArray;

						$checkupTicket = DAL::get()->find('checkupticket', $ticketId);
						$response->ref = DAL::get()->find_by_spaceid_and_patientid('DoctorPatientRef', 
										$patientSignin->space->id, $patientSignin->patient->id);
						$leaveHosDayArr = array();
						if(false == $checkupTicket->isNull())
						{
								$leaveHosDayArr = $patientSignin->getDiffLeaveHospitalDay($checkupTicket->startTime->addDay(
														$checkupTicket->task->queue->noticeDay));
						}

						//读取定制复查过去的任务
						$pastTicketTasks = array();
						$checkupPastTaskQueues = CheckupClient::getInstance()->getUserPastCustomizeQueue($user->id);
						foreach($checkupPastTaskQueues as $queue)
						{
								$tasks = CheckupClient::getInstance()->getUserPastTicketTask($queue->id);
								foreach($tasks as $task)
								{
										$pastTicketTasks[$queue->id][] = $task; 
								}
						}
						$response->pastTicketTasks = $pastTicketTasks;
						$response->ticketId = $ticketId;
						$response->leaveHosDayArr = $leaveHosDayArr;        
						$response->checkupTicket = $checkupTicket;
				}
		}/*}}}*/
Ejemplo n.º 11
0
 public function deleteCheckupReport($request, $response)
 {
     /*{{{*/
     $reportId = $request->id;
     $ticketId = $request->ticketId;
     $page = $request->page == null ? 1 : $request->page;
     CheckupClient::getInstance()->deleteCheckupReport($reportId);
     $response->setRedirect($response->router->urlfor("checkup/nextcheckupanswersheet", array('ticketId' => $ticketId, 'page' => $page)));
 }