public async Task <Guid> Handle(Command request, CancellationToken cancellationToken) { var existingPatient = await _appDbRepository.GetPatientIdByMobileNumberAsync(request.MobileNumber); if (existingPatient != null) { throw new SystemException(); } var patientHospitalId = await _appDbRepository.GetHospitalIdByZipCode(request.Address.ZipCode); var patientId = Guid.NewGuid(); var patient = new Patient { PatientId = patientId, Name = request.Name, DateOfBirth = request.DateOfBirth, Gender = (GenderType)request.Gender, MobileNumber = request.MobileNumber, HospitalId = patientHospitalId, Address = new Domain.Entities.Address { Street = request.Address.Street, City = request.Address.City, State = request.Address.State, ZipCode = request.Address.ZipCode } }; await _appDbRepository.AddPatientAsync(patient); _notificationService.Send(new Message { Text = $"Patient created with the id {patientId}", Payload = patient }); return(patientId); }