1 | DGRUUTL1 ;ALB/GRR - RAI/MDS UTILITY ROUTINE
|
---|
2 | ;;5.3;Registration;**190,312,328,373,434,430,464**;Aug 13, 1993
|
---|
3 | EN ;Process each division for routing
|
---|
4 | N DGRDIV,DGDIV ;New all variables used
|
---|
5 | K HLL ;Kill HLL which is used for an array
|
---|
6 | S DGDIV=$$ENGET^DGRUGMFU()
|
---|
7 | D ENMFU^DGRUDYN("MFU",DGDIV) ;Do API which gets subscriber(s) for the division
|
---|
8 | Q
|
---|
9 | ;
|
---|
10 | LOCTRAN(DGPV1) ;TRANSLATE WARD AND ROOM-BED
|
---|
11 | N DGCW,DGPW,DGPR,DGPB,DGW,DGR,DGB,DGPL,DGLOC,DGI,DGCRB,DGPRB ;modified p-373
|
---|
12 | S DGLOC=$P(DGPV1,HL("FS"),4),DGPLOC=$P(DGPV1,HL("FS"),7)
|
---|
13 | S DGW=$P(DGLOC,$E(HL("ECH"))),DGR=$P(DGLOC,$E(HL("ECH")),2),DGB=$P(DGLOC,$E(HL("ECH")),3)
|
---|
14 | S DGPWN=$P(DGPLOC,$E(HL("ECH"))),DGPR=$P(DGPLOC,$E(HL("ECH")),2),DGPB=$P(DGPLOC,$E(HL("ECH")),3)
|
---|
15 | N DGETYPE S DGETYPE=$P($G(@DGARRAY@(1)),HL("FS"),2) G:DGETYPE="" LOCEX
|
---|
16 | ;
|
---|
17 | I DGETYPE="A01" D
|
---|
18 | .S DGCW=$P($G(DGPMA),"^",6),(DGPW,DGPWN,DGPR,DGPB)=""
|
---|
19 | .S DGCRB=$P($G(DGPMA),"^",7),DGPRB=""
|
---|
20 | ;
|
---|
21 | I DGETYPE="A02" D
|
---|
22 | .S DGCW=$P($G(DGPMA),"^",6),DGPW=$P($G(DGPMVI(5)),"^")
|
---|
23 | .S DGCRB=$P($G(DGPMA),"^",7),DGPRB=$P($G(DGPMVI(6)),"^")
|
---|
24 | .I $G(DGBS)=1 D ;p-464 BED SWITCH
|
---|
25 | ..S DGPWN=DGW,DGPW=DGCW,DGPRBN=$P($G(DGPMVI(6)),"^",2) ;p-464
|
---|
26 | ..S DGPR=$P(DGPRBN,"-",1),DGPB=$P(DGPRBN,"-",2) ;p-464
|
---|
27 | .I DGPW=""!(DGPRB="") S DGPW=DGCW,DGPRB=DGCRB
|
---|
28 | ;
|
---|
29 | I DGETYPE="A03" D
|
---|
30 | .I $G(DGXFR0)]"" D
|
---|
31 | ..S (DGCW,DGPW)=$P(DGXFR0,"^",6)
|
---|
32 | ..S (DGCRB,DGPRB)=$P(DGXFR0,"^",7)
|
---|
33 | .I $G(DGPMAN)]"" D
|
---|
34 | ..S (DGCW,DGPW)=$P(DGPMAN,"^",6)
|
---|
35 | ..S (DGCRB,DGPRB)=$P(DGPMAN,"^",7)
|
---|
36 | .I $G(DGPMVI(5))]"" D
|
---|
37 | ..S (DGCW,DGPW)=$P($G(DGPMVI(5)),"^")
|
---|
38 | ..S (DGCRB,DGPRB)=$P($G(DGPMVI(6)),"^")
|
---|
39 | .I $G(DGMOVE)=47 D ;p-430
|
---|
40 | ..S (DGCW,DGPW)=$P($G(DGRU(17,4)),"^") ;p-430
|
---|
41 | ..S (DGCRB,DGPRB)=$P($G(DGRU(17,4)),"^",2) ;p-430
|
---|
42 | ;
|
---|
43 | I DGETYPE="A08" D
|
---|
44 | .N VAIP D IN5^VADPT
|
---|
45 | .S DGCW=+$G(VAIP(5)),DGPW=+$G(VAIP(15,4))
|
---|
46 | .S DGCRB=+$G(VAIP(6)),DGPRB=""
|
---|
47 | .N DGMIEN S DGMIEN=+$G(VAIP(15)) I DGMIEN>0 S DGPRB=$$GET1^DIQ(405,DGMIEN,.07,"I") K DGMIEN
|
---|
48 | ;
|
---|
49 | I DGETYPE="A11" D
|
---|
50 | .S (DGCW,DGPW)=$P($G(DGPMVI(5)),"^")
|
---|
51 | .S (DGCRB,DGPRB)=$P($G(DGPMVI(6)),"^")
|
---|
52 | ;
|
---|
53 | I DGETYPE="A12" D
|
---|
54 | .S (DGCW,DGPW)=$P($G(DGPM0),"^",6),DGPWN=DGW
|
---|
55 | .S (DGCRB,DGPRB)=$P($G(DGPM0),"^",7),DGPR=DGR,DGPB=DGB
|
---|
56 | ;
|
---|
57 | I DGETYPE="A13" D
|
---|
58 | .S (DGCW,DGPW)=$P($G(DGPM0),"^",6),DGPWN=DGW
|
---|
59 | .S (DGCRB,DGPRB)=$P($G(DGPM0),"^",7),DGPR=DGR,DGPB=DGB
|
---|
60 | ;
|
---|
61 | I DGETYPE="A21" D ;modified p-373
|
---|
62 | .I $G(DGPMVI(5))]"" D Q
|
---|
63 | ..S (DGCW,DGPW)=$P($G(DGPMVI(5)),"^")
|
---|
64 | ..S (DGCRB,DGPRB)=$P($G(DGPMVI(6)),"^")
|
---|
65 | .I $G(DGPMA)]"" D ;p-434
|
---|
66 | ..S (DGCW,DGPW)=$P(DGPMA,"^",6) ;p-434
|
---|
67 | ..S (DGCRB,DGPRB)=$P(DGPMA,"^",7) ;p-434
|
---|
68 | .I $G(DGPMAN)]"" D
|
---|
69 | ..S DGCW=$P($G(DGPMA),"^",6),DGPW=$P($G(DGPMAN),"^",6)
|
---|
70 | ..S DGCRB=$P($G(DGPMA),"^",7),DGPRB=$P($G(DGPMAN),"^",7)
|
---|
71 | I DGETYPE="A22" D ;added p-373
|
---|
72 | .I $G(TRSNODE)]"" D Q ;added p-373
|
---|
73 | ..S DGCW=$P($G(TRSNODE),"^",6),DGPW=$P($G(TRSNODE),"^",6) ;added p-373
|
---|
74 | ..S DGCRB=$P($G(TRSNODE),"^",7),DGPRB=$P($G(TRSNODE),"^",7) ;added p-373
|
---|
75 | .I $P($G(DGPMVI(5)),"^")]""&($P($G(DGPMVI(6)),"^")]"") D Q ;added p-373,p-430
|
---|
76 | ..S (DGCW,DGPW)=$P($G(DGPMVI(5)),"^") ;added p-373
|
---|
77 | ..S (DGCRB,DGPRB)=$P($G(DGPMVI(6)),"^") ;added p-373
|
---|
78 | .I $D(VAFH(2,DGMIEN,"A")) D ;added p-373
|
---|
79 | ..S (DGCW,DGPW)=$P(VAFH(2,DGMIEN,"A"),"^",6) ;added p-373
|
---|
80 | ..S (DGCRB,DGPRB)=$P(VAFH(2,DGMIEN,"A"),"^",7) ;added p-373
|
---|
81 | SKIP1 ;
|
---|
82 | S DGNW=$$WARDTRAN(DGCW,DGW)
|
---|
83 | S DGNRB=$$RBTRAN(DGCRB,DGR_"-"_DGB)
|
---|
84 | S DGNPW=$$WARDTRAN(DGPW,DGPWN)
|
---|
85 | S DGNPRB=$$RBTRAN(DGPRB,DGPR_"-"_DGPB)
|
---|
86 | S DGNLOC=$S(DGLOC="":"",1:DGNW_$E(HL("ECH"))_$P(DGNRB,"-")_$E(HL("ECH"))_$P(DGNRB,"-",2)),DGNPLOC=$S(DGNPW="":"",1:DGNPW_$E(HL("ECH"))_$P(DGNPRB,"-")_$E(HL("ECH"))_$P(DGNPRB,"-",2))
|
---|
87 | S $P(DGPV1,HL("FS"),4)=DGNLOC,$P(DGPV1,HL("FS"),7)=DGNPLOC
|
---|
88 | LOCEX Q DGPV1
|
---|
89 | ;
|
---|
90 | WARDTRAN(DGWIEN,DGWNAM) ;
|
---|
91 | I DGWNAM=""!(DGWNAM=HLQ)!(DGWIEN="") Q DGWNAM
|
---|
92 | S DGCI=$O(^DGRU(46.12,"B",DGWIEN,0)) I DGCI="" Q DGWNAM
|
---|
93 | S DGTNW=$$GET1^DIQ(46.12,DGCI,.02,"I")
|
---|
94 | Q DGTNW
|
---|
95 | RBTRAN(DGRBIEN,DGRBNAM) ;
|
---|
96 | I DGRBNAM=""!(DGRBNAM[HLQ)!(DGRBIEN="") Q DGRBNAM
|
---|
97 | S DGCI=$O(^DGRU(46.13,"B",DGRBIEN,0)) I DGCI="" Q DGRBNAM
|
---|
98 | S DGRB=$$GET1^DIQ(46.13,DGCI,.02,"I")
|
---|
99 | Q DGRB
|
---|
100 | ;
|
---|
101 | DOCTOR(X) ;DETERMINE IF NEW PERSON A PHYSICIAN ;added 1/12/2000
|
---|
102 | Q 0 ;always flag as non-physician, no need to send these anymore
|
---|
103 | S DGPCN=$$GET1^DIQ(7,X,.01,"I")
|
---|
104 | Q DGPCN["PHYSICIAN"
|
---|
105 | ;
|
---|
106 | IN1(DFN) ;CREATE IN1 SEGMENT
|
---|
107 | N DGADT,DGREC,VAIP
|
---|
108 | D IN5^VADPT
|
---|
109 | S DGADT=$S(VAIP(13,1)]"":+$P(VAIP(13,1),"^"),1:"") I DGADT]"" S DGADT=DGADT\1,DGADT=$$HLDATE^HLFNC(DGADT)
|
---|
110 | S DGREC="IN1"_HL("FS")_HL("FS")_HL("FS")_"VA"_HL("FS")_"VETERANS ADMINISTRATION"
|
---|
111 | S $P(DGREC,HL("FS"),13)=DGADT
|
---|
112 | Q DGREC
|
---|
113 | ;
|
---|
114 | CALCDT(DFN,DGMIEN) ;CALCULATE FUTURE DISCHARGE DATE
|
---|
115 | N DGOIEN,DGOLDD,DGDT,DGHDT
|
---|
116 | S Z=$O(^DGPM("ATID2",DFN,0)),DGOIEN=$O(^DGPM("ATID2",DFN,Z,DGMIEN))
|
---|
117 | S DGOLDD=$$GET1^DIQ(405,DGOIEN,.01,"I")
|
---|
118 | S X1=DGOLDD,X2=30 D C^%DTC S DGDT=X,DGHDT=$$HLDATE^HLFNC(DGDT)
|
---|
119 | Q DGHDT
|
---|
120 | ;
|
---|
121 | ENTS ;USED TO REVIEW HL7 MESSAGES FOR TROUBLE SHOOTING
|
---|
122 | N DA,X,ZZ,ZX
|
---|
123 | N DIC,Y S DIC=771,DIC(0)="MX",X="DGRU RAI EVENTS" D ^DIC S ZX=+Y
|
---|
124 | I Y<0 W !,"The 'DGRU RAI EVENTS' entry in file 771 missing!" Q
|
---|
125 | S DA=999999999999
|
---|
126 | D PRIOR(.DA)
|
---|
127 | RD2 S DIR(0)="F^1:1",DIR("A")="(U)p or (D)own" D ^DIR K DIR
|
---|
128 | I X="U" D PRIOR(.DA) G RD2
|
---|
129 | I X="D" D NEXT(.DA) G RD2
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | PRIOR(DA) ;
|
---|
133 | F S DA=$O(^HL(772,DA),-1) Q:DA="" I $P($G(^HL(772,DA,0)),"^",2)=ZX D Q
|
---|
134 | .S DGHMID=$P(^HL(772,DA,0),"^",8),DGMESS=$O(^HLMA("B",DGHMID,0)) Q:DGMESS=""
|
---|
135 | .W !,"Message ID: ",$P($G(^HLMA(+DGMESS,0)),"^",2)
|
---|
136 | .S ZZ=0 F S ZZ=$O(^HL(772,DA,"IN",ZZ)) Q:ZZ'>0 W !,^(ZZ,0)
|
---|
137 | I DA="" W "...At the Top.." S DA=9999999999
|
---|
138 | Q
|
---|
139 | NEXT(DA) ;
|
---|
140 | F S DA=$O(^HL(772,DA)) Q:DA'>0 I $P($G(^HL(772,DA,0)),"^",2)=ZX D Q
|
---|
141 | .S DGHMID=$P(^HL(772,DA,0),"^",8),DGMESS=$O(^HLMA("B",DGHMID,0)) Q:DGMESS=""
|
---|
142 | .W !,"Message ID: ",$P($G(^HLMA(+DGMESS,0)),"^",2)
|
---|
143 | .S ZZ=0 F S ZZ=$O(^HL(772,DA,"IN",ZZ)) Q:ZZ'>0 W !,^(ZZ,0)
|
---|
144 | I DA'>0 W "...Bottomed out.." S DA=99999999999
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | GETDIV(X) ;GET DIVISION FOR SPECIFIED WARD
|
---|
148 | ;
|
---|
149 | ;X = Ward IEN
|
---|
150 | Q:$G(X)="" -1
|
---|
151 | S X=$$GET1^DIQ(42,X,.015,"I")
|
---|
152 | Q X
|
---|
153 | ;
|
---|
154 | CKADMIT(DFN) ;CHECH IF INTEGRATED SITE FOR ORIGINAL ADMIT DATE
|
---|
155 | N DGASIH,DGINTEG,DGZDT,DGNDT,DGPMDA,DGQ
|
---|
156 | S (DGZDT,DGNDT)=""
|
---|
157 | S DGQ=0
|
---|
158 | F S DGZDT=$O(^DGPM("APTT1",DFN,DGZDT),-1) Q:DGZDT="" D Q:DGQ=1
|
---|
159 | .S DGPMDA=$O(^DGPM("APTT1",DFN,DGZDT,0))
|
---|
160 | .S DGASIH=$$GET1^DIQ(405,DGPMDA,.22,"I")
|
---|
161 | .Q:DGASIH>0
|
---|
162 | .S DGNDT=$$GET1^DIQ(405,DGPMDA,300,"I"),DGQ=1
|
---|
163 | Q DGNDT
|
---|
164 | ;
|
---|
165 | FLLTCM(DFN) ;
|
---|
166 | ;Find last movement before patient goes ASIH
|
---|
167 | N DGLASTA,DGLASTT,DGTIEN,DGLTCA,DGLTCIEN ;p-430
|
---|
168 | S DGTIEN="" ;p-430
|
---|
169 | G:DFN="" QUIT ;p-430
|
---|
170 | ;If not inpatient, was ASIH to other facility. Get transfer movement
|
---|
171 | I '$D(^DPT(DFN,.1)) S DGTIEN=$O(^DGPM("APTT2",DFN,DGTIEN),-1),DGTIEN=$O(^DGPM("APTT2",DFN,DGTIEN,0)) G QUIT
|
---|
172 | ;
|
---|
173 | ;Get last Admision
|
---|
174 | S DGLASTA=$O(^DGPM("APTT1",DFN,""),-1) ;p-430
|
---|
175 | ;
|
---|
176 | ;Quit if last admit not to ASIH (date length less than 15 characters)
|
---|
177 | G:DGLASTA=""!($L(DGLASTA)'=15) QUIT ;p-430
|
---|
178 | ;
|
---|
179 | ;Get LTC admit ien
|
---|
180 | S DGLTCA=$O(^DGPM("APTT1",DFN,DGLASTA),-1) ;p-430
|
---|
181 | G:DGLTCA="" QUIT ;p-430
|
---|
182 | S DGLTCIEN=$O(^DGPM("APTT1",DFN,DGLTCA,0)) ;p-430
|
---|
183 | ;
|
---|
184 | ;Look for last transfer before ASIH admit
|
---|
185 | S DGLASTT=$E(DGLASTA,1,14)_"1" ;p-430
|
---|
186 | S DGTIEN=$O(^DGPM("APTT2",DFN,DGLASTT),-1) ;p-430
|
---|
187 | ;
|
---|
188 | ;If no transfers use admit movement
|
---|
189 | I DGTIEN="" S DGTIEN=DGLTCIEN G QUIT ;p-430
|
---|
190 | S DGTIEN=$O(^DGPM("APTT2",DFN,DGTIEN,0)) ;p-430
|
---|
191 | I $P(^DGPM(DGTIEN,0),"^",14)'=DGLTCIEN S DGTIEN=DGLTCIEN G QUIT ;p-430
|
---|
192 | QUIT Q DGTIEN
|
---|
193 | ;
|
---|