From UBC Wiki
Jump to: navigation, search

Kidney Matching

Authors: Yu Ju Liang, Trisha Huang.

What is the problem?

Each year, many patients are put on the waitlist for organ transplants. To find a matching organ for each patient, we must consider blood type, cell antigen type (also known as human leukocyte antigen, abbreviated as HLA), and whether the donor organ and the recipient are in the same city. These factors are weighted differently due to the nature of organ transplant. For example, the organ donor’s blood type must match with that of the recipient’s; therefore, it has higher priority than whether the location of the organ and patient are in the same city.

Kidney Matching finds a list of matching kidneys from the database for a patient, then ranks them based on the criteria listed above. If the core criteria is not matched (e.g. blood type and cell antigen type), then rather than having a low ranking matching, the matching will not be on the list.

Donor organ attributes: ID, city, blood type, HLA_A1, HLA_A2, HLA_B1, HLA_B2, HLA_DR1, HLA_DR2, living donor

Recipient attributes: ID, city, blood type, age, HLA_A1, HLA_A2, HLA_B1, HLA_B2, HLA_DR1, HLA_DR2, once a donor, PRA percentage

Sample sizes: 10 kidneys, 30 patients (using triple store). Data generated by Java’s random number generator, with weighted scheme based on likelihood for blood type, age, city, and PRA percentage.


Real-life donor matching system:

Kidney blood matching:

Kidney tissue typing / HLA matching:

Matching rubric:

What is the something extra?

Kidney Matching not only searches for matching kidneys, it also ranks them based on a weighted scheme. Kidney Matching also assigns kidneys to a list of patients based on their highest ranking.

What did we learn from doing this?

(This should be written after you have done the work.) What is the bottom-line? Is logic programming suitable for (part-of) the task? Make sure you include the evidence for your claims.