Files
adas-core/adas-core.Domain/Models/BasePatientObservation.cs

119 lines
3.2 KiB
C#

using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace adas_core.Domain.Models;
public class BasePatientObservation : JsonConverter
{
public ObjectId Id { get; set; }
public ObjectId PatientId { get; set; }
public ObjectId? UserId { get; set; }
public string? ClinicalEpisode { get; set; }
public Patient? Patient { get; set; }
public string? SystemId { get; set; }
public string? Code { get; set; }
public string? CodingSystem { get; set; }
public ParentDataClass? ParentData { get; set; }
public DateTime Time { get; set; }
public DateTime? EndTime { get; set; }
public string? Name { get; set; }
public string? Units { get; set; }
public bool CheckObservations { get; set; }
public List<ConfigObservation>? CreateObservation { get; set; }
public string? ToJsonString()
{
try
{
return JsonConvert.SerializeObject(this, Formatting.None);
}
catch
{
return base.ToString();
}
}
public override string ToString()
{
List<string> items =
[
$"id: {Id}",
$"patientid: {PatientId}"
];
if (!string.IsNullOrEmpty(SystemId)) items.Add($", systemId: {SystemId}");
if (!string.IsNullOrEmpty(Code)) items.Add($"code: {Code}");
if (!string.IsNullOrEmpty(CodingSystem)) items.Add($"codingSystem: {CodingSystem}");
items.Add($"time: {Time}");
if (EndTime.HasValue) items.Add($"endTime: {EndTime.Value}");
if (!string.IsNullOrEmpty(Name)) items.Add($"name: {Name}");
if (!string.IsNullOrEmpty(Units)) items.Add($"unit: {Units}");
items.Add($"checkObservations: {CheckObservations}");
CreateObservation?.ForEach(o => items.Add(o.ToString()));
return "BasePatientObservation[" + string.Join(", ", items) + "]";
}
public List<string> ToListString()
{
List<string> items =
[
$"id: {Id}",
$"patientid: {PatientId}"
];
if (!string.IsNullOrEmpty(SystemId)) items.Add($"systemId: {SystemId}");
if (!string.IsNullOrEmpty(Code)) items.Add($"code: {Code}");
if (!string.IsNullOrEmpty(CodingSystem)) items.Add($"codingSystem: {CodingSystem}");
items.Add($"time: {Time}");
if (!string.IsNullOrEmpty(Name)) items.Add($"name: {Name}");
return items;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(BasePatientObservation);
}
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
{
if (value == null) return;
var jo = JObject.FromObject(value);
jo.Property("Id")?.Remove();
jo.Property("Patient")?.Remove();
jo.WriteTo(writer);
}
public override object ReadJson(JsonReader reader, Type objectType, object? existingValue,
JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
public class ParentDataClass
{
public string? Code { get; set; }
public string? CodingSystem { get; set; }
public string? Name { get; set; }
}