public async Task Handle(ObservationUpdated message)
        {
            var obj = this.ParseMessage(message);

            var nhsNumber = obj.Subject.Identifier.Value;
            var patient   = await this.Patients.GetOne(nhsNumber);

            if (patient == null)
            {
                return;
            }

            var observationId = obj.Identifier[0].Value;
            var observation   = await this.ClinicalNotes.GetOne(nhsNumber, $"{observationId}");

            if (observation == null)
            {
                return;
            }

            var value    = (SimpleQuantity)obj.Value;
            var dateTime = (FhirDateTime)obj.Effective;

            observation.Author      = obj.Performer[0].Display;
            observation.Notes       = $"AMENDED: {obj.Code.Coding[0].Display}. Value: {value.Value}. Unit: {value.Unit}.";
            observation.DateCreated = dateTime.ToDateTime() ?? DateTime.UtcNow;

            await this.ClinicalNotes.AddOrUpdate(observation);
        }
        public async Task Handle(ObservationUpdated message)
        {
            var obj = this.ParseMessage(message);

            var value = (SimpleQuantity)obj.Value;

            var notification = new Notification
            {
                Ods         = message.Destination,
                System      = message.System,
                NhsNumber   = obj.Subject.Identifier.Value,
                DateCreated = DateTime.UtcNow,
                Type        = obj.TypeName,
                Summary     = $"AMENDED: {obj.Code.Coding[0].Display}.",
                Details     = $"Value: {value.Value}. Unit: {value.Unit}.",
                Json        = this.ToString()
            };

            await this.Notifications.AddOrUpdate(notification);

            await this.Hub.Clients.Group(message.Destination?.ToLowerInvariant()).SendAsync("notification", notification);
        }