- PXRMRLST ; SLC/PKR - Clinical Reminder definition list. ;01/03/2005
- ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
- ;
- ;==================================================
- ;Build the criteria for which reminders to list.
- LIST N ALL,CRITERIA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IND
- N LOCAL,LPREFIX,NCRIT,PREFIX,SORT,STATUS,X,Y
- START S (ALL,LOCAL,NCRIT)=0
- S (PREFIX,STATUS)=""
- ;
- ALLQ S DIR(0)="YAO"
- S DIR("A")="List all reminders? "
- S DIR("B")="Y"
- W !
- D ^DIR
- I $D(DIROUT)!$D(DIRUT) Q
- I $D(DTOUT)!$D(DUOUT) Q
- S ALL=Y
- S NCRIT=NCRIT+1
- S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- I ALL G ACTIVEQ
- ;
- LOCALQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
- S DIR(0)="YAO"
- S DIR("A")="List all local reminders? "
- S DIR("B")="Y"
- W !
- D ^DIR
- I $D(DTOUT) Q
- I $D(DUOUT)!$D(DIROUT) G ALLQ
- S LOCAL=Y
- S NCRIT=NCRIT+1
- S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- I LOCAL G ACTIVEQ
- ;
- PREFIXQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
- S PREFIX=""
- S DIR(0)="FAO"_U_"1:30"
- S DIR("A")="List only reminders starting with (prefix)? "
- S DIR("B")="VA-"
- W !
- D ^DIR
- I $D(DTOUT) Q
- I $D(DUOUT)!$D(DIROUT) G LOCALQ
- S PREFIX=Y
- S LPREFIX=$L(Y)
- S NCRIT=NCRIT+1
- S CRITERIA(NCRIT)=DIR("A")_" "_PREFIX
- ;
- ACTIVEQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
- S DIR(0)="SAO"_U_"A:Active;I:Inactive;B:Both"
- S DIR("A")="List Active (A), Inactive (I), Both (B)? "
- S DIR("B")="B"
- W !
- D ^DIR
- I $D(DTOUT) Q
- I $D(DUOUT)!$D(DIROUT) G START
- S STATUS=Y
- S NCRIT=NCRIT+1
- S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- ;
- SORTQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT
- S SORT="N"
- S DIR(0)="SAO"_U_"N:Name (.01);P:Print name"
- S DIR("A")="Sort list by Name (N), Print Name (P)? "
- S DIR("B")="N"
- W !
- D ^DIR
- I $D(DTOUT) Q
- I $D(DUOUT)!$D(DIROUT) G ACTIVEQ
- S SORT=Y_U_Y(0)
- S NCRIT=NCRIT+1
- S CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- ;
- ;Make sure the criteria are ok.
- W !!,"A reminder list will be created using the following criteria:"
- F IND=1:1:NCRIT D
- . W !,?2,CRITERIA(IND)
- ;
- K CRITERIA
- K DIR,DIROUT,DIRUT,DTOUT,DUOUT
- S DIR(0)="YAO"
- S DIR("A")="Is this correct? "
- S DIR("B")="Y"
- W !
- D ^DIR
- I $D(DTOUT) Q
- I $D(DUOUT)!$D(DIROUT) G START
- I 'Y G START
- ;
- ;Build the list of reminders based on the input critera.
- N IEN,NAME,NODE0,SFUN
- ;Setup the screening function to use
- I ALL S SFUN="$$ALLS(NODE0,STATUS)"
- I LOCAL S SFUN="$$LOCALS(NODE0,STATUS)"
- I $L(PREFIX)>0 S SFUN="$$PREFIXS(NODE0,STATUS,PREFIX,LPREFIX)"
- K ^TMP($J,"DEFLIST")
- S IEN=0
- F S IEN=$O(^PXD(811.9,IEN)) Q:+IEN=0 D
- . S NODE0=^PXD(811.9,IEN,0)
- . I @SFUN S ^TMP($J,"DEFLIST",IEN)=""
- ;Print the list
- N BY,DIC,FLDS,FR,L,PXRMFVPL,PXRMROOT,TO
- D BLDRLIST^PXRMVPTR(811.902,.01,.PXRMFVPL)
- S (DIC,PXRMROOT)="^PXD(811.9,"
- S FLDS="[PXRM DEFINITION LIST]"
- S L=0
- S L(0)=1
- I $P(SORT,U,1)="N" S BY=.01
- I $P(SORT,U,1)="P" S BY=1.2
- S BY(0)="^TMP($J,""DEFLIST"""
- S (FR,TO)=""
- D EN1^DIP
- K ^TMP($J,"DEFLIST")
- Q
- ;
- ;==================================================
- ALLS(NODE0,STATUS) ;Screen based on all reminders and status.
- I STATUS="B" Q 1
- N INFLAG
- S INFLAG=$P(NODE0,U,6)
- I (STATUS="A")&('INFLAG) Q 1
- I (STATUS="I")&(INFLAG) Q 1
- Q 0
- ;
- ;==================================================
- LOCALS(NODE0,STATUS) ;Screen based on all local reminders and status.
- N NAME
- S NAME=$P(NODE0,U,1)
- I NAME["VA-" Q 0
- I STATUS="B" Q 1
- N INFLAG
- S INFLAG=$P(NODE0,U,6)
- I (STATUS="A")&('INFLAG) Q 1
- I (STATUS="I")&(INFLAG) Q 1
- Q 0
- ;
- ;==================================================
- PREFIXS(NODE0,STATUS,PREFIX,LPREFIX) ;Screen based on .01 prefix and status.
- N NAME,PRE
- S NAME=$P(NODE0,U,1)
- S PRE=$E(NAME,1,LPREFIX)
- I PRE'=PREFIX Q 0
- I STATUS="B" Q 1
- N INFLAG
- S INFLAG=$P(NODE0,U,6)
- I (STATUS="A")&('INFLAG) Q 1
- I (STATUS="I")&(INFLAG) Q 1
- Q 0
- ;
- PXRMRLST ; SLC/PKR - Clinical Reminder definition list. ;01/03/2005
- +1 ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
- +2 ;
- +3 ;==================================================
- +4 ;Build the criteria for which reminders to list.
- LIST NEW ALL,CRITERIA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IND
- +1 NEW LOCAL,LPREFIX,NCRIT,PREFIX,SORT,STATUS,X,Y
- START SET (ALL,LOCAL,NCRIT)=0
- +1 SET (PREFIX,STATUS)=""
- +2 ;
- ALLQ SET DIR(0)="YAO"
- +1 SET DIR("A")="List all reminders? "
- +2 SET DIR("B")="Y"
- +3 WRITE !
- +4 DO ^DIR
- +5 IF $DATA(DIROUT)!$DATA(DIRUT)
- QUIT
- +6 IF $DATA(DTOUT)!$DATA(DUOUT)
- QUIT
- +7 SET ALL=Y
- +8 SET NCRIT=NCRIT+1
- +9 SET CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- +10 IF ALL
- GOTO ACTIVEQ
- +11 ;
- LOCALQ KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT
- +1 SET DIR(0)="YAO"
- +2 SET DIR("A")="List all local reminders? "
- +3 SET DIR("B")="Y"
- +4 WRITE !
- +5 DO ^DIR
- +6 IF $DATA(DTOUT)
- QUIT
- +7 IF $DATA(DUOUT)!$DATA(DIROUT)
- GOTO ALLQ
- +8 SET LOCAL=Y
- +9 SET NCRIT=NCRIT+1
- +10 SET CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- +11 IF LOCAL
- GOTO ACTIVEQ
- +12 ;
- PREFIXQ KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT
- +1 SET PREFIX=""
- +2 SET DIR(0)="FAO"_U_"1:30"
- +3 SET DIR("A")="List only reminders starting with (prefix)? "
- +4 SET DIR("B")="VA-"
- +5 WRITE !
- +6 DO ^DIR
- +7 IF $DATA(DTOUT)
- QUIT
- +8 IF $DATA(DUOUT)!$DATA(DIROUT)
- GOTO LOCALQ
- +9 SET PREFIX=Y
- +10 SET LPREFIX=$LENGTH(Y)
- +11 SET NCRIT=NCRIT+1
- +12 SET CRITERIA(NCRIT)=DIR("A")_" "_PREFIX
- +13 ;
- ACTIVEQ KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT
- +1 SET DIR(0)="SAO"_U_"A:Active;I:Inactive;B:Both"
- +2 SET DIR("A")="List Active (A), Inactive (I), Both (B)? "
- +3 SET DIR("B")="B"
- +4 WRITE !
- +5 DO ^DIR
- +6 IF $DATA(DTOUT)
- QUIT
- +7 IF $DATA(DUOUT)!$DATA(DIROUT)
- GOTO START
- +8 SET STATUS=Y
- +9 SET NCRIT=NCRIT+1
- +10 SET CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- +11 ;
- SORTQ KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT
- +1 SET SORT="N"
- +2 SET DIR(0)="SAO"_U_"N:Name (.01);P:Print name"
- +3 SET DIR("A")="Sort list by Name (N), Print Name (P)? "
- +4 SET DIR("B")="N"
- +5 WRITE !
- +6 DO ^DIR
- +7 IF $DATA(DTOUT)
- QUIT
- +8 IF $DATA(DUOUT)!$DATA(DIROUT)
- GOTO ACTIVEQ
- +9 SET SORT=Y_U_Y(0)
- +10 SET NCRIT=NCRIT+1
- +11 SET CRITERIA(NCRIT)=DIR("A")_" "_Y(0)
- +12 ;
- +13 ;Make sure the criteria are ok.
- +14 WRITE !!,"A reminder list will be created using the following criteria:"
- +15 FOR IND=1:1:NCRIT
- Begin DoDot:1
- +16 WRITE !,?2,CRITERIA(IND)
- End DoDot:1
- +17 ;
- +18 KILL CRITERIA
- +19 KILL DIR,DIROUT,DIRUT,DTOUT,DUOUT
- +20 SET DIR(0)="YAO"
- +21 SET DIR("A")="Is this correct? "
- +22 SET DIR("B")="Y"
- +23 WRITE !
- +24 DO ^DIR
- +25 IF $DATA(DTOUT)
- QUIT
- +26 IF $DATA(DUOUT)!$DATA(DIROUT)
- GOTO START
- +27 IF 'Y
- GOTO START
- +28 ;
- +29 ;Build the list of reminders based on the input critera.
- +30 NEW IEN,NAME,NODE0,SFUN
- +31 ;Setup the screening function to use
- +32 IF ALL
- SET SFUN="$$ALLS(NODE0,STATUS)"
- +33 IF LOCAL
- SET SFUN="$$LOCALS(NODE0,STATUS)"
- +34 IF $LENGTH(PREFIX)>0
- SET SFUN="$$PREFIXS(NODE0,STATUS,PREFIX,LPREFIX)"
- +35 KILL ^TMP($JOB,"DEFLIST")
- +36 SET IEN=0
- +37 FOR
- SET IEN=$ORDER(^PXD(811.9,IEN))
- IF +IEN=0
- QUIT
- Begin DoDot:1
- +38 SET NODE0=^PXD(811.9,IEN,0)
- +39 IF @SFUN
- SET ^TMP($JOB,"DEFLIST",IEN)=""
- End DoDot:1
- +40 ;Print the list
- +41 NEW BY,DIC,FLDS,FR,L,PXRMFVPL,PXRMROOT,TO
- +42 DO BLDRLIST^PXRMVPTR(811.902,.01,.PXRMFVPL)
- +43 SET (DIC,PXRMROOT)="^PXD(811.9,"
- +44 SET FLDS="[PXRM DEFINITION LIST]"
- +45 SET L=0
- +46 SET L(0)=1
- +47 IF $PIECE(SORT,U,1)="N"
- SET BY=.01
- +48 IF $PIECE(SORT,U,1)="P"
- SET BY=1.2
- +49 SET BY(0)="^TMP($J,""DEFLIST"""
- +50 SET (FR,TO)=""
- +51 DO EN1^DIP
- +52 KILL ^TMP($JOB,"DEFLIST")
- +53 QUIT
- +54 ;
- +55 ;==================================================
- ALLS(NODE0,STATUS) ;Screen based on all reminders and status.
- +1 IF STATUS="B"
- QUIT 1
- +2 NEW INFLAG
- +3 SET INFLAG=$PIECE(NODE0,U,6)
- +4 IF (STATUS="A")&('INFLAG)
- QUIT 1
- +5 IF (STATUS="I")&(INFLAG)
- QUIT 1
- +6 QUIT 0
- +7 ;
- +8 ;==================================================
- LOCALS(NODE0,STATUS) ;Screen based on all local reminders and status.
- +1 NEW NAME
- +2 SET NAME=$PIECE(NODE0,U,1)
- +3 IF NAME["VA-"
- QUIT 0
- +4 IF STATUS="B"
- QUIT 1
- +5 NEW INFLAG
- +6 SET INFLAG=$PIECE(NODE0,U,6)
- +7 IF (STATUS="A")&('INFLAG)
- QUIT 1
- +8 IF (STATUS="I")&(INFLAG)
- QUIT 1
- +9 QUIT 0
- +10 ;
- +11 ;==================================================
- PREFIXS(NODE0,STATUS,PREFIX,LPREFIX) ;Screen based on .01 prefix and status.
- +1 NEW NAME,PRE
- +2 SET NAME=$PIECE(NODE0,U,1)
- +3 SET PRE=$EXTRACT(NAME,1,LPREFIX)
- +4 IF PRE'=PREFIX
- QUIT 0
- +5 IF STATUS="B"
- QUIT 1
- +6 NEW INFLAG
- +7 SET INFLAG=$PIECE(NODE0,U,6)
- +8 IF (STATUS="A")&('INFLAG)
- QUIT 1
- +9 IF (STATUS="I")&(INFLAG)
- QUIT 1
- +10 QUIT 0
- +11 ;