Creado apartir del commit b888de6c92056de294456f581a56e25e734d4ab7 de develop

This commit is contained in:
jrojas
2026-06-26 09:52:35 +02:00
commit 319fd3dfb0
746 changed files with 106610 additions and 0 deletions
@@ -0,0 +1,489 @@
using System.Text.Json;
using adas_core.Domain.Enums;
namespace adas_core.Domain.Models.AppSettings;
public class ApiSettings
{
public const string Api = "ApiSettings";
public string? Customize { get; set; }
public PointOfCareMapping? PointOfCareMapping { get; set; }
public ConfigObservationSettings? ConfigObservation { get; set; }
public RetentionPolicy RetentionPolicy { get; set; }
public int RetentionPolicyValue { get; set; }
//public CacheSettings? CacheSettings { get; set; }
public bool CreatePatientWithOru { get; set; }
public bool PushPatientWithOru { get; set; }
public bool CreatePatientWithSiu { get; set; }
public bool CreatePatientWithoutLocation { get; set; }
public bool CreatePatientWithoutPatientNumber { get; set; }
public bool CreatePatientWithLocation { get; set; }
public bool CreatePatientWithAdtA08 { get; set; }
public bool UpdatePatientDataWithOru { get; set; }
public bool UpdatePatientDataWithAdtA02 { get; set; }
public bool UpdatePatientLocationWithOru { get; set; }
public bool UpdatePatientNumberWithOru { get; set; }
public bool ActivateSchedulerCheckNewsJob { get; set; }
public int CheckNewsJobIntervalMinutes { get; set; } = 15;
public string? PatientsAppointments { get; set; }
public string? PatientsDiagnosis { get; set; }
public string? PatientsObservations { get; set; }
public string? PatientsAlarms { get; set; }
public string? Patients { get; set; }
public string? PoCSettings { get; set; }
public string? PumpObservations { get; set; }
public string? PumpStates { get; set; }
public string? PumpAlarmEvent { get; set; }
public string? PumpAlarmState { get; set; }
public string? PatientsRecordingAlerts { get; set; }
public string? PatientsTreatments { get; set; }
public string Mappings { get; set; } = "mappings";
public string? ConfigSections { get; set; }
public string? Units { get; set; } = "units";
public string? ConfigObservations { get; set; }
public string? HistoricalConfigChanges { get; set; }
public string Admissions { get; set; } = "admissions";
public string Discharges { get; set; } = "discharges";
public string Notices { get; set; } = "notices";
public string Locations { get; set; } = "pointOfCares";
public string Relays { get; set; } = "relays";
public string Cameras { get; set; } = "cameras";
public string LightBeacons { get; set; } = "light_beacons";
public string Displays { get; set; } = "displays";
public string DisplaysConfig { get; set; } = "config_displays";
public string DisplayCardConfig { get; set; } = "config_displays_card";
public string DisplayDetailConfig { get; set; } = "config_displays_detail";
public string DisplayChartConfig { get; set; } = "config_displays_chart";
public string Authorizations { get; set; } = "authorizations";
public string AltableOptionList { get; set; } = "list_altable";
public string AllergyList { get; set; } = "list_allergy";
public string DestinationList { get; set; } = "list_destinations";
public string DiagnosisList { get; set; } = "list_diagnosis";
public string DischargeStatusList { get; set; } = "list_dischargeStatus";
public string DoctorList { get; set; } = "list_doctor";
public string DoctorTypeList { get; set; } = "list_doctorType";
public string InternalDestinationList { get; set; } = "list_internalDestination";
public string InsulationList { get; set; } = "list_insulation";
public string LanguageBarrierList { get; set; } = "list_languageBarrier";
public string MobilityOptionList { get; set; } = "list_mobility";
public string OriginList { get; set; } = "list_origin";
public string PatientStatusList { get; set; } = "list_patientStatus";
public string ProcedureList { get; set; } = "list_procedure";
public string TestList { get; set; } = "list_test";
public string ServiceList { get; set; } = "list_service";
public string TherapeuticCeilingList { get; set; } = "list_therapeuticCeiling";
public string TreatmentList { get; set; } = "list_treatment";
public string VisitOptionList { get; set; } = "list_visitOption";
public string AccessControlList { get; set; } = "list_accessControl";
public string PassiveSittingList { get; set; } = "list_passiveSitting";
public string GenericList { get; set; } = "list_generic";
public string? ConfigUnits { get; set; }
public bool ConfigUnitsRequired { get; set; } = true;
public string? ConfigUnitsKey { get; set; }
public string? ConfigPumps { get; set; }
public bool ConfigPumpsRequired { get; set; } = true;
public string? ConfigPumpsKey { get; set; }
public string? ServiceConfig { get; set; }
public string Users { get; set; } = "users";
public string? Medicines { get; set; }
public string? Devices { get; set; }
public string? ArchivePatientsAppointments { get; set; }
public string? ArchivePatientsDiagnosis { get; set; }
public string? ArchivePatientsObservations { get; set; }
public string? ArchivePatient { get; set; }
public string? ArchivePatientsPumpobservations { get; set; }
public string? ArchivePatientsRecordingalerts { get; set; }
public string? ArchivePatientsTreatments { get; set; }
public string? ArchivePatientProcedure { get; set; }
public string? PatientCarePlan { get; set; }
public bool CretatePatientWithoutPatientNumber { get; set; }
public bool ArchivePatientWithOru { get; set; }
public string? OnArchivePatientAction { get; set; }
public int? ArchivePatientsWithoutObservationsSinceHours { get; set; }
public int? CheckInactivePatientSchedulerIntervalHours { get; set; }
public int? CheckActiveTreatmentsSchedulerIntervalMinutes { get; set; }
public int? CheckActiveAppointmentsSchedulerIntervalMinutes { get; set; }
public int? GetProvidersObservationsSchedulerIntervalMinutes { get; set; }
public int? SinceDischargeTimeToArchive { get; set; }
public int? CheckErrorQueues { get; set; }
public bool ActivateCheckExpiredAlerts { get; set; } = true;
public bool ActivateSchedulerCheckExpiredObservation { get; set; }
public bool ActivateSchedulerGetProvidersObservations { get; set; }
public bool ActivateCheckInactivePatients { get; set; }
public bool ActivateSchedulerCheckOpiateBoluses { get; set; }
public bool ActivateSchedulerCheckActiveTreatmentsJob { get; set; }
public bool ActivateSchedulerCheckActiveAppointmentsJob { get; set; }
public bool ActivateSchedulerCheckHydricBalance { get; set; }
public int? SchedulerCheckExpiredObservationsIntervalMinutes { get; set; }
public int? SchedulerCheckExpiredAlertsIntervalSeconds { get; set; }
public bool StartRecordingWithoutPatientNumber { get; set; } = true;
public List<string>? Shift { get; set; }
public bool FindPatientByLocationWithoutId { get; set; }
public bool PersistObservationCodes { get; set; }
public string? IccaFacility { get; set; }
public List<string>? SendingFacility { get; set; }
public List<string> AllergiesCode { get; set; } = [];
public List<string> DrainageCode { get; set; } = [];
public List<string> PositionCode { get; set; } = [];
public List<string> IsolationCode { get; set; } = [];
public List<string>? HighFrequencyVentilation { get; set; }
public List<string>? InvasiveVentilation { get; set; }
public List<string>? NonInvasiveVentilation { get; set; }
public List<string>? Ecmo { get; set; }
public List<string>? Surgery { get; set; }
public List<string>? Sedation { get; set; }
public List<string>? AntibioticList { get; set; }
public List<string>? AnxiolyticList { get; set; }
public List<string>? AntipsicoticList { get; set; }
public List<string>? AntidepressantsList { get; set; }
public List<string>? NeuroMedicationList { get; set; }
public List<string>? SerumCrystalloidList { get; set; }
public List<string>? SerumColloidList { get; set; }
public List<string>? AntihypertensivesList { get; set; }
public List<string>? SurgeryText { get; set; }
public List<string>? Transcutaneous { get; set; }
public List<string>? RegionalBrainSaturation { get; set; }
public List<string>? MedicationBolus { get; set; }
public List<string>? NotesIndicatingMedication { get; set; }
public List<string>? IntravenousLinesCode { get; set; }
public List<string>? Electroencephalogram { get; set; }
public List<string>? Respiratory { get; set; }
public List<string>? Oni { get; set; }
public List<string>? PumPressureAlarm { get; set; }
public List<string>? VolumetricAirOcclusionAlarm { get; set; }
public List<string>? VolumetricAirInLineAlarm { get; set; }
public List<string>? EndContinuousInfusionAlarm { get; set; }
public List<string>? InotropicEndInfusionAlarm { get; set; }
public List<string>? InotropicMedicines { get; set; }
public int IgnoreCalcObservationsOlderInMinutesThan { get; set; }
public int PumpExpiresSeconds { get; set; } = 60;
public bool SendPumpsZero { get; set; } = true;
public string? BalizaUrl { get; set; }
public string? BalizaPassword { get; set; }
public string? DiagnosisSystem { get; set; }
public List<string> DiagnosisCode { get; set; } = [];
public string[]? PathUpdateFiles { get; set; }
public int? TimeToSendGroupedObs { get; set; }
public string[]? PathToDisplayAssets { get; set; }
public List<string>? DefaultIdRecord { get; set; }
public bool CalculateExtremeEvents { get; set; } = true;
public double CalculateRespRateVentExpires { get; set; } = 2;
public bool ActivateExpireAlertsTimer { get; set; }
public int ExpireAlertIntervalSeconds { get; set; } = 5;
public ArchiveNurseData ArchiveNurseData { get; set; } = new();
public List<MappingInterventions>? MappingInterventions { get; set; }
public Dictionary<string, int>? ComplexityMappingObservation { get; set; }
public string? NoCalculateStatusWithCodingSystem { get; set; }
}
public class ArchiveNurseData
{
public bool Active { get; set; } = false;
public ArchiveNurseDataConfig ArchiveTest { get; set; } = new();
public ArchiveNurseDataConfig ArchiveProcedure { get; set; } = new();
public ArchiveNurseDataConfig ArchiveTreatment { get; set; } = new();
public int IntervalMinutes { get; set; } = 15;
}
public class ArchiveNurseDataConfig
{
public bool Active { get; set; } = false;
public int EndDateAfterMinutes { get; set; } = 60;
}
public class PointOfCareMapping
{
public string? Key { get; set; }
public bool Required { get; set; }
public int? Refresh { get; set; } = 600; //10min
}
public class ConfigObservationSettings
{
public bool IgnoreUnknownObservation { get; set; }
public bool IgnoreUnknownTreatment { get; set; }
public int? Refresh { get; set; }
}
#region CCC mapping config
public class InterventionsCodes
{
private object? _finalValue;
private object? _initialValue;
public object? InitialValue
{
get => _initialValue switch
{
double d => d,
string s => s,
int i => (double)i,
_ => null
};
set
{
switch (value)
{
case double:
case string:
_initialValue = value;
break;
case int intValue:
_initialValue = (double)intValue;
break;
case JsonElement element:
switch (element.ValueKind)
{
case JsonValueKind.Number:
_initialValue = element.GetDouble();
return;
case JsonValueKind.String:
_initialValue = element.GetString();
break;
default:
throw new ArgumentOutOfRangeException();
}
break;
default:
{
if (value != null)
try
{
_initialValue = Convert.ToDouble(value);
}
catch (FormatException)
{
try
{
_initialValue = value.ToString();
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
else
_initialValue = null;
break;
}
}
}
}
public object? FinalValue
{
get => _finalValue switch
{
double d => d,
string s => s,
_ => null
};
set
{
// Apply the same JsonElement handling logic here as well
if (value is double)
_finalValue = value;
else if (value is string)
_finalValue = value;
else if (value is JsonElement element)
switch (element.ValueKind)
{
case JsonValueKind.Number:
_finalValue = element.GetDouble();
return;
case JsonValueKind.String:
_finalValue = element.GetString();
break;
default:
throw new ArgumentOutOfRangeException();
}
else if (value != null)
try
{
_finalValue = Convert.ToDouble(value);
}
catch (FormatException)
{
try
{
_finalValue = value.ToString();
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
else
_finalValue = null;
}
}
}
public class InterventionsValues
{
private object? _finalValue;
private object? _initialValue;
public object? InitialValue
{
get => _initialValue switch
{
double d => d,
string s => s,
_ => null
};
set
{
if (value is double)
_initialValue = value;
else if (value is string)
_initialValue = value;
else if (value is JsonElement element)
switch (element.ValueKind)
{
case JsonValueKind.Number:
_initialValue = element.GetDouble();
return;
case JsonValueKind.String:
_initialValue = element.GetString();
break;
}
else if (value != null)
try
{
_initialValue = Convert.ToDouble(value);
}
catch (FormatException)
{
try
{
_initialValue = value.ToString();
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
else
_initialValue = null;
}
}
public object? FinalValue
{
get => _finalValue switch
{
double d => d,
string s => s,
_ => null
};
set
{
if (value is double)
_finalValue = value;
else if (value is string)
_finalValue = value;
else if (value is JsonElement element)
switch (element.ValueKind)
{
case JsonValueKind.Number:
_finalValue = element.GetDouble();
return;
case JsonValueKind.String:
_finalValue = element.GetString();
break;
}
else if (value != null)
try
{
_finalValue = Convert.ToDouble(value);
}
catch (FormatException)
{
try
{
_finalValue = value.ToString();
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
}
catch (Exception ex)
{
throw new ArgumentException(
$"The value must be a double or a string. Received type: {value.GetType()}, Value: {value}, Error: {ex.Message}");
}
else
_finalValue = null;
}
}
public int ValueContributed { get; set; } = 0;
}
public class MappingInterventions
{
public string? Type { get; set; }
public string? Group { get; set; }
public string? Name { get; set; }
public ObservationEnum.Category? Category { get; set; }
public List<InterventionsCodes> Codes { get; set; } = [];
public List<InterventionsValues>? Value { get; set; }
}
#endregion
@@ -0,0 +1,50 @@
using adas_core.Domain.Models.MongoModels;
namespace adas_core.Domain.Models.AppSettings;
public class AuthSettings
{
public JwtConfig? JwtConfig { get; set; }
public UsersWhiteListConfig UsersWhiteListConfig { get; set; } = [];
public List<string> LoginMethods { get; set; } = [];
}
public class JwtConfig : JwtExtConfig
{
public string? Issuer { get; set; }
public bool ValidateIssuer { get; set; } = true;
public int TokenValidityInMinutes { get; set; } = 10;
public int RefreshTokenValidityInMinutes { get; set; } = 1440;
public Dictionary<string, JwtExtConfig>? ExternalProviders { get; set; } = null;
}
public class JwtExtConfig
{
public string? Key { get; set; }
public string? Audience { get; set; }
public bool ValidateAudience { get; set; } = true;
}
public class UsersWhiteListConfig : List<string>
{
public bool IsValid(User user)
{
return this.Any(username => username.ToLowerInvariant().Equals(user.UserName.ToLowerInvariant()));
}
}
public class ValidGroupsConfig : List<ValidGroup>
{
public bool IsValid(User? user)
{
return user != null;
}
}
public class ValidGroup
{
public string? Name { get; set; }
public bool IsRegex { get; set; } = false;
}
@@ -0,0 +1,29 @@
namespace adas_core.Domain.Models.AppSettings;
public class AutoRecordingSettings
{
public AutoStart? AutoStart { get; set; }
public AutoStop? AutoStop { get; set; }
public MustSendAlert? MustSendAlert { get; set; }
}
public class AutoStart
{
public int BlueCode { get; set; }
public int HemoFilterAlert { get; set; }
public int RespirationAlert { get; set; }
}
public class AutoStop
{
public int BlueCode { get; set; }
public int HemoFilterAlert { get; set; }
public int RespirationAlert { get; set; }
}
public class MustSendAlert
{
public bool BlueCode { get; set; }
public bool HemoFilterAlert { get; set; }
public bool RespirationAlert { get; set; }
}
@@ -0,0 +1,68 @@
using adas_core.Domain.Enums;
namespace adas_core.Domain.Models.AppSettings;
public class CacheSettings
{
/// <summary>
/// Activa o desactiva por completo el sistema de caché.
/// Si es false, se usará NoCacheService para todas las entidades.
/// </summary>
public bool IsEnabled { get; set; } = true;
// Cada propiedad define cómo debe cachearse la entidad correspondiente:
// CacheMode None → no cachea nunca
// CacheMode Cache → in-memory (CacheService)
// CacheMode Redis → RedisService
public CacheEnum.Mode Patients { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode Displays { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode PumpObservations { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode Appointments { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode PointOfCares { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode GroupedObservations { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode PatientObservations { get; set; } = CacheEnum.Mode.Cache;
public CacheEnum.Mode ConfigObservations { get; set; } = CacheEnum.Mode.Cache;
// Configuración específica del backend InMemory
public InMemorySettings InMemory { get; set; } = new();
// Configuración específica del backend Redis
public RedisSettings Redis { get; set; } = new();
}
// -------------------- InMemory Cache --------------------
public class InMemorySettings
{
public TtlSettings Ttl { get; set; } = new();
}
// -------------------- TTL por entidad --------------------
public class TtlSettings
{
public int? GlobalSeconds { get; set; }
public int? PatientsSeconds { get; set; }
public int? DisplaysSeconds { get; set; }
public int? PumpObservationsSeconds { get; set; }
public int? AppointmentsSeconds { get; set; }
public int? ConfigObservationsSeconds { get; set; }
public int? PointOfCaresSeconds { get; set; }
public int? GroupedObservationsSeconds { get; set; }
public int? PatientObservationsSeconds { get; set; }
}
@@ -0,0 +1,12 @@
namespace adas_core.Domain.Models.AppSettings;
public class DatabaseSettings
{
public const string Database = "DatabaseSettings";
public string? ConnectionString { get; set; }
public string? DatabaseName { get; set; }
public int MaxConnectionPoolSize { get; set; } = 200;
public int MinConnectionPoolSize { get; set; } = 20;
public int MaxConnectionIdleTime { get; set; } = 60;
}
@@ -0,0 +1,141 @@
namespace adas_core.Domain.Models.AppSettings;
public class ListSettings
{
public ListSettingItem AltableOptionList { get; set; } = new()
{
ManualObservationName = "AltableOptionObs",
AutoObservationName = []
};
public ListSettingItem AllergyList { get; set; } = new()
{
ManualObservationName = "AllergyObs",
AutoObservationName = []
};
public ListSettingItem DestinationList { get; set; } = new()
{
ManualObservationName = "DestinationObs",
AutoObservationName = []
};
public ListSettingItem DiagnosisList { get; set; } = new()
{
ManualObservationName = "DiagnosisObs",
AutoObservationName = []
};
public ListSettingItem DischargeStatusList { get; set; } = new()
{
ManualObservationName = "DischargeStatusObs",
AutoObservationName = []
};
public ListSettingItem DoctorList { get; set; } = new()
{
ManualObservationName = "DoctorObs",
AutoObservationName = []
};
public ListSettingItem DoctorTypeList { get; set; } = new()
{
ManualObservationName = "DoctorTypeObs",
AutoObservationName = []
};
public ListSettingItem InternalDestinationList { get; set; } = new()
{
ManualObservationName = "InternalDestinationObs",
AutoObservationName = []
};
public ListSettingItem InsulationList { get; set; } = new()
{
ManualObservationName = "InsulationObs",
AutoObservationName = []
};
public ListSettingItem LanguageBarrierList { get; set; } = new()
{
ManualObservationName = "LanguageBarrierObs",
AutoObservationName = []
};
public ListSettingItem PassiveSittingList { get; set; } = new()
{
ManualObservationName = "PassiveSittingObs",
AutoObservationName = []
};
public ListSettingItem GenericList { get; set; } = new()
{
ManualObservationName = "GenericObs",
AutoObservationName = []
};
public ListSettingItem MobilityOptionList { get; set; } = new()
{
ManualObservationName = "MobilityOptionObs",
AutoObservationName = []
};
public ListSettingItem OriginList { get; set; } = new()
{
ManualObservationName = "OriginObs",
AutoObservationName = []
};
public ListSettingItem PatientStatusList { get; set; } = new()
{
ManualObservationName = "PatientStatusObs",
AutoObservationName = []
};
public ListSettingItem ProcedureList { get; set; } = new()
{
ManualObservationName = "ProcedureObs",
AutoObservationName = []
};
public ListSettingItem ServiceList { get; set; } = new()
{
ManualObservationName = "ServiceObs",
AutoObservationName = []
};
public ListSettingItem TherapeuticCeilingList { get; set; } = new()
{
ManualObservationName = "TherapeuticCeilingObs",
AutoObservationName = []
};
public ListSettingItem TreatmentList { get; set; } = new()
{
ManualObservationName = "TreatmentObs",
AutoObservationName = []
};
public ListSettingItem VisitOptionList { get; set; } = new()
{
ManualObservationName = "VisitOptionObs",
AutoObservationName = []
};
public ListSettingItem AccessControlList { get; set; } = new()
{
ManualObservationName = "AccessControlObs",
AutoObservationName = []
};
public ListSettingItem TestList { get; set; } = new()
{
ManualObservationName = "TestObs",
AutoObservationName = []
};
}
public class ListSettingItem
{
public string? ManualObservationName { get; set; }
public List<string> AutoObservationName { get; set; } = [];
}
@@ -0,0 +1,339 @@
namespace adas_core.Domain.Models.AppSettings;
public class PermissionSettings
{
public SourcePermissions Admin { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new PanelPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
)
);
public SourcePermissions Developer { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new DisplayPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
),
new PanelPermissionTypes(
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
new UserActions(true, true, true, true, true),
true
)
);
public SourcePermissions DoctorChief { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
)
);
public SourcePermissions Doctor { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
)
);
public SourcePermissions NursingSupervisor { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
new UserActions(false, true, false, true, false),
false
)
);
public SourcePermissions Nurse { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
)
);
public SourcePermissions Guest { get; set; } = new(
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new DisplayPermissionTypes(
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
new UserActions(false, false, false, true, false),
false
),
new PanelPermissionTypes(
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
new UserActions(false, false, false, true, true),
false
)
);
}
public class SourcePermissions(
DisplayPermissionTypes unit,
DisplayPermissionTypes display,
PanelPermissionTypes panel)
{
public DisplayPermissionTypes Unit { get; set; } = unit;
public DisplayPermissionTypes Display { get; set; } = display;
public PanelPermissionTypes Panel { get; set; } = panel;
}
public class DisplayPermissionTypes(
UserActions admissions,
UserActions discharges,
UserActions obs,
UserActions demographicData,
UserActions boxBlocking,
UserActions notices,
UserActions cell,
bool useDemoMode)
{
public UserActions Admissions { get; set; } = admissions;
public UserActions Discharges { get; set; } = discharges;
public UserActions Obs { get; set; } = obs;
public UserActions Cell { get; set; } = cell;
public UserActions DemographicData { get; set; } = demographicData;
public UserActions BoxBlocking { get; set; } = boxBlocking;
public UserActions Notices { get; set; } = notices;
public bool UseDemoMode { get; set; } = useDemoMode;
}
public class PanelPermissionTypes(
UserActions units,
UserActions displays,
UserActions displayConfigs,
UserActions masterLists,
UserActions treatments,
UserActions patients,
UserActions medicines,
UserActions pumps,
UserActions users,
UserActions configObservations,
UserActions observations,
UserActions audits,
bool useDemoMode)
{
public UserActions Units { get; set; } = units;
public UserActions Displays { get; set; } = displays;
public UserActions DisplayConfigs { get; set; } = displayConfigs;
public UserActions MasterLists { get; set; } = masterLists;
public UserActions Treatments { get; set; } = treatments;
public UserActions Patients { get; set; } = patients;
public UserActions Medicines { get; set; } = medicines;
public UserActions Pumps { get; set; } = pumps;
public UserActions Users { get; set; } = users;
public UserActions ConfigObservations { get; set; } = configObservations;
public UserActions Observations { get; set; } = observations;
public UserActions Audits { get; set; } = audits;
public bool UseDemoMode { get; set; } = useDemoMode;
}
public class UserActions(bool create, bool update, bool delete, bool read, bool execute)
{
public bool Create { get; set; } = create;
public bool Update { get; set; } = update;
public bool Delete { get; set; } = delete;
public bool Read { get; set; } = read;
public bool Execute { get; set; } = execute;
}
@@ -0,0 +1,15 @@
namespace adas_core.Domain.Models.AppSettings;
public class RabbitMqSettings
{
public string ConnectionString { get; set; } = string.Empty;
public string PatientsQueue { get; set; } = "patients";
public string TreatmentsQueue { get; set; } = "treatments";
public string ObservationsQueue { get; set; } = "observations";
public string PumpsQueue { get; set; } = "pumps";
public string RecordingQueue { get; set; } = "recordings";
public string AppointmentsQueue { get; set; } = "appointments";
public int MaxRetries { get; set; } = 2;
public string RecordingAlertQueue { get; set; } = "recordingAlert";
public string AlarmObservationQueue { get; set; } = "alarms";
}
@@ -0,0 +1,11 @@
namespace adas_core.Domain.Models.AppSettings;
public class RecordingSettings
{
public const string Recording = "RecordingSettings";
public string RecordingApiUrl { get; set; } = "";
public string RecordingOrApiClientId { get; set; } = "";
public string RecordingOrApiClientSecret { get; set; } = "";
public int HttpClientTimeout { get; set; } = 6;
}
@@ -0,0 +1,83 @@
namespace adas_core.Domain.Models.AppSettings
{
/// <summary>
/// Configuración Redis.
/// No contiene lógica de qué entidades usan Redis (eso está en CacheSettings).
/// Esta clase solo define:
/// - Conexión
/// - Cluster/Scalability
/// - SSL/password
/// - TTL global y por entidad
/// - Generación de claves CacheKeys
/// </summary>
public class RedisSettings
{
// Conexión y networking
public string? ConnectionString { get; set; }
public bool EnableScalable { get; set; }
public bool Ssl { get; set; }
public string? Password { get; set; }
public IEnumerable<RedisEndpoint> Endpoints { get; set; } = [];
public string ChannelPrefix { get; set; } = "MedDisCore";
// TTL global y TTL específico por entidad
// (no determina si la entidad se cachea o no)
public int? ExpireKeyInSeconds { get; set; }
public TtlSettings Ttl { get; set; } = new();
// Submodelos
public class RedisEndpoint
{
public string Host { get; set; } = null!;
public int Port { get; set; }
}
// CacheKeys: claves estandarizadas y unificadas para todas las entidades
// Estas claves son fundamentales para:
public static class CacheKeys
{
// ----------------- Patients -----------------
public static string Patient(string patientId)
=> $"patients:{patientId}";
// ----------------- ConfigDisplays -----------------
public static string ConfigDisplay(string id)
=> $"configDisplays:{id}";
public static string ConfigDisplaysAll()
=> "configDisplays:all";
// ----------------- PumpObservations -----------------
public static string PumpObservation(string obsId)
=> $"pumpObs:{obsId}";
public static string PumpDaily(string pumpId, DateTime date)
=> $"pumpObs:pump:{pumpId}:{date:yyyyMMdd}";
// ----------------- Appointments -----------------
public static string Appointment(string apptId)
=> $"appointments:{apptId}";
public static string AppointmentsByPatientDay(string patientId, DateTime date)
=> $"appointments:patient:{patientId}:{date:yyyyMMdd}";
public static string AppointmentsByPatientMonth(string patientId, DateTime date)
=> $"appointments:patient:{patientId}:{date:yyyyMM}";
// ----------------- GroupedObservations -----------------
public static string GroupedObservationsByPatient(string patientId, string? groupedField)
=> $"groupedObs:{groupedField}:patient:{patientId}";
public static string GroupedObservationsByPatientDay(string patientId, string groupedField, DateTime date)
=> $"groupedObs:{groupedField}:patient:{patientId}:{date:yyyyMMdd}";
public static string GroupedObservationsByPatientMonth(string patientId, string groupedField, DateTime date)
=> $"groupedObs:{groupedField}:patient:{patientId}:{date:yyyyMM}";
public static string GroupedObservationsLatest(string patientId, string groupedField, int take)
=> $"groupedObs:{groupedField}:patient:{patientId}:latest:{take}";
}
}
}