Skip to content

Commit

Permalink
Updated Contact Network
Browse files Browse the repository at this point in the history
and deactivated EpiCurve Stored Procedure
  • Loading branch information
biermapa authored and biermapa committed Apr 25, 2023
1 parent b644608 commit 5a42176
Show file tree
Hide file tree
Showing 11 changed files with 64 additions and 38 deletions.
14 changes: 9 additions & 5 deletions SmICSCoreLib/Factories/MiBi/Contact/ContactFactory.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
using SmICSCoreLib.Factories.General;
using Microsoft.Extensions.Hosting;
using SmICSCoreLib.Factories.General;
using SmICSCoreLib.Factories.PatientMovementNew;
using SmICSCoreLib.Factories.PatientMovementNew.PatientStays;
using SmICSCoreLib.REST;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Runtime.Intrinsics.Arm;
using System.Threading.Tasks;

namespace SmICSCoreLib.Factories.MiBi.Contact
{
public class ContactFactory : IContactFactory
{
{
public IRestDataAccess RestDataAccess { get; set; }
private readonly IHospitalizationFactory _hospitalizationFac;
private readonly IPatientStayFactory _patientStayFac;
Expand Down Expand Up @@ -45,7 +49,6 @@ public ContactFactory(IRestDataAccess restDataAccess, IHospitalizationFactory ho
{
throw;
}

}

public async Task<List<PatientMovementNew.PatientStays.PatientStay>> ProcessAsync(Hospitalization hospitalization)
Expand Down Expand Up @@ -124,7 +127,7 @@ private void RemoveDoubleStays(List<PatientMovementNew.PatientStays.PatientStay>
{

List<int> indices = new List<int>();
for(int i = 0; i < (patientStays.Count-2) ; i++)
for (int i = 0; i < (patientStays.Count - 2); i++)
{
for (int j = (i + 1); j < (patientStays.Count - 1); j++)
{
Expand All @@ -142,7 +145,7 @@ private void RemoveDoubleStays(List<PatientMovementNew.PatientStays.PatientStay>
}
}
indices = indices.OrderBy(i => i).ToList();
for(int i = (indices.Count - 1); i >= 0; i--)
for (int i = (indices.Count - 1); i >= 0; i--)
{
patientStays.RemoveAt(indices[i]);
}
Expand All @@ -165,5 +168,6 @@ AND ADMIN_ENTRY u[openEHR-EHR-ADMIN_ENTRY.hospitalization.v0]
AND i/items[at0001]/value/value='{hospStay.CaseID}'"
};
}

}
}
1 change: 0 additions & 1 deletion SmICSCoreLib/Factories/MiBi/Contact/IContactFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,5 @@ public interface IContactFactory
Task<List<PatientMovementNew.PatientStays.PatientStay>> ProcessAsync(Hospitalization hospitalization);
Task<Dictionary<Hospitalization, List<PatientMovementNew.PatientStays.PatientStay>>> ProcessAsync(Patient parameter);


}
}
18 changes: 13 additions & 5 deletions SmICSCoreLib/Factories/MiBi/Nosocomial/Rules.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@ public static List<string> GetResistances(Pathogen pathogen)
{
resistances.Add(result.Rule.SuccessEvent);
}
else if (result.IsSuccess && string.IsNullOrEmpty(result.Rule.SuccessEvent))
else if (result.IsSuccess && string.IsNullOrEmpty(result.Rule.SuccessEvent) && result.ChildResults is not null)
{
resistances.Add(GetSuccessEvent(result));
string successEvent = GetSuccessEvent(result);
if (!string.IsNullOrEmpty(successEvent))
{
resistances.Add(successEvent);
}
}
}
}
Expand All @@ -43,12 +47,16 @@ private static string GetSuccessEvent(RuleResultTree ruleResult)
{
return child.Rule.SuccessEvent;
}
else if(child.IsSuccess && string.IsNullOrEmpty(child.Rule.SuccessEvent))
else if(child.IsSuccess && string.IsNullOrEmpty(child.Rule.SuccessEvent) && child.ChildResults is not null)
{
return GetSuccessEvent(child);
string successEvent = GetSuccessEvent(child);
if (!string.IsNullOrEmpty(successEvent))
{
return successEvent;
}
}
}
throw new NotImplementedException("Missed Case");
return null;
}

public static List<string> GetPossibleMREClasses(List<string> pathogenCodes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ public async Task<List<Hospitalization>> ProcessAsync(Patient patient)
List<Hospitalization> hospitalizations = new List<Hospitalization>();
List<Case> cases = await RestDataAccess.AQLQueryAsync<Case>(HospitalizationCasesQuery(patient));
foreach (Case Case in cases)
{
Hospitalization hospitalization = await ProcessAsync(Case);
hospitalizations.Add(hospitalization);
}
{
Hospitalization hospitalization = await ProcessAsync(Case);
hospitalizations.Add(hospitalization);
}
return hospitalizations;
}
catch
Expand Down
1 change: 1 addition & 0 deletions SmICSCoreLib/REST/RestDataAccess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public RestDataAccess(ILogger<RestDataAccess> logger, RestClientConnector client
{
try{
_logger.LogInformation("Posted Query: {Query}", query.Name);
_logger.LogDebug("QueryDetails: {Query}", query.Query);
string restPath = "rest/openehr/v1/query/aql";
Uri RestPath = GetRequestUri(restPath);
HttpResponseMessage response = await _client.Client.PostAsync(RestPath, GetHttpContentQuery(query.ToString()));
Expand Down
10 changes: 8 additions & 2 deletions SmICSWebApp/Controllers/StoredProceduresController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ public ActionResult<List<VisuLabResult>> PatientLabData([FromBody] PatientLabDat
PathogenParameter pathogen = new PathogenParameter() { PathogenCodes = codes };
foreach (string pat in parameter.patientList)
{
if (pat == "undefined")
{ continue; }
Patient patient = new Patient() { PatientID = pat };
List<VisuLabResult> labs = _medicalFindingService.GetMedicalFinding(patient, pathogen).GetAwaiter().GetResult();
visuLabResults.AddRange(labs);
Expand All @@ -106,6 +108,8 @@ public ActionResult<List<VisuPatientMovement>> PatientMovements([FromBody] Patie
List<VisuPatientMovement> visuMovements = new List<VisuPatientMovement>();
foreach (string pat in parameter.patientList)
{
if (pat == "undefined")
{ continue; }
Patient patient = new Patient() { PatientID = pat };
List<VisuPatientMovement> movements = _movementService.GetPatientMovements(patient).GetAwaiter().GetResult();
visuMovements.AddRange(movements);
Expand All @@ -117,6 +121,7 @@ public ActionResult<List<VisuPatientMovement>> PatientMovements([FromBody] Patie
_logger.LogWarning("CALLED Patient_Bewegung_Ps:" + e.StackTrace);
return ErrorHandling(e);
}

}

/// <summary></summary>
Expand All @@ -135,7 +140,8 @@ public async Task<ActionResult<List<EpiCurveModel>>> Labor_ErregerProTag_TTEsKSs
try
{
//_epiCurveFac.RestDataAccess.SetAuthenticationHeader(token);
return await _epiCurveService.GetData(parameter.Starttime, parameter.Endtime, new PathogenParameter { PathogenCodes = new List<string> { parameter.Pathogen } } );
//return await _epiCurveService.GetData(parameter.Starttime, parameter.Endtime, new PathogenParameter { PathogenCodes = new List<string> { parameter.Pathogen } } );
return new List<EpiCurveModel>();
}
catch (Exception e)
{
Expand Down Expand Up @@ -186,7 +192,7 @@ public ActionResult<List<OutbreakDetectionStoringModel>> OutbreakDetectionResult
}
catch (Exception e)
{
return ErrorHandling(e);
return ErrorHandling(e);
}
}

Expand Down
5 changes: 4 additions & 1 deletion SmICSWebApp/Data/Contact/ContactRoot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ public ContactRoot()
public void AddHospitalization(Hospitalization hospitalization, InfectionStatus infectionStatus, List<PatientStay> patientStays, List<Contact> contacts)
{
//If contains clauses
InfectionStatus.Add(hospitalization, infectionStatus);
if(!InfectionStatus.ContainsKey(hospitalization))
{
InfectionStatus.Add(hospitalization, infectionStatus);
}
PatientStays.Add(hospitalization, patientStays);
Contacts.Add(hospitalization, contacts);
}
Expand Down
2 changes: 1 addition & 1 deletion SmICSWebApp/Data/Contact/ContactService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public async Task GetPreviousHospitalizationContacts(ContactRoot rootContact, Co
PathogenParameter pathogenParameter = new PathogenParameter() { PathogenCodes = parameter.PathogenCodes };
SortedList<Hospitalization, InfectionStatus> infectionStatus = await _infectionStatusFac.ProcessAsync(prevHospitalization, pathogenParameter, parameter.Resistence);
List<SmICSCoreLib.Factories.PatientMovementNew.PatientStays.PatientStay> contactLocations = await _patientStayFac.ProcessAsync(prevHospitalization);
rootContact.AddHospitalization(prevHospitalization, infectionStatus[prevHospitalization], null, null);
rootContact.AddHospitalization(prevHospitalization, infectionStatus[prevHospitalization], contactLocations, null);
await MergeInfectionStatusAndContactCases(rootContact, prevHospitalization, pathogenParameter, parameter.Resistence);
}
rootContact.CurrentHospitalization = prevHospitalization;
Expand Down
39 changes: 21 additions & 18 deletions SmICSWebApp/Data/EpiCurve/EpiCurveService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -238,32 +238,35 @@ private void NosocomialHospitalization(List<PatientStay> stays, List<EpiCurveMod
FirstOrDefault();

EpiCurveModel nosocomialDay = epiCurve.Where(e => e.Datum == nosocomialStay.Admission).FirstOrDefault();
if (!dates.Keys.Contains(nosocomialStay.Admission.Date))
if (nosocomialStay is not null)
{
if (nosocomialDay is null)
if (dates is not null || dates.Keys.Contains(nosocomialStay.Admission.Date))
{
EpiCurveModel e = new EpiCurveModel()
if (nosocomialDay is null)
{
Datum = nosocomialStay.Admission,
StationID = nosocomialStay.Ward,
anzahl_gesamt = 1,
Anzahl = 1,
ErregerID = this.ErregerID
};
epiCurve.Add(e);
EpiCurveModel e = new EpiCurveModel()
{
Datum = nosocomialStay.Admission,
StationID = nosocomialStay.Ward,
anzahl_gesamt = 1,
Anzahl = 1,
ErregerID = this.ErregerID
};
epiCurve.Add(e);
}
else
{
nosocomialDay.anzahl_gesamt++;
nosocomialDay.Anzahl++;
}
dates.Add(nosocomialStay.Admission.Date, "Increment");
}
else
else if (dates.Keys.Contains(nosocomialStay.Admission.Date) && dates[nosocomialStay.Admission.Date] == "DECREMENT")
{
nosocomialDay.anzahl_gesamt++;
nosocomialDay.Anzahl++;
dates[nosocomialStay.Admission.Date] = "INCREMENT";
}
dates.Add(nosocomialStay.Admission.Date, "Increment");
}
else if (dates.Keys.Contains(nosocomialStay.Admission.Date) && dates[nosocomialStay.Admission.Date] == "DECREMENT")
{
nosocomialDay.anzahl_gesamt++;
nosocomialDay.Anzahl++;
dates[nosocomialStay.Admission.Date] = "INCREMENT";
}

List<PatientStay> KnownStays = stays.Where(s => s.Admission >= NosocomialDate && s != nosocomialStay).ToList();
Expand Down
2 changes: 2 additions & 0 deletions SmICSWebApp/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ private static void GetEnvironmentVariables()
OpenehrConfig.openehrEndpoint = Environment.GetEnvironmentVariable("OPENEHR_DB");
OpenehrConfig.openehrUser = Environment.GetEnvironmentVariable("OPENEHR_USER");
OpenehrConfig.openehrPassword = Environment.GetEnvironmentVariable("OPENEHR_PASSWD");
OpenehrConfig.queryLimit = Environment.GetEnvironmentVariable("QUERY_LIMIT");
OpenehrConfig.queryTimeout = Convert.ToDouble(Environment.GetEnvironmentVariable("QUERY_TIMEOUT"));
OpenehrConfig.smicsVisuPort = Environment.GetEnvironmentVariable("SMICS_VISU_PORT");

}
Expand Down
2 changes: 1 addition & 1 deletion SmICSWebApp/Shared/NavMenu.razor
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
string url = splitted[1];
string port = ":" + OpenehrConfig.smicsVisuPort;

visuLink = http + url.Substring(0, url.LastIndexOf('/')) + port;
visuLink = http + url + port;

}
}

0 comments on commit 5a42176

Please sign in to comment.