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

PXRMRLST.m

Go to the documentation of this file.
  1. PXRMRLST ; SLC/PKR - Clinical Reminder definition list. ;01/03/2005
  1. ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
  1. ;
  1. ;==================================================
  1. ;Build the criteria for which reminders to list.
  1. LIST N ALL,CRITERIA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IND
  1. N LOCAL,LPREFIX,NCRIT,PREFIX,SORT,STATUS,X,Y
  1. START S (ALL,LOCAL,NCRIT)=0
  1. S (PREFIX,STATUS)=""
  1. ;
  1. ALLQ S DIR(0)="YAO"
  1. S DIR("A")="List all reminders? "
  1. S DIR("B")="Y"
  1. W !
  1. D ^DIR
  1. I $D(DIROUT)!$D(DIRUT) Q
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S ALL=Y
  1. S NCRIT=NCRIT+1
  1. S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
  1. I ALL G ACTIVEQ
  1. ;
  1. LOCALQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S DIR(0)="YAO"
  1. S DIR("A")="List all local reminders? "
  1. S DIR("B")="Y"
  1. W !
  1. D ^DIR
  1. I $D(DTOUT) Q
  1. I $D(DUOUT)!$D(DIROUT) G ALLQ
  1. S LOCAL=Y
  1. S NCRIT=NCRIT+1
  1. S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
  1. I LOCAL G ACTIVEQ
  1. ;
  1. PREFIXQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S PREFIX=""
  1. S DIR(0)="FAO"_U_"1:30"
  1. S DIR("A")="List only reminders starting with (prefix)? "
  1. S DIR("B")="VA-"
  1. W !
  1. D ^DIR
  1. I $D(DTOUT) Q
  1. I $D(DUOUT)!$D(DIROUT) G LOCALQ
  1. S PREFIX=Y
  1. S LPREFIX=$L(Y)
  1. S NCRIT=NCRIT+1
  1. S CRITERIA(NCRIT)=DIR("A")_" "_PREFIX
  1. ;
  1. ACTIVEQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S DIR(0)="SAO"_U_"A:Active;I:Inactive;B:Both"
  1. S DIR("A")="List Active (A), Inactive (I), Both (B)? "
  1. S DIR("B")="B"
  1. W !
  1. D ^DIR
  1. I $D(DTOUT) Q
  1. I $D(DUOUT)!$D(DIROUT) G START
  1. S STATUS=Y
  1. S NCRIT=NCRIT+1
  1. S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
  1. ;
  1. SORTQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S SORT="N"
  1. S DIR(0)="SAO"_U_"N:Name (.01);P:Print name"
  1. S DIR("A")="Sort list by Name (N), Print Name (P)? "
  1. S DIR("B")="N"
  1. W !
  1. D ^DIR
  1. I $D(DTOUT) Q
  1. I $D(DUOUT)!$D(DIROUT) G ACTIVEQ
  1. S SORT=Y_U_Y(0)
  1. S NCRIT=NCRIT+1
  1. S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
  1. ;
  1. ;Make sure the criteria are ok.
  1. W !!,"A reminder list will be created using the following criteria:"
  1. F IND=1:1:NCRIT D
  1. . W !,?2,CRITERIA(IND)
  1. ;
  1. K CRITERIA
  1. K DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. S DIR(0)="YAO"
  1. S DIR("A")="Is this correct? "
  1. S DIR("B")="Y"
  1. W !
  1. D ^DIR
  1. I $D(DTOUT) Q
  1. I $D(DUOUT)!$D(DIROUT) G START
  1. I 'Y G START
  1. ;
  1. ;Build the list of reminders based on the input critera.
  1. N IEN,NAME,NODE0,SFUN
  1. ;Setup the screening function to use
  1. I ALL S SFUN="$$ALLS(NODE0,STATUS)"
  1. I LOCAL S SFUN="$$LOCALS(NODE0,STATUS)"
  1. I $L(PREFIX)>0 S SFUN="$$PREFIXS(NODE0,STATUS,PREFIX,LPREFIX)"
  1. K ^TMP($J,"DEFLIST")
  1. S IEN=0
  1. F S IEN=$O(^PXD(811.9,IEN)) Q:+IEN=0 D
  1. . S NODE0=^PXD(811.9,IEN,0)
  1. . I @SFUN S ^TMP($J,"DEFLIST",IEN)=""
  1. ;Print the list
  1. N BY,DIC,FLDS,FR,L,PXRMFVPL,PXRMROOT,TO
  1. D BLDRLIST^PXRMVPTR(811.902,.01,.PXRMFVPL)
  1. S (DIC,PXRMROOT)="^PXD(811.9,"
  1. S FLDS="[PXRM DEFINITION LIST]"
  1. S L=0
  1. S L(0)=1
  1. I $P(SORT,U,1)="N" S BY=.01
  1. I $P(SORT,U,1)="P" S BY=1.2
  1. S BY(0)="^TMP($J,""DEFLIST"""
  1. S (FR,TO)=""
  1. D EN1^DIP
  1. K ^TMP($J,"DEFLIST")
  1. Q
  1. ;
  1. ;==================================================
  1. ALLS(NODE0,STATUS) ;Screen based on all reminders and status.
  1. I STATUS="B" Q 1
  1. N INFLAG
  1. S INFLAG=$P(NODE0,U,6)
  1. I (STATUS="A")&('INFLAG) Q 1
  1. I (STATUS="I")&(INFLAG) Q 1
  1. Q 0
  1. ;
  1. ;==================================================
  1. LOCALS(NODE0,STATUS) ;Screen based on all local reminders and status.
  1. N NAME
  1. S NAME=$P(NODE0,U,1)
  1. I NAME["VA-" Q 0
  1. I STATUS="B" Q 1
  1. N INFLAG
  1. S INFLAG=$P(NODE0,U,6)
  1. I (STATUS="A")&('INFLAG) Q 1
  1. I (STATUS="I")&(INFLAG) Q 1
  1. Q 0
  1. ;
  1. ;==================================================
  1. PREFIXS(NODE0,STATUS,PREFIX,LPREFIX) ;Screen based on .01 prefix and status.
  1. N NAME,PRE
  1. S NAME=$P(NODE0,U,1)
  1. S PRE=$E(NAME,1,LPREFIX)
  1. I PRE'=PREFIX Q 0
  1. I STATUS="B" Q 1
  1. N INFLAG
  1. S INFLAG=$P(NODE0,U,6)
  1. I (STATUS="A")&('INFLAG) Q 1
  1. I (STATUS="I")&(INFLAG) Q 1
  1. Q 0
  1. ;