[613] | 1 | IBTRE4 ;ALB/AAS - CLAIMS TRACKING EDIT PROCEDURE ;1-SEP-93
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**10,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 procedure
|
---|
| 20 | I IBETYP=2 D G ENQ
|
---|
| 21 | .W !!,*7,"You must use the add/edit action on Check-out to add procedures to Outpatient Encounters.",!
|
---|
| 22 | .S VALMBCK="R"
|
---|
| 23 | ;
|
---|
| 24 | ; -- Inpatient procedure
|
---|
| 25 | Q:'IBDGPM
|
---|
| 26 | I IBETYP=1 D PROC(IBTRN,IBETYP) S VALMBCK="R"
|
---|
| 27 | ;
|
---|
| 28 | ENQ ;
|
---|
| 29 | Q
|
---|
| 30 | ;
|
---|
| 31 | PROC(IBTRN,IBETYP) ; -- add/edit procedure
|
---|
| 32 | Q:'IBTRN
|
---|
| 33 | I $G(IBETYP)'=1 Q
|
---|
| 34 | N DA,DR,DIC,DIE
|
---|
| 35 | ;S IBDGPM=$P(^IBT(356,+IBTRN,0),"^",5)
|
---|
| 36 | I IBETYP'=1!('IBDGPM) W !!,"You can only enter a procedure for an admission",! D PAUSE^VALM1 G PROCQ
|
---|
| 37 | ;
|
---|
| 38 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 39 | W !!,"--- ",IOINHI,"Procedure",IOINORM," --- "
|
---|
| 40 | S IBSEL="Add"
|
---|
| 41 | D SET(IBTRN) I $D(IBXY) D LIST(.IBXY) S IBSEL=$$ASK(IBCNT,"A")
|
---|
| 42 | I IBSEL["^"!(IBSEL["Return") S:IBSEL["^" IBQUIT=1 G PROCQ
|
---|
| 43 | I IBSEL="Add" D ADD(IBTRN)
|
---|
| 44 | I IBSEL D EDT(+$G(IBXY(+IBSEL)),".01;.03;"),CHECK(+$G(IBXY(+IBSEL)))
|
---|
| 45 | PROCQ Q
|
---|
| 46 | ;
|
---|
| 47 | CHECK(IBADG) ; Check active status of the ICD0 code (Code Set Versioning)
|
---|
| 48 | N IBZ,DIR,X,Y
|
---|
| 49 | S IBZ=$G(^IBT(356.91,+$G(IBADG),0)) Q:'IBZ
|
---|
| 50 | Q:$$ICD0ACT^IBACSV(+IBZ,$P(IBZ,U,3))
|
---|
| 51 | W !!,*7,"Warning! The Procedure Code ",$P($$ICD0^IBACSV(+IBZ),U)," is inactive on this date!"
|
---|
| 52 | S DIR(0)="EA",DIR("A")="Press <Enter> to continue" D ^DIR
|
---|
| 53 | Q
|
---|
| 54 | ;
|
---|
| 55 | ADD(IBTRN,TYPE) ; -- Add a new procedure
|
---|
| 56 | ;
|
---|
| 57 | N DTOUT,DUTOU,X,Y,DIC,DIR,IBDATE,IBP,IBPN,IBPDT,IBADT,ICDVDT
|
---|
| 58 | ;Service date (for CSV)
|
---|
| 59 | S IBDATE=$$TRNDATE^IBACSV(IBTRN)
|
---|
| 60 | S IBADT=$G(^DGPM(+$$DGPM^IBTRE3(IBTRN),0)) ;Admission Date
|
---|
| 61 | S IBCNT=0
|
---|
| 62 | I '$G(TYPE) S TYPE=""
|
---|
| 63 | NXT ; The Procedure Date has to be asked first for the Code Set Versioning requirements
|
---|
| 64 | ; Input Procedure Date
|
---|
| 65 | S DIR(0)="D",DIR("A")=$S(IBCNT<1:"Procedure Date",1:"Next Procedure Date")
|
---|
| 66 | S DIR("B")=$$DAT3^IBOUTL(IBDATE)
|
---|
| 67 | W:$G(IBCNT) !
|
---|
| 68 | S IBPDT=IBDATE D ^DIR K DIR G ADDQ:Y'?7N S IBPDT=+Y W " ",$$DAT2^IBOUTL(IBPDT)
|
---|
| 69 | ; The same checking as in the Data Dictionary, file #356.91, field #.03 (PROCEDURE DATE):
|
---|
| 70 | I IBADT,(IBPDT+.9)<IBADT W !!,*7,"The Procedure Date cannot be earlier than Admission (",$$DAT3^IBOUTL(IBADT),")",! G NXT
|
---|
| 71 | ; Input Procedure (ICD0)
|
---|
| 72 | S DIC("A")="Select Procedure: "
|
---|
| 73 | S DIC("S")="I $$ICD0ACT^IBACSV(+Y,IBPDT)"
|
---|
| 74 | S ICDVDT=IBPDT ; for DD ID (versioned text)
|
---|
| 75 | S DIC="^ICD0(",DIC(0)="AEMQ",X=""
|
---|
| 76 | D ^DIC K DIC G ADDQ:Y'>0
|
---|
| 77 | S IBP=+Y,IBPN=$P(Y,U,2) ; Procedure IEN and name
|
---|
| 78 | ;I '$$ICD0ACT^IBACSV(IBP,IBPDT) W !!,*7,IBPN," is not active for the procedure date ("_$$DAT3^IBOUTL(IBPDT),").",! G NXT
|
---|
| 79 | I $D(^IBT(356.91,"ADGPM",$$DGPM^IBTRE3(IBTRN),IBP)) W !!,*7,IBPN," is already a procedure.",!
|
---|
| 80 | S IBCNT=IBCNT+1
|
---|
| 81 | S IBADG=$$NEW(IBP,IBTRN,TYPE,IBPDT)
|
---|
| 82 | I IBADG>0,TYPE'=3 G NXT ;D EDT(IBADG) G NXT
|
---|
| 83 | ADDQ Q
|
---|
| 84 | ;
|
---|
| 85 | NEW(ICDI,IBTRN,TYPE,IBPDT) ; -- file new entry
|
---|
| 86 | ;
|
---|
| 87 | N DA,DD,DO,DIC,DIK,DINUM,DLAYGO,X,Y,I,J
|
---|
| 88 | S X=ICDI,(DIC,DIK)="^IBT(356.91,",DIC(0)="L",DLAYGO=356.91
|
---|
| 89 | D FILE^DICN S IBADG=+Y I Y'>0 G NEWQ
|
---|
| 90 | I '$G(IBPDT) S IBPDT=$P($P(^IBT(356,IBTRN,0),"^",6),".")
|
---|
| 91 | L +^IBT(356.91,IBADG) S $P(^IBT(356.91,IBADG,0),"^",2,3)=$$DGPM^IBTRE3(IBTRN)_"^"_IBPDT,DA=IBADG D IX1^DIK L -^IBT(356.91,IBADG)
|
---|
| 92 | NEWQ Q IBADG
|
---|
| 93 | ;
|
---|
| 94 | EDT(IBADG,IBDR) ; -- edit entry
|
---|
| 95 | ;
|
---|
| 96 | N DR,DIE,DA,DIDEL
|
---|
| 97 | S DR=$G(IBDR),DIDEL=356.91 I DR="" S DR=".03;"
|
---|
| 98 | S DA=IBADG,DIE="^IBT(356.91,"
|
---|
| 99 | Q:'$G(^IBT(356.91,DA,0))
|
---|
| 100 | L +^IBT(356.91,IBADG):5 I '$T D LOCKED^IBTRCD1 G EDTQ
|
---|
| 101 | D ^DIE
|
---|
| 102 | L -^IBT(356.91,IBADG)
|
---|
| 103 | EDTQ Q
|
---|
| 104 | ;
|
---|
| 105 | SET(IBTRN) ; -- set array
|
---|
| 106 | N IBDGPM,IBICD
|
---|
| 107 | S IBDGPM=$$DGPM^IBTRE3(IBTRN)
|
---|
| 108 | S (IBICD,IBDA,IBCNT)=0
|
---|
| 109 | F S IBICD=$O(^IBT(356.91,"ADGPM",IBDGPM,IBICD)) Q:'IBICD S IBDA=0 F S IBDA=$O(^IBT(356.91,"ADGPM",IBDGPM,IBICD,IBDA)) Q:'IBDA D
|
---|
| 110 | .Q:'$D(^IBT(356.91,+IBDA,0))
|
---|
| 111 | .S IBCNT=IBCNT+1
|
---|
| 112 | .S IBXY(IBCNT)=IBDA_"^"_IBICD
|
---|
| 113 | SETQ Q
|
---|
| 114 | ;
|
---|
| 115 | LIST(IBXY) ;List Diagnosis Array
|
---|
| 116 | ; Input -- IBXY Diagnosis Array Subscripted by a Number
|
---|
| 117 | ; Output -- List Diagnosis Array
|
---|
| 118 | N I,IBXD,IBDATE
|
---|
| 119 | W !
|
---|
| 120 | S I=0 F S I=$O(IBXY(I)) Q:'I D
|
---|
| 121 | . S IBTNOD=$G(^IBT(356.91,+IBXY(I),0))
|
---|
| 122 | . S IBDATE=$P($P(IBTNOD,U,3),".") ; Procedure date
|
---|
| 123 | . S IBXD=$$ICD0^IBACSV(+$P(IBXY(I),U,2),IBDATE)
|
---|
| 124 | . W !?2,I," ",$P(IBXD,U),?15,$E($P(IBXD,U,4),1,43),?60,$$DAT1^IBOUTL(IBDATE)
|
---|
| 125 | Q
|
---|
| 126 | ;
|
---|
| 127 | ASK(IBCNT,IBPAR,IBSELDF) ;Ask user to select from list
|
---|
| 128 | ; Input -- SDCNT Number of Entities
|
---|
| 129 | ; SDPAR Selection Parameters (A=Add)
|
---|
| 130 | ; SDSELDF Selection Default [Optional]
|
---|
| 131 | ; Output -- Selection
|
---|
| 132 | N DIR,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 133 | REASK S DIR("?")="Enter "_$S($G(IBSELDF)]"":"<RETURN> for '"_IBSELDF_"', ",1:"")_$S(IBCNT=1:"1",1:"1-"_IBCNT)_" to Edit"_$S(IBPAR["A":", or 'A' to Add",1:"")
|
---|
| 134 | S DIR("A")="Enter "_$S(IBCNT=1:"1",1:"1-"_IBCNT)_" to Edit"_$S(IBPAR["A":", or 'A' to Add",1:"")_": "_$S($G(IBSELDF)]"":IBSELDF_"// ",1:"")
|
---|
| 135 | S DIR(0)="FAO^1:30"
|
---|
| 136 | D ^DIR I $D(DTOUT)!($D(DUOUT)) S Y="^" G ASKQ
|
---|
| 137 | S Y=$$UPPER^VALM1(Y)
|
---|
| 138 | I Y?.N,Y,Y'>IBCNT G ASKQ
|
---|
| 139 | I IBPAR["A",$E(Y)="A" S Y="Add" G ASKQ
|
---|
| 140 | I Y="" S Y=$S($G(IBSELDF)]"":IBSELDF,1:"Return") G ASKQ
|
---|
| 141 | W !!?5,DIR("?"),".",! G REASK
|
---|
| 142 | ASKQ Q $G(Y)
|
---|