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

ACHSBMC.m

Go to the documentation of this file.
  1. ACHSBMC ; IHS/ITSC/PMF - RCIS INTERFACE SUBROUTINES ;
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;**5,10,11,13,16,22,23**;JUN 11,2001;Build 43
  1. ;IHS/SET/GTH ACHS*3.1*5 12/06/2002 -Remove ref to non-package global
  1. ;3.1*10 4.19.04 IHS/OIT/FCJ ADD OPT FOR CALLS FR THE DEN PKG
  1. ; TO SET DEFAULT VARS & CLOSE THE REF AFTER ISSUED DEN
  1. ;3.1*11 8.24.04 IHS/OIT/FCJ REF NOT REQ W/IN 180 DAYS OF RCIS ST DT
  1. ;3.1*11 8.24.04 IHS/OIT/FCJ TST FOR RCIS VER AND MULT DEN/PRV
  1. ;3.1*13 8.15.05 IHS/OIT/FCJ PARAMETER TST FOR REQ'D REF FOR PO & DEN TST
  1. ;3.1*13 8.30.06 IHS/OIT/FCJ ADD UPDATE FOR APPEAL, MULT CHG TO PASS SQA
  1. ;ACHS*3.1*16 11/3/2009 IHS.OIT.FCJ FX FOR FY 10
  1. ;ACHS*3.1*22 IHS.OIT.FCJ ADDED DELETE DX FR RCIS AND SELECTING APPRV REFS
  1. ;ACHS*3.1*23 IHS.OIT.FCJ ADDED SELECTING APPROVED FR DENIAL OPTION
  1. ;
  1. ADD ;EP - link P.O. to referral
  1. I '$$LINK W !,"The link to the Referral system is not on." Q
  1. ADD1 ;
  1. D ^ACHSUD
  1. Q:'$D(ACHSDIEN)
  1. I $$DOC^ACHS(0,12)=4 W *7,!,"This document has been canceled." G ADD1
  1. ;I $$DOC^ACHS(2,7) W *7,!,"This document is already linked to Referral ",$P($G(^BMCREF($$DOC^ACHS(2,7),0)),U,2),"." G ADD1;IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. I $$DOC^ACHS(2,7) W *7,!,"This document is already linked to Referral ",$$GET1^DIQ(90001,$$DOC^ACHS(2,7),.02),"." G ADD1 ;IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. N ACHS
  1. S ACHS="",ACHS("ADD")=1 ; This acts as a flag in GETREF().
  1. ADD2 ;
  1. D GETREF(.ACHS)
  1. Q:$D(DUOUT)!$D(DTOUT)!(ACHS<1)
  1. I '($$DOC^ACHS(0,22)=DFN) D G ADD2
  1. .W *7,!,"The patient in the Referral is '",$P($G(^DPT(DFN,0)),U),"'."
  1. .W !,"The patient in the P.O. is '",$S($$DOC^ACHS(0,22):$P($G(^DPT($$DOC^ACHS(0,22),0)),U),1:"<missing>"),"'."
  1. .Q
  1. ;GET REF IEN
  1. I '$$DIE^ACHS("62////"_ACHS) W *7,!,"Addition of Referral failed in routine ACHSBMC." D RTRN^ACHS Q
  1. S ACHSREF=ACHS
  1. D AUTH,DX,PX
  1. Q
  1. ; ------------------------
  1. AUTH ;EP - Update the P.O. status in REF
  1. ; ACHSREF = Ref IEN Req
  1. ; ACHSDIEN = P.O. IEN, "D" level Req
  1. ;
  1. I '$$LINK Q
  1. I $$DOC^ACHS(0,12)=4 D Q ; If P.O. is canceled, delete.
  1. .D AUTH^BMCCHS(ACHSREF,ACHSDIEN,"D")
  1. .K DIC,DIADD,LAYGO ; ACHS*3.1*23
  1. .I '$$DIE^ACHS("62///@")
  1. N ACHS,ACHSTIEN
  1. S ACHS(.02)=$$DOC^ACHS(0,9)
  1. S ACHS(.03)=$$DOC^ACHS("ZA",1)
  1. I 'ACHS(.03) S ACHS(.03)=$$DOC^ACHS("PA",1)
  1. S ACHS(.04)="",ACHSTIEN=0
  1. F S ACHSTIEN=$O(^ACHSF(DUZ(2),"D",ACHSDIEN,"T",ACHSTIEN)) Q:'(ACHSTIEN=+ACHSTIEN) I $$TRAN^ACHS(0,5)="F" S ACHS(.04)=1 Q
  1. S ACHSTIEN=0,ACHS(.06)=9999999,ACHS(.07)=0
  1. F S ACHSTIEN=$O(^ACHSF(DUZ(2),"D",ACHSDIEN,11,ACHSTIEN)) Q:'(ACHSTIEN=+ACHSTIEN) D
  1. .I $P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,0)),U,2)<ACHS(.06) S ACHS(.06)=$P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,0)),U,2)
  1. .I $P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,0)),U,3)>ACHS(.07) S ACHS(.07)=$P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,0)),U,3)
  1. I ACHS(.06)=9999999 K ACHS(.06)
  1. I ACHS(.07)=0 K ACHS(.07)
  1. ;ACHS*3.1*16 11/3/2009 IHS.OIT.FCJ FX FOR FY 10
  1. ;S ACHS(.08)="0"_$$DOC^ACHS(0,14)_"-"_$$FC^ACHS(DUZ(2))_"-"_$$DOC^ACHS(0,1)
  1. S ACHS(.08)=$E($$DOC^ACHS(0,27),3,4)_"-"_$$FC^ACHS(DUZ(2))_"-"_$$DOC^ACHS(0,1)
  1. S ACHS(.09)=$$DOC^ACHS(0,8)
  1. ;
  1. D AUTH^BMCCHS(ACHSREF,ACHSDIEN,"P",.ACHS)
  1. K DIC,DIADD,LAYGO ; ACHS*3.1*23
  1. I '$$DIE^ACHS("62////"_ACHSREF)
  1. Q
  1. ; ----------------------------
  1. DX ;EP - Trans DX info to RCIS.
  1. ; ACHSDIEN = P.O. IEN, "D" level req
  1. ;
  1. I '$$LINK Q
  1. N ACHS,ACHSDX
  1. S ACHS(.02)=$$DOC^ACHS(0,22) ; Patient DFN
  1. S ACHS(.03)=$$DOC^ACHS(2,7) ; Referral IEN
  1. S ACHS(.04)="F",ACHS(.06)=""
  1. S ACHSDX=0
  1. F S ACHSDX=$O(^ACHSF(DUZ(2),"D",ACHSDIEN,9,ACHSDX)) Q:'(ACHSDX=+ACHSDX) D
  1. .S ACHS(.01)=+$P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,9,ACHSDX,0)),U)
  1. .;The first DX on the EOBR is the primary DX.
  1. .S ACHS(.05)=$S(ACHSDX=1:"P",1:"S")
  1. .D DXA^BMCCHS(ACHS(.03),.ACHS)
  1. K DIC,DLAYGO ; ACHS*3.1*23
  1. Q
  1. DX1 ;EP;UPDATE FOR ICD9 FIX ;ACHS*3.1*22 ADDED CALL TO DELETE DX IN RCIS
  1. ; ACHSDIEN = P.O. IEN, "D" level req
  1. ;
  1. N ACHS
  1. S ACHS(.02)=$$DOC^ACHS(0,22) ; Patient DFN
  1. S ACHS(.03)=$$DOC^ACHS(2,7) ; Referral IEN
  1. S ACHS(.04)="F",ACHS(.06)=""
  1. ;ADD
  1. S ACHS(.01)=ACHSICDN
  1. ;The first DX on the EOBR is the primary DX.
  1. S ACHS(.05)=$S(ACHSDX=1:"P",1:"S")
  1. D DXA^BMCCHS(ACHS(.03),.ACHS)
  1. ;DEL
  1. S ACHS(.01)=ACHSICDO
  1. D DXD^BMCCHS(ACHS(.03),.ACHS)
  1. K DIC,DLAYGO ; ACHS*3.1*23
  1. Q
  1. ; ----------------------------
  1. GETREF(ACHS) ;EP - select ref, retrieve info
  1. I '$$LINK Q
  1. GETREF0 W !
  1. N DIC,D
  1. ; In DIC("S"), the Ref must be [C]HS and [A]ctive.
  1. S DIC="^BMCREF(",DIC(0)="AEMQ",DIC("A")="Select RCIS REFERRAL by Patient or by Referral Date or #: "
  1. I $G(ACHS),$D(^BMCREF(ACHS)) D SET^BMCCHS(ACHS,.ACHS) S DIC("B")=$P($G(^DPT(ACHS(.03),0)),U)
  1. ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ ADD NXT SECT TO ALLOW SEL REF FOR DEN
  1. GETREF1 ;
  1. D ^DIC
  1. Q:$D(DUOUT) ;ACHS*3.1*23
  1. I $G(ACHD("FAC"))'="" D GETREF3
  1. E D GETREF2
  1. G:$D(DUOUT) GETREF0 ;ACHS*3.1*23
  1. I Y=1,$$GET1^DIQ(90001.31,DUZ(2),4104)="NO" Q ;ACHS*3.1*23
  1. ;ACHS*3.1*11 8.24.04 IHS/ITSC/FCJ REF NOT REQ IF W/IN 180 DAYS OF IMPLEMENTING RCIS
  1. Q:Y<1 ;ACHS*3.1*11 8.24.04 IHS/ITSC/FCJ
  1. ;Q:(Y<1)!('$G(ACHS)) ;ACHS*3.1*11 8.24.04 IHS/ITSC/FCJ
  1. D GETREF4
  1. D EN^XBVK("BMC")
  1. Q
  1. GETREF2 ; TEST FOR ADDING NEW PO'S
  1. ;D ^DIC ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ CALLED ABOVE
  1. I Y<1 D Q
  1. . Q:$D(DUOUT)!$D(DTOUT)!($G(ACHS("ADD")))
  1. . N A,I,V
  1. . ;S Y=$P($G(^BMCPARM(DUZ(2),0)),U,24);IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. . S Y=$$GET1^DIQ(90001.31,DUZ(2),.24,"I") ;IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. . I Y,$$FMDIFF^XLFDT(DT,Y)<180,$$DIR^XBDIR("Y","Are you sure you want to enter a P.O. w/o a Referral","N","","","",1) K ACHS,ACHSREF Q
  1. . ;ACHS*3.1*13 8.15.05 IHS/OIT/FCJ ADD NXT 2 LNS TO TST PAR REQ REF FOR PO
  1. . S Y=$$GET1^DIQ(90001.31,DUZ(2),4104)
  1. . I Y="NO",$$DIR^XBDIR("Y","Are you sure you want to enter a P.O. w/o a Referral","N","","","",1) K ACHS,ACHSREF Q
  1. . Q:$D(DUOUT) ;ACHS*3.1*23
  1. . W *7,!!,"You must have a CHS referral to enter a P.O.",!!
  1. . S DUOUT=$$DIR^XBDIR("E","Press RETURN...")
  1. Q
  1. ;
  1. GETREF3 ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ TST CALL FR DEN PKG ADDED NXT 3 LINES
  1. I Y<1 D Q
  1. . Q:$D(DUOUT)!$D(DTOUT)
  1. . W *7,!!,"A Referral has not been entered.",!!
  1. Q
  1. ;
  1. GETREF4 ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ ADD LN LABEL NXT SEC
  1. S ACHS=+Y
  1. D SET^BMCCHS(ACHS,.ACHS)
  1. ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ ADDED TEST FOR DEN AND I DEN..
  1. ;I ($G(ACHS(.04))'="C")!($G(ACHS(.15))'="A") D G GETREF1 ;ACHS*3.1*10 4.19.04
  1. ;ACHS*3.1*22 IHS.OIT.FCJ ADDED TEST FOR APPROVED AND ALLOWING PO'S FOR CLOSED REF
  1. ;I $G(ACHD("FAC"))="",($G(ACHS(.04))'="C")!($G(ACHS(.15))'="A") D G GETREF1 ;ACHS*3.1*10 4.19.04
  1. ;.W !!," This must be a Referral that is 'ACTIVE/APPROVED' and 'CHS FACILITY'."
  1. ;.W !,"You have selected a Referral that is '",$$EXTSET^XBFUNC(90001,.15,$G(ACHS(.15))),"' and '",$$EXTSET^XBFUNC(90001,.04,$G(ACHS(.04))),"'.",!
  1. I $G(ACHD("FAC"))="",$G(ACHS(.04))'="C" D G GETREF1
  1. .W !,"You have selected a Referral that is Not a CHS Referral."
  1. .W !,"Please select a CHS Referral",!
  1. .S ACHS=0,Y=0 K DA
  1. ;ACHS*3.1*22 END OF CHANGES
  1. ;ACHS*3.1*13 8.15.05 IHS/OIT/FCJ ADD NXT 2 LINES FOR DEN # TEST
  1. I $G(ACHD("FAC"))'="",$G(ACHSREF(1128))'="" D
  1. .W !!," You have selected a Referral that already has a denial number, ",$G(ACHS(1128)),!
  1. ;ACHS*3.1*23 ADD APPROVED FOR DENIAL TEST
  1. ;I $G(ACHD("FAC"))'="",($G(ACHS(.04))="I")!($G(ACHS(.04))="N")!($G(ACHS(.15))'="A") D G GETREF0
  1. I $G(ACHD("FAC"))'="",($G(ACHS(.04))="I")!($G(ACHS(.04))="N")!($G(ACHS(.15))="X")!($G(ACHS(.15))="C1") D G GETREF0
  1. .W !!," This must be a Referral that is 'ACTIVE/APPROVED' and 'CHS FACILITY' or 'OTHER'."
  1. .W !,"You have selected a Referral that is '",$$EXTSET^XBFUNC(90001,.15,$G(ACHS(.15))),"' and '",$$EXTSET^XBFUNC(90001,.04,$G(ACHS(.04))),"'.",!
  1. .S ACHS=0
  1. ;ACHS*3.1*10 4.19.04 IHS/ITSC/FCJ END OF CHANGES
  1. ;ACHS*3.1*22 TEST FOR CLOSED REF CHCK TO CONTINUE
  1. I $G(ACHD("FAC"))="",($G(ACHS(.15))="C1")!($G(ACHS(.15))="X") D G:Y=0 GETREF1
  1. .W !,"You have selected a 'CLOSED' Referral."
  1. .S DIR("A")="Do you wish to CONTINUE",DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR I +Y>0 S Y=ACHS Q
  1. .S ACHS=0,Y=0 K DA
  1. S DFN=ACHS(.03),ACHSHRN=$$HRN^ACHS(DFN,DUZ(2))
  1. S ACHSPROV=ACHS(.07)
  1. S %=ACHS(.14)
  1. I $L(%) S ACHSTYP=$S(%="I":1,%="O":3,1:"")
  1. ;ACHS*3.1*10 4.21.04 IHS/ITSC/FCJ CHG THE EDOS AND ADDED NXT 3 LINES
  1. ;I $G(ACHS(1105)) S ACHSEDOS=ACHS(1105) ;ACHS*3.1*10 4.21.04
  1. S ACHSEDOS=$S($G(ACHS(1106)):ACHS(1106),$G(ACHS(1105)):ACHS(1105),1:"") ;ACHS*3.1*10 4.21.04
  1. S ACHSDES=$E($G(ACHSREF(1201)),1,30) ;ACHS*3.1*11 8.24.04
  1. S ACHSRMPC=$S($G(ACHS(.32))=1:"I",$G(ACHS(.32))=2:"II",$G(ACHS(.32))=3:"III",$G(ACHS(.32))=4:"IV",1:"") ;ACHS*3.1*10 4.21.04
  1. S ACHSESDO=$G(ACHS(1101)) ;ACHS*3.1*10 4.21.04
  1. Q
  1. ; ----------------------------
  1. ;Q +$P($G(^BMCPARM(DUZ(2),0)),U,4);IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. Q $$GET1^DIQ(90001.31,DUZ(2),.04,"I") ;IHS/SET/GTH ACHS*3.1*5 12/06/2002
  1. ; ----------------------------
  1. VCHK() ;EP - VER OF RCIS
  1. Q $$VERSION^XPDUTL("BMC") ;ACHS*3.1*11 8.24.04 IHS/ITSC/FCJ
  1. ;
  1. P(I,S,P) ;EP - Return Internal format of Referral with IEN of I,S, Piece P.
  1. ; FOR USE DURING DEVELOPMENT. RCIS WILL PROVIDE REQUIRED DATA ITEMS
  1. Q $P($G(^BMCREF(I,S)),U,P)
  1. ;
  1. ; ----------------------------
  1. PX ;EP - Transfer PX info to RCIS.
  1. ; ACHSDIEN = P.O. IEN at the "D" level
  1. ;
  1. I '$$LINK Q
  1. N ACHS,ACHSPX,ACHSPX1
  1. S ACHS(.02)=$$DOC^ACHS(0,22) ; Patient DFN
  1. S ACHS(.03)=$$DOC^ACHS(2,7) ; Referral IEN
  1. S ACHS(.04)="F"
  1. S ACHS(.06)=""
  1. S ACHSPX=0
  1. F S ACHSPX=$O(^ACHSF(DUZ(2),"D",ACHSDIEN,11,ACHSPX)) Q:'(ACHSPX=+ACHSPX) D
  1. . S ACHS(.01)=$P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,ACHSPX,0)),U)
  1. . Q:'(ACHS(.01)["ICPT(")
  1. . S ACHS(.01)=+ACHS(.01)
  1. . ; The first PX on the EOBR is the primary PX.
  1. . I $G(ACHSPX1) S ACHS(.05)="S"
  1. . E S ACHS(.05)="P",ACHSPX1=1
  1. . S ACHS(.07)=$P($G(^ACHSF(DUZ(2),"D",ACHSDIEN,11,ACHSPX,0)),U,4)
  1. . D PXA^BMCCHS(ACHS(.03),.ACHS)
  1. Q
  1. ; ----------------------------
  1. ;ACHS*3.1*13 8.30.06 IHS/OIT/FCJ ADDED APPEAL SECT
  1. APPEAL ;EP -Update Referral appeal info
  1. I '$$LINK Q
  1. S ACHS(6116)=$P(ACHSREC,U) ;APPEAL DT
  1. S ACHS(6117)=$P(ACHSREC,U,4) ;APPEAL RESOLVE DT
  1. S ACHS(6118)=$P(ACHSREC,U,2) ;APPEAL STATUS
  1. S ACHS(6119)=$P(ACHSREC,U,3) ;APPEAL LEVEL
  1. S I=$P(^ACHSDENA(ACHS(6118),0),U)
  1. S ACHS(1112)=$S(I="PAYED WITH ADDITIONAL MONEY":"A",I="APPEAL PENDING":"PA",I="REVERSED AFTER APPEAL":"A",I="UPHELD AFTER APPEAL":"D",1:"")
  1. S ACHS(1113)=DT ;APPROVAL/DENIAL DT
  1. S ACHS(1121)=DUZ ;CHS STAFF
  1. S ACHS(1122)=DT ;Dt of denial
  1. S ACHS(1128)=$P(^ACHSDEN(DUZ(2),"D",ACHSA,0),U) ; denial NUMBER
  1. K S
  1. I $$PATCH^XPDUTL("BMC*4.0*3") D APPEAL^BMCCHS1(.ACHS)
  1. Q
  1. ;
  1. STAT(S) ;EP - Update Referral status
  1. ; ACHSREF must contain the Referral IEN.
  1. I '$$LINK Q
  1. N ACHS
  1. S ACHS(1112)=S
  1. S ACHS(1113)=DT
  1. ;
  1. I S="D" D
  1. .S:$P(^ACHSDEN(DUZ(2),"D",ACHSA,100),U)="Y" ACHS(.07)=$P(^ACHSDEN(DUZ(2),"D",ACHSA,100),U,2) ;PRIM PROV
  1. .S ACHS(.14)=$P(^ACHSDEN(DUZ(2),"D",ACHSA,100),U,10) ;INPAT/OUT
  1. .S ACHS(.15)=$S(ACHS(.14)="O":"C1",1:"A")
  1. .S ACHS(1106)=ACHDDOS ;DT OF SERVICE
  1. .S ACHS(1113)=DT ;APPROVAL/DENIAL DATE
  1. .S ACHS(1114)=ACHSREF(1114) ; denial reason.
  1. .S ACHS(1121)=DUZ ; CHS STAFF
  1. .S ACHS(1122)=DT ; Dt of denial
  1. .S ACHS(1128)=ACHDNUM ; denial NUMBER
  1. .;ACHS*3.1*11 9.27.04 IHS/ITSC/FCJ ADDED NXT SEC MULT DEN REASON/PROV
  1. .;ACHS(200...) PROV ;ACHS(300...) REASON
  1. .F X=200,300 I $D(^ACHSDEN(DUZ(2),"D",ACHSA,X)) D
  1. ..S CT=0,X1=0
  1. ..S CT=$S(X=200:4401,X=300:4301,1:"")
  1. ..F S X1=$O(^ACHSDEN(DUZ(2),"D",ACHSA,X,X1)) Q:X1'?1N.N D
  1. ...S ACHS(CT)=$P(^ACHSDEN(DUZ(2),"D",ACHSA,X,X1,0),U)
  1. ...S CT=CT+1
  1. .K X,X1,CT
  1. .;ACHS*3.1*11 9.27.04 IHS/ITSC/FCJ END OF CHG
  1. K S
  1. D STAT^BMCCHS(ACHSREF,"P",.ACHS)
  1. Q
  1. ; ----------------------------