Longitudinal Followup it

From CaisisWiki

(Difference between revisions)
Jump to: navigation, search
(YakhWqhVP)
(Introduzione)
 
(23 intermediate revisions not shown)
Line 1: Line 1:
-
Cool site goodluck :) <a href=" http://www.zebra.lt/english/forum/viewtopic.php?topic=30319&forum=2 ">porn.</a> wshcyd
+
[[Category:Data Management]]
 +
[[Category:Policies and Procedures]]
 +
 
 +
Traduzione a cura di Andrea Fraietta
 +
 
 +
== Introduzione ==
 +
 
 +
Lo scopo di questo progetto è di mantenere costantemente aggiornato il nostro database con le informazioni mediche correnti e lo stato vitale di tutti i pazienti.
 +
Si tratta di un processo che viene mantenuto aggiornato con frequenza giornaliera in modo da avere lo stato del follow-up aggiornato in Caisis.
 +
 
 +
Il seguente schema riassume l'intero processo.
 +
 
 +
[[Image:FollowUpProcess_FlowDiagram.jpg]]
 +
 
 +
== II. Selezionare i pazienti che necessitano di follow-up ==
 +
[http://caisis.org Caisis] è un database basato su web del Dipartimento di Chirurgia del Memorial Sloan Kettering Cancer Center, di New York, che memorizza le informazioni dei pazienti che vengono visitati. Ogni paziente ha uno stato del contatto che può essere visualizzato in Caisis come mostrato qui sotto. Scegliendo uno stato di contatto dalla lista verranno elencati i pazienti che appartengono a quella categoria. Lo stato di contatto del singolo paziente può essere visualizzato anche dalla scheda "Patient Info" cliccando sulla scheda "Patient Data" dopo aver selezionato il paziente.
 +
 
 +
[[Image:PatientLists_ContactStatus.jpg]]
 +
 
 +
[[Image:PatientData_ContactStatus.JPG]]
 +
 
 +
'''**NOTA: QUESTI NON SONO DATI REALI'''
 +
 
 +
=== A. Pazienti che non necessitano di alcun follow-up: ===
 +
 
 +
• '''DoNotContactPerPt''' - Il paziente o la famiglia han richiesto di non essere contattati.
 +
 
 +
• '''DoNotContactPerMD''' - Il medico ha richiesto di non contattare il paziente (ad es: per i VIP).
 +
 
 +
• '''Current''' - Le informazioni mediche del paziente sono disponibili nel database negli ultimi 14 mesi. I pazienti deceduti rientrano comunque in questa categoria, a meno che i familiari non abbiano richiesto espressamente di non essere contattati. Ogni notte, Caisis considera i pazienti che non hanno avuto aggiornamenti negli ultimi 14 mesi, e li sposta nella categoria ''NeedVitalStatus'', filtrando i pazienti che sono deceduti o che non hanno come reparto primario il tuo.
 +
 
 +
• '''LTF''' -Lost to Followup. Paziente che non ha risposto dopo 3 tentativi di invio di un questionario, oppure di cui non siamo in grado di aggiornare lo stato del contatto.
 +
 
 +
=== B. Pazienti che richiedono una serie di 2 step per determinare se richiedono una lettera di follow-up: ===
 +
 
 +
• '''NeedVitalStatus'''
 +
 
 +
Step 1: Pazienti che non hanno subìto aggiornamenti negli ultimi 14 mesi, che non sono deceduti, che non sono in '''DoNotContactPerMD''' o '''DoNotContactPerPt''', con chirurgia principale presso la tua struttura, che non sono '''LTF''', e che non hanno lo stato vitale controllato sul registro dei tumori negli ultimi 60 giorni. Il registro dei tumori istituzionale deve essere controllato per vedere se ci sono degli aggiornamenti negli ultimi 14 mesi che non siano stati recepiti in Casis.
 +
 
 +
Step 2: Controllo dell'SSDI (Social Security Death Index) per i pazienti per cui si è controllato il registro dei tumori, ma non l'SSD negli ultimi 60 giorni. L'SSDI potrebbe fornire informazioni sulla morte per i pazienti deceduti.
 +
 
 +
==== 1. Cotrollo sul Registro dei Tumori ====
 +
 
 +
In molti centri di cancro, il registro dei tumori è responsabile dell'aggiornamento dello stato vitale del paziente. Questa informazione è memorizzata presso il tuo EMR (electronic medical record).
 +
Controllare il registro dei tumori  implica consultare gli aggiornamenti dello stato vitale presso l'EMR e ogni altra informazione sul paziente che non sia stata recepita in Caisis.
 +
Ricerca dello stato vitale dei pazienti e di ogni recente informazione medica.
 +
 
 +
===== a. Inserimento di informazioni mediche in  Caisis =====
 +
 
 +
i. Stato vitale - Se il paziente è morto, inserire la data di morte e la causa del decesso nella scheda "Patient Info", e aggiornare lo stato di contatto del paziente a “Current”. Se ci sono nuove informazioni che indicano che il paziente è ancora in vita, inserire questi dati e impostare lo stato a “ALIVE.”
 +
 
 +
ii. Informazioni mediche - Se si riscontra che alcune informaizoni mediche non sono state recepite in  Caisis, inserirle nella appropriate schede del database, e rivalutare se è il caso di aggiornare o no lo stato vitale a “Current.”
 +
 
 +
==== 2. Controllo presso l'SSDI ====
 +
 
 +
a. Per accedere all'SSDI, cliccare sui link del [http://ssdi.rootsweb.com/ SSDI]. Se non hai pratica con SSDI, puoi cliccare sui suggerimenti SSDI. Una ricerca generica richiede come chiavi di accesso il cognome, il numer o del social security e la data di nascita. Se il paziente è deceduto, inserisci in Caisis la data del decesso e la causa nella scheda "Patient Info".
 +
 
 +
b. Inserisci nella scheda "Actions", “VitalStatusChecked” dopo aver completato gli step 1 e 2.
 +
 
 +
c. Notifica il registro dei tumori se il paziente è deceduto
 +
 
 +
=== NeedLetter1, 2, or 3 ===
 +
 
 +
NeedLetter1- I pazienti che appartengono a questa categoria sono quelli che hanno uno stato vitale controllato sul registro dei tumori e sull'SSDI negli ultimi 60 giorni e la cui ultima informazione cronologia risale a più di 14 mesi fa (ovvero non ci sono registrazioni in Caisis negli ultimi 14 mesi). Dopo che l'azione VitalStatusChecked è stata inserita nella scheda "ACtions", Caisis aggiorna automaticamente lo stato del contatto a NeedLetter1. Vengono fatti 3 tentativi di contatto del paziente. Se il paziente non risponde entro 90 giorni (indicato dal fatto che non sono state inserite azioni), e nè il registro dei tumori nè l'SSDI sono stati ancora controllati, lo stato del contatto viene automaticamente impostato a  NeedVitalStatus (vedi le stesse istruzioni di cui sopra). Una volta che lo stato vitale è stato controllato, lo stato del contatto dovrebbe essere aggiornato a  NeedLetter2. Gli stessi eventi avverranno se il paziente non ancora risposto dopo 90 giorni  (NeedVitalStatus, quindi NeedLetter3). Si invita a non inviare lettere ai pazienti durante periodi di festività.
 +
 
 +
==== Preparazione del materiale da inviare: ====
 +
 
 +
* Stampa delle copertine delle lettere, del questionario di follow-up, delle autorizzazioni e delle etichette per ogni paziente usando Microsoft Access. Vedi wizard
 +
 
 +
* La lettera di copertina dovrebbe essere con l'intestazione del medico corrente e con le corrette informazioni di contatto.
 +
 
 +
* Allegare una busta per la risposta alla lettera del questionario.
 +
 
 +
* Tutto il materiale dovrebbero essere raccolto in una busta con logo istituzionale.
 +
 
 +
 
 +
1. Corrispondenza ai pazienti che risiedono fuori dagli USA dovrebbe essere inviata tramite UPS per velocizzare la consegna
 +
 
 +
2. Informare gli assistenti del medico ai cui pazienti sono state inviate le lettere e i questionari. Informarli circa il contatto a cui possono riferirsi qualora ricevessero qualche chiamata a proposito di questo. Inoltre fornire loro una copia delle lettera e del questionario.
 +
 
 +
3. Qualsiasi nuovo questionario o lettera di copertina deve essere approvata con il medico responsabile prima di spedirli.
 +
 
 +
IV. Ricezione di lettere e questionari
 +
 
 +
Guida all'apertura delle lettere ricevute.
 +
Pag. 1-Statisticha delle lettere ricevute, ritornate al mittente e pendenti.
 +
Pag. 2-Istruzioni per processare le lettere man mano che vengono ricevute
 +
Pag. 3-Istruzioni per l'inserimento dei dati del questionario
 +
Pag. 4-Istruzioni/criteri per modificare lo stato di contatto del paziente a NeedMD_Contact
 +
 
 +
1) Chiamare l'ufficio del medico e spiegare che si sta per inviare una richiesta di autorizzazione per ottenere informazioni mediche sul paziente. Chiedere se preferiscono un fax o una email per la richiesta di autorizzazione. Se preferiscono la posta  inviare la copertina al medico assieme al consenso firmato. In alternativa, se uno stagista chiama l'ufficio del medico, possono ricevere l'informazione via telefono. Copie delle informazioni mediche sono ancora necessaria.
 +
2) Una volta fatto, inseire l'azione MD_Contacted nella scheda "Azioni".
 +
3) Una volta ricevute le informazioni mediche, inserire i dati, o cambiare lo stato di contatto del paziente a NeedDataEntry, se il dato non può essere inserito.
 +
 
 +
==== NeedMD_ToCallPt ====
 +
Se il paziente non ha risposto dopo l'invio di 3 lettere, cambiare lo stato si contatto del paziente a '''NeedMD_ToCallPt''' - pazienti che sono stati nella catoria '''Letter3_Sent''' e che non hanno avuto alcuna azione inserita nelle ultime 6 settimane. I medici (o i principali ricercatori) chiameranno il paziente per raccogliere la storia, le info di contatto, ed ottenerne l'autorizzazione.
 +
 
 +
Di seguito una lista di domande pertinenti da fare ad un paziente. Si possono usare anche quando si chiama il paziente di un medico.
 +
## Altri trattamenti dopo RP?
 +
## Ha avuto qualche problema ad urinare dopo l'intervento (difficoltà nel passaggio dell'urina; ritenzione urinaria)? Ha subito trattamenti all'uretra?
 +
## Ha subito qualche altra '''procedures''' per i problemi legati alla prostata o alla disfunzione urinaria?
 +
## Utilizza pannolini protettivi per incontinenza/perdita di urina? Quanti ne cambia al giorno? Quanti alla notte? Ha subìto trattamenti per l'incontinenza (AUS)?
 +
## Ha avuto erezioni spontanee sufficienti per intercourse? E' in grado di intercourse senza aiuti per l'erezione? Se utilizza supporti, quali sta usando? Se prende Viagra, in quale dose? Usa una terapia iniettiva o supporti uretrali? Ha subito trattamenti chirurgici per l'impotenza (protesi)?
 +
## Esami di laboratorio successivi al ricovero presso la nostra struttura? (totali PSA, testosterone, free PSA)
 +
## E' seguito da un medico? Ci potrebbe fornire i recapiti del suo medico per chiedergli l'autorizzazione e richiedere informazioni mediche che la riguardano?
 +
## Gradirebbe ricevere un questionario via posta con domande sullo stato di salute e sulla funzione urologica dopo l'intervento?
 +
 
 +
# Dopo aver chiamato il paziente, inserire l'azione '''Patient_WasCalled''' nella scheda delle azioni.
 +
# Inserire le informazioni aggiornate nel database.
 +
# Cambiare lo stato di contatto del paziente a
 +
** '''Current''' se non è necessario contattare il medico e se si dispone di informaizoni aggiornate.
 +
** '''NeedPtAuthorization''' se è necessario inviare un richiesta di informazioni da firmare
 +
** '''NeedMD_Contact''' se è necessario contattare il suo medico
 +
 
 +
==== NeedPtContactInfo ====
 +
Se una lettera ritorna come non recapitata, e non ci sono ulteriori indirizzi, inserire una azione, '''ReturnedToSender'''. Poi cambiare lo stato di contatto a '''NeedPtContactInfo'''. Possono essere intrapresi i seguenti step per ottenere informazioni di contatto. Inserire una azione dopo ogni step preso.
 +
 
 +
# Chiamare i numeri elencati nel database (i numeri del paziente o i numeri di emergenza).
 +
# Chiamare il centro informazioni telefoniche (411) per vedere se ci sono dei contatti nella loro area.
 +
# Provare a contattare i suoi medici per vedere se hanno recapiti aggiornati.
 +
# Cercare su internet.
 +
# Provare al registro dei tumori per vedere se possono essere di aiuto. Possono fornire il loro ultimo stato vitale del paziente o il suo ultimo recapito.
 +
# Se ottieni una informazione aggiornata attraverso uno di questi tentativi, aggiorna Caisis, inserisci una azione '''AddressUpdated''', e poi ripristina lo stato di contatto a '''NeedLetter1, 2, or 3''', in base a dove ci si trova nel processo.
 +
# Se non sono disponibili nuove contatti aggiorna lo stato di contatto del paziente a '''LTF''' “Lost to follow-up”.
 +
 
 +
==== Ordinare le forniture ====
 +
# Ordinare le buste e carte intestate istituzionali.
 +
# Le buste per le risposte sono ordinate come segue:
 +
 
 +
== Stato del contatto - informazione demografica in Caisis ==
 +
 
 +
{|border="1"
 +
! PtContactStatus || azione/dato determinante
 +
|-
 +
| Current  || CaseReviewed
 +
|-
 +
| DoNotContactPerMD ||
 +
|-
 +
|DoNotContactPerPt || DataReceived
 +
|-
 +
| Letter1_Sent || &nbsp;
 +
|-
 +
| Letter2_Sent || Letter2_Sent
 +
|-
 +
| Letter3_Sent || Letter3_Sent
 +
|-
 +
| LostToFollowup || PtWebSearched
 +
|-
 +
| MD_Contacted || MD_Contacted
 +
|-
 +
| NeedDataEntry || DataEntered
 +
|-
 +
| NeedLetter1 || Letter1_Sent
 +
|-
 +
| NeedLetter2 || SentToCDB
 +
|-
 +
| NeedLetter3 || SentToEMR
 +
|-
 +
| NeedMD_Contact || VitalStatusChecked
 +
|-
 +
| NeedMD_ToCall || PtWasCalled
 +
|-
 +
| NeedPtAuthorization || &nbsp;
 +
|-
 +
| NeedPtContactInfo || PtContactInfoUpdated
 +
|-
 +
| NeedVitalStatus || LetterReturnedToSender
 +
|}
 +
 
 +
==== Trigger sulla tabella "Actions" ====
 +
Ogni volta che un utente modifica o inserisce un record nella tabella "Actions" (Risposta immediata- Dovrebbe rimanere simplice o quanto più semplice)
 +
 
 +
<code>
 +
UPDATE Patients
 +
SET PtContactStatus = CASE WHEN i.ActionItem = 'VitalStatusChecked' AND PtContactStatus = 'NeedVitalStatus' THEN 'Current'
 +
WHEN i.ActionItem = 'Letter1_Sent' AND PtContactStatus = 'NeedLetter1' THEN 'Letter1_Sent'
 +
WHEN i.ActionItem = 'Letter2_Sent' AND PtContactStatus = 'NeedLetter2' THEN 'Letter2_Sent'
 +
WHEN i.ActionItem = 'Letter3_Sent' AND PtContactStatus = 'NeedLetter3' THEN 'Letter3_Sent'
 +
WHEN i.ActionItem = 'LetterReturnedToSender' AND PtContactStatus LIKE 'Letter[1-3]%Sent' THEN 'NeedPtContactInfo' WHEN i.ActionItem = 'MD_Contacted' AND PtContactStatus = 'NeedMD_Contact' THEN 'MD_Contacted' WHEN i.ActionItem = 'PtWasCalled' AND PtContactStatus = 'NeedMD_ToCallPt' THEN 'Current' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus IN ('Letter1_Sent','Letter2_Sent','Letter3_Sent','MD_Contacted') THEN 'NeedDataEntry' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus = 'NeedPtAuthorization' THEN 'NeedMD_Contact' WHEN i.ActionItem = 'DataEntered' AND PtContactStatus = 'NeedDataEntry' THEN 'Current'
 +
WHEN i.ActionItem = 'PtContactInfoUpdated' AND PtContactStatus = 'NeedPtContactInfo' THEN 'Current' END
 +
FROM Patients INNER JOIN Inserted i ON Patients.PatientId = i.PatientId WHERE PtContactStatus <> CASE
 +
WHEN i.ActionItem = 'VitalStatusChecked' AND PtContactStatus = 'NeedVitalStatus' THEN 'Current'
 +
WHEN i.ActionItem = 'Letter1_Sent' AND PtContactStatus = 'NeedLetter1' THEN 'Letter1_Sent'
 +
WHEN i.ActionItem = 'Letter2_Sent' AND PtContactStatus = 'NeedLetter2' THEN 'Letter2_Sent'
 +
WHEN i.ActionItem = 'Letter3_Sent' AND PtContactStatus = 'NeedLetter3' THEN 'Letter3_Sent'
 +
WHEN i.ActionItem = 'LetterReturnedToSender' AND PtContactStatus LIKE 'Letter[1-3]%Sent' THEN 'NeedPtContactInfo'
 +
WHEN i.ActionItem = 'MD_Contacted' AND PtContactStatus = 'NeedMD_Contact' THEN 'MD_Contacted' WHEN i.ActionItem = 'PtWasCalled' AND PtContactStatus = 'NeedMD_ToCallPt' THEN 'Current' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus IN ('Letter1_Sent','Letter2_Sent','Letter3_Sent','MD_Contacted') THEN 'NeedDataEntry' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus = 'NeedPtAuthorization' THEN 'NeedMD_Contact' WHEN i.ActionItem = 'DataEntered' AND PtContactStatus = 'NeedDataEntry' THEN 'Current'
 +
WHEN i.ActionItem = 'PtContactInfoUpdated' AND PtContactStatus = 'NeedPtContactInfo' THEN 'Current' END
 +
</code>
 +
 
 +
Job notturno (Risposta ritardata, può essere completta)
 +
 
 +
<code>
 +
CREATE PROCEDURE dbo.spFollowupUpdatePtContactStatus
 +
AS
 +
BEGIN TRANSACTION
 +
--Change to current if null
 +
UPDATE Patients
 +
SET PtContactStatus = 'Current'
 +
WHERE PtContactStatus = '0' OR PtContactStatus IS NULL
 +
/*
 +
If they are Current and (no data in the last 14 months or dead)
 +
and (vital status has not been checked in the last 60 days) then
 +
change to NeedVitalStatus
 +
*/
 +
UPDATE Patients
 +
SET PtContactStatus = 'NeedVitalStatus' FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId
 +
LEFT OUTER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId
 +
WHERE PtContactStatus = 'Current' AND
 +
FJ_CurrentDataView.PatientId IS NULL AND FJ_VitalStatusCheckedView.PatientId IS NULL
 +
/*
 +
If they are Current and (no data in the last 14 months or dead)
 +
and (vital status has been checked in the last 60 days) then
 +
change to next letter/contact, If the last LetterX_Sent was more
 +
than 90 days ago then move to NeedLetter1 so can restart the process */
 +
UPDATE Patients
 +
SET PtContactStatus =CASE
 +
WHEN LastLetterSent IS NULL THEN 'NeedLetter1' WHEN LastLetterSent LIKE 'Letter1%Sent' THEN 'NeedLetter2'
 +
WHEN LastLetterSent LIKE 'Letter2%Sent' THEN 'NeedLetter3'
 +
WHEN LastLetterSent LIKE 'Letter3%Sent' THEN 'NeedPtContactInfo'
 +
END FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId
 +
INNER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId
 +
LEFT OUTER JOIN FJ_LastLetterSentView ON Patients.PatientId = FJ_LastLetterSentView.PatientId
 +
WHERE PtContactStatus = 'Current' AND
 +
FJ_CurrentDataView.PatientId IS NULL
 +
/*
 +
If they are LetterX_Sent or NeedLetterX or NeedVitalStatus and
 +
(no LetterX_Sent in the last 90 days) and (have data in the last 14 months or dead) change to Current */
 +
UPDATE Patients
 +
SET PtContactStatus = 'Current'
 +
FROM Patients INNER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId
 +
LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId
 +
WHERE (PtContactStatus LIKE 'Letter[1-3]%Sent' OR
 +
PtContactStatus LIKE 'NeedLetter[1-3]' OR
 +
PtContactStatus = 'NeedVitalStatus') AND
 +
FJ_RecentLetterSentView.PatientId IS NULL
 +
/*
 +
If they are LetterX_Sent only and (no LetterX_Sent in the last 90 days) and (no data in the last 14 months or dead) and
 +
(vital status has not been checked in the last 60 days) change to NeedVitalStatus
 +
*/
 +
UPDATE Patients
 +
SET PtContactStatus = 'NeedVitalStatus' FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId
 +
LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId
 +
LEFT OUTER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId
 +
WHERE PtContactStatus LIKE 'Letter[1-3]%Sent' AND
 +
FJ_CurrentDataView.PatientId IS NULL AND FJ_RecentLetterSentView.PatientId IS NULL AND
 +
FJ_VitalStatusCheckedView.PatientId IS NULL
 +
/*
 +
If they are LetterX_Sent and (no LetterX_Sent in the last 90 days) and (no data in the last 14 months or dead) and
 +
(vital status has been checked in the last 60 days) then change to next letter/contact */
 +
UPDATE Patients
 +
SET PtContactStatus =CASE
 +
WHEN PtContactStatus LIKE 'Letter1%Sent' THEN 'NeedLetter2'
 +
WHEN PtContactStatus LIKE 'Letter2%Sent' THEN 'NeedLetter3'
 +
WHEN PtContactStatus LIKE 'Letter3%Sent' THEN 'NeedPtContactInfo' END FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId
 +
LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId
 +
INNER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId
 +
WHERE PtContactStatus LIKE 'Letter[1-3]%Sent' AND
 +
FJ_CurrentDataView.PatientId IS NULL AND FJ_RecentLetterSentView.PatientId IS NULL /*
 +
If patient is dead change ContactStatus to Current but only if ContactStatus is not already Current and ContactStatus NOT LIKE '%DoNotContact%'
 +
*/
 +
UPDATE Patients
 +
SET PtContactStatus = 'Current'
 +
FROM Patients WHERE (PtContactStatus <> 'Current' AND PtContactStatus NOT LIKE '%DoNotContact%') AND
 +
(PtDeathDateText IS NOT NULL)
 +
COMMIT TRANSACTION
 +
GO</code>
 +
 
 +
 
 +
Queries utilizzate dal job notturno
 +
 
 +
<code>
 +
CREATE VIEW dbo.FJ_CurrentDataView
 +
AS
 +
--Not all tables are represented here Includes deceased patients SELECT a.PatientId AS PatientId
 +
FROM
 +
(
 +
SELECT BxDate AS SortDate, 'Biopsies' AS TableName, PatientId
 +
FROM Biopsies WHERE BxDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT BxDate AS SortDate, 'BiopsiesProstate' AS TableName, PatientId
 +
FROM BiopsiesProstate WHERE BxDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT ClinStageDate, 'ClinicalStages', PatientId
 +
FROM ClinicalStages
 +
WHERE ClinStageDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT DxDate, 'Diagnostics', PatientId
 +
FROM Diagnostics
 +
WHERE DxDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT LabDate, 'LabTests', PatientId
 +
FROM LabTests WHERE LabDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT MedTxDate, 'MedicalTherapy', PatientId
 +
FROM MedicalTherapy WHERE MedTxDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT OpDate, 'Procedures', PatientId
 +
FROM Procedures
 +
WHERE OpDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT SurgDate, 'Surgery', PatientId
 +
FROM Surgeries
 +
WHERE SurgDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT EndoDate, 'Endoscopy', PatientId
 +
FROM ProcEndoscopies
 +
WHERE EndoDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT CytoDate, 'Cytology', PatientId
 +
FROM Cytologies
 +
WHERE CytoDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT BrachyDate, 'BrachyTherapy', PatientId
 +
FROM BrachyTherapy WHERE BrachyDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT RadTxDate, 'RadiationTherapy', PatientId
 +
FROM RadiationTherapy WHERE RadTxDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT StatusDate, 'Status', PatientId
 +
FROM Status
 +
WHERE StatusDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT PtProtocolStatusDate, 'Protocols', PatientId
 +
FROM PatientProtocols INNER JOIN PatientProtocolStatus ON PatientProtocolStatus.PatientProtocolId = PatientProtocols.PatientProtocolId
 +
WHERE PtProtocolStatusDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT EncDate, 'Encounters', PatientId
 +
FROM Encounters WHERE EncDate > DATEADD(m,-14,GETDATE())
 +
UNION
 +
SELECT SurveyDate, 'Surveys', PatientId
 +
FROM Surveys
 +
WHERE SurveyDate > DATEADD(m,-14,GETDATE())
 +
--Add in deceased patients classified as having a DeathDateText
 +
UNION
 +
SELECT PtDeathDate, 'Patients',PatientId
 +
FROM Patients
 +
WHERE (PtDeathDateText IS NOT NULL)
 +
) AS a
 +
GROUP BY a.PatientId
 +
CREATE VIEW dbo.FJ_VitalStatusCheckedView
 +
AS
 +
SELECT DISTINCT PatientId
 +
FROM Actions
 +
WHERE ActionItem = 'VitalStatusChecked' AND
 +
ActionDate >= DATEADD(d, - 60, GETDATE())
 +
CREATE VIEW dbo.FJ_LastLetterSentView
 +
AS
 +
SELECT Actions.PatientId AS PatientId, ActionItem AS LastLetterSent
 +
FROM
 +
(
 +
SELECT MAX(ActionDate) AS LastLetterDate, PatientId
 +
FROM Actions
 +
WHERE (ActionItem LIKE 'Letter[1-3]%Sent') AND ActionDate >= DATEADD(d, - 90, GETDATE())
 +
GROUP BY PatientId
 +
) AS a INNER JOIN Actions ON a.PatientId = Actions.PatientId AND
 +
a.LastLetterDate = Actions.ActionDate
 +
WHERE (ActionItem LIKE 'Letter[1-3]%Sent')
 +
CREATE VIEW dbo.FJ_RecentLetterSentView
 +
AS
 +
SELECT DISTINCT PatientId
 +
FROM Actions
 +
WHERE ActionItem LIKE 'Letter[1-3]%Sent' AND
 +
ActionDate >= DATEADD(d, - 90, GETDATE())</code>

Current revision as of 08:09, 15 September 2008


Traduzione a cura di Andrea Fraietta

Contents

Introduzione

Lo scopo di questo progetto è di mantenere costantemente aggiornato il nostro database con le informazioni mediche correnti e lo stato vitale di tutti i pazienti. Si tratta di un processo che viene mantenuto aggiornato con frequenza giornaliera in modo da avere lo stato del follow-up aggiornato in Caisis.

Il seguente schema riassume l'intero processo.

Image:FollowUpProcess_FlowDiagram.jpg

II. Selezionare i pazienti che necessitano di follow-up

Caisis è un database basato su web del Dipartimento di Chirurgia del Memorial Sloan Kettering Cancer Center, di New York, che memorizza le informazioni dei pazienti che vengono visitati. Ogni paziente ha uno stato del contatto che può essere visualizzato in Caisis come mostrato qui sotto. Scegliendo uno stato di contatto dalla lista verranno elencati i pazienti che appartengono a quella categoria. Lo stato di contatto del singolo paziente può essere visualizzato anche dalla scheda "Patient Info" cliccando sulla scheda "Patient Data" dopo aver selezionato il paziente.

Image:PatientLists_ContactStatus.jpg

Image:PatientData_ContactStatus.JPG

**NOTA: QUESTI NON SONO DATI REALI

A. Pazienti che non necessitano di alcun follow-up:

DoNotContactPerPt - Il paziente o la famiglia han richiesto di non essere contattati.

DoNotContactPerMD - Il medico ha richiesto di non contattare il paziente (ad es: per i VIP).

Current - Le informazioni mediche del paziente sono disponibili nel database negli ultimi 14 mesi. I pazienti deceduti rientrano comunque in questa categoria, a meno che i familiari non abbiano richiesto espressamente di non essere contattati. Ogni notte, Caisis considera i pazienti che non hanno avuto aggiornamenti negli ultimi 14 mesi, e li sposta nella categoria NeedVitalStatus, filtrando i pazienti che sono deceduti o che non hanno come reparto primario il tuo.

LTF -Lost to Followup. Paziente che non ha risposto dopo 3 tentativi di invio di un questionario, oppure di cui non siamo in grado di aggiornare lo stato del contatto.

B. Pazienti che richiedono una serie di 2 step per determinare se richiedono una lettera di follow-up:

NeedVitalStatus

Step 1: Pazienti che non hanno subìto aggiornamenti negli ultimi 14 mesi, che non sono deceduti, che non sono in DoNotContactPerMD o DoNotContactPerPt, con chirurgia principale presso la tua struttura, che non sono LTF, e che non hanno lo stato vitale controllato sul registro dei tumori negli ultimi 60 giorni. Il registro dei tumori istituzionale deve essere controllato per vedere se ci sono degli aggiornamenti negli ultimi 14 mesi che non siano stati recepiti in Casis.

Step 2: Controllo dell'SSDI (Social Security Death Index) per i pazienti per cui si è controllato il registro dei tumori, ma non l'SSD negli ultimi 60 giorni. L'SSDI potrebbe fornire informazioni sulla morte per i pazienti deceduti.

1. Cotrollo sul Registro dei Tumori

In molti centri di cancro, il registro dei tumori è responsabile dell'aggiornamento dello stato vitale del paziente. Questa informazione è memorizzata presso il tuo EMR (electronic medical record). Controllare il registro dei tumori implica consultare gli aggiornamenti dello stato vitale presso l'EMR e ogni altra informazione sul paziente che non sia stata recepita in Caisis. Ricerca dello stato vitale dei pazienti e di ogni recente informazione medica.

a. Inserimento di informazioni mediche in Caisis

i. Stato vitale - Se il paziente è morto, inserire la data di morte e la causa del decesso nella scheda "Patient Info", e aggiornare lo stato di contatto del paziente a “Current”. Se ci sono nuove informazioni che indicano che il paziente è ancora in vita, inserire questi dati e impostare lo stato a “ALIVE.”

ii. Informazioni mediche - Se si riscontra che alcune informaizoni mediche non sono state recepite in Caisis, inserirle nella appropriate schede del database, e rivalutare se è il caso di aggiornare o no lo stato vitale a “Current.”

2. Controllo presso l'SSDI

a. Per accedere all'SSDI, cliccare sui link del SSDI. Se non hai pratica con SSDI, puoi cliccare sui suggerimenti SSDI. Una ricerca generica richiede come chiavi di accesso il cognome, il numer o del social security e la data di nascita. Se il paziente è deceduto, inserisci in Caisis la data del decesso e la causa nella scheda "Patient Info".

b. Inserisci nella scheda "Actions", “VitalStatusChecked” dopo aver completato gli step 1 e 2.

c. Notifica il registro dei tumori se il paziente è deceduto

NeedLetter1, 2, or 3

NeedLetter1- I pazienti che appartengono a questa categoria sono quelli che hanno uno stato vitale controllato sul registro dei tumori e sull'SSDI negli ultimi 60 giorni e la cui ultima informazione cronologia risale a più di 14 mesi fa (ovvero non ci sono registrazioni in Caisis negli ultimi 14 mesi). Dopo che l'azione VitalStatusChecked è stata inserita nella scheda "ACtions", Caisis aggiorna automaticamente lo stato del contatto a NeedLetter1. Vengono fatti 3 tentativi di contatto del paziente. Se il paziente non risponde entro 90 giorni (indicato dal fatto che non sono state inserite azioni), e nè il registro dei tumori nè l'SSDI sono stati ancora controllati, lo stato del contatto viene automaticamente impostato a NeedVitalStatus (vedi le stesse istruzioni di cui sopra). Una volta che lo stato vitale è stato controllato, lo stato del contatto dovrebbe essere aggiornato a NeedLetter2. Gli stessi eventi avverranno se il paziente non ancora risposto dopo 90 giorni (NeedVitalStatus, quindi NeedLetter3). Si invita a non inviare lettere ai pazienti durante periodi di festività.

Preparazione del materiale da inviare:

  • Stampa delle copertine delle lettere, del questionario di follow-up, delle autorizzazioni e delle etichette per ogni paziente usando Microsoft Access. Vedi wizard
  • La lettera di copertina dovrebbe essere con l'intestazione del medico corrente e con le corrette informazioni di contatto.
  • Allegare una busta per la risposta alla lettera del questionario.
  • Tutto il materiale dovrebbero essere raccolto in una busta con logo istituzionale.


1. Corrispondenza ai pazienti che risiedono fuori dagli USA dovrebbe essere inviata tramite UPS per velocizzare la consegna

2. Informare gli assistenti del medico ai cui pazienti sono state inviate le lettere e i questionari. Informarli circa il contatto a cui possono riferirsi qualora ricevessero qualche chiamata a proposito di questo. Inoltre fornire loro una copia delle lettera e del questionario.

3. Qualsiasi nuovo questionario o lettera di copertina deve essere approvata con il medico responsabile prima di spedirli.

IV. Ricezione di lettere e questionari

Guida all'apertura delle lettere ricevute. Pag. 1-Statisticha delle lettere ricevute, ritornate al mittente e pendenti. Pag. 2-Istruzioni per processare le lettere man mano che vengono ricevute Pag. 3-Istruzioni per l'inserimento dei dati del questionario Pag. 4-Istruzioni/criteri per modificare lo stato di contatto del paziente a NeedMD_Contact

1) Chiamare l'ufficio del medico e spiegare che si sta per inviare una richiesta di autorizzazione per ottenere informazioni mediche sul paziente. Chiedere se preferiscono un fax o una email per la richiesta di autorizzazione. Se preferiscono la posta inviare la copertina al medico assieme al consenso firmato. In alternativa, se uno stagista chiama l'ufficio del medico, possono ricevere l'informazione via telefono. Copie delle informazioni mediche sono ancora necessaria. 2) Una volta fatto, inseire l'azione MD_Contacted nella scheda "Azioni". 3) Una volta ricevute le informazioni mediche, inserire i dati, o cambiare lo stato di contatto del paziente a NeedDataEntry, se il dato non può essere inserito.

NeedMD_ToCallPt

Se il paziente non ha risposto dopo l'invio di 3 lettere, cambiare lo stato si contatto del paziente a NeedMD_ToCallPt - pazienti che sono stati nella catoria Letter3_Sent e che non hanno avuto alcuna azione inserita nelle ultime 6 settimane. I medici (o i principali ricercatori) chiameranno il paziente per raccogliere la storia, le info di contatto, ed ottenerne l'autorizzazione.

Di seguito una lista di domande pertinenti da fare ad un paziente. Si possono usare anche quando si chiama il paziente di un medico.

    1. Altri trattamenti dopo RP?
    2. Ha avuto qualche problema ad urinare dopo l'intervento (difficoltà nel passaggio dell'urina; ritenzione urinaria)? Ha subito trattamenti all'uretra?
    3. Ha subito qualche altra procedures per i problemi legati alla prostata o alla disfunzione urinaria?
    4. Utilizza pannolini protettivi per incontinenza/perdita di urina? Quanti ne cambia al giorno? Quanti alla notte? Ha subìto trattamenti per l'incontinenza (AUS)?
    5. Ha avuto erezioni spontanee sufficienti per intercourse? E' in grado di intercourse senza aiuti per l'erezione? Se utilizza supporti, quali sta usando? Se prende Viagra, in quale dose? Usa una terapia iniettiva o supporti uretrali? Ha subito trattamenti chirurgici per l'impotenza (protesi)?
    6. Esami di laboratorio successivi al ricovero presso la nostra struttura? (totali PSA, testosterone, free PSA)
    7. E' seguito da un medico? Ci potrebbe fornire i recapiti del suo medico per chiedergli l'autorizzazione e richiedere informazioni mediche che la riguardano?
    8. Gradirebbe ricevere un questionario via posta con domande sullo stato di salute e sulla funzione urologica dopo l'intervento?
  1. Dopo aver chiamato il paziente, inserire l'azione Patient_WasCalled nella scheda delle azioni.
  2. Inserire le informazioni aggiornate nel database.
  3. Cambiare lo stato di contatto del paziente a
    • Current se non è necessario contattare il medico e se si dispone di informaizoni aggiornate.
    • NeedPtAuthorization se è necessario inviare un richiesta di informazioni da firmare
    • NeedMD_Contact se è necessario contattare il suo medico

NeedPtContactInfo

Se una lettera ritorna come non recapitata, e non ci sono ulteriori indirizzi, inserire una azione, ReturnedToSender. Poi cambiare lo stato di contatto a NeedPtContactInfo. Possono essere intrapresi i seguenti step per ottenere informazioni di contatto. Inserire una azione dopo ogni step preso.

  1. Chiamare i numeri elencati nel database (i numeri del paziente o i numeri di emergenza).
  2. Chiamare il centro informazioni telefoniche (411) per vedere se ci sono dei contatti nella loro area.
  3. Provare a contattare i suoi medici per vedere se hanno recapiti aggiornati.
  4. Cercare su internet.
  5. Provare al registro dei tumori per vedere se possono essere di aiuto. Possono fornire il loro ultimo stato vitale del paziente o il suo ultimo recapito.
  6. Se ottieni una informazione aggiornata attraverso uno di questi tentativi, aggiorna Caisis, inserisci una azione AddressUpdated, e poi ripristina lo stato di contatto a NeedLetter1, 2, or 3, in base a dove ci si trova nel processo.
  7. Se non sono disponibili nuove contatti aggiorna lo stato di contatto del paziente a LTF “Lost to follow-up”.

Ordinare le forniture

  1. Ordinare le buste e carte intestate istituzionali.
  2. Le buste per le risposte sono ordinate come segue:

Stato del contatto - informazione demografica in Caisis

PtContactStatus azione/dato determinante
Current CaseReviewed
DoNotContactPerMD
DoNotContactPerPt DataReceived
Letter1_Sent  
Letter2_Sent Letter2_Sent
Letter3_Sent Letter3_Sent
LostToFollowup PtWebSearched
MD_Contacted MD_Contacted
NeedDataEntry DataEntered
NeedLetter1 Letter1_Sent
NeedLetter2 SentToCDB
NeedLetter3 SentToEMR
NeedMD_Contact VitalStatusChecked
NeedMD_ToCall PtWasCalled
NeedPtAuthorization  
NeedPtContactInfo PtContactInfoUpdated
NeedVitalStatus LetterReturnedToSender

Trigger sulla tabella "Actions"

Ogni volta che un utente modifica o inserisce un record nella tabella "Actions" (Risposta immediata- Dovrebbe rimanere simplice o quanto più semplice)

UPDATE Patients SET PtContactStatus = CASE WHEN i.ActionItem = 'VitalStatusChecked' AND PtContactStatus = 'NeedVitalStatus' THEN 'Current' WHEN i.ActionItem = 'Letter1_Sent' AND PtContactStatus = 'NeedLetter1' THEN 'Letter1_Sent' WHEN i.ActionItem = 'Letter2_Sent' AND PtContactStatus = 'NeedLetter2' THEN 'Letter2_Sent' WHEN i.ActionItem = 'Letter3_Sent' AND PtContactStatus = 'NeedLetter3' THEN 'Letter3_Sent' WHEN i.ActionItem = 'LetterReturnedToSender' AND PtContactStatus LIKE 'Letter[1-3]%Sent' THEN 'NeedPtContactInfo' WHEN i.ActionItem = 'MD_Contacted' AND PtContactStatus = 'NeedMD_Contact' THEN 'MD_Contacted' WHEN i.ActionItem = 'PtWasCalled' AND PtContactStatus = 'NeedMD_ToCallPt' THEN 'Current' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus IN ('Letter1_Sent','Letter2_Sent','Letter3_Sent','MD_Contacted') THEN 'NeedDataEntry' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus = 'NeedPtAuthorization' THEN 'NeedMD_Contact' WHEN i.ActionItem = 'DataEntered' AND PtContactStatus = 'NeedDataEntry' THEN 'Current' WHEN i.ActionItem = 'PtContactInfoUpdated' AND PtContactStatus = 'NeedPtContactInfo' THEN 'Current' END FROM Patients INNER JOIN Inserted i ON Patients.PatientId = i.PatientId WHERE PtContactStatus <> CASE WHEN i.ActionItem = 'VitalStatusChecked' AND PtContactStatus = 'NeedVitalStatus' THEN 'Current' WHEN i.ActionItem = 'Letter1_Sent' AND PtContactStatus = 'NeedLetter1' THEN 'Letter1_Sent' WHEN i.ActionItem = 'Letter2_Sent' AND PtContactStatus = 'NeedLetter2' THEN 'Letter2_Sent' WHEN i.ActionItem = 'Letter3_Sent' AND PtContactStatus = 'NeedLetter3' THEN 'Letter3_Sent' WHEN i.ActionItem = 'LetterReturnedToSender' AND PtContactStatus LIKE 'Letter[1-3]%Sent' THEN 'NeedPtContactInfo' WHEN i.ActionItem = 'MD_Contacted' AND PtContactStatus = 'NeedMD_Contact' THEN 'MD_Contacted' WHEN i.ActionItem = 'PtWasCalled' AND PtContactStatus = 'NeedMD_ToCallPt' THEN 'Current' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus IN ('Letter1_Sent','Letter2_Sent','Letter3_Sent','MD_Contacted') THEN 'NeedDataEntry' WHEN i.ActionItem = 'DataReceived' AND PtContactStatus = 'NeedPtAuthorization' THEN 'NeedMD_Contact' WHEN i.ActionItem = 'DataEntered' AND PtContactStatus = 'NeedDataEntry' THEN 'Current' WHEN i.ActionItem = 'PtContactInfoUpdated' AND PtContactStatus = 'NeedPtContactInfo' THEN 'Current' END

Job notturno (Risposta ritardata, può essere completta)

CREATE PROCEDURE dbo.spFollowupUpdatePtContactStatus AS BEGIN TRANSACTION --Change to current if null UPDATE Patients SET PtContactStatus = 'Current' WHERE PtContactStatus = '0' OR PtContactStatus IS NULL /* If they are Current and (no data in the last 14 months or dead) and (vital status has not been checked in the last 60 days) then change to NeedVitalStatus

  • /

UPDATE Patients SET PtContactStatus = 'NeedVitalStatus' FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId LEFT OUTER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId WHERE PtContactStatus = 'Current' AND FJ_CurrentDataView.PatientId IS NULL AND FJ_VitalStatusCheckedView.PatientId IS NULL /* If they are Current and (no data in the last 14 months or dead) and (vital status has been checked in the last 60 days) then change to next letter/contact, If the last LetterX_Sent was more than 90 days ago then move to NeedLetter1 so can restart the process */ UPDATE Patients SET PtContactStatus =CASE WHEN LastLetterSent IS NULL THEN 'NeedLetter1' WHEN LastLetterSent LIKE 'Letter1%Sent' THEN 'NeedLetter2' WHEN LastLetterSent LIKE 'Letter2%Sent' THEN 'NeedLetter3' WHEN LastLetterSent LIKE 'Letter3%Sent' THEN 'NeedPtContactInfo' END FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId INNER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId LEFT OUTER JOIN FJ_LastLetterSentView ON Patients.PatientId = FJ_LastLetterSentView.PatientId WHERE PtContactStatus = 'Current' AND FJ_CurrentDataView.PatientId IS NULL /* If they are LetterX_Sent or NeedLetterX or NeedVitalStatus and (no LetterX_Sent in the last 90 days) and (have data in the last 14 months or dead) change to Current */ UPDATE Patients SET PtContactStatus = 'Current' FROM Patients INNER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId WHERE (PtContactStatus LIKE 'Letter[1-3]%Sent' OR PtContactStatus LIKE 'NeedLetter[1-3]' OR PtContactStatus = 'NeedVitalStatus') AND FJ_RecentLetterSentView.PatientId IS NULL /* If they are LetterX_Sent only and (no LetterX_Sent in the last 90 days) and (no data in the last 14 months or dead) and (vital status has not been checked in the last 60 days) change to NeedVitalStatus

  • /

UPDATE Patients SET PtContactStatus = 'NeedVitalStatus' FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId LEFT OUTER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId WHERE PtContactStatus LIKE 'Letter[1-3]%Sent' AND FJ_CurrentDataView.PatientId IS NULL AND FJ_RecentLetterSentView.PatientId IS NULL AND FJ_VitalStatusCheckedView.PatientId IS NULL /* If they are LetterX_Sent and (no LetterX_Sent in the last 90 days) and (no data in the last 14 months or dead) and (vital status has been checked in the last 60 days) then change to next letter/contact */ UPDATE Patients SET PtContactStatus =CASE WHEN PtContactStatus LIKE 'Letter1%Sent' THEN 'NeedLetter2' WHEN PtContactStatus LIKE 'Letter2%Sent' THEN 'NeedLetter3' WHEN PtContactStatus LIKE 'Letter3%Sent' THEN 'NeedPtContactInfo' END FROM Patients LEFT OUTER JOIN FJ_CurrentDataView ON Patients.PatientId = FJ_CurrentDataView.PatientId LEFT OUTER JOIN FJ_RecentLetterSentView ON Patients.PatientId = FJ_RecentLetterSentView.PatientId INNER JOIN FJ_VitalStatusCheckedView ON Patients.PatientId = FJ_VitalStatusCheckedView.PatientId WHERE PtContactStatus LIKE 'Letter[1-3]%Sent' AND FJ_CurrentDataView.PatientId IS NULL AND FJ_RecentLetterSentView.PatientId IS NULL /* If patient is dead change ContactStatus to Current but only if ContactStatus is not already Current and ContactStatus NOT LIKE '%DoNotContact%'

  • /

UPDATE Patients SET PtContactStatus = 'Current' FROM Patients WHERE (PtContactStatus <> 'Current' AND PtContactStatus NOT LIKE '%DoNotContact%') AND (PtDeathDateText IS NOT NULL) COMMIT TRANSACTION GO


Queries utilizzate dal job notturno

CREATE VIEW dbo.FJ_CurrentDataView AS --Not all tables are represented here Includes deceased patients SELECT a.PatientId AS PatientId FROM ( SELECT BxDate AS SortDate, 'Biopsies' AS TableName, PatientId FROM Biopsies WHERE BxDate > DATEADD(m,-14,GETDATE()) UNION SELECT BxDate AS SortDate, 'BiopsiesProstate' AS TableName, PatientId FROM BiopsiesProstate WHERE BxDate > DATEADD(m,-14,GETDATE()) UNION SELECT ClinStageDate, 'ClinicalStages', PatientId FROM ClinicalStages WHERE ClinStageDate > DATEADD(m,-14,GETDATE()) UNION SELECT DxDate, 'Diagnostics', PatientId FROM Diagnostics WHERE DxDate > DATEADD(m,-14,GETDATE()) UNION SELECT LabDate, 'LabTests', PatientId FROM LabTests WHERE LabDate > DATEADD(m,-14,GETDATE()) UNION SELECT MedTxDate, 'MedicalTherapy', PatientId FROM MedicalTherapy WHERE MedTxDate > DATEADD(m,-14,GETDATE()) UNION SELECT OpDate, 'Procedures', PatientId FROM Procedures WHERE OpDate > DATEADD(m,-14,GETDATE()) UNION SELECT SurgDate, 'Surgery', PatientId FROM Surgeries WHERE SurgDate > DATEADD(m,-14,GETDATE()) UNION SELECT EndoDate, 'Endoscopy', PatientId FROM ProcEndoscopies WHERE EndoDate > DATEADD(m,-14,GETDATE()) UNION SELECT CytoDate, 'Cytology', PatientId FROM Cytologies WHERE CytoDate > DATEADD(m,-14,GETDATE()) UNION SELECT BrachyDate, 'BrachyTherapy', PatientId FROM BrachyTherapy WHERE BrachyDate > DATEADD(m,-14,GETDATE()) UNION SELECT RadTxDate, 'RadiationTherapy', PatientId FROM RadiationTherapy WHERE RadTxDate > DATEADD(m,-14,GETDATE()) UNION SELECT StatusDate, 'Status', PatientId FROM Status WHERE StatusDate > DATEADD(m,-14,GETDATE()) UNION SELECT PtProtocolStatusDate, 'Protocols', PatientId FROM PatientProtocols INNER JOIN PatientProtocolStatus ON PatientProtocolStatus.PatientProtocolId = PatientProtocols.PatientProtocolId WHERE PtProtocolStatusDate > DATEADD(m,-14,GETDATE()) UNION SELECT EncDate, 'Encounters', PatientId FROM Encounters WHERE EncDate > DATEADD(m,-14,GETDATE()) UNION SELECT SurveyDate, 'Surveys', PatientId FROM Surveys WHERE SurveyDate > DATEADD(m,-14,GETDATE()) --Add in deceased patients classified as having a DeathDateText UNION SELECT PtDeathDate, 'Patients',PatientId FROM Patients WHERE (PtDeathDateText IS NOT NULL) ) AS a GROUP BY a.PatientId CREATE VIEW dbo.FJ_VitalStatusCheckedView AS SELECT DISTINCT PatientId FROM Actions WHERE ActionItem = 'VitalStatusChecked' AND ActionDate >= DATEADD(d, - 60, GETDATE()) CREATE VIEW dbo.FJ_LastLetterSentView AS SELECT Actions.PatientId AS PatientId, ActionItem AS LastLetterSent FROM ( SELECT MAX(ActionDate) AS LastLetterDate, PatientId FROM Actions WHERE (ActionItem LIKE 'Letter[1-3]%Sent') AND ActionDate >= DATEADD(d, - 90, GETDATE()) GROUP BY PatientId ) AS a INNER JOIN Actions ON a.PatientId = Actions.PatientId AND a.LastLetterDate = Actions.ActionDate WHERE (ActionItem LIKE 'Letter[1-3]%Sent') CREATE VIEW dbo.FJ_RecentLetterSentView AS SELECT DISTINCT PatientId FROM Actions WHERE ActionItem LIKE 'Letter[1-3]%Sent' AND ActionDate >= DATEADD(d, - 90, GETDATE())

Personal tools