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

ACHS.m

Go to the documentation of this file.
  1. ACHS ;IHS/ITSC/PMF - CHS SUB-ROUTINES ; [ 01/18/2005 1:14 PM ]
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**2,4,5,7,12,17,18,22**;JUNE 11,2001;Build 43
  1. ;
  1. Q $P($G(^ACHSDENR(DUZ(2),200)),U,P)
  1. C(X,Y) ;EP -Center X in field len Y
  1. Q $J("",$S($D(Y):Y,$D(IOM):IOM,1:80)-$L(X)\2)_X
  1. AOP(N,P) ;EP -N=node, P=piece, ret AO Par
  1. Q $P($G(^ACHSAOP(DUZ(2),N)),U,P)
  1. SUD(P) ;EP -P=piece of SU DIR info
  1. Q $P($G(^ACHSDENR(DUZ(2),100)),U,P)
  1. ASF(F) ;EP -Ret ASUFAC given DUZ(2) ;allows alpha in aufac
  1. Q:'$D(F) -1
  1. Q:'F -1
  1. S F=$P($G(^AUTTLOC(F,0)),U,10)
  1. Q:'($L(F)=6) -1
  1. I F'?6NA Q -1
  1. Q F
  1. BM ;EP -Set bot mar to ACHSBM
  1. S ACHSBM=IOSL-10
  1. I '$D(IO("S")),'$D(ZTQUEUED),IO=IO(0) S ACHSBM=IOSL-4
  1. Q
  1. BRPT ;EP -Stand beg of rpt
  1. I $D(ACHSQIO) F S IOP=ACHSQIO D ^%ZIS Q:'POP H 30
  1. D BM,NOW
  1. S ACHSTIME=$$C^XBFUNC($G(ACHSTIME),80)
  1. S ACHSLOC=$$C^XBFUNC($$LOC,80)
  1. S ACHSPG=0
  1. S ACHSUSR=$$USR
  1. U IO
  1. Q
  1. CLEAN(FROM) ;EP fr ACHSAVAR-clean err glb>90 days
  1. S:FROM="" FROM=$H-90_",00000"
  1. F S FROM=$O(^ACHSERR(FROM),-1) Q:FROM="" D
  1. .K ^ACHSERR(FROM)
  1. Q
  1. ;IF USER-Manager-WARN THEM OF ERR MESS IN ^ACHSERR-CALLED AT THE ENTRY ACT FOR OPT
  1. ISMGR(TMPDUZ) ;EP-opt ACHSMENU
  1. Q:'$D(^ACHSERR)
  1. D VIDEO
  1. S $P(LINE,"-",IOM+1)=""
  1. S KEYNUM=$O(^DIC(19.1,"B","ACHSZMENU","")) ;GET KEY
  1. Q:'$D(^VA(200,TMPDUZ,51,"B",KEYNUM))
  1. W !!,$G(IOBON),$G(IORVON),"You have error messages concerning missing"
  1. W !,"facility or area parameters!!",$G(IOBOFF),$G(IORVOFF)
  1. W !!,"Please take a look at global ^ACHSERR"
  1. W !!!,"Press return to continue..."
  1. D READ^ACHSFU
  1. D ISMGRHD ;HDR FOR ERR MESS FILE
  1. S %H=""
  1. F S %H=$O(^ACHSERR(%H)) Q:%H="" D
  1. .D YX^%DTC S NOW=Y
  1. .I $Y>(IOSL-2),(IO(0)=IO) W !!,"Press return to continue..." D READ^ACHSFU D ISMGRHD
  1. .W !!,NOW,?25,$G(^ACHSERR(%H))
  1. W !!!,"Press return to continue..."
  1. D READ^ACHSFU
  1. K LINE,%H,NOW,KEYNUM
  1. Q
  1. ;HDR FOR ABOVE SUB
  1. ISMGRHD ;EP
  1. W @IOF
  1. W !,"DATE",?15,"TIME",?25,"MESSAGE"
  1. W !,LINE
  1. Q
  1. CLOSEALL ;EP -Close all HFS dev
  1. S ACHS=""
  1. F S ACHS=$O(IO(1,ACHS)) Q:'ACHS S IO=ACHS D ^%ZISC
  1. Q
  1. DIR(O,A,B,Q,H,R) ;EP -^DIR interface
  1. I '$L($G(O)) Q -1
  1. N DIR
  1. S DIR(0)=O
  1. I $L($G(A)) S DIR("A")=A I $L($O(A(""))) S O="" F S O=$O(A(O)) Q:'$L(O) S DIR("A",O)=A(O)
  1. I $L($G(B)) S DIR("B")=B
  1. I $L($G(Q)) S DIR("?")=Q
  1. I $L($G(H)) S DIR("??")=H
  1. I $G(R) F A=1:1:R W !
  1. K O,A,B,Q,H,R,DTOUT,DUOUT,DIRUT,DIROUT
  1. D ^DIR
  1. Q Y
  1. CPI ;EP
  1. W !?21,"*** CONFIDENTIAL PATIENT INFORMATION ***"
  1. Q
  1. DATE(A,N,M) ;EP - prmpt for dt
  1. ; A = "B" or "E"; N = Report Name;M = Modifier for prompt
  1. K DTOUT,DUOUT,DIRUT,DIROUT
  1. I '$L($G(A)) Q -1
  1. I '("BE"[$E(A)) Q -1
  1. I '$D(N) Q -1
  1. S A="Enter The "_$S(A="B":"BEGINNING",1:"ENDING")_$S($L($G(M)):" "_M,1:"")_" Date For The "_N_" Report"
  1. K N,M
  1. F W !! S Y=$$DIR^XBDIR("DO^::E",A) Q:'(Y>DT) D FUDT
  1. Q Y
  1. DIC(D,O,A,B,S) ;EP -DIC Lookup
  1. N DIC
  1. S DIC=D,DIC(0)=$G(O)
  1. I $L($G(A)) S DIC("A")=A
  1. I $L($G(B)) S DIC("B")=B
  1. D ^DIC
  1. Q Y
  1. DIE(DR,Z) ;EP -Ed Doc fld
  1. I $G(Z) F %=1:1:Z W !
  1. S DA=ACHSDIEN,DA(1)=DUZ(2),DIE="^ACHSF("_DUZ(2)_",""D"","
  1. I '$$LOCK("^ACHSF(DUZ(2),""D"",ACHSDIEN)","+") S DUOUT="" Q 0
  1. D ^DIE
  1. I '$$LOCK("^ACHSF(DUZ(2),""D"",ACHSDIEN)","-") S DUOUT="" Q 0
  1. I $D(Y) Q 0
  1. Q 1
  1. DIET(DR,Z) ;EP - Ed Trans fields
  1. I $G(Z) F %=1:1:Z W !
  1. S DA=ACHSTIEN,DA(1)=ACHSDIEN,DA(2)=DUZ(2),DIE="^ACHSF("_DUZ(2)_",""D"","_ACHSDIEN_",""T"","
  1. I '$$LOCK("^ACHSF(DUZ(2),""D"",ACHSDIEN,""T"",ACHSTIEN)","+") S DUOUT="" Q 0
  1. D ^DIE
  1. I '$$LOCK("^ACHSF(DUZ(2),""D"",ACHSDIEN,""T"",ACHSTIEN)","-") S DUOUT="" Q 0
  1. I $D(Y) Q 0
  1. Q 1
  1. DF(S,P) ;EP - Ret Def Svc fr node S, piece P
  1. NEW Y
  1. S Y=$G(ACHSA)
  1. I Y="" S Y=$G(ACHSDA)
  1. I Y="" Q 0
  1. Q $P($G(^ACHSDEF(DUZ(2),"D",Y,S)),U,P)
  1. DN(S,P) ;EP - Ret Denial data from node S, piece P
  1. Q $P($G(^ACHSDEN(DUZ(2),"D",ACHSA,S)),U,P)
  1. DOC(S,P) ;EP - Ret Doc data from node S, piece P
  1. Q $P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,S)),U,P)
  1. EBB(B,E) ;EP - Compare Beg and End dates for a rep
  1. I '(E<B) Q 0
  1. W !!,*7,"The END date is before the BEGINNING date."
  1. Q 1
  1. ERPT ;EP - Stand end of a rep
  1. D ^%ZISC
  1. K ACHS,ACHSBDT,ACHSBM,ACHSEDT,ACHSIO,ACHSLOC,ACHSPG,ACHSQIO,ACHSRPT,ACHST1,ACHST2,ACHST3,ACHSTIME,ACHSUSR,ACHSX,ACHSY,DTOUT,DUOUT,X2,X3,Y
  1. K ACHD,ACHDBDT,ACHDBM,ACHDEDT,ACHDHAT,ACHDIO,ACHDLOC,ACHDPG,ACHDQIO,ACHDRPT,ACHDT1,ACHDT2,ACHDT3,ACHDTIME,ACHDUSR,ACHDX,ACHDY
  1. Q
  1. EX() ;EP - Ret file Exp dir
  1. I $$OS=1,$L($P($G(^AUTTSITE(1,1)),U,2)) Q $P($G(^AUTTSITE(1,1)),U,2) ;unx
  1. I $$OS=2,$L($P($G(^AUTTSITE(1,1)),U,2)) Q $P($G(^AUTTSITE(1,1)),U,2)
  1. Q "C:\EXPORT\"
  1. FC(Y) ;EP -Ret Fin Code-site Y=DUZ(2)
  1. N X
  1. I Y="" Q "UNDEFINED"
  1. S X=$P($G(^AUTTLOC(Y,0)),U,4)
  1. I X="" Q "UNDEFINED"
  1. Q $P($G(^AUTTAREA(X,0),"UNDEFINED"),U,3)_$E($P($G(^AUTTLOC(Y,0),"UNDEFINED"),U,17),2,3)
  1. FMT ;EP
  1. S:'$D(X2) X2="2$"
  1. S:'$D(X3) X3=0
  1. D COMMA^%DTC
  1. S:'X3 X=$P(X," ")
  1. W X
  1. K X2,X3
  1. Q
  1. FUDT ;EP
  1. W !!,*7,"Do not use future dates."
  1. Q
  1. FYSEL(X) ;EP
  1. D:'$G(X) SB1^ACHSFU
  1. N MIN,MAX
  1. ; FY selection if in the CHS globals
  1. F %=0:0 S %=$O(ACHSFYWK(DUZ(2),%)) Q:'% S MIN=$S('$D(MIN):%,1:MIN),MAX=%
  1. S O="N^"_MIN_":"_MAX_":0",B=MAX
  1. K MIN,MAX
  1. Q $$DIR^XBDIR(O,"ENTER FISCAL YEAR",B,"","Invalid FY, Enter FY with all 4 digits","^D SB1^ACHSFU",1)
  1. GDT(JDT) ;EP -JDT-Julian Date, ret Gregorian Date-Ext format
  1. Q:'$G(JDT) -1
  1. Q:JDT<0 -1
  1. Q:JDT>366 -1
  1. Q $$HTE^XLFDT($P($$FMTH^XLFDT($S(JDT>$$JDT(DT):($E(DT,1,3)-1),1:$E(DT,1,3))_"0101"),",")+JDT-1)
  1. ;
  1. Q "NOT FOUND"
  1. H ;EP -menu header
  1. ;D VIDEO
  1. W @IOF
  1. D STATUSLN
  1. D VIDEO
  1. ;ACHS*3.1*18 6.30.2010 IHS.OIT.FCJ NXT 4 LINES
  1. S X=$O(^DIC(9.4,"C","ACHS",0)) ;ACHS*3.1*18
  1. S V=$G(^DIC(9.4,X,"VERSION")) ;ACHS*3.1*18
  1. S A=$O(^DIC(9.4,X,22,"B",V,0)) ;ACHS*3.1*18
  1. S P=0 F S P=$O(^DIC(9.4,X,22,A,"PAH","B",P)) Q:P'?1.N.N S P1=P ;ACHS*3.1*18
  1. S MENTITLE=$J("",2*$L(IORVON)-1)_IORVON_$P(XQY0,U,2)_IORVOFF
  1. ;W !!!,$$C^XBFUNC($P($T(ACHS+1),";",4)_", "_$$CV^XBFUNC("ACHS")),!,$$C^XBFUNC($$LOC()),!,$$C^XBFUNC(MENTITLE) ;ACHS*3.1*18 6.30.2010 IHS.OIT.FCJ
  1. W !!,$$C^XBFUNC($P($T(ACHS+1),";",4)),!,$$C^XBFUNC("VERSION: "_$$CV^XBFUNC("ACHS")_" PATCH "_P1),!,$$C^XBFUNC($$LOC()),!,$$C^XBFUNC(MENTITLE) ;ACHS*3.1*18 6.30.2010 IHS.OIT.FCJ
  1. Q
  1. STATUSLN ;
  1. I $$VERSION^%ZOSV(1)["NT" Q
  1. S JOB=$J
  1. X ^%ZOSF("UCI") ;GET CURRENT UCI,VOL
  1. S MYLINE="Device: "_$G(IO)_" Job no.: "_JOB_" "_$S($$OS^ACHS=2:"Windows",1:"Unix")_" Device: "_$G(IO("ZIO"))_" [UCI,VOL]: "_Y
  1. D PREP^XGF
  1. D SAY^XGF(1,1,MYLINE,"R1")
  1. D CLEAN^XGF
  1. Q
  1. ;
  1. HELP(L,R) ;EP -Dis at label L, RTN R
  1. N X
  1. W !
  1. F %=1:1 S X=$T(@L+%^@R) Q:($P(X,";",3)="###")!(X="") D
  1. . I $P(X,";",3)="@" W @($P(X,";",4)) Q
  1. . W !?4,$P(X,";",3)
  1. .Q
  1. Q
  1. ;
  1. HRN(P,L) ;EP -Ret HRN for DFN-P DUZ(2)-L
  1. ;ITSC/SET/JVK ACHS*3.1*12 ADD BELOW COMMENT FOR IHS/OKCAO/POC PAWNEE BEN. PKG.
  1. ;I +$P($G(^AUTTLOC(DUZ(2),0)),U,1)=505613 Q $$GET1^DIQ(1808000,P_",",1
  1. Q $P($G(^AUPNPAT(P,41,L,0)),U,2)
  1. ;
  1. IM() ;EP - ReT file Imp dir
  1. I $$OS=1,$L($P($G(^AUTTSITE(1,1)),U)) Q $P($G(^AUTTSITE(1,1)),U) ;UNIX IMPORT PATH
  1. I $$OS=2,$L($P($G(^AUTTSITE(1,1)),U)) Q $P($G(^AUTTSITE(1,1)),U) ;DOS IMPORT PATH
  1. Q "C:\IMPORT\"
  1. ;
  1. INSURED(DFN,ACHSDATE) ;EP - Does pt have INS on a dt
  1. I $$MCR^AUPNPAT2(DFN,ACHSDATE) Q 1
  1. I $$MCD^AUPNPAT2(DFN,ACHSDATE) Q 1
  1. I $$PI^AUPNPAT2(DFN,ACHSDATE) Q 1
  1. I $$RRE(DFN,ACHSDATE) Q 1
  1. Q 0
  1. ;
  1. JDT(X1,ACHS) ;EP - Given FM dt, Ret Julian Dt. IF ACHS, 3 places.
  1. Q:'$D(X1) -1
  1. Q:'(X1?7N) -1
  1. S X2=$E(X1,1,3)_"0101"
  1. D ^%DTC
  1. I '$G(ACHS) Q X+1
  1. S ACHS=X+1,ACHS="000"_ACHS
  1. Q $E(ACHS,$L(ACHS)-2,$L(ACHS))
  1. ;
  1. JTF(JDT) ;EP - Given Julian dt ret fm dt
  1. Q:'$G(JDT) -1
  1. Q:JDT<0 -1
  1. Q:JDT>366 -1
  1. Q $$FMADD^XLFDT($S(JDT>$$JDT(DT):($E(DT,1,3)-1),1:$E(DT,1,3))_"0101",JDT-1)
  1. ;
  1. L(F,N) ;EP - F = File #; N = Field #.
  1. Q:$D(ZTQUEUED)!$D(IO("S"))!($G(IOST)'["C-")
  1. W !?($L($P($G(^DD(F,N,0)),U))+1),"|",$$REPEAT^XLFSTR("-",+$P($P($G(^DD(F,N,0)),U,5),">",2)),"|"
  1. Q
  1. ;
  1. LOC() ;EP - Ret loc
  1. Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P($G(^DIC(4,DUZ(2),0)),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
  1. ;
  1. LOCK(V,M) ;EP - LOCK var V, mode M (+/-).
  1. I '$L($G(M)) W !,"MODE NOT DEFINED IN LOCK CALL." D RTRN Q 0
  1. I '("+-"[$G(M)) W !,"BAD MODE PARAMETER IN LOCK CALL." D RTRN Q 0
  1. N C,L
  1. S C=0,L=10
  1. G:M="-" LOCK1
  1. F LOCK +@V:3 G:$T LOCK2 G:C=L LOCK2 D LOCKMSG
  1. Q:$T ;FCJ
  1. LOCK1 ;
  1. F LOCK -@V:3 Q:$T Q:C=L D LOCKMSG
  1. LOCK2 ;
  1. E W:'$D(ZTQUEUED) *7,*7,!,$S(M="-":"UN",1:""),"LOCK OF '",V,"' FAILED.",!!,"NOTIFY PROGRAMMER IMMEDIATELY." D RTRN I 0
  1. Q $T
  1. ;
  1. LOCKMSG ;
  1. S C=C+1
  1. Q:$D(ZTQUEUED)
  1. W !,$S(M="-":"UN",1:""),"LOCK of node '",V,"' failed. Retry ",C," of ",L,"."
  1. Q
  1. ;
  1. N A,D,I,L,N,R,V
  1. S L=18,R=61,D=R-L+1,N=R-L-1
  1. ;
  1. S I=$O(^DIC(9.4,"C","ACHS",0)) ;CHECK FOR IEN OF ACHS PACKAGE ENTRY
  1. I I="" W !!,"PACKAGE FILE ENTRY FOR THE 'CONTRACT HEALTH MGMT SYSTEM' IS INCOMPLETE!",!,"INFORM YOUR SITE MANAGER IMMEDIATELY!!" Q
  1. ;
  1. S V=$G(^DIC(9.4,I,"VERSION")) ;CHECK CURRENT VERSION NUMBER
  1. I V="" W !!,"PACKAGE FILE ENTRY FOR THE 'CONTRACT HEALTH MGMT SYSTEM' IS INCOMPLETE!",!,"INFORM YOUR SITE MANAGER IMMEDIATELY!!"
  1. ;
  1. S A=$O(^DIC(9.4,I,22,"B",V,0)) ;
  1. S Y=$$FMTE^XLFDT($P($G(^DIC(9.4,I,22,A,0)),U,2)) ;'DATE DISTIBUTED'
  1. S P=0 F S P=$O(^DIC(9.4,I,22,A,"PAH","B",P)) Q:P'?1.N.N S P1=P ;ACHS*3.1*18 6.30.2010 IHS.OIT.FCJ ADDED LINE, SPLIT NXT LINE AND ADDED PATCH #
  1. W @IOF,!,$$C^XBFUNC($$REPEAT^XLFSTR("*",D)),!?L,"*",$$C^XBFUNC("Indian Health Service",N),?R,"*",!?L,"*",$$C^XBFUNC($P($T(ACHS+1),";",4),N),?R,"*"
  1. W !?L,"*",$$C^XBFUNC("Version "_V_" Patch "_P1_", "_Y,N),?R,"*",!,$$C^XBFUNC($$REPEAT^XLFSTR("*",D))
  1. W !!,$$C^XBFUNC($$LOC())
  1. Q
  1. NOW ;EP - Set cur time into ACHSTIME
  1. S ACHSTIME=$$HTE^XLFDT($H)
  1. Q
  1. OS() ;EP - Ret OS fr ^%ZOSF("OS") or RPMS Site file.
  1. I $G(^%ZOSF("OS"))["MSM-UNIX" Q 1
  1. I $G(^%ZOSF("OS"))["MSM-PC" Q 2
  1. I $G(^%ZOSF("OS"))["OpenM-NT",($P($G(^AUTTSITE(1,0)),U,21)) Q $P($G(^AUTTSITE(1,0)),U,21)
  1. I $P($G(^AUTTSITE(1,0)),U,21) Q $P($G(^AUTTSITE(1,0)),U,21)
  1. Q 1 ; Default is UNIX if "OS" and RPMS SITE can't determine.
  1. PARM(N,P) ;EP - N = node, P= piece, return the fac parameter value.
  1. Q $P($G(^ACHSF(DUZ(2),N)),U,P)
  1. PB() ;EP - Print/Browse.
  1. Q $$DIR^XBDIR("SO^P:PRINT Output;B:BROWSE Output on Screen","Do you want to ","PRINT","","","",2)
  1. PTLK ;EP Stand pt lookup using DIC.
  1. N ACHSDUZ2
  1. I $$PARM(2,5)="Y" S ACHSDUZ2=DUZ(2),DUZ(2)=0
  1. ;IHS/OKCAO/POC PAWNEE BEN
  1. I +$P($G(^AUTTLOC(DUZ(2),0)),U,10)=505613 D
  1. .D PAWNEE
  1. .Q
  1. E D
  1. .S DIC="^AUPNPAT(",DIC(0)="AEMQ",AUPNLK("INAC")=""
  1. .I $G(DFN),$D(^DPT(DFN,0)) S DIC("B")=$P($G(^DPT(DFN,0)),U)
  1. .D ^DIC
  1. .K DFN,DIC,AUPNLK("INAC")
  1. .I Y'<1 S DFN=+Y
  1. ;ITSC/SET/JVK END CHGS
  1. I $G(ACHSDUZ2) S ACHSYAYA=ACHSDUZ2,DUZ(2)=ACHSDUZ2
  1. K ACHSYAYA
  1. Q
  1. RPL(X,Y,Z) ;EP - In X, Replace Y with Z.
  1. F Q:'$F(X,Y) S X=$P(X,Y,1)_Z_$P(X,Y,2,999)
  1. Q X
  1. RTRN ;EP - ask usr to press RET
  1. S ACHSQUIT=0
  1. I IOST["C-",'$D(IO("S")) S Y=$$DIR^XBDIR("E","Press RETURN To Continue or ^ to Exit or Cancel...","","","",1) X ^%ZOSF("TRMRD") I Y=0!(Y=27)!(X=U) S ACHSQUIT=1
  1. Q
  1. SB(X) ;EP - Strip leading & trailing blanks from X.
  1. X ^DD("FUNC",$O(^DD("FUNC","B","STRIPBLANKS",0)),1)
  1. Q X
  1. TRAN(S,P) ;EP - Ret Transaction data from node S, piece P
  1. ; S will always be 0.
  1. Q $P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,"T",ACHSTIEN,S)),U,P)
  1. USR() ;EP - Ret name of current user for ^VA(200.
  1. I $G(DUZ)="" Q "DUZ UNDEFINED"
  1. I $G(DUZ)=0 Q "DUZ IS 0"
  1. I $D(^VA(200,DUZ,0))#2 Q $P(^VA(200,DUZ,0),U,1)
  1. Q "UNK"
  1. VIDEO ;EP - Set reverse video vars
  1. S X="IORVON;IORVOFF;IOBON;IOBOFF;IOINORM" D ENDR^%ZISS
  1. ;At list vars code for normal follows codes for blinking and reverse.
  1. S IZZZNORM=$G(IOINORM)
  1. Q
  1. YN ;EP
  1. W !!,"Enter a ""Y"" for YES or an ""N"" for NO."
  1. Q
  1. HDR ;EP - Print menu header.
  1. S X=$O(^DIC(19,"B",X,0))
  1. I X="" W !!,"MENU HEADER CANNOT BE PRINTED!" Q
  1. S X=$P($G(^DIC(19,X,0)),U,2)
  1. G SHDR
  1. PHDR ;EP - Print parent menu header.
  1. S X=$P($G(^DIC(19,+^XUTL("XQ",$J,^XUTL("XQ",$J,"T")-1),0)),U,2)
  1. Q:'$L(X)
  1. S Y=+^XUTL("XQ",$J,^XUTL("XQ",$J,"T")-1)
  1. I Y=0 W !!,"PARENT MENU CANNOT BE FOUND IN XUTL!" Q
  1. S Y=$P($G(^DIC(19,Y,0)),U)
  1. I Y="ACHSMENU" D LOGO Q
  1. SHDR ;EP - Screen header.
  1. I '$D(IORVOFF) D VIDEO
  1. W @IOF,!,$$C^XBFUNC($P($T(ACHS+1),";",4)),!,$$C^XBFUNC($$LOC()),!,$$C^XBFUNC(X),!!
  1. Q
  1. ZEROTH(A,B,C,D,E,F,G,H,I,J,K) ;EP - Return 0th node. A is file #, rest fields.
  1. N Z
  1. I '$G(A) Q -1
  1. I '$G(B) Q -1
  1. F Z=67:1:75 Q:'$G(@($C(Z))) S A=+$P($G(^DD(A,B,0)),U,2),B=@($C(Z))
  1. I 'A!('B) Q -1
  1. I '$D(^DD(A,B,0)) Q -1
  1. Q U_$P($G(^DD(A,B,0)),U,2)
  1. RRE(P,D) ; Does pt have Railroad insurance on date? 1 = yes, 0 = no.
  1. ; I = IEN in ^AUPNRRE multiple.
  1. I '$G(P) Q 0
  1. I '$G(D) Q 0
  1. N I,Y
  1. S Y=0,U="^"
  1. I '$D(^DPT(P,0)) G RREX
  1. I $P($G(^DPT(P,0)),U,19) G RREX
  1. I '$D(^AUPNPAT(P,0)) G RREX
  1. I '$D(^AUPNRRE(P,11)) G RREX
  1. I $D(^DPT(P,.35)),$P(^DPT(P,.35),U)]"",$P($G(^DPT(P,.35)),U)<D G RREX
  1. S I=0
  1. F S I=$O(^AUPNRRE(P,11,I)) Q:I'=+I D
  1. . Q:$P(^AUPNRRE(P,11,I,0),U)>D
  1. . I $P($G(^AUPNRRE(P,11,I,0)),U,2)]"",$P($G(^AUPNRRE(P,11,I,0)),U,2)<D Q
  1. . S Y=1
  1. .Q
  1. RREX ;
  1. Q Y
  1. FY(%) ;EP - Given a FY, return beg/end dates.
  1. NEW X,Y
  1. S X=$P($G(^ACHSF(DUZ(2),0)),U,6),Y=+$P($G(^ACHSF(DUZ(2),0)),U,7)
  1. S %=$S(%>50:2,1:3)_%-Y
  1. S X=%_X
  1. S %=$E(X,1,3)
  1. S Y=%+$S($E(X,4,7)="0101":0,1:1) ; Year
  1. S %=$E(X,4,5) I $E(X,6,7)="01" S %=%-1 I '% S %=12
  1. S %="0"_%,%=$E(%,$L(%)-1,$L(%)) ; Month
  1. S Y=$E(Y,1,3)_%_$P("31^28^31^30^31^30^31^31^30^31^30^31",U,%) ; Day
  1. I $E(Y,4,5)="02",'((1700+$E(Y,1,3))#4) S Y=$E(Y,1,5)_"29"
  1. I $E(X,4,5)=$E(Y,4,5) S %=$E(X,6,7),%=%-1,%="0"_%,%=$E(%,$L(%)-1,$L(%)),Y=$E(Y,1,5)_%
  1. Q X_U_Y
  1. PAWNEE ;IHS/OKCAO/POC PAWNEE BEN PKG
  1. S DIC=1808000,DIC(0)="IQAZEM" S:+$G(DFN) DIC("B")=$P($G(^DPT(DFN,0)),U)
  1. D ^DIC K DIC
  1. I $D(DUOUT)!(+Y<0) K DFN Q
  1. S DFN=+Y,ACHSBPNO=$P($G(^AZOPBPP(+Y,0)),U,2)
  1. W !,"PAWNEE BENEFIT NUMBER: ",ACHSBPNO
  1. S PBEXDT=+$P($G(^AZOPBPP(+Y,0)),U,3),Y=PBEXDT X ^DD("DD")
  1. I PBEXDT<DT W !!,*7,"PBPP Eligibility Card Expired on ",Y," --TRANSACTION CANCELLED" K DFN Q
  1. Q