LiveConsultationService.Emergency.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using WingInterfaceLibrary.Enum;
  2. using WingInterfaceLibrary.LiveConsultation;
  3. using WingServerCommon.Service;
  4. using WingInterfaceLibrary.LiveConsultation.Consultation;
  5. using WingInterfaceLibrary.DB.Request;
  6. using WingInterfaceLibrary.DTO.Consultation;
  7. using WingInterfaceLibrary.DTO.Schedule;
  8. namespace WingLiveConsultationService
  9. {
  10. partial class LiveConsultationService : JsonRpcService, ILiveConsultationService
  11. {
  12. /// <summary>
  13. /// 获取急诊订单号
  14. /// </summary>
  15. /// <param name="request"></param>
  16. /// <returns></returns>
  17. public async Task<string> GetEmergencyOrderAsync(GetEmergencyOrderRequest request)
  18. {
  19. var deviceInfo = await _deviceDBService.FindDeviceInfoBySerialNumberAsync(request.EmergencySerialNumber);
  20. if (deviceInfo != null)
  21. {
  22. return await _consultationRecordDBService.GetEmergencyOrderAsync(new GetEmergencyOrderDBRequest
  23. {
  24. EmergencyDeviceCode = deviceInfo.DeviceCode
  25. });
  26. }
  27. ThrowRpcException(CustomerRpcCode.DeviceNotExist, "DeviceNotExist");
  28. return string.Empty;
  29. }
  30. /// <summary>
  31. /// 急诊申请
  32. /// </summary>
  33. public async Task<string> ApplyEmergencyTreatment(ApplyEmergencyTreatmentRequest request)
  34. {
  35. string deviceUniqueCode = request.DeviceUniqueCode;
  36. //设备物理唯一码必填
  37. if (string.IsNullOrWhiteSpace(deviceUniqueCode))
  38. {
  39. ThrowRpcException(CustomerRpcCode.UniqueCodeIsEmpty, "UniqueCodeIsEmpty");
  40. }
  41. var device = await _deviceDBService.FindDeviceInfoBySerialNumberAsync(deviceUniqueCode);
  42. if (device == null || string.IsNullOrWhiteSpace(device.DeviceCode))
  43. {
  44. ThrowRpcException(CustomerRpcCode.UniqueCodeIsError, "UniqueCodeIsError");
  45. }
  46. var emergencyCode = await _consultationRecordDBService.GetEmergencyOrderAsync(new GetEmergencyOrderDBRequest
  47. {
  48. EmergencyDeviceCode = device.DeviceCode
  49. });
  50. if (string.IsNullOrWhiteSpace(emergencyCode))
  51. {
  52. ThrowRpcException(CustomerRpcCode.EmergencyCodeError, "EmergencyCodeError");
  53. }
  54. var userCode = await GetClientIdByTokenAsync(request.Token);
  55. var userDTO = await _userDBService.FindUserByCodeAsync(userCode);
  56. var organizationRequest = new GetOrganizationDBRequest { OrganizationCode = userDTO.RootOrganizationCode };
  57. var organization = await _organizationDBService.GetOrganizationDetailAsync(organizationRequest);
  58. var dbRequest = new CreateConsultationRecordDBRequest();
  59. dbRequest.Data = new ConsultationDetailDTO();
  60. var applyUserCode = userDTO.UserCode;
  61. var applyUserInfoDTO = await _userDBService.FindUserByCodeAsync(applyUserCode);
  62. dbRequest.Data.ApplyUserCode = applyUserCode;
  63. if (applyUserInfoDTO.OrganizationCode != applyUserInfoDTO.RootOrganizationCode)
  64. {
  65. dbRequest.Data.ApplyDepartmentCode = applyUserInfoDTO.OrganizationCode;
  66. }
  67. else
  68. {
  69. dbRequest.Data.ApplyDepartmentCode = "";
  70. }
  71. var startTime = DateTime.UtcNow;
  72. var endTime = startTime.AddHours(2);
  73. dbRequest.Data.ApplyOrganizationCode = applyUserInfoDTO.RootOrganizationCode;
  74. dbRequest.Data.ConsultationTime = startTime;
  75. dbRequest.Data.ConsultationTimeEnd = endTime;
  76. dbRequest.Data.OperateUserCode = userDTO.UserCode;
  77. dbRequest.Data.DeviceCode = device.DeviceCode;
  78. dbRequest.Data.CreateTime = DateTime.UtcNow;
  79. dbRequest.Data.ConsultationStatus = TransactionStatusEnum.ToStart;
  80. dbRequest.Data.IsEmergency = true; //是否急诊标识
  81. dbRequest.Data.EmergencyCode = emergencyCode;//急诊code
  82. var result = await _consultationRecordDBService.InsertConsultationRecordAsync(dbRequest);
  83. //创建日程
  84. var addScheduleDBRequest = new AddScheduleDBRequest();
  85. addScheduleDBRequest.Data = new ScheduleDTO()
  86. {
  87. Title = emergencyCode,
  88. StartTime = startTime,
  89. EndTime = endTime,
  90. Status = TransactionStatusEnum.ToStart,
  91. ScheduleType = ScheduleTypeEnum.Consultation,
  92. RelevanceCode = result,
  93. UserCodes = new List<string> { userCode }
  94. };
  95. await _userDBService.AddScheduleDBAsync(addScheduleDBRequest);
  96. return result;
  97. }
  98. }
  99. }