-- Patients WITH at least one haematology resultSELECTCOUNT(DISTINCT d.PROCHI) AS WithLabs
FROM Project_12345..Demography_Current d
INNER JOIN Project_12345..HaematologyRestructured h
ON d.PROCHI = h.PROCHI
-- Patients WITHOUT any haematology resultSELECTCOUNT(DISTINCT d.PROCHI) AS WithoutLabs
FROM Project_12345..Demography_Current d
LEFT JOIN Project_12345..HaematologyRestructured h
ON d.PROCHI = h.PROCHI
WHERE h.PROCHI IS NULL-- Combined summary in a single querySELECTCOUNT(DISTINCT d.PROCHI) AS TotalCohort,
COUNT(DISTINCT h.PROCHI) AS WithLabs,
COUNT(DISTINCT d.PROCHI) - COUNT(DISTINCT h.PROCHI) AS WithoutLabs
FROM Project_12345..Demography_Current d
LEFT JOIN Project_12345..HaematologyRestructured h
ON d.PROCHI = h.PROCHI
with engine.connect() as conn:
demog = pd.read_sql("""
SELECT DISTINCT PROCHI
FROM Project_12345..Demography_Current
""", conn)
lab_prochis = pd.read_sql("""
SELECT DISTINCT PROCHI
FROM Project_12345..HaematologyRestructured
""", conn)
# Patients with and without lab results
has_labs = demog["PROCHI"].isin(lab_prochis["PROCHI"])
print(f"Total cohort: {len(demog)}")
print(f"With labs: {has_labs.sum()}")
print(f"Without labs: {(~has_labs).sum()}")