public function passOrdinarySignin($request, $response) { /*{{{*/ $signin = DAL::get()->find('PatientSignin', $request->signinId); $diseaseRef = DAL::get()->find_by_signinid('PatientSigninDiseaseRef', $signin->id); $isTreated = $request->isTreated; $inspectGroupName = $request->inspectGroupName; if ($signin->isSrcQRcode() && $isTreated && false == $diseaseRef->disease->isNull()) { $this->checkDiseaseQuestionSheet($diseaseRef->disease->id, $signin->space->id); } $ticket = DAL::get()->find('ticket', $request->ticketId); if ($ticket->isNull()) { $response->setRedirect($response->router->urlfor('nfsaudit/nextOrdinarysignin?inspectGroup=' . $inspectGroupName)); } if ($request->needSaveDiseaseRef == '1') { PatientSigninClient::getInstance()->updatePatientSigninDiseaseRef($this->curInspector, $request->signinId, $request->diseaseIds); } $vars = $request->vars; $latestTreatedTime = XDateTime::valueOf($vars['latestTreatedTime']); $groupId = $request->groupId; if ($isTreated || $signin->isAudited()) { $dto = new PatientSigninInspectResultDto($ticket->source, PatientSignin::STATUS_AUDITED, $vars['content'], $vars['diseaseName'], isset($vars['isInHospital']) ? $vars['isInHospital'] : 0, $latestTreatedTime, $vars['hospitalCaseNO'], $vars['treatment'], $vars['helpGuide'], $vars['content'], $vars['treatType'], $vars['medicalCardNo'], $groupId); InspectClient::getInstance()->next($ticket->id, $dto, $this->curInspector); } else { //管理员和医生关联病例的报到拒绝不触发站内信 if (false == $signin->isSrcPatientBindByInspector() && false == $signin->isSrcPatientBindByDoctor()) { $this->sendMsg4SrcQRcode($signin, $vars['refuseReason']); } if ($signin->isSrcQRcode()) { PatientFileClient::getInstance()->setHealthApplyInvalid4QRCode($signin->patient->id); } $dto = new PatientSigninInspectResultDto($ticket->source, PatientSignin::STATUS_REFUSED, $vars['content'], $vars['diseaseName'], isset($vars['isInHospital']) ? $vars['isInHospital'] : 0, $latestTreatedTime, $vars['hospitalCaseNO'], $vars['treatment'], $vars['helpGuide'], $vars['content'], $vars['treatType'], $vars['medicalCardNo']); InspectClient::getInstance()->refuse($ticket->id, $this->curInspector, $dto); } $response->setRedirect($response->router->urlfor('nfsaudit/nextOrdinarysignin?inspectGroup=' . $inspectGroupName)); }
public static function getNewAllQuestionTitleAndAnswerContentArrByPatient($patient, $pageId=1, $pageSize=10) {/*{{{*/ DBC::requireTrue($patient instanceof Patient, '患者不存在'); $result = PatientFileClient::getInstance()->getRecordListByPatientId($patient->id, $pageId, $pageSize); $healthRecordList = $result['list']; $healthRecordInfos = array(); $healthRecordInfos['pageInfo'] = $result['pageInfo']; foreach ($healthRecordList as $healthRecord) { $healthRecordInfo = array(); $healthRecordInfo['ctime'] = $healthRecord->ctime->getDateTime(); $healthRecordInfo['status'] =$healthRecord->status == PatientHealthRecord::STATUS_ABNORMAL ? "异常" : "正常"; $questionIdArr = $healthRecord->answerSheet->getQuestionId_answerArr(); foreach($questionIdArr as $questionId => $answer) { $question = DAL::get()->find('Question', $questionId); if ($question->isUpload()) { $answer = $questionIdArr[$question->id]; $ids = explode(',', $answer->getAnswerContent()); $patientAttachments = DAL::get()->find('PatientAttachment', $ids); list($infos, $datas) = self::getAttachmentListImp($patientAttachments, 0, 100); $infos['question'] = $question->content; $infos['type'] = "UploadQuestion"; $healthRecordInfo['recordContent'][] = $infos; } else { $units = $answer->getAnswerUnit(); $units = $units == '' ? $units : " ".$units; $answerInfo['type'] = $answer->question->sourceType; $answerInfo['question'] = $answer->question->content; $answerInfo['answer'] = $answer->content.$units; if ($answer->question->isOptionQuestion4Health()) { $options = $answer->getOptions(); $optionContent = array(); foreach ($options as $option) { $optionContent[] = $option->content; } $optionContent = implode(",", $optionContent); $answerInfo['answer'] = $optionContent.$units; } $healthRecordInfo['recordContent'][] = $answerInfo; } } $healthRecordInfos[] = $healthRecordInfo; } return $healthRecordInfos; }/*}}}*/
public function updateNewQuestionSheet($request, $response) { $this->initialize($request, $response); $wrapperIds = $request->wrappers; $patientId = $request->patientid; $modelSheetIds = $request->getRequest('modelsheets', array()); $id = $request->id; $questionSheet = PatientFileClient::getInstance()->batchUpdateQuestionWrapper4Patient($patientId, $wrapperIds, $modelSheetIds); S3LogClient::getInstance()->add($this->auditor, $this->apply->getLogable()->action(PatientHealthApplyLog::TYPE_UPDATE, '更新问卷')); $url = $response->router->urlfor('patientfile/applydetail', array('id' => $id)); $response->setRedirect($url); }
public function showHealthRecordList($request, $response) { $userId = $this->user->id; $patientId = $request->getRequest('patientId', ""); $patientInfos = $this->getHealthApplyPatientList($userId); if(empty($patientId)) { $patientId = isset($_COOKIE["_patientid"])?$_COOKIE["_patientid"]:''; } if(empty($patientId)) { $patientId = $this->getCurrentUserStatus($userId); } DBC::requireFalse(empty($patientId),'该患者没有开通'); $cookie = new HdfCookie(); $cookie->set("_patientid", $patientId); $response->patientId = $patientId; $response->patientInfos = $patientInfos; $patient = DAL::get()->find("patient", $patientId); $response->patient = $patient; $nowPage = $request->getRequest('page', 1); $res = PatientFileClient::getInstance()->getUnWaitRecordListByPatientId($patient->id, $nowPage, 3); $response->pageLink = PageNav::getNavLink( PageNav::getPageNavTemplate("/myhealth/showhealthrecordlist?patientId=".$patient->id."&page="), $res['pageInfo']['nowpage'], $res['pageInfo']['pagesize'], $res['pageInfo']['total']); $response->records = $res['list']; }
public function addPatientSignin($request, $response) {/*{{{*/ $space = DAL::get()->find('space', $request->spaceId); $patient = DAL::get()->find('patient', $request->patientId); DBC::requireFalse($patient->isNull(), '无效的patientId'); DBC::requireFalse($space->isNull(), '无效的spaceId'); $diseaseName = $request->diseaseName; $diseaseId = $request->diseaseId; $signinId = PatientSigninClient::getInstance()->addQRCODEPatientSignin($space, $patient, '', $diseaseName, $diseaseId, ''); $newQRCodePatientSignin = DAL::get()->find('patientsignin', $signinId); if ($newQRCodePatientSignin->isNull()) { $this->_exit404(); return; } PatientFileClient::getInstance()->createPatientHealthApply4QRCode($patient->id, $diseaseId, $diseaseName); $url = $response->router->urlfor('user/addition4patientreport', array('spaceId'=>$space->id, 'patientId'=>$patient->id, 'signinId'=>$signinId)); $response->setRedirect($url); return ; }/*}}}*/
/** * @brief 提交二维码诊后报到申请 * @author zjj * @exampleUrl http://dev.mobile-api.haodf.com/patientapi/patientsignin_patientSignin4QRCode?name=TestDay&sex=0&relation=0&birthday=2014-01-18&city=北京&province=北京&xdebug=1 * * @param $name * @param $sex * @param $birthday * @param $province * @param $city * @param $diseaseName * @param $hospitalCaseNO * @param $idcard * @param $spaceId * @param $diseaseId * * @return array('msg') */ public function patientSignin4QRCode($name, $sex, $birthday, $province, $city, $diseaseName, $hospitalCaseNO, $idcard, $spaceId, $diseaseId, $patientId) {/*{{{*/ if ($diseaseName == '') { $this->setErrorCode(802); return 0; } if ($hospitalCaseNO == '') { $this->setErrorCode(803); return 0; } $disease = DAL::get()->find('Disease', $diseaseId); if ($disease->isNull()) { $this->setErrorCode(804); return 0; } $user = DAL::get()->find('user', $this->currentUserId); if ($user->isNull()) { $this->setErrorCode(178); return 0; } if($idcard != '') { if(15 == strlen($idcard)) { $idcard = IdCard::idcard_15to18($idcard); } if(false == IdCard::idcard_checksum18($idcard)) { $this->setErrorCode(312); return 0; } } if ($patientId != '') { $patient = DAL::get()->find('Patient', $patientId); if ($patient->isNull()) { $this->setErrorCode(309); return 0; } }else{ $params = array(); $params['name'] = $name; $params['sex'] = $sex; $params['relation'] = Patient::RELATION_SELF; $params['province'] = $province; $params['city'] = $city; $params['birthday'] = $birthday; $params['mobile'] = $user->mobile; $params['idcard'] = $idcard; $patient = PatientClient::getInstance()->add($user, $params); } $spaceId = $this->filterHttpUrlString($spaceId); $space = DAL::get()->find('Space', $spaceId); if ($space->isNull()) { $this->setErrorCode(144); return 0; } $QRcodePatientSignin = DAL::get()->find_by_QRpatientSign('patientsignin', $space->id, $patient->id); $res = array(); if(false == $QRcodePatientSignin->isNull()) { if($QRcodePatientSignin->isUnaudited()) { $res['msg'] = self::PATIENT_SIGNIN_RES_AUDIT; } } if (empty($res)) { $signinId = PatientSigninClient::getInstance()->addQRCODEPatientSignin($space, $patient, $hospitalCaseNO, $diseaseName, $diseaseId); $newQRCodePatientSignin = DAL::get()->find('patientsignin', $signinId); if ($newQRCodePatientSignin->isNull()) { $this->setErrorCode(801); return 0; } $disease = DAL::get()->find('disease', $diseaseId); PatientFileClient::getInstance()->createPatientHealthApply4QRCode($patient->id, $diseaseId, $disease->name); $res['msg'] = self::PATIENT_SIGNIN_RES_SUC; } $this->content = $res; }/*}}}*/
/** * @brief 将患者名下未读健康记录设为已读 * @author zjj * * @param $patientId 患者ID * * @return void */ public function setHealthRecordRead4Patient($patientId) {/*{{{*/ $unReadRecordIds = $this->getUnReadHealthRecordIds4Patient($patientId); if(is_array($unReadRecordIds)) { PatientFileClient::getInstance()->bindSetRecordRead($unReadRecordIds); } }/*}}}*/
public function patientHealthRecordDetail($request, $response) { /*{{{*/ $patientId = $request->patientId; $patient = DAL::get()->find('Patient', $patientId); $patientCaseId = $request->patientCaseId; $response->patientId = $patientId; $response->patientCaseId = $patientCaseId; $p = $request->getRequest("p", 1); $abNormal = $request->abNormal; $doctorPatientRefs = DAL::get()->find_all_by_spaceid_and_userid('DoctorPatientRef', $this->space->id, $patient->user->id); $proposals = DAL::get()->find_all_by_spaceid_and_userid_and_servicedef('Proposal', $this->space->id, $patient->user->id, 'FLOW'); if (empty($doctorPatientRefs) && empty($proposals)) { throw new BizException('您没有权限查看此患者健康日记'); } if ($abNormal) { $res = PatientFileClient::getInstance()->getAbnormalRecordListByPatientId($patientId, $p, 10); } else { $res = PatientFileClient::getInstance()->getRecordListByPatientId($patientId, $p, 10); } $response->healthRecordList = $healthRecordList = $res['list']; if (empty($res['pageInfo']) == false) { $url = "/adminpatient/patienthealthrecorddetail?patientId=" . $patientId; $pageLink = PageNav::getNavLink(PageNav::getPageNavTemplateForSpace($url . "&abNormal={$abNormal}&p="), $res['pageInfo']['nowpage'], $res['pageInfo']['pagesize'], $res['pageInfo']['total']); } $answerArrs = $wrapperCntArr = $wrapperArrs = $uploadArr = array(); foreach ($healthRecordList as $record) { $wrapperCntArr[$record->id] = array(); foreach ($record->answerSheet->answers as $answer) { if ($answer->getAnswerContent() == '' || $answer->getAnswerContent() instanceof NullEntity) { continue; } if ($answer->question->isUpload()) { $uploadArr[$record->id][] = $answer->getAnswerContent(); } $answerArrs[$record->id][$answer->question->id] = $answer; $question = $answer->question; if (array_key_exists($question->wrapperid, $wrapperCntArr[$record->id])) { $wrapperCntArr[$record->id][$question->wrapperid]++; } else { $wrapperCntArr[$record->id][$question->wrapperid] = 1; } } $questionIdAnswerArr = $record->answerSheet->getQuestionId_answerArr(); $answerSheetQuestionIds = array_keys($questionIdAnswerArr); $questionSheetQuestionIds = array_keys($record->answerSheet->questionSheet->questions); $deleteQuestionIds = array_diff($answerSheetQuestionIds, $questionSheetQuestionIds); $questionIds = array_merge($questionSheetQuestionIds, $deleteQuestionIds); $questions = DAL::get()->find('question', $questionIds); foreach ($questions as $question) { $wrapperArrs[$record->id][$question->wrapperid][] = $question; } } $response->answerArrs = $answerArrs; $response->wrapperArrs = $wrapperArrs; $response->wrapperCntArr = $wrapperCntArr; $response->uploadArr = $uploadArr; $response->pageLink = $pageLink; $response->abNormal = $abNormal = $abNormal == 1 ? 1 : 0; $response->patient = DAL::get()->find('Patient', $patientId); }
public function getPatientDetailStatus($patientId, $userId = '') {/*{{{*/ $patient = DAL::get()->find('patient', $patientId); $userId = empty($userId) ? '' : $userId; $ids = DAL::get()->find_id_BypatientId('patientattachment',$patientId); $isHaveAttachment = $isHaveFlow = $isHaveSpaceFlow = $isHaveHealthDiary = 0; if(false == empty($ids)) { $isHaveAttachment = 1; } $flowIds = DAL::get()->find_all_by_patient_otherSpace('DoctorPatientRef', array($patientId), '', 1, '', true); if(false == empty($flowIds)) { $isHaveFlow = 1; } if($userId) { $ref = DAL::get()->find_by_spaceid_and_patientid('doctorPatientRef', $userId, $patientId); if(false == $ref->isNull()) { $isHaveSpaceFlow = 1; $isHaveFlow = 1; } } $out= PatientFileClient::getInstance()->getRecordListByPatientId($patientId, 1, 10); if(false == empty($out['list'])) { $isHaveHealthDiary = 1; } $this->content = array('patientId'=>$patientId, 'isHaveAttachment'=>$isHaveAttachment, 'isHaveFlow'=>$isHaveFlow, 'isHaveSpaceFlow'=>$isHaveSpaceFlow, 'isHaveHealthDiary'=>$isHaveHealthDiary); return $this->content; }/*}}}*/