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; } }
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; }/*}}}*/
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))); }
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))); }
public function ajaxFinishTask($request, $response) {/*{{{*/ $ticketId = $request->ins; CheckupClient::getInstance()->markFinished($this->user->id, $ticketId, null, null); }/*}}}*/
$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)); } } }
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; } }/*}}}*/
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))); }