public bool HasNoSimilarVisits(Patient p) { List<Visit> pVisits = p.Visits; foreach (Visit pv in pVisits) { foreach (Visit v in this._visits) { if (v.equals(pv)) { return false; } } } return true; }
//checks if this patients is similar to the specified patient public bool HasSimilarVisits(Patient p, float percentage) { List<Visit> pVisits = p.Visits; List<Visit> simVisits = new List<Visit>(); int neededSimilarVisits = (int)Math.Ceiling(this.GetVisitsNumber() * percentage); int currentSimilarVisits = 0; foreach (Visit pv in pVisits) { foreach (Visit v in this._visits) { if (v.equals(pv)) { simVisits.Add(v); currentSimilarVisits++; break; } } } bool similar = currentSimilarVisits >= neededSimilarVisits; if(similar){ //Console.WriteLine("Patient " + this.ID + " is similar to Patient " + p.ID + " because of the following visits(" + simVisits.Count + ")"); foreach(Visit v in simVisits){ //Console.Write(" " + v.ToString()); } } return similar; }
public void addMatch(Patient match) { _matches.Add(match); }
public PatientMatchNode(Patient v) { this._matches = new List<Patient>(); this._patient = v; }
public Visit(Patient p, int ID, int professionalID, int rationalID, DateTime date) : this(ID, professionalID, rationalID, date) { this._patient = p; }
//get all visits for a patient public List<Visit> getPatientVisits(int patientID) { List<Visit> visitsList = new List<Visit>(); Patient patient = new Patient(patientID); SqlCeCommand selectCommand = new SqlCeCommand("SELECT * FROM Visit WHERE FK_Patient = @patientID", this._conn); selectCommand.Parameters.AddWithValue("@patientID", patientID); SqlCeDataAdapter dataAdapter = new SqlCeDataAdapter(selectCommand); DataTable visits = new DataTable(); dataAdapter.Fill(visits); foreach (DataRow row in visits.Rows) { visitsList.Add(new Visit(patient, (int)row["ID"], (int)row["FK_Professional"], (int)row["FK_Rational"], (DateTime)row["date"])); } return visitsList; }
//get all patients with visits public List<Patient> getPatientsWVisits() { SqlCeCommand selectCommand = new SqlCeCommand("SELECT *, v.id AS visitID FROM Patient p JOIN Visit v ON p.id = FK_Patient", this._conn); SqlCeDataAdapter dataAdapter = new SqlCeDataAdapter(selectCommand); DataTable dt = new DataTable(); List<Patient> patients = new List<Patient>(); Stopwatch sw = new Stopwatch(); dataAdapter.Fill(dt); sw.Start(); int idBuffer = -1; Patient curPatient = null; foreach (DataRow row in dt.Rows) { int id = (int)row["ID"]; if (id != idBuffer) { idBuffer = id; curPatient = new Patient(id); patients.Add(curPatient); } if (curPatient != null) { curPatient.AddVisit(new Visit((int)row["visitID"], (int)row["FK_Professional"], (int)row["FK_Rational"], (DateTime)row["date"])); } } sw.Stop(); return patients; }