Skip to content
Partner Developer Portal

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.

Organisation context still matters analytically, but it is represented differently across models.

  • patient.organisation_id is a pseudonymised identifier for patient registration context.
  • sharing_agreement contains 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.

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_birth
FROM explorer_open_safely.observation AS o
INNER JOIN explorer_open_safely.patient AS p
ON o.patient_id = p.patient_id
  • For patient-level joins, use patient_id.
  • For organisation-level analysis, use patient.organisation_id.
  • For agreement-level analysis, use sharing_agreement fields rather than assuming a shared organisation column across all models.