Another question about crafting a reminder definition.

72 views
Skip to first unread message

Kevin Toppenberg

unread,
Jun 9, 2013, 5:44:32 PM6/9/13
to hard...@googlegroups.com
I need some help with constructing a reminder definition for pneumococcal.

The rules we want are:

1) Due once after age 65 yrs.
2 ) If the patient happens to have had a pneumococcal vaccination before age 65, then it should be repeated at age 65 yrs, providing there has been a 5 year interval since last immunization.

The VA-MHV PNEUMOVAX reminder definition uses an AGE-FREQ of due every 99 yrs (i.e. once) after age 65 yrs.  And if the reminder term of HIGH RISK is true, then pneumococcal vaccination is due every 99 yrs (with no age limitation).
--I don't think this will do what I want.

Questions (related to my desired rules):
1. If a finding was true at age 55 yrs, and now the patient is 66 yrs, will the reminder be determined to be due because the finding was given *before* the starting age range?

I think I could stand on my head and figure this out using a custom YEAR function I enabled for function findings (returns the year of the specified finding), but I am wondering how this would be done normally.

(My motivation for introducing a scripting language to achieve this directly, rather than encoding the logic in data structures, is steadily growing.)

Kevin

Matt King

unread,
Jun 9, 2013, 7:31:48 PM6/9/13
to hard...@googlegroups.com
Kevin,
It's not too hard with the CF VA-Date of Birth:
VA-DATE OF BIRTH 
Print Name: VA-Patient's Date of Birth
Class: NATIONAL
Sponsor: 
Review Date: 
Description:
This is a single occurrence computed finding that returns the patient's date of birth as a FileMan date. It 
can be used as the value in the Condition. For example: I V>2850302. The date of the finding is the date 
of birth so that date range searches can be used to find patients who were born in a certain time frame

You will also need to use the MRD function and OR statements to compare yjr immunization with the DOB. Set the Frequency using the MRD statements. Use a COUNT function that sets the to 99Y after the second immunization is recorded.

m

Matt King

unread,
Jun 11, 2013, 9:34:12 AM6/11/13
to hard...@googlegroups.com
Kevin,
I realized I needed to do the Pneumonia Vaccine also, so here is what I did. Please take a look and see if it is what you need and if my logic is okay:
NAME: CRH ADULT PNEUMOVAX//

PRINT NAME: ADULT PNEUMONIA VACCINE


CLASS: LOCAL//
SPONSOR:
REVIEW DATE:
USAGE: *//

Baseline Frequency
DO IN ADVANCE TIME FRAME:
SEX SPECIFIC:

Baseline frequency age range set
Select REMINDER FREQUENCY: 99Y//
  REMINDER FREQUENCY: 99Y//
  MINIMUM AGE: 65//
  MAXIMUM AGE: 110//

Reminder Definition Findings

RT CRH AGE CF                                                   Finding #   3
RT CRH DOB CF                                                   Finding #   2
RT CRH PNEUMOCOCCAL VACCINE IMM                                 Finding #   1
Select FINDING:

Function Findings

   1        DIFF_DATE(1,2)>23739
   2        DIFF_DATE(3,1,"N")<1826


Patient Cohort and Resolution Logic
CUSTOMIZED PATIENT COHORT LOGIC (OPTIONAL):

CUSTOMIZED RESOLUTION LOGIC (OPTIONAL): (FI(1)&FF(1))!(FI(1)&FF(2))

Thanks,
m

Kevin Toppenberg

unread,
Jun 11, 2013, 7:19:51 PM6/11/13
to hard...@googlegroups.com
Matt,

Thanks for posting this.  My brain started melting again when I looked at this.  So I am going to pick apart below and see if I can figure it out (NOTE: I couldn't).  More below. 


On Tuesday, June 11, 2013 9:34:12 AM UTC-4, Matt King wrote:
Kevin,

I realized I needed to do the Pneumonia Vaccine also, so here is what I did. Please take a look and see if it is what you need and if my logic is okay:
NAME: CRH ADULT PNEUMOVAX//

PRINT NAME: ADULT PNEUMONIA VACCINE


CLASS: LOCAL//
SPONSOR:
REVIEW DATE:
USAGE: *//

Baseline Frequency
DO IN ADVANCE TIME FRAME:
SEX SPECIFIC:

Baseline frequency age range set
Select REMINDER FREQUENCY: 99Y//
  REMINDER FREQUENCY: 99Y//
  MINIMUM AGE: 65//
  MAXIMUM AGE: 110//

Reminder Definition Findings

RT CRH AGE CF                                                   Finding #   3
RT CRH DOB CF                                                   Finding #   2
RT CRH PNEUMOCOCCAL VACCINE IMM                                 Finding #   1
Select FINDING:

Function Findings

   1        DIFF_DATE(1,2)>23739

OK: this says if the difference in the date between vaccination and date of patient birth is > 65 yrs.  This means this is a test to see if the vaccination was given after age 65 yrs.

Actually I am confused.  Does the computed finding RT CRH DOB CF evaluate as found on the patient's DOB?  I guess, in this context, it would have to. 
 
   2        DIFF_DATE(3,1,"N")<1826

My Clinical Reminder Manager's Manual (2/2011, p 73) doesn't mention anything about allowing a 3rd parameter for DIFF_DATE.  My VistA server is cycled off for the night, so I can't log in and check the online help.  So I will have to go forward without understanding what the "N" parameter means.  

I am also confused about RT CRH AGE CF.  My understanding of a computed finding is that it returns one or more instances of a particular event.  E.g. mammogram CF might return a list of dates when the patient had a mammogram.  But what could an AGE computed finding return?  What would the returned date even mean?

So this says if the date difference between "AGE" and immunization is < 5 years.   But I can't understand this.  I would expect AGE to be a number (1-100) and the Immunization to be a FM Date, so I don't see how these can be compared. 
It seems to me that this is where my NOW custom function would be used: If time between last immunization and NOW is < 5 yrs.

 


Patient Cohort and Resolution Logic
CUSTOMIZED PATIENT COHORT LOGIC (OPTIONAL):

CUSTOMIZED RESOLUTION LOGIC (OPTIONAL): (FI(1)&FF(1))!(FI(1)&FF(2))

So here we are saying that the reminder can be considered resolved if:
Vaccination has been given AND vaccination occurred after age 65 yrs
OR
Vaccination has been given AND (2nd test, which I don't understand) < 5 yrs
  .... but from the context I infer that this is a test to ensure that 5 yrs. have elapsed since last vaccination.

 

Thanks,
m


So Matt, I think I can get this working on my system with what you have shown me.  But I really dislike how convoluted one has to be achieve this.  Very "expert friendly."

Kevin

Matt King

unread,
Jun 11, 2013, 11:00:36 PM6/11/13
to hard...@googlegroups.com

See below:
Matt,

OK: this says if the difference in the date between vaccination and date of patient birth is > 65 yrs.  This means this is a test to see if the vaccination was given after age 65 yrs.<<<<<<<<< Correct

Actually I am confused.  Does the computed finding RT CRH DOB CF evaluate as found on the patient's DOB?  I guess, in this context, it would have to. <<<<<<<<<<Yes it does. The DATE of this finding is the Date of Birth.
 
   2        DIFF_DATE(3,1,"N")<1826 <<<<<Normally the absolute value is returned. This returns actual Date difference between the DATE of his age (which is today, so it is essentially a NOW finding then used like this) and the date of the most recent immunization. The "N" returns the actual value. If the second finding is more recent than the first, it will return a negative number.

My Clinical Reminder Manager's Manual (2/2011, p 73) doesn't mention anything about allowing a 3rd parameter for DIFF_DATE.  My VistA server is cycled off for the night, so I can't log in and check the online help.  So I will have to go forward without understanding what the "N" parameter means.  

I am also confused about RT CRH AGE CF.  My understanding of a computed finding is that it returns one or more instances of a particular event.  E.g. mammogram CF might return a list of dates when the patient had a mammogram.  But what could an AGE computed finding return?  What would the returned date even mean?

So this says if the date difference between "AGE" and immunization is < 5 years.   But I can't understand this.  I would expect AGE to be a number (1-100) and the Immunization to be a FM Date, so I don't see how these can be compared. <<< Although the finding does return the patient's age; the Diff_Date is comparing the Date of his age, which is today.
It seems to me that this is where my NOW custom function would be used: If time between last immunization and NOW is < 5 yrs. <<<<<<This is what i am doing with the age function.

Matt King

unread,
Jun 12, 2013, 8:34:13 AM6/12/13
to hard...@googlegroups.com
Kevin,
Here are the results for finding three when testing the Reminder on a nine year old:
Finding 3:
TFIEVAL(3,1)=1
TFIEVAL(3,1,1)=1
TFIEVAL(3,1,1,"CSUB","DATE")=3130612.082613<<<<< Today's Fileman Date
TFIEVAL(3,1,1,"CSUB","DECEASED")=0
TFIEVAL(3,1,1,"CSUB","VALUE")=9
TFIEVAL(3,1,1,"DATE")=3130612.082613
TFIEVAL(3,1,1,"DECEASED")=0
TFIEVAL(3,1,1,"TEXT")=
TFIEVAL(3,1,1,"VALUE")=9
TFIEVAL(3,1,"BDTE")=0
TFIEVAL(3,1,"CSUB","DATE")=3130612.082613
TFIEVAL(3,1,"CSUB","DECEASED")=0
TFIEVAL(3,1,"CSUB","VALUE")=9 <<<<<<< 9 years old
TFIEVAL(3,1,"DATE")=3130612.082613
TFIEVAL(3,1,"DECEASED")=0
TFIEVAL(3,1,"EDTE")=3130612.235959
TFIEVAL(3,1,"FILE NUMBER")=811.4
TFIEVAL(3,1,"FINDING")=24;PXRMD(811.4,
TFIEVAL(3,1,"TEXT")=
TFIEVAL(3,1,"VALUE")=9

And an 80 year old:
Finding 3:
TFIEVAL(3,1)=1
TFIEVAL(3,1,1)=1
TFIEVAL(3,1,1,"CSUB","DATE")=3130612.082431<<<<<<Today's Fileman date
TFIEVAL(3,1,1,"CSUB","DECEASED")=0
TFIEVAL(3,1,1,"CSUB","VALUE")=80
TFIEVAL(3,1,1,"DATE")=3130612.082431
TFIEVAL(3,1,1,"DECEASED")=0
TFIEVAL(3,1,1,"TEXT")=
TFIEVAL(3,1,1,"VALUE")=80<<<<<<<<<< 80 years old
TFIEVAL(3,1,"BDTE")=0
TFIEVAL(3,1,"CSUB","DATE")=3130612.082431
TFIEVAL(3,1,"CSUB","DECEASED")=0
TFIEVAL(3,1,"CSUB","VALUE")=80
TFIEVAL(3,1,"DATE")=3130612.082431
TFIEVAL(3,1,"DECEASED")=0
TFIEVAL(3,1,"EDTE")=3130612.235959
TFIEVAL(3,1,"FILE NUMBER")=811.4
TFIEVAL(3,1,"FINDING")=24;PXRMD(811.4,
TFIEVAL(3,1,"TEXT")=
TFIEVAL(3,1,"VALUE")=80

Note they are the same dates, but different Values.

m

Kevin Toppenberg

unread,
Jun 13, 2013, 7:16:26 PM6/13/13
to hard...@googlegroups.com
Thanks Matt,

I was able to get this going with your help.  I used my own Computed finding for NOW, since my system doesn't support the "N" parameter.  

Thanks again
Kevin
Reply all
Reply to author
Forward
0 new messages