public IHttpActionResult UpdatePatientStatus([FromBody] PatientQueueModel patient) { var response = service.UpdatePatientStatus(patient); IBaiduTTSService baiduService = IOCContainer.Instance.Resolve <IBaiduTTSService>(); var ctx = GlobalHost.ConnectionManager.GetHubContext <ScreenDisplayHub>(); var dbPatient = service.GetCheckRoomName(patient); if (dbPatient == null) { dbPatient = patient; } var broadcartContent = "请 " + dbPatient.SerialNumber + "号 " + dbPatient.ResidentName + "到" + dbPatient.DeptName + dbPatient.CheckRoomName + "诊室就诊!"; var url = baiduService.GetBaiduUri(broadcartContent); //入列: PersonQueue Model = new PersonQueue(broadcartContent, url); PersonEnqueue(Model); //ctx.Clients.Group("12345678").clientAddGroupMessage(broadcartContent, url); return(Ok(response)); }
public BaseResponse <bool> SetPatientNumberToFirst(PatientQueueModel patient) { if (patient == null) { return(null); } var waiting = (int)CheckStatus.WaitForCheck; var q = from c in unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.OrganizationID == patient.OrganizationID && a.CheckStatus == waiting && a.CheckNumber < patient.CheckNumber) join s in unitOfWork.GetRepository <DC_ServiceItem>() .dbSet.Where(a => a.DeptId == patient.DeptID) on c.ServiceItemID equals s.ServiceItemID select new { ServiceItemID = c.ServiceItemID, ResidentID = c.ResidentID, OrganizationID = c.OrganizationID, SerialNumber = c.SerialNumber }; var currentPatient = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == patient.ServiceItemID && a.ResidentID == patient.ResidentID && a.SerialNumber == patient.SerialNumber && a.OrganizationID == patient.OrganizationID); if (currentPatient != null) { currentPatient.CheckNumber = 1; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(currentPatient); foreach (var node in q.ToList()) { var item = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == node.ServiceItemID && a.ResidentID == node.ResidentID && a.OrganizationID == node.OrganizationID && a.SerialNumber == node.SerialNumber && a.CheckStatus == waiting); if (item != null) { item.CheckNumber++; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(item); } } } unitOfWork.Save(); return(new BaseResponse <bool>() { Data = true }); }
public BaseResponse <bool> SetPatientNumberBackward(PatientQueueModel patient) { if (patient == null) { return(null); } var waitForCheck = (int)CheckStatus.WaitForCheck; var inChecking = (int)CheckStatus.InChecking; //find the queueId in after of current patient in target queue var q = from c in unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.OrganizationID == patient.OrganizationID && a.CheckStatus == waitForCheck && a.CheckNumber == patient.CheckNumber + 1) join s in unitOfWork.GetRepository <DC_ServiceItem>() .dbSet.Where(a => a.DeptId == patient.DeptID) on c.ServiceItemID equals s.ServiceItemID select new { queueId = c.QueueID }; if (q.Any()) { var queueId = q.FirstOrDefault().queueId; var afterPatient = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.QueueID == queueId); var currentPatient = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == patient.ServiceItemID && a.ResidentID == patient.ResidentID && a.OrganizationID == patient.OrganizationID && a.SerialNumber == patient.SerialNumber && a.CheckNumber == patient.CheckNumber); if (afterPatient != null && currentPatient != null) { afterPatient.CheckNumber--; currentPatient.CheckNumber++; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(afterPatient); unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(currentPatient); unitOfWork.Save(); } } return(new BaseResponse <bool>() { Data = true }); }
public PatientQueueModel GetCheckRoomName(PatientQueueModel patient) { var checking = (int)CheckStatus.InChecking; var q = from c in unitOfWork.GetRepository <DC_CheckRoom>().dbSet join checkRoom in unitOfWork.GetRepository <DC_CheckRoomQueue>().dbSet.Where(a => a.DeptId == patient.DeptID && a.CheckStatus == checking) on c.CheckRoomID equals checkRoom.CheckRoomID join d in unitOfWork.GetRepository <ORG_Dept>().dbSet on checkRoom.DeptId equals d.DeptID select new PatientQueueModel { CheckRoomName = c.CheckRoomName, DeptName = d.DeptName, ResidentName = checkRoom.ResidentName, SerialNumber = checkRoom.SerialNumber, CheckBeginTime = checkRoom.CheckBeginTime }; return(q.OrderByDescending(a => a.CheckBeginTime).FirstOrDefault()); }
public BaseResponse <bool> AddExpiredPatientToQueue(PatientQueueModel patient) { if (patient == null) { return(null); } var waiting = (int)CheckStatus.WaitForCheck; var q = from c in unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.OrganizationID == patient.OrganizationID && a.CheckStatus == waiting) join s in unitOfWork.GetRepository <DC_ServiceItem>() .dbSet.Where(a => a.DeptId == patient.DeptID) on c.ServiceItemID equals s.ServiceItemID select new { ServiceItemID = c.ServiceItemID, ResidentID = c.ResidentID, OrganizationID = c.OrganizationID, CheckNumber = c.CheckNumber }; var topCheckNumberItem = q.OrderByDescending(a => a.CheckNumber).FirstOrDefault(); var topCheckNumber = topCheckNumberItem == null? 1:topCheckNumberItem.CheckNumber + 1; var currentPatient = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == patient.ServiceItemID && a.ResidentID == patient.ResidentID && a.SerialNumber == patient.SerialNumber && a.OrganizationID == patient.OrganizationID); currentPatient.CheckNumber = topCheckNumber; currentPatient.CheckStatus = (int)CheckStatus.WaitForCheck; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(currentPatient); unitOfWork.Save(); return(new BaseResponse <bool>() { Data = true }); }
public BaseResponse <PatientCollection> SetPatientQueueExpired(PatientQueueModel patient) { if (patient == null) { return(null); } var patientService = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == patient.ServiceItemID && a.ResidentID == patient.ResidentID && a.SerialNumber == patient.SerialNumber && a.OrganizationID == patient.OrganizationID); if (patientService != null) { patientService.CheckStatus = (int)CheckStatus.Expired; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(patientService); unitOfWork.Save(); } return(GetPatientQueueForCallPatient(patient.DeptID, patient.OrganizationID, patient.CheckRoomID)); }
/// <summary> /// Get next patient /// </summary> /// <param name="patient"></param> /// <returns></returns> public BaseResponse <PatientCollection> UpdatePatientStatus(PatientQueueModel patient) { if (patient == null) { return(null); } var waiting = (int)CheckStatus.WaitForCheck; var repository = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.OrganizationID == patient.OrganizationID && a.CheckStatus == waiting && a.DeptId == patient.DeptID) .OrderBy(a => a.CheckNumber); var firstNode = repository.FirstOrDefault(); if (firstNode != null) { firstNode.CheckStatus = (int)CheckStatus.InChecking; firstNode.CheckRoomID = patient.CheckRoomID; firstNode.EmployeeID = patient.EmployeeID; firstNode.CheckBeginTime = DateTime.Now; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(firstNode); } foreach (var node in repository.ToList()) { node.CheckNumber--; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(node); } unitOfWork.Save(); return(GetPatientQueueForCallPatient(patient.DeptID, patient.OrganizationID, patient.CheckRoomID)); }
public IHttpActionResult AddExpiredPatientToQueue([FromBody] PatientQueueModel patient) { var response = service.AddExpiredPatientToQueue(patient); return(Ok(response)); }
public IHttpActionResult SetPatientNumberToFirst([FromBody] PatientQueueModel patient) { var response = service.SetPatientNumberToFirst(patient); return(Ok(response)); }
public BaseResponse <PatientCollection> SetPatientCheckFinish(PatientQueueModel patient) { if (patient == null) { return(null); } var patientService = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.ServiceItemID == patient.ServiceItemID && a.ResidentID == patient.ResidentID && a.SerialNumber == patient.SerialNumber && a.OrganizationID == patient.OrganizationID); if (patientService != null) { patientService.CheckStatus = (int)CheckStatus.Finish; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(patientService); var patientRecord = unitOfWork.GetRepository <DC_CheckRoomQueueRec>() .dbSet.FirstOrDefault(a => a.CheckRoomQueueRecID == patientService.CheckRoomQueueRecID); patientRecord.CheckStatus = (int)CheckStatus.Finish; patientRecord.CheckBeginTime = patientService.CheckBeginTime; patientRecord.CheckRoomID = patientService.CheckRoomID; patientRecord.CheckEmployeeID = patientService.EmployeeID; patientRecord.CheckEndTime = DateTime.Now; unitOfWork.GetRepository <DC_CheckRoomQueueRec>().Update(patientRecord); } #region Get Next department and target service item var register = (int)CheckStatus.Register; var waiting = (int)CheckStatus.WaitForCheck; var q = from c in unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.SerialNumber == patient.SerialNumber && a.CheckStatus == register) join s in unitOfWork.GetRepository <DC_ServiceItem>() .dbSet on c.ServiceItemID equals s.ServiceItemID select new { QueueId = c.QueueID, Priorit = s.Priorit, DeptID = c.DeptId }; #endregion if (q.Any()) { var queueId = q.OrderBy(a => a.Priorit).FirstOrDefault().QueueId; var deptId = q.OrderBy(a => a.Priorit).FirstOrDefault().DeptID; #region Get New queue check number var numQuery = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.Where(a => a.DeptId == deptId && a.CheckStatus == waiting) .OrderByDescending(a => a.CheckNumber); var checkNum = 1; if (numQuery.Any()) { checkNum = numQuery.FirstOrDefault().CheckNumber + 1; } #endregion var nextQueue = unitOfWork.GetRepository <DC_CheckRoomQueue>() .dbSet.FirstOrDefault(a => a.QueueID == queueId); if (nextQueue != null) { nextQueue.CheckStatus = (int)CheckStatus.WaitForCheck; nextQueue.CheckNumber = checkNum; unitOfWork.GetRepository <DC_CheckRoomQueue>().Update(nextQueue); } } unitOfWork.Save(); return(GetPatientQueueForCallPatient(patient.DeptID, patient.OrganizationID, patient.CheckRoomID)); }
public IHttpActionResult SetPatientCheckFinish([FromBody] PatientQueueModel patient) { var response = service.SetPatientCheckFinish(patient); return(Ok(response)); }