using adas_core.Domain.Enums; using adas_core.Domain.Models; using adas_core.Domain.Models.MongoModels; using adas_core.Domain.Models.Observations; using adas_core.Domain.Utils; using adas_core.Infrastructure.Utils.MongoMaps.Interfaz; using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; using static adas_core.Domain.Models.GroupedObservation; namespace adas_core.Infrastructure.Utils.MongoMaps; public class ObservationMapContributor : IEntityMapContributor { public void RegisterMaps() { if (!BsonClassMap.IsClassMapRegistered(typeof(BasePatientObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapIdMember(c => c.Id).SetElementName("_id"); cm.MapMember(c => c.PatientId).SetElementName("patientid"); cm.MapMember(c => c.UserId).SetIgnoreIfNull(true); cm.MapMember(c => c.ClinicalEpisode).SetIgnoreIfNull(true); cm.UnmapMember(c => c.Patient); cm.MapMember(c => c.SystemId).SetIgnoreIfNull(true); cm.MapMember(c => c.Code).SetIgnoreIfNull(true); cm.MapMember(c => c.CodingSystem).SetIgnoreIfNull(true); cm.MapMember(c => c.ParentData).SetIgnoreIfNull(true); cm.MapMember(c => c.Time); cm.MapMember(c => c.EndTime).SetIgnoreIfNull(true); cm.MapMember(c => c.Name).SetIgnoreIfNull(true); cm.MapMember(c => c.Units).SetIgnoreIfNull(true); cm.UnmapMember(c => c.CheckObservations); cm.UnmapMember(c => c.CreateObservation); cm.MapMember(c => c.PatientId).SetElementName("patientid"); cm.MapMember(c => c.EndTime).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(BasePatientObservationValue))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Value) .SetDefaultValue(new object()) .SetSerializer(new ComplexObjectValueTypeSerializer()); }); if (!BsonClassMap.IsClassMapRegistered(typeof(PatientObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Max).SetIgnoreIfNull(true); cm.MapMember(c => c.Min).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxWarn).SetIgnoreIfNull(true); cm.MapMember(c => c.MinWarn).SetIgnoreIfNull(true); cm.MapMember(c => c.WarnColor).SetIgnoreIfNull(true); cm.MapMember(c => c.AlertColor).SetIgnoreIfNull(true); cm.UnmapMember(c => c.ShowOnExpired); cm.MapMember(c => c.InsertMode) .SetDefaultValue(ObservationEnum.InsertMode.Auto) .SetSerializer(new EnumSerializer(BsonType.String)); cm.UnmapMember(c => c.Persist); cm.MapMember(c => c.ColorOnExpired).SetIgnoreIfNull(true); cm.UnmapMember(c => c.MessageTime); cm.MapMember(c => c.Result).SetIgnoreIfNull(true); cm.MapMember(c => c.Status) .SetDefaultValue(StatusEnum.Type.Ok) .SetSerializer(new EnumSerializer(BsonType.String)); cm.UnmapMember(c => c.Level); cm.UnmapMember(c => c.Expires); cm.MapMember(c => c.Expired).SetDefaultValue(false); cm.UnmapMember(c => c.UiConfiguration); cm.UnmapMember(c => c.Alarm); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ParentDataClass))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.GetMemberMap(c => c.Code).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.CodingSystem).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.Name).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ObservationData))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.CodingSystem).SetIgnoreIfNull(true); cm.MapMember(c => c.Code).SetIgnoreIfNull(true); cm.MapMember(c => c.Text).SetIgnoreIfNull(true); cm.MapMember(c => c.Time).SetIgnoreIfNull(true); cm.MapMember(c => c.Value).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ObservationsRequest))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.PatientNumber).SetIgnoreIfNull(true); cm.MapMember(c => c.ObservationNames).SetIgnoreIfNull(true); cm.MapMember(c => c.StartTime).SetIgnoreIfNull(true); cm.MapMember(c => c.EndTime).SetIgnoreIfNull(true); cm.MapMember(c => c.PageNumber).SetDefaultValue(1); cm.MapMember(c => c.PageSize).SetDefaultValue(10); }); if (!BsonClassMap.IsClassMapRegistered(typeof(DemoConfig))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.ValueOption) .SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ConfigObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapIdMember(c => c.Id).SetElementName("_id"); cm.MapMember(c => c.DemoConfig).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ConfigObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Code).SetIgnoreIfNull(true); cm.MapMember(c => c.CodingSystem).SetIgnoreIfNull(true); cm.MapMember(c => c.OriginalName).SetIgnoreIfNull(true); cm.MapMember(c => c.ParentCode).SetIgnoreIfNull(true); cm.MapMember(c => c.ParentCodingSystem).SetIgnoreIfNull(true); cm.MapMember(c => c.ParentName).SetIgnoreIfNull(true); cm.MapMember(c => c.Name).SetIgnoreIfNull(true); cm.MapMember(c => c.Units).SetIgnoreIfNull(true); cm.MapMember(c => c.ArrowType) .SetSerializer(new EnumSerializer(BsonType.String)) .SetDefaultValue(ObservationEnum.ArrowType.Default); cm.MapMember(c => c.ShowArrow).SetDefaultValue(true); cm.MapMember(c => c.ShowValue).SetDefaultValue(true); cm.MapMember(c => c.ForceUnits).SetDefaultValue(false); cm.MapMember(c => c.MinAlert).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxAlert).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxWarn).SetIgnoreIfNull(true); cm.MapMember(c => c.MinWarn).SetIgnoreIfNull(true); cm.MapMember(c => c.WarnColor).SetIgnoreIfNull(true); cm.MapMember(c => c.AlertColor).SetIgnoreIfNull(true); cm.MapMember(c => c.AlertValues).SetIgnoreIfNull(true); cm.MapMember(c => c.WarningValues).SetIgnoreIfNull(true); cm.MapMember(c => c.ForceWarn).SetDefaultValue(false); cm.MapMember(c => c.ForceAlert).SetDefaultValue(false); cm.MapMember(c => c.Alert).SetIgnoreIfNull(true); cm.MapMember(c => c.Expires).SetIgnoreIfNull(true); cm.MapMember(c => c.ShowOnExpired).SetIgnoreIfDefault(true); cm.MapMember(c => c.Persist).SetIgnoreIfNull(true); cm.MapMember(c => c.ColorOnExpired).SetIgnoreIfNull(true); cm.MapMember(c => c.RetentionPolicy) .SetIgnoreIfNull(true) .SetSerializer( new NullableSerializer(new EnumSerializer(BsonType.String))); cm.MapMember(c => c.RetentionPolicyValue).SetIgnoreIfNull(true); cm.MapMember(c => c.LevelCondition).SetIgnoreIfNull(true); cm.MapMember(c => c.Grouped).SetIgnoreIfNull(true); cm.MapMember(c => c.UiConfiguration).SetIgnoreIfNull(true); cm.MapMember(c => c.Alarm).SetIgnoreIfNull(true); cm.MapMember(c => c.Description).SetIgnoreIfNull(true); cm.MapMember(c => c.RequiredValue).SetIgnoreIfNull(true); cm.MapMember(c => c.Preconditions).SetIgnoreIfNull(true); cm.MapMember(c => c.CheckObservations).SetDefaultValue(false); cm.MapMember(c => c.CreateObservation).SetIgnoreIfNull(true); cm.MapMember(c => c.InsertMode) .SetDefaultValue(ObservationEnum.InsertMode.Auto) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.TimeFromMessageTime).SetIgnoreIfDefault(true); cm.MapMember(c => c.ColorRanges).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ConfigObservation.ColorRange))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(s => s.ValueType) .SetIgnoreIfNull(true) .SetSerializer( new NullableSerializer( new EnumSerializer(BsonType.String))); cm.MapMember(s => s.Min).SetIgnoreIfNull(true); cm.MapMember(s => s.Max).SetIgnoreIfNull(true); cm.MapMember(s => s.MatchText).SetIgnoreIfNull(true); cm.MapMember(s => s.MatchBoolean).SetIgnoreIfNull(true); cm.MapMember(s => s.MinDate).SetIgnoreIfNull(true); cm.MapMember(s => s.MaxDate).SetIgnoreIfNull(true); cm.MapMember(s => s.Color).SetIgnoreIfNull(true); cm.MapMember(s => s.Label).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(GroupedObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.PatientId); cm.MapMember(c => c.Name).SetDefaultValue(string.Empty); cm.MapMember(c => c.Group).SetDefaultValue(string.Empty); cm.MapMember(c => c.Observations).SetDefaultValue(new List()); }); if (!BsonClassMap.IsClassMapRegistered(typeof(GroupedObservationObs))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Name).SetDefaultValue(string.Empty); cm.MapMember(c => c.First).SetIgnoreIfNull(true); cm.MapMember(c => c.Last).SetIgnoreIfNull(true); cm.MapMember(c => c.Min).SetIgnoreIfNull(true); cm.MapMember(c => c.Max).SetIgnoreIfNull(true); cm.MapMember(c => c.MinAlert).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxAlert).SetIgnoreIfNull(true); cm.MapMember(c => c.Average).SetIgnoreIfNull(true); cm.MapMember(c => c.Sum).SetIgnoreIfNull(true); cm.MapMember(c => c.Count).SetIgnoreIfNull(true); cm.MapMember(c => c.HalfHour).SetIgnoreIfNull(true); cm.MapMember(c => c.LastFilled).SetIgnoreIfNull(true); cm.MapMember(c => c.Time); cm.MapMember(c => c.Shift).SetIgnoreIfNull(true); cm.MapMember(c => c.ShiftDate); cm.MapMember(c => c.IsFilled); }); if (!BsonClassMap.IsClassMapRegistered(typeof(GroupedObservationObsValue))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Type) .SetDefaultValue(StatusEnum.Type.Ok) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.Value); cm.MapMember(c => c.Time).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(PredictMedicationObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.MedicineText).SetDefaultValue(string.Empty); cm.MapMember(c => c.DegreeSimilarity); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ObservationTextRule))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.ValueType) .SetDefaultValue(ObservationEnum.ValueType.String) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.Value).SetIgnoreIfNull(true); cm.MapMember(c => c.MatchText).SetIgnoreIfNull(true); cm.MapMember(c => c.MatchBoolean).SetIgnoreIfNull(true); cm.MapMember(c => c.MatchNumber).SetIgnoreIfNull(true); cm.MapMember(c => c.MatchDate).SetIgnoreIfNull(true); cm.MapMember(c => c.Label).SetIgnoreIfNull(true); cm.MapMember(c => c.MinDate).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxDate).SetIgnoreIfNull(true); cm.MapMember(c => c.MinNum).SetIgnoreIfNull(true); cm.MapMember(c => c.MaxNum).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(ConditionsConfig))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Condition).SetIgnoreIfNull(true); cm.MapMember(c => c.FieldCondition).SetIgnoreIfNull(true); }); } }