| 1 | IBTRE3 ;ALB/AAS - CLAIMS TRACKING EDIT DIAGNOSIS ;1-SEP-93
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**10,60,210,266**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | % G ^IBTRE
|
---|
| 6 | ;
|
---|
| 7 | EN(IBTRN) ; -- entry point for protocols
|
---|
| 8 | ; must do own rebuild actions
|
---|
| 9 | ; -- Input - point to 356
|
---|
| 10 | ;
|
---|
| 11 | N IBETYP,IBTRND,IBXY,IBCNT,IBDGPM
|
---|
| 12 | D FULL^VALM1
|
---|
| 13 | S VALMBCK=""
|
---|
| 14 | S IBTRND=$G(^IBT(356,+IBTRN,0)),IBDGPM=$P(IBTRND,"^",5)
|
---|
| 15 | ;
|
---|
| 16 | S IBETYP=$$TRTP^IBTRE1(IBTRN)
|
---|
| 17 | I IBETYP>2 W !!,"Clinical Information comes from the parent package." D PAUSE^VALM1 G ENQ
|
---|
| 18 | ;
|
---|
| 19 | ; -- outpatient diagnosis
|
---|
| 20 | I IBETYP=2 D G ENQ
|
---|
| 21 | .I $P(IBTRND,"^",4) D ASK^IBTUTL4(IBTRN,2)
|
---|
| 22 | .I '$P(IBTRND,"^",4) W !!,"Can not add diagnosis to outpatient visits prior to Check-out.",! D PAUSE^VALM1
|
---|
| 23 | .S VALMBCK="R"
|
---|
| 24 | ;
|
---|
| 25 | ; -- Inpatient diagnosis
|
---|
| 26 | I IBETYP=1 D
|
---|
| 27 | .Q:'IBDGPM
|
---|
| 28 | .;
|
---|
| 29 | .; -- ask admitting diagnosis if not already there
|
---|
| 30 | .I '$O(^IBT(356.9,"ADG",+IBDGPM,0)) D ADIAG(IBTRN,IBETYP)
|
---|
| 31 | .I $G(IBSEL)="^" Q
|
---|
| 32 | .;
|
---|
| 33 | .; -- edit other diagnosis
|
---|
| 34 | .D DIAG(IBTRN,IBETYP)
|
---|
| 35 | .S VALMBCK="R"
|
---|
| 36 | ;
|
---|
| 37 | ENQ ;
|
---|
| 38 | Q
|
---|
| 39 | ADIAG(IBTRN,IBETYP) ; -- add admitting diagnosis
|
---|
| 40 | ;
|
---|
| 41 | N IBADG,DA,DR,DIC,DIE,DD,DO,IOINHI,IOINORM,IBDATE
|
---|
| 42 | S IBADG=""
|
---|
| 43 | ;
|
---|
| 44 | S IBDATE=$$TRNDATE^IBACSV(IBTRN) ; Service date for CSV
|
---|
| 45 | ;
|
---|
| 46 | ;S IBDGPM=$P(^IBT(356,+IBTRN,0),"^",5)
|
---|
| 47 | I IBETYP'=1!('IBDGPM) W !!,"You can only enter an admitting diagnosis for an admission",! D PAUSE^VALM1 G ADGQ
|
---|
| 48 | ;
|
---|
| 49 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 50 | S IBADG=$O(^IBT(356.9,"ADG",IBDGPM,0)) I IBADG S IBDA=$O(^IBT(356.9,"ADG",IBDGPM,IBADG,0))
|
---|
| 51 | W !!,"--- ",IOINHI,"Admitting Diagnosis",IOINORM," --- "
|
---|
| 52 | I 'IBADG W "Unspecified"
|
---|
| 53 | E D
|
---|
| 54 | . N IBDX
|
---|
| 55 | . S IBDX=$$ICD9^IBACSV(+IBADG,IBDATE)
|
---|
| 56 | . W $P(IBDX,U)_" -"_$P(IBDX,U,3)
|
---|
| 57 | I +IBADG D EDT(IBDA,".01;") W !
|
---|
| 58 | I '$O(^IBT(356.9,"ADG",+IBDGPM,0)) D ADD(IBTRN,3)
|
---|
| 59 | ;
|
---|
| 60 | W !
|
---|
| 61 | ADGQ Q
|
---|
| 62 | ;
|
---|
| 63 | DIAG(IBTRN,IBETYP) ; -- add/edit diagnosis
|
---|
| 64 | Q:'IBTRN
|
---|
| 65 | I $G(IBETYP)'=1 Q
|
---|
| 66 | N DA,DR,DIC,DIE
|
---|
| 67 | S IBDGPM=$P(^IBT(356,+IBTRN,0),"^",5)
|
---|
| 68 | I IBETYP'=1!('IBDGPM) W !!,"You can only enter a diagnosis for an admission",! D PAUSE^VALM1 G ADGQ
|
---|
| 69 | ;
|
---|
| 70 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 71 | W !!,"--- ",IOINHI,"Diagnosis",IOINORM," --- "
|
---|
| 72 | S IBSEL="Add"
|
---|
| 73 | D SET(IBTRN) I $D(IBXY) D LIST(.IBXY) S IBSEL=$$ASK^IBTRE4(IBCNT,"A")
|
---|
| 74 | I IBSEL["^"!(IBSEL["Return") S:IBSEL["^" IBQUIT=1 G DIAGQ
|
---|
| 75 | I IBSEL="Add" D ADD(IBTRN)
|
---|
| 76 | D:IBSEL EDT(+$G(IBXY(+IBSEL)),".01;.03;.04")
|
---|
| 77 | DIAGQ Q
|
---|
| 78 | ;
|
---|
| 79 | ADD(IBTRN,TYPE) ; -- Add a new diagnosis
|
---|
| 80 | ;
|
---|
| 81 | N DTOUT,DUOUT,X,Y,DIC,IBDATE,ICDVDT
|
---|
| 82 | S IBCNT=0
|
---|
| 83 | ;Service date (for CSV)
|
---|
| 84 | S IBDATE=$$TRNDATE^IBACSV(IBTRN) S:'IBDATE IBDATE=DT
|
---|
| 85 | S ICDVDT=IBDATE ; for DD ID (versioned text)
|
---|
| 86 | ;
|
---|
| 87 | I '$G(TYPE) S TYPE=""
|
---|
| 88 | NXT S DIC("A")=$S(TYPE=3:"Admitting Diagnosis: ",IBCNT<1:"Select Diagnosis: ",1:"Next Diagnosis: ")
|
---|
| 89 | ;All DX codes are visible - no screen ;S DIC("S")="I '$P(^(0),U,9)"
|
---|
| 90 | S DIC="^ICD9(",DIC(0)="AEMQ",X=""
|
---|
| 91 | W:$G(IBCNT) ! D ^DIC K DIC G ADDQ:Y<0
|
---|
| 92 | I Y,'$$ICD9ACT^IBACSV(+Y,IBDATE) W !!,*7,$P(Y,U,2)," is not active for the service date ("_$$DAT3^IBOUTL(IBDATE),").",! G NXT
|
---|
| 93 | I $D(^IBT(356.9,"ADGPM",$$DGPM(IBTRN),+Y)) W !!,*7,$P(Y,"^",2)," is already a diagnosis.",! G NXT
|
---|
| 94 | S IBCNT=IBCNT+1
|
---|
| 95 | S IBADG=$$NEW(+Y,IBTRN,TYPE)
|
---|
| 96 | I IBADG,TYPE'=3 D EDT(IBADG) G NXT
|
---|
| 97 | ADDQ I $D(DTOUT)!($D(DUOUT)) S IBSEL="^"
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | DGPM(IBTRN) ; -- return admission pointer
|
---|
| 101 | Q $P(^IBT(356,+IBTRN,0),"^",5)
|
---|
| 102 | ;
|
---|
| 103 | ;
|
---|
| 104 | NEW(ICDI,IBTRN,TYPE) ; -- file new entry
|
---|
| 105 | ;
|
---|
| 106 | N DA,DD,DO,DIC,DIK,DINUM,DLAYGO,X,Y,I,J
|
---|
| 107 | S X=ICDI,(DIC,DIK)="^IBT(356.9,",DIC(0)="L",DLAYGO=356.9
|
---|
| 108 | D FILE^DICN S IBADG=+Y
|
---|
| 109 | I IBADG>0 L +^IBT(356.9,IBADG) S $P(^IBT(356.9,IBADG,0),"^",2,4)=$$DGPM(IBTRN)_"^"_$P($P(^IBT(356,IBTRN,0),"^",6),".")_"^"_$G(TYPE),DA=IBADG D IX1^DIK L -^IBT(356.9,IBADG)
|
---|
| 110 | NEWQ Q IBADG
|
---|
| 111 | ;
|
---|
| 112 | EDT(IBADG,IBDR) ; -- edit entry
|
---|
| 113 | ;
|
---|
| 114 | N DR,DIE,DA,DIDEL
|
---|
| 115 | S DR=$G(IBDR),DIDEL=356.9 I DR="" S DR=".03;.04"
|
---|
| 116 | S DA=IBADG,DIE="^IBT(356.9,"
|
---|
| 117 | Q:'$G(^IBT(356.9,DA,0))
|
---|
| 118 | L +^IBT(356.9,+IBADG):5 I '$T D LOCKED^IBTRCD1 G EDTQ
|
---|
| 119 | D ^DIE
|
---|
| 120 | L -^IBT(356.9,+IBADG)
|
---|
| 121 | EDTQ Q
|
---|
| 122 | ;
|
---|
| 123 | SET(IBTRN) ; -- set array
|
---|
| 124 | N IBDGPM,IBICD,IBDA
|
---|
| 125 | S IBDGPM=$$DGPM(IBTRN)
|
---|
| 126 | S (IBICD,IBCNT)=0
|
---|
| 127 | F S IBICD=$O(^IBT(356.9,"ADGPM",IBDGPM,IBICD)) Q:'IBICD S IBDA=0 F S IBDA=$O(^IBT(356.9,"ADGPM",IBDGPM,IBICD,IBDA)) Q:'IBDA D
|
---|
| 128 | .Q:'$D(^IBT(356.9,+IBDA,0))
|
---|
| 129 | .S IBCNT=IBCNT+1
|
---|
| 130 | .S IBXY(IBCNT)=IBDA_"^"_IBICD
|
---|
| 131 | SETQ Q
|
---|
| 132 | ;
|
---|
| 133 | LIST(IBXY) ;List Diagnosis Array
|
---|
| 134 | ; Input -- IBXY Diagnosis Array Subscripted by a Number
|
---|
| 135 | ; Output -- List Diagnosis Array
|
---|
| 136 | N I,IBXD,IBDATE
|
---|
| 137 | W !
|
---|
| 138 | S I=0 F S I=$O(IBXY(I)) Q:'I D
|
---|
| 139 | . S IBTNOD=$G(^IBT(356.9,+IBXY(I),0))
|
---|
| 140 | . S IBDATE=$P($P(IBTNOD,U,3),".")
|
---|
| 141 | . S IBXD=$$ICD9^IBACSV(+$P(IBXY(I),U,2),IBDATE)
|
---|
| 142 | . W !?2,I," ",$P(IBXD,U),?15,$E($P(IBXD,U,3),1,30),?48,$$DAT1^IBOUTL(IBDATE),?60,$$EXPAND^IBTRE(356.9,.04,$P(IBTNOD,U,4))
|
---|
| 143 | Q
|
---|