Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PXRMOUTD

PXRMOUTD.m

Go to the documentation of this file.
  1. PXRMOUTD ; SLC/PKR - Reminder output driver. ;10/20/2009
  1. ;;2.0;CLINICAL REMINDERS;**4,17**;Feb 04, 2005;Build 102
  1. ;
  1. ;===================================================
  1. DUE(PXRMITEM,DUE,DUEDATE,RESDATE,FREQ,FIEVAL) ;Create the due information.
  1. N LDATE,LDATEF,TEMP,TXT
  1. ;
  1. I RESDATE["E" S LDATEF=+RESDATE_U_"E"
  1. I RESDATE["X" D
  1. . S LDATEF=+RESDATE_U_"X"
  1. . S LDATE=0
  1. E S LDATE=+RESDATE
  1. I (+RESDATE)'>0 S LDATEF="unknown"
  1. I '$D(LDATEF) S LDATEF=LDATE
  1. ;
  1. ;Immunizations may be marked as contraindicated. If that is the case
  1. ;they are never due.
  1. I $G(FIEVAL("CONTRAINDICATED"))=1 D Q
  1. . S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="NEVER"_U_DUEDATE_U_LDATEF
  1. ;
  1. ;A reminder frequency of 0Y is a special case that means never show as
  1. ;applicable.
  1. I (FREQ="0Y") D Q
  1. . S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="N/A"_U_U_LDATEF
  1. ;
  1. ;A reminder frequency of 99Y means do once in a lifetime. In this
  1. ;case display null for the due date.
  1. I (LDATE>0)&(FREQ="99Y") D Q
  1. . S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="DONE"_U_""_U_LDATEF
  1. ;
  1. S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)=DUE_U_DUEDATE_U_LDATEF
  1. Q
  1. ;
  1. ;===================================================
  1. IGNNA(PXRMITEM,NOOUTPUT) ;The reminder is N/A, determine if there is
  1. ;no Clinical Maintenance output.
  1. S NOOUTPUT=1
  1. ;Get the IGNORE ON N/A information.
  1. N IGNORE
  1. S IGNORE=$P(DEFARR(0),U,8)
  1. ;
  1. ;If the reminder is N/A and the ignore wildcard is set we are done.
  1. I ($D(^TMP(PXRMPID,$J,PXRMITEM,"N/A")))&(IGNORE["*") Q
  1. ;
  1. ;Look for specific ignore codes.
  1. I ($D(^TMP(PXRMPID,$J,PXRMITEM,"N/A","AGE")))&(IGNORE["A") Q
  1. I ($D(^TMP(PXRMPID,$J,PXRMITEM,"N/A","INACTIVE")))&(IGNORE["I") Q
  1. I $D(^TMP(PXRMPID,$J,PXRMITEM,"N/A","INACTIVE")) D Q
  1. . S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)=""
  1. . S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM,"TXT",1)=^TMP(PXRMPID,$J,PXRMITEM,"N/A","INACTIVE")
  1. I ($D(^TMP(PXRMPID,$J,PXRMITEM,"N/A","RACE")))&(IGNORE["R") Q
  1. I ($D(^TMP(PXRMPID,$J,PXRMITEM,"N/A","SEX")))&(IGNORE["S") Q
  1. ;If we got to here there are no ignore codes so return the N/A
  1. ;information and turn the output on.
  1. S NOOUTPUT=0
  1. Q
  1. ;
  1. ;===================================================
  1. OUTPUT(OUTTYPE,DEFARR,PXRMPDEM,PCLOGIC,RESLOGIC,DUE,DUEDATE,RESDATE,FREQ,FIEVAL) ;
  1. ;Produce the final output.
  1. N NTXT S NTXT=0
  1. ;Check for a fatal error.
  1. I $$FERROR^PXRMOUTU(.NTXT) S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="ERROR" Q
  1. ;See if any warnings need to be issued.
  1. D WARN^PXRMOUTU(PXRMITEM,.PXRMPDEM)
  1. ;
  1. ;Temporarily set CMB=CM
  1. I OUTTYPE=4 S OUTTYPE=5
  1. ;
  1. ;If the component is CR (Reminders Due) and the reminder is not due
  1. ;we are done.
  1. I (OUTTYPE=0)&(DUE'["DUE") Q
  1. ;
  1. ;If the reminder is N/A do the N/A part for the summary and maintenance
  1. ;components.
  1. N NOOUTPUT
  1. S NOOUTPUT=0
  1. I 'PCLOGIC D
  1. .;IGNORE ON N/A applies only to the Clinical Maintenance component.
  1. . I OUTTYPE=5 D IGNNA(PXRMITEM,.NOOUTPUT)
  1. . I 'NOOUTPUT D NAOUTPUT(PXRMITEM,RESDATE)
  1. I NOOUTPUT Q
  1. ;
  1. ;If the reminder is applicable produce the due information.
  1. I PCLOGIC D DUE(PXRMITEM,DUE,DUEDATE,RESDATE,FREQ,.FIEVAL)
  1. ;
  1. ;Proudce the various output types
  1. ;Clinical maintenance output.
  1. I OUTTYPE=5 D CM^PXRMOUTC(.DEFARR,.PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,.FIEVAL,OUTTYPE)
  1. ;Order check output.
  1. I OUTTYPE=55 D CM^PXRMOUTC(.DEFARR,.PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,.FIEVAL,OUTTYPE)
  1. ;MyHealtheVet summary.
  1. I OUTTYPE=10 D MHVS^PXRMOUTM(.DEFARR,.PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,.FIEVAL,1)
  1. ;MyHealtheVet detailed.
  1. I OUTTYPE=11 D MHVD^PXRMOUTM(.DEFARR,.PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,.FIEVAL,1)
  1. ;MyHealtheVet detailed.
  1. I OUTTYPE=12 D MHVC^PXRMOUTM(.DEFARR,.PXRMPDEM,PCLOGIC,RESLOGIC,RESDATE,.FIEVAL)
  1. ;
  1. ;If there is any information stored in ^TMP("PXRHM") Health Summary
  1. ;will not display it unless ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM) has
  1. ;data in it.
  1. I '$D(PXRMITEM)!'$D(PXRMRNAM) Q
  1. I $D(^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM))=10 S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)=" "
  1. Q
  1. ;
  1. ;===================================================
  1. NAOUTPUT(PXRMITEM,RESDATE) ;Prepare the N/A output.
  1. N DDATE
  1. I RESDATE["E" S DDATE=+RESDATE_U_"E"
  1. I RESDATE["X" S DDATE=+RESDATE_U_"X"
  1. I '$D(DDATE) S DDATE=+RESDATE
  1. I DDATE=0 S DDATE=""
  1. S ^TMP("PXRHM",$J,PXRMITEM,PXRMRNAM)="N/A"_U_U_DDATE
  1. Q
  1. ;