First you have to create an algorithm to match the logic in your post. Have you built a sample with pencil and paper to verify/test/validate your logic?
There is an old adage in database/IT ---If you can't define it, nobody can program/build it. Applies here.
Eg: If DonorBT is type "A" Then
Patient may be "A" or "AB"
.......
tblDonor
DonorID
DonorName
DonorBT
tblPatient
PatientID
PatientName
PatientBT
OtherPatientInfo
tblValidBTCombos
ValidBTID
DonorBT
PatientBT
This table would have records such as:
Code:
1,A,A Donor Type A can donate to Patient Type A
2,A,AB Donor Type A can donate to Patient Type AB
3,O,A
3,O,B
3,O,AB
3,O,O