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

HLUCM001.m

Go to the documentation of this file.
  1. HLUCM001 ;CIOFO-O/LJA - HL7/Capacity Mgt API (continued) ;05/01/2012
  1. ;;1.6;HEALTH LEVEL SEVEN;**79,88,103,158**;Oct 13, 1995;Build 14
  1. ;
  1. ADDTMP ; Accumulate totals into ^TMP(TOTALS,$J,...)
  1. ; FAC,ORIGETM,ORIGSTM,TYPEHR,TYPEIO,TYPELR -- req
  1. ;
  1. N CHAR,ERRFLAG,FAC,SEC,START,TOTCURR,TYPEHR,TYPEIO,TYPELR
  1. ;
  1. S CHAR=$G(DATA("CHAR")),SEC=$G(DATA("DIFF")),FAC=$G(DATA("FAC"))
  1. S TYPEHR=$G(DATA("HR")),TYPEIO=$G(DATA("IO")),TYPELR=$G(DATA("LR"))
  1. ;
  1. S START=$$HR($G(DATA("START")))
  1. ;I START<ORIGSTM S START=ORIGSTM
  1. ;I START>ORIGETM S START=ORIGETM
  1. ;
  1. ; Back door way to total by day only. (Dropping HR).
  1. I $D(^TMP($J,"HLUCMDT")) S START=START\1
  1. ;
  1. ; Is delta time greater than 30 minutes?
  1. S ERRFLAG=0
  1. I SEC>1799 D
  1. . S X=TOTALS N TOTALS S TOTALS=X_"ERRTIME",ERRFLAG=1
  1. . D ERRMOVE^HLUCM009(+IEN772) ; Move into ^TMP($J,"HLUCMSTORE","ERR")
  1. ; Store under TOTALS_ERRTIME
  1. ;
  1. ; Maybe, this IEN772 has already been ERRd by ERRMOVE^HLUCM009?
  1. I $D(^TMP($J,"HLUCMSTORE","ERR","X",+IEN772)) D QUIT ;->
  1. . D ERRMOVE^HLUCM009(+IEN772) ; Just to be sure
  1. ;
  1. ; Should this entry even be counted?
  1. I (HLAPI="CMF"!(HLAPI="CM2F"))&(TYPELR'="R") QUIT ;->
  1. ;
  1. ; Accumulating and totaling here...
  1. I TYPELR="R" D ACCUMFAC^HLUCM090
  1. D ACCUMHR
  1. D ACCUMSP
  1. D ACCUMPR
  1. D TOTALING
  1. ;
  1. Q
  1. ;
  1. TOTALING ; Grand totals
  1. S TOTCURR=$G(^TMP(TOTALS,$J))
  1. S $P(TOTCURR,U)=$P(TOTCURR,U)+DATA("CHAR")
  1. I $G(HLUCMADD)'="DON'T ADD. COLLECT3~HLUCM003" D
  1. . S $P(TOTCURR,U,2)=$P(TOTCURR,U,2)+1
  1. S $P(TOTCURR,U,3)=$P(TOTCURR,U,3)+DATA("DIFF")
  1. S $P(TOTCURR,U,4)=$P(TOTCURR,U,4)+1
  1. S ^TMP(TOTALS,$J)=TOTCURR
  1. Q
  1. ;
  1. ACCUMHR ; Hour totaling
  1. ; DATA(),FAC,START,TYPEHR -- req
  1. ;
  1. I HLAPI="CM"!(HLAPI="CM2") D ACCUMLAT^HLUCM009("HR","TM",TYPEHR,START,DATA("PCKG"),DATA("PROT"))
  1. I HLAPI="CMF"!(HLAPI="CM2F") D ACCUMLAT^HLUCM009("HR","TM",TYPEHR,FAC,START,DATA("PCKG"),DATA("PROT"))
  1. ;
  1. ; Total level CATEGORY
  1. S TOTCURR=$G(^TMP(TOTALS,$J,"HR"))
  1. D INCR
  1. S ^TMP(TOTALS,$J,"HR")=TOTCURR
  1. ;
  1. QUIT
  1. ;
  1. ACCUMSP ; Namespace totaling
  1. ; DATA(),FAC,TYPEIO,TYPELR -- req
  1. ;
  1. I HLAPI="CM"!(HLAPI="CM2") D
  1. . D ACCUMLAT^HLUCM009("NMSP","IO",TYPEIO,DATA("PCKG"),START,DATA("PROT"))
  1. . D ACCUMLAT^HLUCM009("NMSP","LR",TYPELR,DATA("PCKG"),START,DATA("PROT"))
  1. I HLAPI="CMF"!(HLAPI="CM2F") D
  1. . D ACCUMLAT^HLUCM009("NMSP","IO",TYPEIO,FAC,DATA("PCKG"),START,DATA("PROT"))
  1. . D ACCUMLAT^HLUCM009("NMSP","LR",TYPELR,FAC,DATA("PCKG"),START,DATA("PROT"))
  1. ;
  1. ; Total level CATEGORY
  1. S TOTCURR=$G(^TMP(TOTALS,$J,"NMSP"))
  1. D INCR
  1. S ^TMP(TOTALS,$J,"NMSP")=TOTCURR
  1. ;
  1. QUIT
  1. ;
  1. ACCUMPR ; Protocol totaling...
  1. ; DATA(),FAC,START -- req
  1. ;
  1. I HLAPI="CM"!(HLAPI="CM2") D ACCUMLAT^HLUCM009("PROT","PR","P",DATA("PROT"),DATA("PCKG"),START)
  1. I HLAPI="CMF"!(HLAPI="CM2F") D ACCUMLAT^HLUCM009("PROT","PR","P",FAC,DATA("PROT"),DATA("PCKG"),START)
  1. ;
  1. ; Total level CATEGORY
  1. S TOTCURR=$G(^TMP(TOTALS,$J,"PROT"))
  1. D INCR
  1. S ^TMP(TOTALS,$J,"PROT")=TOTCURR
  1. ;
  1. QUIT
  1. ;
  1. INCR ; Increment totals in TOTCURR...
  1. ; CHAR,SEC -- req
  1. S $P(TOTCURR,U)=$P(TOTCURR,U)+CHAR ; Number characters
  1. I $G(HLUCMADD)'="DON'T ADD. COLLECT3~HLUCM003" D
  1. . S $P(TOTCURR,U,2)=$P(TOTCURR,U,2)+1
  1. S $P(TOTCURR,U,3)=$P(TOTCURR,U,3)+SEC ; Processing seconds
  1. S $P(TOTCURR,U,4)=$P(TOTCURR,U,4)+1
  1. QUIT
  1. ;
  1. HR(FMDT) ; Return FM DATE and HOUR only...
  1. N HR
  1. S FMDT=$G(FMDT)
  1. I FMDT'?7N&(FMDT'?7N1"."1.N) QUIT "" ;->
  1. S:FMDT'["." FMDT=FMDT_"."
  1. S FMDT=$E(FMDT_"00",1,10) ; .00 thru .23 now...
  1. S HR=+$P(FMDT,".",2)+1
  1. S:HR<10 HR=0_HR S:HR>24 HR=24
  1. QUIT (FMDT\1)_"."_HR
  1. ;
  1. OKPAR101(PAR) ; PAR=IEN101...
  1. N RET,VAL
  1. ;
  1. I PAR=1!(PAR=2) QUIT PAR ;->
  1. I PAR="0^9999999" QUIT PAR ;->
  1. ;
  1. ; Passed as 0^IEN or 0^PROTOCOL NAME...
  1. S VAL=$P(PAR,U,2)
  1. ;
  1. ; Was IEN passed?
  1. I VAL=+VAL D QUIT RET ;->
  1. . S RET=""
  1. . I $D(^ORD(101,+VAL,0)) S RET=PAR
  1. . I '$D(^ORD(101,+VAL,0)) QUIT ;-> Leaving RET=""
  1. ;
  1. ; Name was passed... (Can be up to 63 characters long...)
  1. ; Find IEN for name...
  1. S VAL=$$FIND101(PAR)
  1. ;
  1. ; If VAL=IEN, reset IEN101 to 0^IEN format...
  1. I VAL>0 QUIT "0^"_+VAL ;->
  1. ;
  1. QUIT ""
  1. ;
  1. TYPELR(IEN772,FACNM) ; Is this Local or Remote or Unknown?
  1. ; SITENM -- req
  1. N D772,I773,IEN,IEN870,IO,MIEN,NM,TXT,TYPE,X
  1. ;
  1. ; If SITENM=FACNM, then it isn't remote...
  1. I $G(SITENM)]"",$G(FACNM)]"",SITENM=FACNM QUIT "L" ;->
  1. ;
  1. S D772=$G(^HL(772,+IEN772,0))
  1. ;
  1. ; Mailman check...
  1. S MIEN=$P(D772,U,5) ; get Mailman IEN...
  1. I MIEN S X=$$MAILTYPE^HLUCM009(MIEN) QUIT:X="R" $$SLR(IEN772,"R") ;-> Mailman, and remote...
  1. ;
  1. ; Additional mail check...
  1. I $$MAIL870^HLUCM090(IEN772)="R" QUIT $$SLR(IEN772,"R") ;->
  1. ;
  1. ; Institution check...
  1. I $$INST870^HLUCM090(+IEN772,+$P($$SITE^VASITE,U,3))="R" QUIT $$SLR(IEN772,"R") ;->
  1. ;
  1. ; MSH segment in 773 check...
  1. S TYPE="L",I773=0
  1. F S I773=$O(^HLMA("B",IEN772,I773)) Q:'I773!(TYPE'="L") D
  1. . N DIV,P4,P6
  1. . S TXT="",MIEN=0
  1. . F S MIEN=$O(^HLMA(+I773,"MSH",MIEN)) Q:MIEN'>0 D
  1. . . S TXT=TXT_$G(^HLMA(+I773,"MSH",+MIEN,0))
  1. . QUIT:TXT']"" ;->
  1. . S X=$$SITESMSH^HLUCM009(TXT),P4=$P(X,U),P6=$P(X,U,2)
  1. . S:P4'=P6 TYPE="R"
  1. ;
  1. ; Was anything found?
  1. QUIT:TYPE'="L" $$SLR(IEN772,TYPE) ;->
  1. ;
  1. ; Logical links check...
  1. S IEN870=$$IEN870^HLUCM009(+IEN772) I IEN870 D
  1. . N DATA,MGIEN
  1. . S DATA=$G(^HLCS(870,+IEN870,0))
  1. . QUIT:$P(DATA,U,3)'=1 ;-> Not MAIL...
  1. . S MGIEN=$P($G(^HLCS(870,+IEN870,100)),U) QUIT:MGIEN'>0 ;->
  1. . ; If a MAIL type link and there is an associated mail group,
  1. . ; it is almost always REMOTE. Enough so, that "R" will be assumed.
  1. . ; QUIT:$O(^XMB(3.8,+MGIEN,6,0))'>0 ;-> No remote groups
  1. . S TYPE="R"
  1. . ; Rare to hit this point.
  1. ;
  1. QUIT $$SLR(IEN772,TYPE)
  1. ;
  1. SLR(IEN772,LR) ; Store the L/R type for use for FACILITY sorting
  1. N FAC,HLDATA,PARENT,TYPE,X
  1. Q LR
  1. ;
  1. PREPARE() ; Called by $$CM & $$CM2 and other APIs...
  1. ;
  1. S ORIGSTM=$G(START),ORIGETM=$G(END)
  1. S SITENM=$P($$SITE^VASITE,U,2)
  1. ;
  1. ; Summarize by DAY instead of hour?
  1. I ORIGSTM?7N,ORIGETM']"" D
  1. . S ^TMP($J,"HLUCMDT")=""
  1. . S ORIGETM=ORIGSTM_".24"
  1. ;
  1. D ZEROUP
  1. ;
  1. ; Miscellaneous KILLs...
  1. D KILLS^HLUCM009("START")
  1. ;
  1. ; Build namespace xref
  1. D NMSPXRF^HLUCM009
  1. ;
  1. ; This is where results are returned to caller...
  1. KILL ERRINFO
  1. ;
  1. ; Perform all setup chores. If errors found, they will be placed
  1. ; in ERRINFO(ERROR-REASON)="" array
  1. QUIT:$$SETUP^HLUCM009 "" ;-> Some errors occurred...
  1. ;
  1. Q 1
  1. ;
  1. ZEROUP ; If didn't add 0^...
  1. I $G(IEN101)]"",IEN101'?1N,IEN101'?1"0^".E S IEN101="0^"_IEN101
  1. I $G(PNMSP)]"",PNMSP'?1N,PNMSP'?1"0^".E S PNMSP="0^"_PNMSP
  1. Q
  1. ;
  1. FIND101(VAL) ; No checking for upp/lowercase. Must be passed right!
  1. ; VAL = Protocol name...
  1. N FIEN,IEN,LNM,PNM
  1. ;
  1. S VAL=$P(VAL,"0^",2)
  1. ;
  1. ; Passed as IEN?
  1. I VAL=+VAL,$D(^ORD(101,+VAL,0)) QUIT +VAL ;->
  1. ;
  1. ; Passed as NAME?
  1. S FIEN=0
  1. S LNM=$E(VAL,1,$S($L(VAL)>30:29,1:$L(VAL)-1))
  1. F S LNM=$O(^ORD(101,"B",LNM)) Q:LNM]VAL!(LNM']"")!(FIEN) D
  1. . S IEN=0
  1. . F S IEN=$O(^ORD(101,"B",LNM,IEN)) Q:IEN'>0!(FIEN) D
  1. . . QUIT:$P($G(^ORD(101,+IEN,0)),U)'=VAL ;->
  1. . . S FIEN=+IEN
  1. QUIT $S(FIEN:FIEN,1:"")
  1. ;
  1. REFPROT(PROT) ; If passed by reference, is PROT in array? 0=Don't count, 2=Count
  1. ; PROTYPE -- req
  1. N X
  1. I PROTYPE'=1 QUIT 1 ;-> Not passed by reference...
  1. S X=$P(PROT,"~") I X]"" I $D(IEN101(X)) QUIT 1 ;-> found by name in array
  1. S X=$P(PROT,"~",2) I X]"" I $D(IEN101(+X)) QUIT 1 ;-> found by IEN in array
  1. QUIT ""
  1. ;
  1. REFPCKG(PCKG) ; If passed by reference, is PCKG in array? 0=Don't count,1=OK to count
  1. ; NMSPTYPE -- req
  1. I NMSPTYPE'=1 QUIT 1 ;-> Not passed by reference...
  1. I PCKG]"" I $D(PNMSP(PCKG)) QUIT 1 ;-> found in array
  1. QUIT ""
  1. ;
  1. EOR ; HLUCM001 - HL7/Capacity Mgt API (continued) ;2/27/01 10:15