I might be getting somewhere...
Since I only have 3 possible symptoms, and the total combinations is only 3!=3x2=6, I can just create a cheat matrix:
If I put this in the Patient table:
HasDiabetes:=COUNTROWS(FILTER(RELATEDTABLE('PatientSymptoms'),'PatientSymptoms'[Symptom]="Diabetes"))
and create the same calculated column for each of the symptoms, I can then find all the patients that have one and not the other pretty easily...
D_plus_CAD =([HasDiabetes]=1) && ([HasCAD]=1)
still not sure how I would do this if I wanted a matrix of symptoms and the count of overlaps ([Symptom] on both rows and columns and then COUNTROWS(RELATEDTABLE('Patient')) in the intersection...