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
+117
View File
@@ -0,0 +1,117 @@
using adas_core.Domain.Enums;
using adas_core.Domain.Models.MongoModels;
namespace adas_core.Domain.Models;
public class Person : IEquatable<Person>
{
public string? LastName { get; set; }
public string? FirstName { get; set; }
public string? SecondName { get; set; }
public DateTime? BirthDate { get; set; }
public string? Language { get; set; }
public PatientEnum.Gender Gender { get; set; } = PatientEnum.Gender.Unknown;
public Dictionary<string, string>? Ids { get; set; }
public List<HistoricalId>? HistoricalIds { get; set; }
public bool Equals(Person? other)
{
return other != null &&
LastName == other.LastName &&
FirstName == other.FirstName &&
SecondName == other.SecondName &&
BirthDate == other.BirthDate &&
Language == other.Language &&
Gender == other.Gender && CheckIdsAreEqual(other);
}
public void SetIds(Dictionary<string, string> patientIds, DateTime? time = null)
{
Ids = patientIds;
HistoricalIds ??= new List<HistoricalId>();
DateTime targetTime = time ?? DateTime.UtcNow;
var existingOption = HistoricalIds.FirstOrDefault(c => c.Time == targetTime);
if (existingOption != null)
{
foreach (var kvp in patientIds)
{
existingOption.PatientIds[kvp.Key] = kvp.Value;
}
}
else
{
HistoricalIds.Add(new HistoricalId(targetTime, new Dictionary<string, string>(patientIds)));
}
}
public bool IsEmpty()
{
return string.IsNullOrEmpty(LastName) && string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(SecondName) &&
BirthDate == null && Gender == PatientEnum.Gender.Unknown && (Ids == null || Ids.Count == 0);
}
public bool IsEmptyDontCheckIds()
{
return string.IsNullOrEmpty(LastName) && string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(SecondName) &&
BirthDate == null && Gender == PatientEnum.Gender.Unknown;
}
//public override bool Equals(object? obj)
//{
// return Equals(obj as Person);
//}
private bool CheckIdsAreEqual(Person other)
{
if (Ids == null && other.Ids == null) return true;
if (Ids == null || other.Ids == null) return false;
if (Ids.Count != other.Ids.Count) return false;
foreach (var kvp in Ids)
if (!other.Ids.TryGetValue(kvp.Key, out var otherValue) || otherValue != kvp.Value)
return false;
return true;
}
//public override int GetHashCode()
//{
// var hashCode = -373112803;
// if (LastName != null)
// hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(LastName);
// if (FirstName != null)
// hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(FirstName);
// if (SecondName != null)
// hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(SecondName);
// if (BirthDate != null) hashCode = hashCode * -1521134295 + BirthDate.GetHashCode();
// if (Language != null)
// hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Language);
// hashCode = hashCode * -1521134295 + Gender.GetHashCode();
// if (Ids != null)
// hashCode = hashCode * -1521134295 + EqualityComparer<Dictionary<string, string>>.Default.GetHashCode(Ids);
// return hashCode;
//}
public override string ToString()
{
List<string> items = [];
if (!string.IsNullOrEmpty(FirstName)) items.Add($"firstName: {FirstName}");
if (!string.IsNullOrEmpty(LastName)) items.Add($", lastName: {LastName}");
if (!string.IsNullOrEmpty(SecondName)) items.Add($"secondName: {SecondName}");
if (BirthDate.HasValue) items.Add($"birthDate: {BirthDate}");
if (!string.IsNullOrEmpty(Language)) items.Add($"language: {Language}");
items.Add($"gender: {Gender}");
if (Ids?.Count > 0) items.Add($"ids: {string.Join(',', Ids.Select(i => $"[{i.Key}:{i.Value}]"))}");
return "Person[" + string.Join(", ", items) + "]";
}
}