How should I use organisation information in OpenSafely models?
In customer-facing OpenSafely views, organisation context is exposed in specific models for privacy and governance reasons.
The patient model exposes organisation_id, and sharing_agreement exposes
agreement-level requester/sharer organisation metadata.
How to use organisation context safely
Section titled “How to use organisation context safely”Organisation context still matters analytically, but it is represented differently across models.
patient.organisation_idis a pseudonymised identifier for patient registration context.sharing_agreementcontains agreement metadata used for access governance.- Event models are already scoped in the served dataset and can be joined using
patient_id.
Do not attempt to re-identify or infer direct equivalence between
patient.organisation_id and raw organisation identifiers in agreement
metadata.
Recommended join pattern
Section titled “Recommended join pattern”Use patient_id when joining clinical event models to patient:
SELECT o.observation_id, o.patient_id, p.organisation_id, p.sex, p.date_of_birthFROM explorer_open_safely.observation AS oINNER JOIN explorer_open_safely.patient AS p ON o.patient_id = p.patient_idPractical guidance
Section titled “Practical guidance”- For patient-level joins, use
patient_id. - For organisation-level analysis, use
patient.organisation_id. - For agreement-level analysis, use
sharing_agreementfields rather than assuming a sharedorganisationcolumn across all models.