Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ABSPOSX

ABSPOSX.m

Go to the documentation of this file.
  1. ABSPOSX ; IHS/FCS/DRS - Support ;
  1. ;;1.0;PHARMACY POINT OF SALE;;JUN 21, 2001
  1. Q
  1. ; Directory:
  1. ;ABSPOSXE - search for error log entries
  1. ;
  1. AUTO ; EP - automatic, using setup params for date range
  1. S RANGE=$$GETRANGE(1) Q:RANGE<1
  1. D THELIST
  1. Q
  1. INTER ; EP - interactive use
  1. S RANGE=$$GETRANGE Q:RANGE<1
  1. INTERJ ; join
  1. N POP D ^%ZIS Q:$G(POP)
  1. D THELIST
  1. D ^%ZISC
  1. Q
  1. TODAY ;EP
  1. S RANGE=DT_U_DT G INTERJ
  1. YESTER ;EP
  1. S RANGE=$$TADD^ABSPOSUD(DT,-1),RANGE=RANGE_U_RANGE G INTERJ
  1. WEEK ;EP
  1. S RANGE=$$TADD^ABSPOSUD(DT,-8)_U_$$TADD^ABSPOSUD(DT,-1) G INTERJ
  1. ;
  1. THELIST ; calls to all the little things you want to monitor
  1. ; given RANGE=fileman start^end dates
  1. ; Put errors and shouldn't-happen things first:
  1. W "Support Utility to survey Point of Sale activity (",$T(+0),")",!
  1. W "Site: ",$P(^DIC(4,DUZ(2),0),U),!
  1. W "Date: ",$$NOWEXT^ABSPOSU1,!
  1. D SEARCH^ABSPOSXE($$HRANGE(RANGE)) ; error log
  1. D STRANDED ; stranded claims - report and cleanup
  1. D UE ; impossible errors
  1. ; Then put informational things:
  1. D SHOWQ^ABSPOSR2
  1. W "Winnowing old data:",!
  1. W " the log files are in: ",$G(^ABSP(9002313.99,1,"WINNOW LOGS")),!
  1. W "Update of Report Master file: ",$G(^ABSP(9002313.99,1,"ABSPOSM1")),!
  1. D TRANSACT
  1. D PRESSANY^ABSPOSU5()
  1. D VOLUME^ABSPOS35($P(RANGE,U),$P(RANGE,U,2)) ; pharmacy volume
  1. Q
  1. TRANSACT ; count 9002313.57 transactions in RANGE
  1. ; It's a date range; be sure you get them all
  1. D TRANS1
  1. W "Count of complete transactions: ",^TMP($J,"TRANSACT"),!
  1. W "Tally by result type: ",!
  1. N R S R="" F S R=$O(^TMP($J,"TRANSACT","R",R)) Q:R="" D
  1. . W $J(^TMP($J,"TRANSACT","R",R),10)," ",R,!
  1. W "Tally by insurer and by result type: ",!
  1. N INS S INS="" F S INS=$O(^TMP($J,"TRANSACT","INS",INS)) Q:INS="" D
  1. . W ?10,$J(^TMP($J,"TRANSACT","INS",INS),5)," for ",INS
  1. . I ^TMP($J,"TRANSACT","INS",INS)=$G(^TMP($J,"TRANSACT","INS",INS,"R","PAPER")) W " - all PAPER",! Q
  1. . E W !
  1. . S R="" F S R=$O(^TMP($J,"TRANSACT","INS",INS,"R",R)) Q:R="" D
  1. . . W ?20,$J(^TMP($J,"TRANSACT","INS",INS,"R",R),5)," ",R,!
  1. W "Tally by transaction time:",!
  1. N SECS S SECS="" F S SECS=$O(^TMP($J,"TRANSACT","TIME",SECS)) Q:SECS="" D
  1. . W $J(^TMP($J,"TRANSACT","TIME",SECS),10)," - "
  1. . I SECS?1N.N W $$SECSDHMS^ABSPOSUD(SECS)
  1. . E W SECS
  1. . I SECS'?1N.N!(SECS>120) W " - IEN57=",$O(^TMP($J,"TRANSACT","TIME",SECS,""))
  1. . W !
  1. Q
  1. TRANS1 ;
  1. ; ^TMP($J,"TRANSACT")=count of 9002313.57 transactions
  1. ; ^TMP($J,"TRANSACT","R",result)=count by result type
  1. ; ^TMP($J,"TRANSACT","INS",company)=count by insurance company
  1. ; ^TMP($J,"TRANSACT","INS",company,"R",result)=count result by company
  1. ; ^TMP($J,"TRANSACT","TIME",secs)=count
  1. ; ^TMP($J,"TRANSACT","TIME",secs,IEN57) for certain too-long ones
  1. ;
  1. K ^TMP($J,"TRANSACT") S ^TMP($J,"TRANSACT")=0 ; caller should have already NEWed this
  1. N T,X,Y S X=$P(RANGE,U),Y=$P(RANGE,U,2)
  1. I Y'["." S $P(Y,".",2)=24 ; thru midnight, if nothing specified
  1. S T=X
  1. F D S T=$O(^ABSPTL("AH",T)) Q:'T Q:T>Y
  1. . N IEN57 S IEN57=""
  1. . F S IEN57=$O(^ABSPTL("AH",T,IEN57)) Q:'IEN57 D
  1. . . N IEN57C S IEN57C=IEN57_","
  1. . . N R S R=$$GET1^DIQ(9002313.57,IEN57C,4.0098) S:R="" R="null??"
  1. . . N INS S INS=$$GET1^DIQ(9002313.57,IEN57C,1.06) S:INS="" INS="No Insurance"
  1. . . S ^TMP($J,"TRANSACT")=^TMP($J,"TRANSACT")+1
  1. . . S ^TMP($J,"TRANSACT","R",R)=$G(^TMP($J,"TRANSACT","R",R))+1
  1. . . S ^TMP($J,"TRANSACT","INS",INS)=$G(^TMP($J,"TRANSACT","INS",INS))+1
  1. . . S ^TMP($J,"TRANSACT","INS",INS,"R",R)=$G(^TMP($J,"TRANSACT","INS",INS,"R",R))+1
  1. . . N SECS S SECS=$$GET1^DIQ(9002313.57,IEN57C,9999.98)
  1. . . I SECS="" S SECS="null?"
  1. . . S ^TMP($J,"TRANSACT","TIME",SECS)=$G(^TMP($J,"TRANSACT","TIME",SECS))+1
  1. . . I SECS>120 S ^TMP($J,"TRANSACT","TIME",SECS,IEN57)=""
  1. Q
  1. STRANDED ;
  1. N HRS S HRS=$P($G(^ABSP(9002313.99,"ABSPOSX TDIF")),U,3)*24
  1. I 'HRS S HRS=24*31 ; make it a month
  1. D PURGE^ABSPOSU7(HRS)
  1. Q
  1. UE ; ^TMP("ABSPOSUE",$J)=DUZ^$H
  1. N NDAYS S NDAYS=$P($G(^ABSP(9002313.99,"ABSPOSX TDIF")),U,3)
  1. I 'NDAYS S NDAYS=31
  1. N J S J="" Q:$O(^TMP("ABSPOSUE",J))=""
  1. W "Errors which went through ABSPOSUE:",!
  1. F S J=$O(^TMP("ABSPOSUE",J)) Q:J="" D
  1. . N X S X=^TMP("ABSPOSUE",J)
  1. . N H S H=$P(X,U,2)
  1. . I H-$H>NDAYS D Q ; too old to report; winnow it if it's really old
  1. . . I H-$H>(NDAYS+30) K ^TMP("ABSPOSUE",J)
  1. . D ; convert H from $H to Fileman
  1. . . N %H,%,X S %H=H D YMD^%DTC S H=X
  1. . Q:H<$P(RANGE,U) Q:H>$P(RANGE,U,2)
  1. . W "Encountered by ",$P($G(^VA(200,+X,0)),U)," on ",H,!
  1. Q
  1. GETRANGE(HOW) ; HOW = 1 - silently, from setup file
  1. ; otherwise, interactive, ask
  1. I $G(HOW)=1 D
  1. . N X S X=$G(^ABSP(9002313.99,"ABSPOSX TDIF"))
  1. . I X?."^" S X="7^1",^ABSP(9002313.99,"ABSPOSX TDIF")=X
  1. . S RANGE=$$TADD^ABSPOSUD(DT,-$P(X,U))_U_$$TADD^ABSPOSUD(DT,-$P(X,U,2))
  1. E D
  1. . S RANGE=$$DTR^ABSPOSU1
  1. Q RANGE
  1. DTRANGE() ;EP -
  1. N DEF S DEF=$P($$NOWFM^ABSPOSU1,".")
  1. N X S X=$$DTR^ABSPOSU1("From date: ","Thru date: ",DEF,DEF,0)
  1. Q X
  1. HRANGE(RANGE) ;EP - convert fileman^fileman to $H^$H
  1. N I,X,%H,%T,%Y
  1. F I=1:1:$L(RANGE,U) D
  1. . S X=$P(RANGE,U,I)
  1. . D H^%DTC
  1. . S $P(RANGE,U,I)=%H_$S(%T:","_%T,1:"")
  1. Q RANGE