| 1 | PXRMRLST ; SLC/PKR - Clinical Reminder definition list. ;01/03/2005 | 
|---|
| 2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005 | 
|---|
| 3 | ; | 
|---|
| 4 | ;================================================== | 
|---|
| 5 | ;Build the criteria for which reminders to list. | 
|---|
| 6 | LIST N ALL,CRITERIA,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IND | 
|---|
| 7 | N LOCAL,LPREFIX,NCRIT,PREFIX,SORT,STATUS,X,Y | 
|---|
| 8 | START S (ALL,LOCAL,NCRIT)=0 | 
|---|
| 9 | S (PREFIX,STATUS)="" | 
|---|
| 10 | ; | 
|---|
| 11 | ALLQ S DIR(0)="YAO" | 
|---|
| 12 | S DIR("A")="List all reminders? " | 
|---|
| 13 | S DIR("B")="Y" | 
|---|
| 14 | W ! | 
|---|
| 15 | D ^DIR | 
|---|
| 16 | I $D(DIROUT)!$D(DIRUT) Q | 
|---|
| 17 | I $D(DTOUT)!$D(DUOUT) Q | 
|---|
| 18 | S ALL=Y | 
|---|
| 19 | S NCRIT=NCRIT+1 | 
|---|
| 20 | S CRITERIA(NCRIT)=DIR("A")_" "_Y(0) | 
|---|
| 21 | I ALL G ACTIVEQ | 
|---|
| 22 | ; | 
|---|
| 23 | LOCALQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 24 | S DIR(0)="YAO" | 
|---|
| 25 | S DIR("A")="List all local reminders? " | 
|---|
| 26 | S DIR("B")="Y" | 
|---|
| 27 | W ! | 
|---|
| 28 | D ^DIR | 
|---|
| 29 | I $D(DTOUT) Q | 
|---|
| 30 | I $D(DUOUT)!$D(DIROUT) G ALLQ | 
|---|
| 31 | S LOCAL=Y | 
|---|
| 32 | S NCRIT=NCRIT+1 | 
|---|
| 33 | S CRITERIA(NCRIT)=DIR("A")_" "_Y(0) | 
|---|
| 34 | I LOCAL G ACTIVEQ | 
|---|
| 35 | ; | 
|---|
| 36 | PREFIXQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 37 | S PREFIX="" | 
|---|
| 38 | S DIR(0)="FAO"_U_"1:30" | 
|---|
| 39 | S DIR("A")="List only reminders starting with (prefix)? " | 
|---|
| 40 | S DIR("B")="VA-" | 
|---|
| 41 | W ! | 
|---|
| 42 | D ^DIR | 
|---|
| 43 | I $D(DTOUT) Q | 
|---|
| 44 | I $D(DUOUT)!$D(DIROUT) G LOCALQ | 
|---|
| 45 | S PREFIX=Y | 
|---|
| 46 | S LPREFIX=$L(Y) | 
|---|
| 47 | S NCRIT=NCRIT+1 | 
|---|
| 48 | S CRITERIA(NCRIT)=DIR("A")_" "_PREFIX | 
|---|
| 49 | ; | 
|---|
| 50 | ACTIVEQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 51 | S DIR(0)="SAO"_U_"A:Active;I:Inactive;B:Both" | 
|---|
| 52 | S DIR("A")="List Active (A), Inactive (I), Both (B)? " | 
|---|
| 53 | S DIR("B")="B" | 
|---|
| 54 | W ! | 
|---|
| 55 | D ^DIR | 
|---|
| 56 | I $D(DTOUT) Q | 
|---|
| 57 | I $D(DUOUT)!$D(DIROUT) G START | 
|---|
| 58 | S STATUS=Y | 
|---|
| 59 | S NCRIT=NCRIT+1 | 
|---|
| 60 | S CRITERIA(NCRIT)=DIR("A")_" "_Y(0) | 
|---|
| 61 | ; | 
|---|
| 62 | SORTQ K DIR,DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 63 | S SORT="N" | 
|---|
| 64 | S DIR(0)="SAO"_U_"N:Name (.01);P:Print name" | 
|---|
| 65 | S DIR("A")="Sort list by Name (N), Print Name (P)? " | 
|---|
| 66 | S DIR("B")="N" | 
|---|
| 67 | W ! | 
|---|
| 68 | D ^DIR | 
|---|
| 69 | I $D(DTOUT) Q | 
|---|
| 70 | I $D(DUOUT)!$D(DIROUT) G ACTIVEQ | 
|---|
| 71 | S SORT=Y_U_Y(0) | 
|---|
| 72 | S NCRIT=NCRIT+1 | 
|---|
| 73 | S CRITERIA(NCRIT)=DIR("A")_" "_Y(0) | 
|---|
| 74 | ; | 
|---|
| 75 | ;Make sure the criteria are ok. | 
|---|
| 76 | W !!,"A reminder list will be created using the following criteria:" | 
|---|
| 77 | F IND=1:1:NCRIT D | 
|---|
| 78 | . W !,?2,CRITERIA(IND) | 
|---|
| 79 | ; | 
|---|
| 80 | K CRITERIA | 
|---|
| 81 | K DIR,DIROUT,DIRUT,DTOUT,DUOUT | 
|---|
| 82 | S DIR(0)="YAO" | 
|---|
| 83 | S DIR("A")="Is this correct? " | 
|---|
| 84 | S DIR("B")="Y" | 
|---|
| 85 | W ! | 
|---|
| 86 | D ^DIR | 
|---|
| 87 | I $D(DTOUT) Q | 
|---|
| 88 | I $D(DUOUT)!$D(DIROUT) G START | 
|---|
| 89 | I 'Y G START | 
|---|
| 90 | ; | 
|---|
| 91 | ;Build the list of reminders based on the input critera. | 
|---|
| 92 | N IEN,NAME,NODE0,SFUN | 
|---|
| 93 | ;Setup the screening function to use | 
|---|
| 94 | I ALL S SFUN="$$ALLS(NODE0,STATUS)" | 
|---|
| 95 | I LOCAL S SFUN="$$LOCALS(NODE0,STATUS)" | 
|---|
| 96 | I $L(PREFIX)>0 S SFUN="$$PREFIXS(NODE0,STATUS,PREFIX,LPREFIX)" | 
|---|
| 97 | K ^TMP($J,"DEFLIST") | 
|---|
| 98 | S IEN=0 | 
|---|
| 99 | F  S IEN=$O(^PXD(811.9,IEN)) Q:+IEN=0  D | 
|---|
| 100 | . S NODE0=^PXD(811.9,IEN,0) | 
|---|
| 101 | . I @SFUN S ^TMP($J,"DEFLIST",IEN)="" | 
|---|
| 102 | ;Print the list | 
|---|
| 103 | N BY,DIC,FLDS,FR,L,PXRMFVPL,PXRMROOT,TO | 
|---|
| 104 | D BLDRLIST^PXRMVPTR(811.902,.01,.PXRMFVPL) | 
|---|
| 105 | S (DIC,PXRMROOT)="^PXD(811.9," | 
|---|
| 106 | S FLDS="[PXRM DEFINITION LIST]" | 
|---|
| 107 | S L=0 | 
|---|
| 108 | S L(0)=1 | 
|---|
| 109 | I $P(SORT,U,1)="N" S BY=.01 | 
|---|
| 110 | I $P(SORT,U,1)="P" S BY=1.2 | 
|---|
| 111 | S BY(0)="^TMP($J,""DEFLIST""" | 
|---|
| 112 | S (FR,TO)="" | 
|---|
| 113 | D EN1^DIP | 
|---|
| 114 | K ^TMP($J,"DEFLIST") | 
|---|
| 115 | Q | 
|---|
| 116 | ; | 
|---|
| 117 | ;================================================== | 
|---|
| 118 | ALLS(NODE0,STATUS) ;Screen based on all reminders and status. | 
|---|
| 119 | I STATUS="B" Q 1 | 
|---|
| 120 | N INFLAG | 
|---|
| 121 | S INFLAG=$P(NODE0,U,6) | 
|---|
| 122 | I (STATUS="A")&('INFLAG) Q 1 | 
|---|
| 123 | I (STATUS="I")&(INFLAG) Q 1 | 
|---|
| 124 | Q 0 | 
|---|
| 125 | ; | 
|---|
| 126 | ;================================================== | 
|---|
| 127 | LOCALS(NODE0,STATUS) ;Screen based on all local reminders and status. | 
|---|
| 128 | N NAME | 
|---|
| 129 | S NAME=$P(NODE0,U,1) | 
|---|
| 130 | I NAME["VA-" Q 0 | 
|---|
| 131 | I STATUS="B" Q 1 | 
|---|
| 132 | N INFLAG | 
|---|
| 133 | S INFLAG=$P(NODE0,U,6) | 
|---|
| 134 | I (STATUS="A")&('INFLAG) Q 1 | 
|---|
| 135 | I (STATUS="I")&(INFLAG) Q 1 | 
|---|
| 136 | Q 0 | 
|---|
| 137 | ; | 
|---|
| 138 | ;================================================== | 
|---|
| 139 | PREFIXS(NODE0,STATUS,PREFIX,LPREFIX) ;Screen based on .01 prefix and status. | 
|---|
| 140 | N NAME,PRE | 
|---|
| 141 | S NAME=$P(NODE0,U,1) | 
|---|
| 142 | S PRE=$E(NAME,1,LPREFIX) | 
|---|
| 143 | I PRE'=PREFIX Q 0 | 
|---|
| 144 | I STATUS="B" Q 1 | 
|---|
| 145 | N INFLAG | 
|---|
| 146 | S INFLAG=$P(NODE0,U,6) | 
|---|
| 147 | I (STATUS="A")&('INFLAG) Q 1 | 
|---|
| 148 | I (STATUS="I")&(INFLAG) Q 1 | 
|---|
| 149 | Q 0 | 
|---|
| 150 | ; | 
|---|