diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemIdInputDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemIdInputDto.cs
new file mode 100644
index 0000000..20956ca
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/Asbitems/AsbitemIdInputDto.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.Asbitems
+{
+    public class AsbitemIdInputDto
+    {
+        public Guid AsbitemId { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/NotTriageAsbitemListDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/NotTriageAsbitemListDto.cs
new file mode 100644
index 0000000..cf34b3b
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/NotTriageAsbitemListDto.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.QueueRegisters
+{
+    public class NotTriageAsbitemListDto
+    {
+        /// 
+        /// 项目类别名称
+        /// 
+        public string ItemTypeName { get; set; }
+
+        /// 
+        /// 组合项目ID
+        /// 
+        public Guid AsbitemId { get; set; }
+
+        /// 
+        /// 组合项目名称
+        /// 
+        public string AsbitemName { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterByPatientRegisterIdDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterByPatientRegisterIdDto.cs
new file mode 100644
index 0000000..ef24e0f
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterByPatientRegisterIdDto.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+namespace Shentun.Peis.QueueRegisters
+{
+    public class QueueRegisterByPatientRegisterIdDto
+    {
+        /// 
+        /// 当前排队房间
+        /// 
+        public string RoomName { get; set; }
+
+        /// 
+        /// 候诊人数
+        /// 
+        public int QueueCount { get; set; }
+
+        /// 
+        /// 完成标志 (o=候诊  1=已呼  2=过号)
+        /// 
+        public char CompleteFlag { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterIdInputDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterIdInputDto.cs
new file mode 100644
index 0000000..782e2fa
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/QueueRegisterIdInputDto.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.QueueRegisters
+{
+    public class QueueRegisterIdInputDto
+    {
+
+        public Guid QueueRegisterId { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/YesTriageAsbitemListDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/YesTriageAsbitemListDto.cs
new file mode 100644
index 0000000..afaa98d
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/YesTriageAsbitemListDto.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+using System.Dynamic;
+
+namespace Shentun.Peis.QueueRegisters
+{
+    public class YesTriageAsbitemListDto
+    {
+        /// 
+        /// 项目类别名称
+        /// 
+        public string ItemTypeName { get; set; }
+
+        /// 
+        /// 组合项目ID
+        /// 
+        public Guid AsbitemId { get; set; }
+
+        /// 
+        /// 组合项目名称
+        /// 
+        public string AsbitemName { get; set; }
+
+        /// 
+        /// 房间名称
+        /// 
+        public string RoomName { get; set; }
+
+        /// 
+        /// 完成标志 (o=候诊  1=已呼  2=过号)
+        /// 
+        public char CompleteFlag { get; set; }
+
+        /// 
+        /// 分诊人 
+        /// 
+        public string TriageName { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/Rooms/BaseRoomDto.cs b/src/Shentun.Peis.Application.Contracts/Rooms/BaseRoomDto.cs
new file mode 100644
index 0000000..504aa22
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/Rooms/BaseRoomDto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.Rooms
+{
+    public class BaseRoomDto
+    {
+        public Guid Id { get; set; }
+
+        public string RoomName { get; set; }
+
+        public int DisplayOrder { get; set; }
+    }
+}
diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
index 9c65b76..e31e68e 100644
--- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
@@ -1,8 +1,12 @@
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.EntityFrameworkCore;
+using Shentun.Peis.Asbitems;
 using Shentun.Peis.Enums;
 using Shentun.Peis.Models;
+using Shentun.Peis.PatientRegisters;
+using Shentun.Peis.Patients;
+using Shentun.Peis.Rooms;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -24,16 +28,72 @@ namespace Shentun.Peis.QueueRegisters
         private readonly IRepository _queueRegisterRepository;
         private readonly IRepository _roomRepository;
         private readonly IRepository _itemTypeRepository;
+        private readonly IRepository _patientRegisterRepository;
+        private readonly IRepository _registerCheckRepository;
+        private readonly IRepository _registerCheckAsbitemRepository;
+        private readonly IRepository _asbitemRepository;
+        private readonly IRepository _roomDetailRepository;
+        private readonly CacheService _cacheService;
         public QueueRegisterAppService(
             IRepository queueRegisterRepository,
             IRepository itemTypeRepository,
-            IRepository roomRepository)
+            IRepository roomRepository,
+            IRepository patientRegisterRepository,
+            IRepository registerCheckRepository,
+            IRepository registerCheckAsbitemRepository,
+            IRepository asbitemRepository,
+            IRepository roomDetailRepository,
+            CacheService cacheService)
         {
             _queueRegisterRepository = queueRegisterRepository;
             _itemTypeRepository = itemTypeRepository;
             _roomRepository = roomRepository;
+            _patientRegisterRepository = patientRegisterRepository;
+            _registerCheckRepository = registerCheckRepository;
+            _registerCheckAsbitemRepository = registerCheckAsbitemRepository;
+            _asbitemRepository = asbitemRepository;
+            _roomDetailRepository = roomDetailRepository;
+            _cacheService = cacheService;
         }
 
+        /// 
+        /// 获取当前排队信息
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/QueueRegister/GetQueueRegisterByPatientRegisterId")]
+        public async Task GetQueueRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
+        {
+            var queueRegisterEnt = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
+                                    join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id
+                                    where queueRegister.PatientRegisterId == input.PatientRegisterId
+                                    orderby queueRegister.CreationTime descending
+                                    select new
+                                    {
+                                        queueRegister,
+                                        room
+                                    }).FirstOrDefault();
+            if (queueRegisterEnt != null)
+            {
+                var queueCount = await _queueRegisterRepository.CountAsync(c => c.RoomId == queueRegisterEnt.queueRegister.RoomId
+                && c.CompleteFlag == QueueRegisterCompleteFlag.Wait);
+
+                var entDto = new QueueRegisterByPatientRegisterIdDto
+                {
+                    CompleteFlag = queueRegisterEnt.queueRegister.CompleteFlag,
+                    RoomName = queueRegisterEnt.room.DisplayName,
+                    QueueCount = queueCount
+                };
+
+                return entDto;
+            }
+            else
+            {
+                throw new UserFriendlyException("当前无分诊信息");
+            }
+        }
+
+
         /// 
         /// 获取房间排队信息
         /// 
@@ -62,5 +122,114 @@ namespace Shentun.Peis.QueueRegisters
 
             return entListDto;
         }
+
+
+        /// 
+        /// 获取未分诊的组合项目 根据人员登记ID
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/QueueRegister/GetNotTriageAsbitemList")]
+        public async Task> GetNotTriageAsbitemListAsync(PatientRegisterIdInputDto input)
+        {
+            //分诊过的组合项目id
+            var triageAsbitemIds = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
+                                    join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id
+                                    join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId
+                                    where queueRegister.PatientRegisterId == input.PatientRegisterId
+                                    select room.Id
+                                    ).ToList();
+
+            var entListDto = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
+                              join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId
+                              join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
+                              join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
+                              join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
+                              from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
+                              where patientRegister.Id == input.PatientRegisterId
+                              orderby itemTypeHaveEmpty.DisplayOrder, asbitem.DisplayOrder ascending
+                              select new NotTriageAsbitemListDto
+                              {
+                                  ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
+                                  AsbitemId = asbitem.Id,
+                                  AsbitemName = asbitem.DisplayName
+                              }).ToList();
+
+            if (triageAsbitemIds.Any())
+            {
+                entListDto = entListDto.Where(m => !triageAsbitemIds.Contains(m.AsbitemId)).ToList();
+            }
+
+            return entListDto;
+        }
+
+
+
+        /// 
+        /// 获取已分诊的组合项目 根据人员登记ID
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/QueueRegister/GetYesTriageAsbitemList")]
+        public async Task> GetYesTriageAsbitemListAsync(PatientRegisterIdInputDto input)
+        {
+
+            var entListDto = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync()
+                              join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id
+                              join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId
+                              join asbitem in await _asbitemRepository.GetQueryableAsync() on roomDetail.AsbitemId equals asbitem.Id
+                              join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp
+                              from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty()
+                              where queueRegister.PatientRegisterId == input.PatientRegisterId
+                              orderby queueRegister.CreationTime descending
+                              select new YesTriageAsbitemListDto
+                              {
+                                  ItemTypeName = itemTypeHaveEmpty != null ? itemTypeHaveEmpty.DisplayName : "",
+                                  AsbitemId = asbitem.Id,
+                                  AsbitemName = asbitem.DisplayName,
+                                  CompleteFlag = queueRegister.CompleteFlag,
+                                  RoomName = room.DisplayName,
+                                  TriageName = _cacheService.GetSurnameAsync(queueRegister.CreatorId).Result
+                              }).ToList();
+
+
+            return entListDto;
+        }
+
+
+
+        /// 
+        /// 获取房间信息 根据项目ID
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/QueueRegister/GetRoomListByAsbitemId")]
+        public async Task> GetRoomListByAsbitemIdAsync(AsbitemIdInputDto input)
+        {
+            var entListDto = (from room in await _roomRepository.GetQueryableAsync()
+                              join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId
+                              where roomDetail.AsbitemId == input.AsbitemId
+                              orderby room.DisplayOrder ascending
+                              select new BaseRoomDto
+                              {
+                                  DisplayOrder = room.DisplayOrder,
+                                  Id = room.Id,
+                                  RoomName = room.DisplayName
+                              }).ToList();
+
+            return entListDto;
+        }
+
+
+        /// 
+        /// 取消分诊  删除
+        /// 
+        /// 
+        /// 
+        [HttpPost("api/app/QueueRegister/Delete")]
+        public async Task DeleteAsync(QueueRegisterIdInputDto input)
+        {
+            await _queueRegisterRepository.DeleteAsync(d => d.Id == input.QueueRegisterId);
+        }
     }
 }
diff --git a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
index 46d41d7..9d76e62 100644
--- a/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
+++ b/src/Shentun.Peis.Application/Rooms/RoomAppService.cs
@@ -66,7 +66,7 @@ namespace Shentun.Peis.Rooms
         [HttpPost("api/app/Room/GetList")]
         public async Task> GetListAsync()
         {
-            var entListDto = (await _roomRepository.GetQueryableAsync()).Select(s => new RoomDto
+            var entListDto = (await _roomRepository.GetQueryableAsync()).OrderBy(o=>o.DisplayOrder).Select(s => new RoomDto
             {
                 CreationTime = s.CreationTime,
                 CreatorId = s.CreatorId,
@@ -121,12 +121,12 @@ namespace Shentun.Peis.Rooms
         /// 
         /// 删除
         /// 
-        /// 
+        /// 
         /// 
         [HttpPost("api/app/Room/Delete")]
-        public async Task DeleteAsync(Guid id)
+        public async Task DeleteAsync(RoomIdInputDto input)
         {
-            await _roomManager.CheckAndDeleteAsync(id);
+            await _roomManager.CheckAndDeleteAsync(input.RoomId);
         }
 
         /// 
@@ -151,7 +151,7 @@ namespace Shentun.Peis.Rooms
 
                 foreach (var asbitemId in input.AsbitemIds)
                 {
-                    if (roomDetails.FirstOrDefault(m => m.AsbitemId == asbitemId) != null)
+                    if (roomDetails.FirstOrDefault(m => m.AsbitemId == asbitemId) == null)
                     {
                         roomDetails.Add(new RoomDetail
                         {