| 1 | RORTSK12 ;HCIOFO/SG - REPORT STATS UTILITIES ; 7/15/05 12:00pm | 
|---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ;***** CLEARS THE STATISTICS | 
|---|
| 7 | ; | 
|---|
| 8 | ; REGIEN        Registry IEN | 
|---|
| 9 | ; | 
|---|
| 10 | ; [RPTCODE]     Report Code. By default ($G(RPTCODE)'>0), | 
|---|
| 11 | ;               all statistic data is deleted. | 
|---|
| 12 | ; | 
|---|
| 13 | CLEAR(REGIEN,RPTCODE) ; | 
|---|
| 14 | N DA,DIK,IENS,NODE,RPIEN | 
|---|
| 15 | S DA(1)=+REGIEN,IENS=","_DA(1)_"," | 
|---|
| 16 | S DIK=$$ROOT^DILFD(798.12,IENS) | 
|---|
| 17 | S NODE=$$CREF^DILF(DIK) | 
|---|
| 18 | ; | 
|---|
| 19 | ;--- Clear the report stats | 
|---|
| 20 | I $G(RPTCODE)>0  D  Q | 
|---|
| 21 | . S RPIEN=$$RPIEN^RORUTL08(RPTCODE)  Q:RPIEN'>0 | 
|---|
| 22 | . L +@NODE@(RPTCODE):5 | 
|---|
| 23 | . S DA=$$FIND1^DIC(798.12,IENS,"QX",RPIEN,"B",,"RORMSG") | 
|---|
| 24 | . D:DA>0 ^DIK | 
|---|
| 25 | . L -@NODE@(RPTCODE) | 
|---|
| 26 | ; | 
|---|
| 27 | ;--- Clear all stats | 
|---|
| 28 | L +@NODE:5 | 
|---|
| 29 | S DA=0  F  S DA=$O(@NODE@(DA))  Q:DA'>0  D ^DIK | 
|---|
| 30 | L -@NODE | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | ;***** INCREMENT THE NUMBER OF REPORT RUNS | 
|---|
| 34 | ; | 
|---|
| 35 | ; REGIEN        Registry IEN | 
|---|
| 36 | ; | 
|---|
| 37 | ; RPTCODE       Report Code | 
|---|
| 38 | ; | 
|---|
| 39 | ; [VAL]         Increment value. By default ($G(VAL)'>0), | 
|---|
| 40 | ;               the counter is incremented by 1. | 
|---|
| 41 | ; | 
|---|
| 42 | INC(REGIEN,RPTCODE,VAL) ; | 
|---|
| 43 | N IEN,IENS,NODE,RORBUF,RORFDA,RORMSG,RPIEN,TMP | 
|---|
| 44 | S:$G(VAL)'>0 VAL=1 | 
|---|
| 45 | ; | 
|---|
| 46 | ;--- Get IEN of the report parameters | 
|---|
| 47 | S RPIEN=$$RPIEN^RORUTL08(RPTCODE)  Q:RPIEN'>0 | 
|---|
| 48 | ; | 
|---|
| 49 | ;--- Lock the report stats | 
|---|
| 50 | S IENS=","_(+REGIEN)_"," | 
|---|
| 51 | S NODE=$$ROOT^DILFD(798.12,IENS,1) | 
|---|
| 52 | L +@NODE@(RPTCODE):5 | 
|---|
| 53 | D | 
|---|
| 54 | . ;--- Find and load the report stats | 
|---|
| 55 | . S TMP="@;.02" | 
|---|
| 56 | . D FIND^DIC(798.12,IENS,TMP,"QX",RPIEN,2,"B",,,"RORBUF","RORMSG") | 
|---|
| 57 | . D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,798.12,IENS) | 
|---|
| 58 | . Q:$G(RORBUF("DILIST",0))>1 | 
|---|
| 59 | . S IEN=+$G(RORBUF("DILIST",2,1)) | 
|---|
| 60 | . ;--- Increment the counter | 
|---|
| 61 | . S IENS=$S(IEN>0:IEN,1:"?+1")_","_(+REGIEN)_"," | 
|---|
| 62 | . S RORFDA(798.12,IENS,.01)=RPIEN | 
|---|
| 63 | . S RORFDA(798.12,IENS,.02)=$G(RORBUF("DILIST","ID",1,.02))+VAL | 
|---|
| 64 | . D UPDATE^DIE(,"RORFDA",,"RORMSG") | 
|---|
| 65 | . D:$G(DIERR) DBS^RORERR("RORMSG",-9,,,798.12,IENS) | 
|---|
| 66 | ; | 
|---|
| 67 | ;--- Unlock the report stats | 
|---|
| 68 | L -@NODE@(RPTCODE) | 
|---|
| 69 | Q | 
|---|
| 70 | ; | 
|---|
| 71 | ;***** RETURNS THE REPORT RUN STATISTICS | 
|---|
| 72 | ; | 
|---|
| 73 | ; REGIEN        Registry IEN | 
|---|
| 74 | ; | 
|---|
| 75 | ; .STATS        Reference to a local array where the statistics | 
|---|
| 76 | ;               (collected since the last successful data | 
|---|
| 77 | ;               transmission) will be returned to. | 
|---|
| 78 | ; | 
|---|
| 79 | ;  STATS(       Report Statistics Summary | 
|---|
| 80 | ;                 ^01: Total number of report runs | 
|---|
| 81 | ;    RptCode)   Report run statistics | 
|---|
| 82 | ;                 ^01: Number of report runs | 
|---|
| 83 | ; | 
|---|
| 84 | ; Return Values: | 
|---|
| 85 | ;       <0  Error code | 
|---|
| 86 | ;        0  Ok | 
|---|
| 87 | ; | 
|---|
| 88 | STATS(REGIEN,STATS) ; | 
|---|
| 89 | N IR,RORBUF,RORMSG,RPTCODE,TMP | 
|---|
| 90 | K STATS  S STATS="0" | 
|---|
| 91 | ;--- Load the statistics | 
|---|
| 92 | S TMP=","_(+REGIEN)_"," | 
|---|
| 93 | D LIST^DIC(798.12,TMP,".01I;.02","Q",,,,"B",,,"RORBUF","RORMSG") | 
|---|
| 94 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,798.12,TMP) | 
|---|
| 95 | ;--- Process the statistics | 
|---|
| 96 | S IR=0 | 
|---|
| 97 | F  S IR=$O(RORBUF("DILIST","ID",IR))  Q:IR'>0  D | 
|---|
| 98 | . ;--- Get the IEN of the report parameters | 
|---|
| 99 | . S TMP=+$G(RORBUF("DILIST","ID",IR,.01))  Q:TMP'>0 | 
|---|
| 100 | . ;--- Get the report code | 
|---|
| 101 | . S RPTCODE=$$RPCODE^RORUTL08(TMP)  Q:RPTCODE'>0 | 
|---|
| 102 | . ;--- Get the report statistics | 
|---|
| 103 | . S TMP=+$G(RORBUF("DILIST","ID",IR,.02)) | 
|---|
| 104 | . S $P(STATS(RPTCODE),U)=TMP | 
|---|
| 105 | . S $P(STATS,U)=$P(STATS,U)+TMP | 
|---|
| 106 | ;--- | 
|---|
| 107 | Q 0 | 
|---|