Skip to content
Partner Developer Portal

Patient Identifiable Data

The Recruit Patient Identifiable Data (PID) dataset provides clinical and operational data from healthcare organisations participating in recruit studies, with personally identifiable information and real patient identifiers retained. This dataset is designed for studies requiring direct patient identification while maintaining secure access controls and governance compliance. The dataset includes comprehensive clinical events, medications, consultations, and organisational records for study participants.

Data is exposed through structured models covering patient demographics, clinical events, medications, organisational context, and administrative entities, all scoped to study participants and organisations with full patient identification preserved.


ModelDescription
PatientDemographics, registration status, and identity information
ObservationClinical observations, test results, and coded entries
ConsultationPatient consultations with practitioners
ProblemActive and past clinical problems
ReferralInbound and outbound referrals
ImmunisationImmunisation and vaccination records
AllergyPatient allergies and adverse reactions
Diary EntryDiary entries and recall events
SlotAppointment slots and booking status
ModelDescription
Drug RecordMedication courses (repeat and acute prescriptions)
Issue RecordIndividual prescription issues from a drug record
Drug Record Problem LinkLinks between drug records and clinical problems
Issue Record Problem LinkLinks between issue records and clinical problems
ModelDescription
Clinical CodeSNOMED CT and Read code mappings
Codeable ConceptExtended code metadata including fully specified names
Drug CodeDrug code mappings and pharmaceutical identifiers
MKB Mapping AttributesLanguage and attribute code mappings
MKB Mapping DMD Preparationdm+d preparation code mappings
MKB Mapping EthnicityEthnicity SNOMED code mappings
MKB VersionMKB coding database version and metadata
ModelDescription
OrganisationHealthcare organisations participating in recruit studies
Organisation LocationLocations and branches within organisations
User In RoleHealthcare practitioners and their roles within organisations
SessionUser sessions and system access records
Session UserUser associations with sessions
Sharing OrganisationOrganisations with data sharing agreements

This dataset contains real patient identifiers:

  • emis_patient_guid: The EMIS system’s unique patient identifier
  • nhs_number: NHS number for patient identification
  • emis_registration_guid: Patient registration identifier within organisations
  • date_of_birth: Full birth date (not age-banded)

Patient identifiable data requires strict access controls and governance compliance. Ensure your organisation has appropriate data protection measures in place.

All clinical records are scoped to study participants via the study_id foreign key. Records are included in the dataset only if the patient is registered for the specified study.

Practitioners and system users are identified by:

  • emis_userinrole_guid: Unique identifier for user role assignments
  • user_in_role: Links users to organisations and their assigned roles
  • session: Tracks user system access and session records

Data availability and update frequency depends on the source systems and study requirements. Consult your study protocol and data governance documentation for specific refresh schedules.

Each clinical record includes a reference to the healthcare organisation where the event occurred. This enables analysis across multiple organisations and locations within the study cohort.


For practical guidance on common modelling questions with patient identifiable data, refer to your study-specific documentation or data dictionary.

Join clinical event models to patient using emis_patient_guid and study_id to access demographic and identity information:

SELECT
o.emis_observation_guid,
o.observation_datetime,
o.emis_code_id,
p.patientid,
p.gender,
p.date_of_birth,
p.nhs_number
FROM explorer_recruit.observation AS o
INNER JOIN explorer_recruit.patient AS p
ON o.emis_patient_guid = p.emis_patient_guid
AND o.study_id = p.study_id
WHERE o.study_id = 'STUDY001'

Use the clinical_code model to look up human-readable terms for clinical events:

SELECT
o.emis_observation_guid,
o.observation_datetime,
c.term,
c.snomed_concept_id
FROM explorer_recruit.observation AS o
INNER JOIN explorer_recruit.clinical_code AS c
ON o.emis_code_id = c.emis_code_id
AND o.study_id = c.study_id
WHERE o.study_id = 'STUDY001'
LIMIT 100

Link observations and consultations to practitioner details through the user_in_role model:

SELECT
o.emis_observation_guid,
o.observation_datetime,
u.user_name,
u.user_role,
org.organisation_name
FROM explorer_recruit.observation AS o
INNER JOIN explorer_recruit.user_in_role AS u
ON o.emis_authorising_userinrole_guid = u.emis_userinrole_guid
AND o.study_id = u.study_id
INNER JOIN explorer_recruit.organisation AS org
ON u.emis_organisation_guid = org.emis_organisation_guid
AND u.study_id = org.study_id
WHERE o.study_id = 'STUDY001'

Scope queries to specific healthcare organisations using the organisation GUID:

SELECT
p.emis_patient_guid,
p.nhs_number,
p.date_of_birth,
COUNT(DISTINCT o.emis_observation_guid) AS observation_count
FROM explorer_recruit.patient AS p
LEFT JOIN explorer_recruit.observation AS o
ON p.emis_patient_guid = o.emis_patient_guid
AND p.study_id = o.study_id
WHERE p.study_id = 'STUDY001'
AND p.emis_registration_organisation_guid = 'ORG-GUID-001'
GROUP BY p.emis_patient_guid, p.nhs_number, p.date_of_birth

Link medication records to clinical problems through problem links:

SELECT
dr.emis_drug_guid,
dr.drug_name,
p.problem_description,
drpl.linkage_type
FROM explorer_recruit.drug_record AS dr
INNER JOIN explorer_recruit.drug_record_problem_link AS drpl
ON dr.emis_drug_guid = drpl.emis_drug_guid
AND dr.study_id = drpl.study_id
INNER JOIN explorer_recruit.problem AS p
ON drpl.emis_problem_guid = p.emis_problem_guid
AND drpl.study_id = p.study_id
WHERE dr.study_id = 'STUDY001'
LIMIT 100

Monitor user access patterns and session activity:

SELECT
s.session_guid,
u.user_name,
s.session_start_datetime,
s.session_end_datetime,
org.organisation_name
FROM explorer_recruit.session AS s
INNER JOIN explorer_recruit.session_user AS su
ON s.session_guid = su.session_guid
AND s.study_id = su.study_id
INNER JOIN explorer_recruit.user_in_role AS u
ON su.emis_userinrole_guid = u.emis_userinrole_guid
AND su.study_id = u.study_id
INNER JOIN explorer_recruit.organisation AS org
ON u.emis_organisation_guid = org.emis_organisation_guid
AND u.study_id = org.study_id
WHERE s.study_id = 'STUDY001'
ORDER BY s.session_start_datetime DESC
LIMIT 100