public async Task <int> AddAsync([NotNull] Patient patient)
        {
            if (patient == null)
            {
                throw new ArgumentNullException(nameof(patient));
            }

            using (var context = _contextFactory.Create())
            {
                var entity = patient.ToEntity();
                context.Patients.Add(entity);
                await context
                .SaveChangesAsync()
                .ConfigureAwait(false);

                await _eventBus
                .PublishAsync(new PatientAddedEvent(entity.Id))
                .ConfigureAwait(false);

                return(entity.Id);
            }
        }
        public async Task <int> AddAsync(Session session)
        {
            if (session == null)
            {
                throw new ArgumentNullException(nameof(session));
            }

            using (var context = _factory.Create())
            {
                var entity = session.ToEntity();
                context.Sessions.Add(entity);
                await context
                .SaveChangesAsync()
                .ConfigureAwait(false);

                await _eventBus
                .PublishAsync(new SessionAddedEvent(entity.Id))
                .ConfigureAwait(false);

                return(entity.Id);
            }
        }