public static DeceasedOrganMatching getMatchByID(string id) { DeceasedOrganMatching m = new DeceasedOrganMatching(); try { SqlCommand command = new SqlCommand("Select * from organMatchingDeceased where deceasedOrganMatch = @id"); command.Parameters.AddWithValue("@id", id); command.Connection = connection; connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { m.ID = reader["deceasedOrganMatch"].ToString(); m.DeceasedDonor = DeceasedDonorDB.getDonorByID(reader["deceasedOrganID"].ToString()); m.Recipient = OrganRecipientDB.getRecipientByID(reader["OrganWlID"].ToString()); m.MatchScore = Convert.ToInt32(reader["matchScore"]); m.Comments = reader["comments"].ToString(); m.Status = reader["status"].ToString(); m.Distance = Convert.ToInt32(reader["distance"]); } reader.Close(); } finally { connection.Close(); } return(m); }
public static List <DeceasedOrganMatching> getAllMatches() { List <DeceasedOrganMatching> matches = new List <DeceasedOrganMatching>(); try { SqlCommand command = new SqlCommand("Select * from organMatchingDeceased"); command.Connection = connection; connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { DeceasedOrganMatching m = new DeceasedOrganMatching(); m.ID = reader["deceasedOrganMatch"].ToString(); m.DeceasedDonor = DeceasedDonorDB.getDonorByID(reader["deceasedOrganID"].ToString()); m.Recipient = OrganRecipientDB.getRecipientByID(reader["OrganWlID"].ToString()); m.MatchScore = Convert.ToInt32(reader["matchScore"]); m.Comments = reader["comments"].ToString(); m.Status = reader["status"].ToString(); m.Distance = Convert.ToInt32(reader["distance"]); matches.Add(m); } reader.Close(); } finally { connection.Close(); } return(matches); }
protected void btnSubmit_Click(object sender, EventArgs e) { //check the medical condition of donor DeceasedDonor ao = new DeceasedDonor(); ao.Bloodgroup = ddlBloodType.SelectedValue; ao.DOB = Convert.ToDateTime(tbxDate.Text); ao.Establishment = (Establishment)Session["establishment"]; ao.Donorheight = Convert.ToInt32(tbxHeight.Text); ao.Donorweight = Convert.ToInt32(tbxWeight.Text); ao.Deathdate = Convert.ToDateTime(tbxDeath.Text); ao.Organtype = rbtnlstOrganType.SelectedValue; ao.Comments = tbxComments.Text; ao.Refnumber = tbxReference.Text; ao.Status = "not allotted"; //if the user is obese he/she cannot donate if ((ao.Donorweight * 10000) / (ao.Donorheight * ao.Donorheight) > 30) { lblOutput.Text = "This donor is incapable of donations"; return; } else { DeceasedDonorDB.insertDeceasedDonor(ao); Establishment currentEstab = (Establishment)Session["establishment"]; string address = currentEstab.Address; DeceasedDonor tDonor; //donor id from database List <DeceasedDonor> allDeadDonors = DeceasedDonorDB.getAllDeceasedDonors(); String x = allDeadDonors[0].ID; int tempId = Convert.ToInt32(x.Substring(5, x.Length - 5)); foreach (DeceasedDonor dd in allDeadDonors) { if (tempId < Convert.ToInt32(dd.ID.Substring(5, dd.ID.Length - 5)) && dd.Establishment.ID == currentEstab.ID) { tempId = Convert.ToInt32(dd.ID.Substring(5, dd.ID.Length - 5)); } } tDonor = DeceasedDonorDB.getDonorByID("dcdnr" + Convert.ToString(tempId)); //end of getting last one List <OrganRecipient> allReceivers = OrganRecipientDB.getAllRecipients(); //List<OrganRecipient> matchedBloodReceivers = new List<OrganRecipient>(); bool f = false; //check the donor blood type and receiver blood type for organ donation foreach (OrganRecipient r in allReceivers) { int y = 0; String bt1 = ao.Bloodgroup; String bt2 = r.Bloodgroup; if ((bt1 == "A+" || bt1 == "A-") && (bt2 == "A+" || bt2 == "A-" || bt2 == "AB+" || bt2 == "AB-")) { y = 1; } else if ((bt1 == "B+" || bt1 == "B-") && (bt2 == "B+" || bt2 == "B-" || bt2 == "AB+" || bt2 == "AB-")) { y = 1; } else if ((bt1 == "AB+" || bt1 == "AB-") && (bt2 == "AB+" || bt2 == "AB-")) { y = 1; } else if ((bt1 == "O+" || bt1 == "O-") && (bt2 == "A+" || bt2 == "A-" || bt2 == "AB+" || bt2 == "AB-" || bt2 == "B+" || bt2 == "B-" || bt2 == "O+" || bt2 == "O-")) { y = 1; } if (y == 1 && ao.Organtype == r.Organrequired && r.Status == "waiting") { string matchAddress = r.Establishment.Address; float d = getDistance(address, matchAddress); int score = 0; int d1 = Convert.ToInt32(d); d = d / 3600; if ((r.Organrequired == "Kidney" && d < 32) || (r.Organrequired == "Liver" && d < 8)) { int wTimeScore = 0, distanceScore = 0; if (d < 5) { distanceScore = 5; } else if (d < 15) { distanceScore = 4; } else if (d < 25) { distanceScore = 3; } else if (d < 35) { distanceScore = 2; } else if (d < 45) { distanceScore = 1; } else { distanceScore = 0; } double days = (DateTime.Today - r.Addedon).TotalDays; if (days < 180) { wTimeScore = 1; } else if (days < 365) { wTimeScore = 2; } else if (days < 1095) { wTimeScore = 3; } else if (days < 1825) { wTimeScore = 4; } else { wTimeScore = 5; } score = r.Urgency * 3 + distanceScore + wTimeScore; DeceasedOrganMatching match = new DeceasedOrganMatching(); ////donor id from database //List<DeceasedDonor> allDeadDonors = DeceasedDonorDB.getAllDeceasedDonors(); //String x = allDeadDonors[0].ID; //int tempId = Convert.ToInt32(x.Substring(5, x.Length - 5)); //foreach(DeceasedDonor dd in allDeadDonors) //{ // if (tempId < Convert.ToInt32(dd.ID.Substring(5, dd.ID.Length - 5)) && dd.Establishment == currentEstab) // { // tempId = Convert.ToInt32(dd.ID.Substring(5, dd.ID.Length - 5)); // } //} //tDonor = DeceasedDonorDB.getDonorByID("dcdnr" + Convert.ToString(tempId)); ////end of getting last one match.DeceasedDonor = tDonor; match.Recipient = r; match.MatchScore = score; match.Comments = "NIL"; match.Status = "pending"; match.Distance = d1; DeceasedOrganMatchingDB.insertMatch(match); f = true; } } } if (f == true) { List <DeceasedOrganMatching> deadMatches = DeceasedOrganMatchingDB.getAllMatches(); List <DeceasedOrganMatching> deadMatchCurr = new List <DeceasedOrganMatching>(); foreach (DeceasedOrganMatching DOM1 in deadMatches) { if (DOM1.DeceasedDonor.ID == tDonor.ID) { deadMatchCurr.Add(DOM1); } } DeceasedOrganMatching tempDOM = deadMatchCurr[0]; foreach (DeceasedOrganMatching DOM in deadMatchCurr) { if (DOM.MatchScore > tempDOM.MatchScore) { tempDOM = DOM; } } tempDOM.Status = "current match"; DeceasedOrganMatchingDB.updateMatch(tempDOM); OrganRecipient ort = OrganRecipientDB.getRecipientByID(tempDOM.Recipient.ID); ort.Status = "allotted"; OrganRecipientDB.updateOrganRecipient(ort); tempDOM.DeceasedDonor.Status = "allotted"; DeceasedDonorDB.updateDeceasedDonor(tempDOM.DeceasedDonor); } else { tDonor.Status = "cancelled"; DeceasedDonorDB.updateDeceasedDonor(tDonor); } lblOutput.Text = "Donor successfully added!"; tbxComments.Text = ""; tbxDate.Text = ""; tbxDeath.Text = ""; tbxHeight.Text = ""; tbxReference.Text = ""; tbxWeight.Text = ""; ddlBloodType.SelectedIndex = 0; string MyAccountUrl = "DeceasedDonors.aspx"; Page.Header.Controls.Add(new LiteralControl(string.Format(@" <META http-equiv='REFRESH' content=2;url={0}> ", MyAccountUrl))); } }
protected void btnDecline_Click(object sender, EventArgs e) { List <OrganRecipient> ourRecipients = new List <OrganRecipient>(); List <OrganRecipient> allRecipients = OrganRecipientDB.getAllRecipients(); Establishment currentEstab = (Establishment)Session["establishment"]; foreach (OrganRecipient r in allRecipients) { if (r.Establishment.ID == currentEstab.ID && (r.Status == "waiting" || r.Status == "allotted")) { ourRecipients.Add(r); } } OrganRecipient currentRecipient = ourRecipients[gvRecipients.PageSize * gvRecipients.PageIndex + gvRecipients.SelectedIndex]; DeceasedOrganMatching deadOrgan = new DeceasedOrganMatching(); LiveOrganMatching liveOrgan = new LiveOrganMatching(); int matchFound = 0; List <DeceasedOrganMatching> allDeadMatches = DeceasedOrganMatchingDB.getAllMatches(); List <LiveOrganMatching> allLiveMatches = LiveOrganMatchingDB.getAllMatches(); List <DeceasedOrganMatching> allDeadMatchesCurr = new List <DeceasedOrganMatching>(); List <LiveOrganMatching> allLiveMatchesCurr = new List <LiveOrganMatching>(); bool checkMatchD = false; bool checkMatchL = false; foreach (DeceasedOrganMatching d in allDeadMatches) { if (d.Recipient.ID == currentRecipient.ID && d.Status == "current match") { matchFound = 1; deadOrgan = d; } else if (d.Recipient.ID == currentRecipient.ID && d.Status == "pending" && d.DeceasedDonor.Status == "not allotted") { allDeadMatchesCurr.Add(d); checkMatchD = true; } } foreach (LiveOrganMatching l in allLiveMatches) { if (l.Recipient.ID == currentRecipient.ID && l.Status == "current match") { matchFound = 2; liveOrgan = l; } else if (l.Recipient.ID == currentRecipient.ID && l.Status == "pending" && l.LiveDonor.status == "not allotted") { allLiveMatchesCurr.Add(l); checkMatchL = true; } } if (matchFound == 0) { lblOutput.Text = "Sorry no matches yet!"; } else if (matchFound == 2) { // tempCurrentMatch = deadOrgan.ID; liveOrgan.Status = "not possible"; LiveOrganMatchingDB.updateMatch(liveOrgan); } else if (matchFound == 1) { // tempCurrentMatch = liveOrgan.ID; deadOrgan.Status = "not possible"; DeceasedOrganMatchingDB.updateMatch(deadOrgan); } LiveOrganMatching tempLDM = new LiveOrganMatching(); if (checkMatchL == true) { tempLDM = allLiveMatchesCurr[0]; foreach (LiveOrganMatching ldm in allLiveMatchesCurr) { if (ldm.MatchScore > tempLDM.MatchScore) { tempLDM = ldm; } } } DeceasedOrganMatching tempDOM = new DeceasedOrganMatching(); if (checkMatchD == true) { tempDOM = allDeadMatchesCurr[0]; foreach (DeceasedOrganMatching dom in allDeadMatchesCurr) { if (dom.MatchScore > tempDOM.MatchScore) { tempDOM = dom; } } } if (checkMatchD == true && checkMatchL == true) { if (tempDOM.MatchScore < tempLDM.MatchScore) { tempLDM.Status = "current match"; LiveOrganMatchingDB.updateMatch(tempLDM); LiveDonor tempItem = LiveDonorDB.getLiveDonorbyID(tempLDM.LiveDonor.LdonorID); tempItem.status = "allotted"; LiveDonorDB.updateLiveDonor(tempItem); } else { tempDOM.Status = "current match"; DeceasedOrganMatchingDB.updateMatch(tempDOM); DeceasedDonor tempItem = DeceasedDonorDB.getDonorByID(tempDOM.DeceasedDonor.ID); tempItem.Status = "allotted"; DeceasedDonorDB.updateDeceasedDonor(tempItem); } } else if (checkMatchD == true && checkMatchL == false) { tempDOM.Status = "current match"; DeceasedOrganMatchingDB.updateMatch(tempDOM); DeceasedDonor tempItem = DeceasedDonorDB.getDonorByID(tempDOM.DeceasedDonor.ID); tempItem.Status = "allotted"; DeceasedDonorDB.updateDeceasedDonor(tempItem); } else if (checkMatchL == true && checkMatchD == false) { tempLDM.Status = "current match"; LiveOrganMatchingDB.updateMatch(tempLDM); LiveDonor tempItem = LiveDonorDB.getLiveDonorbyID(tempLDM.LiveDonor.LdonorID); tempItem.status = "allotted"; LiveDonorDB.updateLiveDonor(tempItem); } else { currentRecipient.Status = "waiting"; OrganRecipientDB.updateOrganRecipient(currentRecipient); } Label1.Text = "Successfully completed"; string MyAccountUrl = "RecipientWaitingList.aspx"; Page.Header.Controls.Add(new LiteralControl(string.Format(@" <META http-equiv='REFRESH' content=2;url={0}> ", MyAccountUrl))); }