| 1 | BPSOS2 ;BHAM ISC/FCS/DRS - ECME manager's ScreenMan ;06/01/2004 | 
|---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ; ECME Statistics Screen | 
|---|
| 6 | ;   Called by option BPS STATISTICS | 
|---|
| 7 | ;   Uses List Template BPS STATISTICS AND MANAGEMENT | 
|---|
| 8 | ;   Original IHS logic had many management function, which are no | 
|---|
| 9 | ;   longer used | 
|---|
| 10 | ; | 
|---|
| 11 | ; ALL writes of screen lines should be done as follows: | 
|---|
| 12 | ;  IF $$VISIBLE(line) DO WRITE^VALM10(line) | 
|---|
| 13 | ;  Then NODISPLY can be set so that $$VISIBLE always returns FALSE | 
|---|
| 14 | Q | 
|---|
| 15 | ; | 
|---|
| 16 | EN ;EP - Option BPS STATISTICS | 
|---|
| 17 | N BASE,CURR,DISP,AVG,CHG | 
|---|
| 18 | ; BASE(*) = base values, from when zeroed things out | 
|---|
| 19 | ; CURR(*) = current values, from most recent read | 
|---|
| 20 | ; CHG(*) = changed value to print, if any | 
|---|
| 21 | D FETCHES(0) ; fetch stats into CURR() array - possibly reset BASE array | 
|---|
| 22 | M CHG=CURR | 
|---|
| 23 | D DIFF | 
|---|
| 24 | S ^TMP("BPSOS2",$J,"FREQ")=30 | 
|---|
| 25 | I $P($G(^BPSECX("S",1,0)),U,2)="" D | 
|---|
| 26 | .N %,%H,%I,X D NOW^%DTC S $P(^BPSECX("S",1,0),U,2)=% | 
|---|
| 27 | D EN^VALM("BPS STATISTICS AND MANAGEMENT") | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | INIT ; Entry Code - Init variables and list array | 
|---|
| 31 | N NODISPLY S NODISPLY=1 | 
|---|
| 32 | D CLEAN^VALM10 | 
|---|
| 33 | S VALMCNT=0 ; 0 lines so far | 
|---|
| 34 | D LABELS^BPSOS2C | 
|---|
| 35 | D HDR | 
|---|
| 36 | D FETCHES(1) ; set up CURR | 
|---|
| 37 | M CHG=CURR | 
|---|
| 38 | D DIFF ; compute DIFF = differences and changed ones go into CHG | 
|---|
| 39 | D VALUES^BPSOS2B ; displays whatever's in CHG() and kills it off | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | ; Define Current (CURR) array and reset BASE | 
|---|
| 43 | ; | 
|---|
| 44 | ; Input variable -> B = 0 Reset (kill) BASE values and retrieve | 
|---|
| 45 | ;                         values | 
|---|
| 46 | ;                       1 Just retrieve current values | 
|---|
| 47 | FETCHES(B) N DST | 
|---|
| 48 | S DST="CURR" | 
|---|
| 49 | S ^TMP("BPSOS2",$J,"$H",DST)=$H | 
|---|
| 50 | D FETCH58(DST_"(""COMM"")") | 
|---|
| 51 | D FETSTAT(DST_"(""STAT"")") | 
|---|
| 52 | ; | 
|---|
| 53 | ;If entering option or resetting permanent values clear base | 
|---|
| 54 | I B=0 K BASE S ^TMP("BPSOS2",$J,"$H","BASE")=$H | 
|---|
| 55 | Q | 
|---|
| 56 | ; | 
|---|
| 57 | DIFF ;EP - from BPSOS2A | 
|---|
| 58 | N A,B S A="" | 
|---|
| 59 | F  S A=$O(CURR(A)) Q:A=""  S B="" F  S B=$O(CURR(A,B)) Q:B=""  D | 
|---|
| 60 | .I A="STAT" S CHG(A,B)=CURR(A,B) | 
|---|
| 61 | .I A="COMM" S CHG(A,B)=CURR(A,B)-$G(BASE(A,B)) | 
|---|
| 62 | ; | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | FETCH58(DST) ; send DST = closed root of the destination | 
|---|
| 66 | K @DST | 
|---|
| 67 | N FN,DIC,DR,DA,DIQ,TMP ; note that DA=1 is hardcoded | 
|---|
| 68 | S (FN,DIC)=9002313.58,DR="200:219",DIQ="TMP(",DA=1 | 
|---|
| 69 | D EN^DIQ1 | 
|---|
| 70 | M @DST=TMP(FN,1) | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | FETSTAT(DEST) ; | 
|---|
| 74 | ; send DEST = closed root of the destination | 
|---|
| 75 | K @DEST | 
|---|
| 76 | N Q,N,A F Q=0:10:90,31 D | 
|---|
| 77 | .S A="" F N=0:1 S A=$O(^BPST("AD",Q,A)) Q:A="" | 
|---|
| 78 | . I Q#10 S @DEST@(Q\10*10)=@DEST@(Q\10*10)+N | 
|---|
| 79 | . E  S @DEST@(Q)=N ; relies on multiples of 10 coming first! | 
|---|
| 80 | Q | 
|---|
| 81 | ; | 
|---|
| 82 | UPDFREQ() ; | 
|---|
| 83 | Q 3 | 
|---|
| 84 | ; | 
|---|
| 85 | CLEARAT() ; | 
|---|
| 86 | S Y=$P(^BPSECX("S",1,0),U,2) X ^DD("DD") Q Y | 
|---|
| 87 | ; | 
|---|
| 88 | HDR ; -- header code | 
|---|
| 89 | S VALMHDR(1)="Communications statistics last cleared on "_$$CLEARAT | 
|---|
| 90 | S XQORM("B")="U1" ; Default action is Update | 
|---|
| 91 | Q | 
|---|
| 92 | ; | 
|---|
| 93 | UPD ;EP - From BPSOS2A ; Protocol BPS P2 UPDATE | 
|---|
| 94 | D UPDATE(1) | 
|---|
| 95 | S VALMBCK="",XQORM("B")="U1" | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | CONTUPD ; Protocol BPS P2 CONTINUOUS | 
|---|
| 99 | W !!!!! | 
|---|
| 100 | D UPDATE(-1) | 
|---|
| 101 | S VALMBCK="" | 
|---|
| 102 | Q | 
|---|
| 103 | ; | 
|---|
| 104 | UPDATE(COUNTER) ; with COUNTER = a count down | 
|---|
| 105 | N STOP,DTOUT | 
|---|
| 106 | F  D  Q:$G(STOP) | 
|---|
| 107 | .D UPD1 | 
|---|
| 108 | .S COUNTER=COUNTER-1 I 'COUNTER S STOP=1 Q | 
|---|
| 109 | .I '$G(NODISPLY) D | 
|---|
| 110 | ..D MSG^VALM10("In continuous update mode: press Q to Quit") | 
|---|
| 111 | ..N X S X=$$READ^XGF(1,$$UPDFREQ) D MSG^VALM10(" ") | 
|---|
| 112 | ..I '$G(DTOUT),X]"","Qq^^"[X S STOP=1 | 
|---|
| 113 | ..N Y F  R Y:0 Q:'$T  ; clean out typeahead (like mistaken arrow keys) | 
|---|
| 114 | ..; But if timed out, keep looping and updating | 
|---|
| 115 | Q | 
|---|
| 116 | ; | 
|---|
| 117 | UPD1 ; one update cycle | 
|---|
| 118 | N A,B,T | 
|---|
| 119 | D HDR,RE^VALM4 | 
|---|
| 120 | D FETCHES(1) ; fetch into CURR array | 
|---|
| 121 | D DIFF ; compute differences | 
|---|
| 122 | D VALUES^BPSOS2B ; compute values and display if changed | 
|---|
| 123 | Q | 
|---|
| 124 | ; | 
|---|
| 125 | HELP ; -- help code | 
|---|
| 126 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 127 | Q | 
|---|
| 128 | ; | 
|---|
| 129 | EXIT ; -- exit code | 
|---|
| 130 | D FULL^VALM1 | 
|---|
| 131 | Q | 
|---|
| 132 | ; | 
|---|
| 133 | EXPND ; -- expand code | 
|---|
| 134 | Q | 
|---|