| 1 | IBTRE5 ;ALB/AAS - CLAIMS TRACKING EDIT PROVIDER ; 1-SEP-93
 | 
|---|
| 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;**10,60**; 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 - pointer 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 provider
 | 
|---|
| 20 |  I IBETYP=2 D  G ENQ
 | 
|---|
| 21 |  .I $P(IBTRND,"^",4) D ASK^IBTUTL4(IBTRN,1)
 | 
|---|
| 22 |  .I '$P(IBTRND,"^",4) W !!,"Can not add provider to outpatient visits prior to Check-out.",! D PAUSE^VALM1
 | 
|---|
| 23 |  .S VALMBCK="R"
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ; -- Inpatient provider
 | 
|---|
| 26 |  I IBETYP=1 D
 | 
|---|
| 27 |  .Q:'IBDGPM
 | 
|---|
| 28 |  .; -- ask admitting provider
 | 
|---|
| 29 |  .I '$O(^IBT(356.94,"ADG",IBDGPM,0)) D APRVD(IBTRN,IBETYP)
 | 
|---|
| 30 |  .I $G(IBSEL)="^" Q
 | 
|---|
| 31 |  .;
 | 
|---|
| 32 |  .; -- edit other provider
 | 
|---|
| 33 |  .D PRVD(IBTRN,IBETYP)
 | 
|---|
| 34 |  .S VALMBCK="R"
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | ENQ ;
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 | APRVD(IBTRN,IBETYP) ; -- add admitting provider
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  N IBAPR,DA,DR,DIC,DIE,DD,DO,IOINHI,IOINORM
 | 
|---|
| 41 |  S IBAPR=""
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  I IBETYP'=1!('IBDGPM) W !!,"You can only enter and admitting provider for an admission",! D PAUSE^VALM1 G APRVDQ
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  S X="IOINHI;IOINORM" D ENDR^%ZISS
 | 
|---|
| 46 |  S IBAPR=$O(^IBT(356.94,"ADG",IBDGPM,0)) I IBAPR S IBDA=$O(^IBT(356.94,"ADG",IBDGPM,IBAPR,0))
 | 
|---|
| 47 |  W !!,"--- ",IOINHI,"Admitting Physician",IOINORM," --- ",$S('IBAPR:"Unspecified",1:$P($G(^VA(200,+$P(IBAPR,"^",3),0)),"^"))
 | 
|---|
| 48 |  I +IBAPR D EDT(IBDA,".03;") W !
 | 
|---|
| 49 |  I '$O(^IBT(356.94,"ADG",IBDGPM,0)) D ADD(IBTRN,3)
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  W !
 | 
|---|
| 52 | APRVDQ Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | PRVD(IBTRN,IBETYP) ; -- add/edit provider
 | 
|---|
| 55 |  Q:'IBTRN
 | 
|---|
| 56 |  I $G(IBETYP)'=1 Q
 | 
|---|
| 57 |  N DA,DR,DIC,DIE
 | 
|---|
| 58 |  I IBETYP'=1!('IBDGPM) W !!,"You can only enter a provider for an admission",! D PAUSE^VALM1 G PRVDQ
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  S X="IOINHI;IOINORM" D ENDR^%ZISS
 | 
|---|
| 61 |  W !!,"--- ",IOINHI,"Provider",IOINORM," --- "
 | 
|---|
| 62 |  S IBSEL="Add"
 | 
|---|
| 63 |  D SET(IBTRN) I $D(IBXY) D LIST(.IBXY) S IBSEL=$$ASK^IBTRE4(IBCNT,"A")
 | 
|---|
| 64 |  I IBSEL["^"!(IBSEL["Return") S:IBSEL["^" IBQUIT=1 G PRVDQ
 | 
|---|
| 65 |  I IBSEL="Add" D ADD(IBTRN)
 | 
|---|
| 66 |  D:IBSEL EDT(+$G(IBXY(+IBSEL)),".01;.03;.04")
 | 
|---|
| 67 | PRVDQ Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | ADD(IBTRN,TYPE) ; -- Add a new provider
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  N DTOUT,DUTOU,X,Y,DIC
 | 
|---|
| 72 |  S IBCNT=0
 | 
|---|
| 73 |  I '$G(TYPE) S TYPE=""
 | 
|---|
| 74 | NXT S DIC("A")=$S(TYPE=3:"Admitting Provider: ",IBCNT<1:"Select Provider: ",1:"Next Provider: ")
 | 
|---|
| 75 |  S DIC("S")="I $D(^VA(200,""AK.PROVIDER"",$P(^(0),U,1),+Y))"
 | 
|---|
| 76 |  S DIC="^VA(200,",DIC(0)="AEMQ",X=""
 | 
|---|
| 77 |  W:$G(IBCNT) ! D ^DIC K DIC G ADDQ:Y<0
 | 
|---|
| 78 |  S IBCNT=IBCNT+1
 | 
|---|
| 79 |  S IBAPR=$$NEW(+Y,IBTRN,TYPE)
 | 
|---|
| 80 |  I IBAPR,TYPE'=3 D EDT(IBAPR) G NXT
 | 
|---|
| 81 | ADDQ I $D(DUOUT)!($D(DTOUT)) S IBSEL="^"
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | NEW(VA200,IBTRN,TYPE) ; -- file new entry
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  N DA,DD,DO,DIC,DIK,DINUM,DLAYGO,X,Y,I,J
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  ; -- default date = episode date
 | 
|---|
| 89 |  S X=$P($P(^IBT(356,IBTRN,0),"^",6),".")
 | 
|---|
| 90 |  S (DIC,DIK)="^IBT(356.94,",DIC(0)="L",DLAYGO=356.94
 | 
|---|
| 91 |  D FILE^DICN S IBAPR=+Y
 | 
|---|
| 92 |  I IBAPR>0 L +^IBT(356.94,IBAPR) S $P(^IBT(356.94,IBAPR,0),"^",2,4)=$$DGPM^IBTRE3(IBTRN)_"^"_VA200_"^"_$G(TYPE),DA=IBAPR D IX1^DIK L -^IBT(356.94,IBAPR)
 | 
|---|
| 93 | NEWQ Q IBAPR
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | EDT(IBAPR,IBDR) ; -- edit entry
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  N DR,DIE,DA,DIDEL
 | 
|---|
| 98 |  S DR=$G(IBDR),DIDEL=356.94 I DR="" S DR=".01;.03;.04"
 | 
|---|
| 99 |  S DA=IBAPR,DIE="^IBT(356.94,"
 | 
|---|
| 100 |  Q:'$G(^IBT(356.94,DA,0))
 | 
|---|
| 101 |  L +^IBT(356.94,IBAPR):5 I '$T D LOCKED^IBTRCD1 G EDTQ
 | 
|---|
| 102 |  D ^DIE
 | 
|---|
| 103 |  L -^IBT(356.94,IBAPR)
 | 
|---|
| 104 | EDTQ Q
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 | SET(IBTRN) ; -- set array
 | 
|---|
| 107 |  N IBDGPM,IBPRV
 | 
|---|
| 108 |  S IBDGPM=$$DGPM^IBTRE3(IBTRN)
 | 
|---|
| 109 |  S (IBPRV,IBCNT)=0
 | 
|---|
| 110 |  F  S IBPRV=$O(^IBT(356.94,"ADGPM",IBDGPM,IBPRV)) Q:'IBPRV  S IBDA=0 F  S IBDA=$O(^IBT(356.94,"ADGPM",IBDGPM,IBPRV,IBDA)) Q:'IBDA  D
 | 
|---|
| 111 |  .Q:'$D(^IBT(356.94,+IBDA,0))
 | 
|---|
| 112 |  .S IBCNT=IBCNT+1
 | 
|---|
| 113 |  .S IBXY(IBCNT)=IBDA
 | 
|---|
| 114 | SETQ Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 | LIST(IBXY) ;List Provider Array
 | 
|---|
| 117 |  ; Input  -- IBXY     Provider Array Subscripted by a Number
 | 
|---|
| 118 |  ; Output -- List Provider Array
 | 
|---|
| 119 |  N I,IBXD,IBTNOD
 | 
|---|
| 120 |  W !
 | 
|---|
| 121 |  S I=0 F  S I=$O(IBXY(I)) Q:'I  D
 | 
|---|
| 122 |  .S IBTNOD=$G(^IBT(356.94,+IBXY(I),0))
 | 
|---|
| 123 |  .S IBXD=$P($G(^VA(200,$P(IBTNOD,"^",3),0)),"^")
 | 
|---|
| 124 |  .W !?2,I,"  ",IBXD,?40,$$DAT1^IBOUTL($P($P(IBTNOD,"^",1),"."),2),?60,$$EXPAND^IBTRE(356.94,.04,$P(IBTNOD,"^",4))
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | DICS(Y) ; -- called by input transform and screen logic for type of provider
 | 
|---|
| 128 |  N IBY
 | 
|---|
| 129 |  S IBY=0
 | 
|---|
| 130 |  I Y<3 S IBY=1 G DICSQ
 | 
|---|
| 131 |  I Y=3 I '$D(^IBT(356.94,"ATP",+$P($G(^IBT(356.94,DA,0)),U,2),3))!($O(^IBT(356.94,"ATP",+$P($G(^IBT(356.94,DA,0)),U,2),3,0))=DA) S IBY=1
 | 
|---|
| 132 | DICSQ Q IBY
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | DTCHK(DA,X) ; -- input transform for 356.94;.01.  date not before admission or after discharge
 | 
|---|
| 135 |  N IBTRN,IBOK,IBCDT
 | 
|---|
| 136 |  S IBOK=1
 | 
|---|
| 137 |  G:'DA!($G(X)<1) DTCHKQ
 | 
|---|
| 138 |  S IBTRN=+$O(^IBT(356,"AD",+$P(^IBT(356.94,DA,0),"^",2),0))
 | 
|---|
| 139 |  G:'IBTRN DTCHKQ
 | 
|---|
| 140 |  S IBCDT=$$CDT^IBTODD1(IBTRN)
 | 
|---|
| 141 |  I X<$P(+IBCDT,".") S IBOK=0 G DTCHKQ ;before adm
 | 
|---|
| 142 |  I $P(IBCDT,"^",2),X>$P(IBCDT,"^",2) S IBOK=0 G DTCHKQ ; after disch
 | 
|---|
| 143 |  I X>$$FMADD^XLFDT(DT,7) S IBOK=0 G DTCHKQ
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | DTCHKQ Q IBOK
 | 
|---|