| 1 | PXRMXGUT ; SLC/PJH - General utilities for reminder reports; 11/16/2007 | 
|---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123 | 
|---|
| 3 | ; | 
|---|
| 4 | ;======================================= | 
|---|
| 5 | EOR ;End of report display. | 
|---|
| 6 | I $E(IOST,1,2)="C-",IO=IO(0) D | 
|---|
| 7 | . S DIR(0)="EA" | 
|---|
| 8 | . S DIR("A")="End of the report. Press ENTER/RETURN to continue..." | 
|---|
| 9 | . W ! | 
|---|
| 10 | . D ^DIR K DIR | 
|---|
| 11 | Q | 
|---|
| 12 | ; | 
|---|
| 13 | ;======================================= | 
|---|
| 14 | EXIT ;Clean things up. | 
|---|
| 15 | D ^%ZISC | 
|---|
| 16 | D HOME^%ZIS | 
|---|
| 17 | K IO("Q") | 
|---|
| 18 | K DIRUT,DTOUT,DUOUT,POP | 
|---|
| 19 | K ^TMP(PXRMXTMP) | 
|---|
| 20 | K ^XTMP(PXRMXTMP) | 
|---|
| 21 | K ^TMP("PXRMX",$J) | 
|---|
| 22 | K ^TMP($J,"PXRM PATIENT LIST") | 
|---|
| 23 | K ^TMP($J,"PXRM PATIENT EVAL") | 
|---|
| 24 | K ^TMP($J,"PXRM FUTURE APPT") | 
|---|
| 25 | K ^TMP($J,"PXRM FACILITY FUTURE APPT") | 
|---|
| 26 | K ^TMP($J,"SDAMA301") | 
|---|
| 27 | K ^TMP($J,"SORT") | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | ;======================================= | 
|---|
| 31 | TIMING ;Print report timing data. | 
|---|
| 32 | N IND | 
|---|
| 33 | W !!,"Report timing data:" | 
|---|
| 34 | S IND="" | 
|---|
| 35 | F  S IND=$O(^XTMP(PXRMXTMP,"TIMING",IND)) Q:IND=""  W !," ",^XTMP(PXRMXTMP,"TIMING",IND) | 
|---|
| 36 | Q | 
|---|
| 37 | ; | 
|---|
| 38 | ;======================================= | 
|---|
| 39 | USTRINS(STRING,CHAR) ;Given a string, which is assumed to be in alphabetical | 
|---|
| 40 | ;order and a character which is not already in the string insert the | 
|---|
| 41 | ;character into the string in alphabetical order. For example: | 
|---|
| 42 | ;STRING CHAR RETURNS | 
|---|
| 43 | ;CEQ     A    ACEQ | 
|---|
| 44 | ;CEQ     E    CEQ | 
|---|
| 45 | ;CEQ     F    CEFQ | 
|---|
| 46 | ;CEQ     T    CEQT | 
|---|
| 47 | ; | 
|---|
| 48 | N CH1,CH2,DONE,IC,LEN,STR | 
|---|
| 49 | S LEN=$L(STRING) | 
|---|
| 50 | ;Special case of empty STRING. | 
|---|
| 51 | I LEN=0 Q CHAR | 
|---|
| 52 | ; | 
|---|
| 53 | S DONE=0 | 
|---|
| 54 | S STR="" | 
|---|
| 55 | S CH1=$E(STRING,1,1) | 
|---|
| 56 | I (CH1]CHAR) S STR=STR_CHAR_CH1,DONE=1 | 
|---|
| 57 | E  S STR=STR_CH1 | 
|---|
| 58 | I CH1=CHAR S DONE=1 | 
|---|
| 59 | ; | 
|---|
| 60 | ;Special case of STRING of length 1. | 
|---|
| 61 | I (LEN=1)&('DONE) S STR=STR_CHAR,DONE=1 | 
|---|
| 62 | ; | 
|---|
| 63 | F IC=2:1:LEN D | 
|---|
| 64 | . S CH2=$E(STRING,IC,IC) | 
|---|
| 65 | . I DONE S STR=STR_CH2 | 
|---|
| 66 | . E  D | 
|---|
| 67 | .. I (CHAR]CH1)&(CH2]CHAR) S STR=STR_CHAR_CH2,DONE=1 | 
|---|
| 68 | .. E  S STR=STR_CH2 | 
|---|
| 69 | .. I CH2=CHAR S DONE=1 | 
|---|
| 70 | .. S CH1=CH2 | 
|---|
| 71 | ; | 
|---|
| 72 | ;If we made it all the way through the loop and we are still not | 
|---|
| 73 | ;done then append CHAR. | 
|---|
| 74 | I ('DONE) S STR=STR_CHAR | 
|---|
| 75 | Q STR | 
|---|
| 76 | ; | 
|---|
| 77 | ;======================================= | 
|---|
| 78 | VLIST(SLIST,LIST,MESSAGE) ;Make sure all the elements of LIST are in | 
|---|
| 79 | ;SLIST.  If they are, then LIST is valid.  The elements of LIST can be | 
|---|
| 80 | ;separated by commas and spaces. | 
|---|
| 81 | N IC,LE,LEN,VALID | 
|---|
| 82 | S LIST=$TR(LIST,",","") | 
|---|
| 83 | S LIST=$TR(LIST," ","") | 
|---|
| 84 | ;Make the test case insensitive. | 
|---|
| 85 | S SLIST=$$UP^XLFSTR(SLIST) | 
|---|
| 86 | S LIST=$$UP^XLFSTR(LIST) | 
|---|
| 87 | S VALID=1 | 
|---|
| 88 | S LEN=$L(LIST) | 
|---|
| 89 | I LEN=0 D | 
|---|
| 90 | . W !,"The list is empty!" | 
|---|
| 91 | . S VALID=0 | 
|---|
| 92 | F IC=1:1:LEN D | 
|---|
| 93 | . S LE=$E(LIST,IC,IC) | 
|---|
| 94 | . I SLIST'[LE D | 
|---|
| 95 | .. W !,LE,MESSAGE | 
|---|
| 96 | .. S VALID=0 | 
|---|
| 97 | Q VALID | 
|---|
| 98 | ; | 
|---|