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
|
---|