using adas_core.Domain.Enums; using adas_core.Domain.Models; using adas_core.Domain.Models.Observations; using adas_core.Infrastructure.Utils.MongoMaps.Interfaz; using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; namespace adas_core.Infrastructure.Utils.MongoMaps; public class TreatmentMapContributor : IEntityMapContributor { public void RegisterMaps() { if (!BsonClassMap.IsClassMapRegistered(typeof(PatientTreatment))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapIdMember(c => c.Id).SetElementName("_id"); cm.MapMember(c => c.PatientId) .SetSerializer(new ObjectIdSerializer(BsonType.String)) .SetIgnoreIfNull(true); cm.MapMember(c => c.OrderControl) .SetSerializer(new EnumSerializer(BsonType.String)); cm.MapMember(c => c.PlacerOrder).SetIgnoreIfNull(true); cm.MapMember(c => c.FillerOrder).SetIgnoreIfNull(true); cm.MapMember(c => c.OrderStatus).SetDefaultValue(string.Empty); cm.MapMember(c => c.OrderTime).SetIgnoreIfNull(true); cm.MapMember(c => c.StartTime).SetIgnoreIfNull(true); cm.MapMember(c => c.EndTime).SetIgnoreIfNull(true); cm.MapMember(c => c.RequestedGiveCodes).SetDefaultValue(new List()); cm.MapMember(c => c.RequestedGiveTreatment).SetDefaultValue(string.Empty); cm.MapMember(c => c.RequestedGiveCodesStatus).SetDefaultValue(new List()); cm.MapMember(c => c.RequestedGiveAmountMinimum).SetIgnoreIfNull(true); cm.MapMember(c => c.RequestedGiveAmountMaximum).SetIgnoreIfNull(true); cm.MapMember(c => c.RequestedGiveUnits).SetIgnoreIfNull(true); cm.MapMember(c => c.RequestedDosageForm).SetIgnoreIfNull(true); cm.MapMember(c => c.Notes).SetDefaultValue(new List()); cm.MapMember(c => c.Routes).SetDefaultValue(new List()); cm.MapMember(c => c.SingleDose).SetDefaultValue(false); cm.MapMember(c => c.BoloPom).SetDefaultValue(false); cm.MapMember(c => c.MessageTime); cm.MapMember(c => c.SystemId).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(Entity))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.EntityIdentifier).SetIgnoreIfNull(true); cm.MapMember(c => c.NamespaceId).SetIgnoreIfNull(true); cm.MapMember(c => c.UniversalId).SetIgnoreIfNull(true); cm.MapMember(c => c.UniversalIdType).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(Code))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Identifier).SetDefaultValue(string.Empty); cm.MapMember(c => c.Text).SetDefaultValue(string.Empty); cm.MapMember(c => c.CodingSystem).SetDefaultValue(string.Empty); }); if (!BsonClassMap.IsClassMapRegistered(typeof(CodeStatus))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Code).SetIgnoreIfNull(true); cm.MapMember(c => c.Status).SetIgnoreIfNull(true); cm.MapMember(c => c.AdministrationTime).SetIgnoreIfNull(true); cm.MapMember(c => c.EndAdministrationTime).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(Note))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.CommentType).SetDefaultValue(string.Empty); cm.MapMember(c => c.Comment).SetDefaultValue(string.Empty); cm.MapMember(c => c.EnteredTime).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(TreatmentRoute))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Route).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(Medicine))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapIdMember(c => c.Id).SetElementName("_id"); cm.MapMember(c => c.Name).SetIgnoreIfNull(true); cm.MapMember(c => c.Codes).SetIgnoreIfNull(true); cm.MapMember(c => c.Notes).SetIgnoreIfNull(true); cm.MapMember(c => c.Type).SetIgnoreIfNull(true); cm.MapMember(c => c.Group).SetIgnoreIfNull(true); }); if (!BsonClassMap.IsClassMapRegistered(typeof(CodeAction))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); cm.MapMember(c => c.Code).SetIsRequired(true); cm.MapMember(c => c.Action) .SetSerializer(new EnumSerializer(BsonType.String)); }); if (!BsonClassMap.IsClassMapRegistered(typeof(PredictMedicationObservation))) BsonClassMap.RegisterClassMap(cm => { cm.AutoMap(); }); } }