TSS - Customising notification content by LO / programme

https://hee-tis.atlassian.net/browse/TIS21-5331

New Starter Letter 1 - Welcome Comms

https://healtheducationengland.sharepoint.com/:w:/r/sites/TISys/Shared%20Documents/Trainee%20Product%20Team/standardisation%20of%20welcome%20comms/New%20Starter%20Letter%201%20-%20Welcome%20Comms.docx?d=wf95c61592d80428bbbfd1589fd3d4451&csf=1&web=1&e=ZXhHGk

 

Data template:

https://healtheducationengland.sharepoint.com/:x:/r/sites/TISys/Shared%20Documents/Trainee%20Product%20Team/standardisation%20of%20welcome%20comms/Standarise%20Template%20LO.xlsx?d=waad2707d4079456f8fc251d66bd5dcad&csf=1&web=1&e=xocTsE

 

Scope of investigation: Welcome Comms Letter only at this stage.

 

Identify data and how to get it:

 

Propose that no programme-level contact details are held in TIS, only Local-office (LO) level details. The following would be added to TIS:

New TCS table: LoSupport

 

id

Primary key

localOfficeId

Many-to-one with Reference.LocalOffice.id

loSupportTypeId

Many-to-one with LoSupportType.id

contactText (mostly email(s) or URL)

This is currently a bit messy: not sure if we can enforce any rules on the content text

 

 

New Reference table: LoSupportType

 

id

Primary key

supportType

Create four records: General / Deferral / LTFT / Sponsorship

 

 

TIS Add to Specialty table:

 

inBlockIndemnityScheme

True for specialties where
s.name IN ("General Practice", "Palliative Medicine", "Public Health Medicine", "Occupational Medicine", "Genito-urinary Medicine", "Community Sexual and Reproductive Health", "Aviation and Space Medicine", "Sport and Exercise Medicine")

 Simple mock-ups:

Local office contact details
Specialty block indemnity scheme

 

Assumptions: we do not need to track changes in any of these tables (e.g. to see whether a specialty used to belong to the block indemnity scheme).

 

TIS Self-Service:

Sync LoSupport

Sync LoSupportType

 

Data mapping:

Mapping:

 

 

Welcome Letter Field

TIS field

Joins from Person

Trainee title

TCS.ContactDetails.title

Person.id -> ContactDetails.id

Trainee first name

TCS.ContactDetails.forenames

Person.id -> ContactDetails.id

Trainee surname

TCS.ContactDetails.surname

Person.id -> ContactDetails.id

Programme name

TCS.Programme.programmeName

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.programmeId -> Programme.id

Programme curriculum name(s)

TCS.Curriculum.name

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.uuid -> CurriculumMembership.programmeUuid, CurriculumMembership.curriculumId -> curriculum.id

LO name

Reference.LocalOffice.name

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.owner -> Reference.LocalOffice.name

Programme start date

TCS.ProgrammeMembership.programmeStartDate

Person.id -> ProgrammeMembership.personId

Trainee email

TCS.ContactDetails.email

Person.id -> ContactDetails.id (or use Cognito email if registered on TSS)

LO URL/email

TCS.ProgrammeLoSupport.contactText

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.programmeId -> Programme.id, Programme.owner -> Reference.LocalOffice.name, Reference.LocalOffice.id -> LoSupport.localOfficeId, LoSupport.loSupportTypeId -> Reference.LoSuppportType.id where supportType = 'General'

Deferral URL/email

TCS.ProgrammeLoSupport.contactText

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.programmeId -> Programme.id, Programme.owner -> Reference.LocalOffice.name, Reference.LocalOffice.id -> LoSupport.localOfficeId, LoSupport.loSupportTypeId -> Reference.LoSuppportType.id where supportType = 'Deferral'

LTFT URL/email

TCS.ProgrammeLoSupport.contactText

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.programmeId -> Programme.id, Programme.owner -> Reference.LocalOffice.name, Reference.LocalOffice.id -> LoSupport.localOfficeId, LoSupport.loSupportTypeId -> Reference.LoSuppportType.id where supportType = 'LTFT'

Sponsorship URL/email

TCS.ProgrammeLoSupport.contactText

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.programmeId -> Programme.id, Programme.owner -> Reference.LocalOffice.name, Reference.LocalOffice.id -> LoSupport.localOfficeId, LoSupport.loSupportTypeId -> Reference.LoSuppportType.id where supportType = 'Sponsorship'

"various link"

see LTFT URL/email

 

e-Portfolio account URL

Disambiguation webpage, though the College name(s) can be identified

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.uuid -> CurriculumMembership.programmeUuid, CurriculumMembership.curriculumId -> curriculum.id , Curriculum.specialtyId -> Specialty.id, Specialty.college -> Reference.College.name

Is programme linked to Block indemnity scheme

TCS.Specialty.inBlockIndemnityScheme

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.uuid -> CurriculumMembership.programmeUuid, CurriculumMembership.curriculumId -> curriculum.id , Curriculum.specialtyId -> Specialty.id

LO office (assuming name)

Reference.LocalOffice.name

Person.id -> ProgrammeMembership.personId, ProgrammeMembership.owner -> Reference.LocalOffice.name

This assumes the table structure from https://hee-tis.atlassian.net/browse/TIS21-5343

Note that TSS would need to sync the following new tables to have access to this data:

LoSupport

LoSupportType

Specialty sync’d table DTO would need a new field added.

 

Maintaining mappings:

If the data is added as per https://hee-tis.atlassian.net/browse/TIS21-5343 then the obvious place to manage it would be within TIS. This would require editing infrastructure and permissions for

  • LoSupportType (new Reference table)

  • Specialty: inBlockIndemnityScheme field

  • Local Office: list of LoSupport entries

TSS would need to sync changes to these data and include them in the broadcast ProgrammeMembershipEventDto (details of that data design can be finalised later).

 

LO’s with programme-specific contact details:

For LO’s with programme-specific contact details (e.g. Thames Valley), the proposal is to include programme details in the email header / subject that is sent to the single main email address for that LO. This will allow the LO’s themselves to route the mails to programme-specific email addresses using mail filtering / forwarding rules.

This will also hopefully act to encourage LO’s to use generic email addresses for their main points of contact (e.g. ‘england.tis.eoe@nhs.net’) rather than staff-specific email addresses that might change over the course of time due to staff turnover.

By keeping the contact details at the level of the LO, rather than the programme, keeping the content up-to-date and consistent should be much easier. Otherwise, for a LO with 100+ programmes (as many of them have), the likelihood of keeping contact details up-to-date and consistent for each programme is less than certain. There is no programme-level bulk update facility in TIS Admin.

 

Example completed template:

 

 

Plan B:

The design sketched above would require some effort to implement:

  • development time for the TIS Admin and TSS teams,

  • training for LOs, and

  • time to populate and maintain the data.

If this cannot be justified at this stage, another option would be:

  1. Manage an ad-hoc LO contact table in TSS directly. This would free-up the TIS Admin team, but require LOs to ask TSS to manually update their contact details when these change, which could become burdensome if there is data churn.