Union Table with a flag? i have an unique case where a union table with a flag might be the answer, but my db admin experience is limited.

CREATE TABLE patient(
   patient_id serial PRIMARY KEY,
   name VARCHAR (50) UNIQUE NOT NULL,
   //...
);
CREATE TABLE diagnosis(
       diagnosis_id serial PRIMARY KEY,
       name VARCHAR (50) UNIQUE NOT NULL,
       //...
    );


//this is past medical history 

CREATE TABLE patient_diagnosis(
      diagnosis_id integer
      patient_id integer
      FOREIGN KEY (diagnosis_id) REFERENCES diagnosis (diagnosis_id)
      FOREIGN KEY (patient_id) REFERENCES patient (patient_id)
)


Now, I wan't to add a patient's family medical history, which is also just referring to the diagnosis table, with similar ability to search later (show me all patients with family diagnosed with xyz). I was thinking of putting a family=boolean flag in the patient_diagnosis table, but not sure if thats bad design. I also don't know what terms to search for here for help. any thoughts appreciated
Well you would need a family table to begin with: 

create table family
(
  family_id integer primary key, 
  name text not null,
  .... other attributes of a family ...
);


And a table that links a patient to a family

create table family_member
(
  family_id integer not null references family,
  patient_id integer not null references patient
  ... maybe even a date range when this patient was part of the family ...
);


Then you can link the diagnosis to the family the same way you linked it to the patient:

create table patient_diagnosis
(
  diagnosis_id integer not null references diagnosis,
  family_id integer not null references family
);