- BUDCDU ; IHS/CMI/LAB - gpra utility calls ;
- ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
- ;
- ;
- DATE(D) ;EP
- I D="" Q ""
- Q $E(D,4,5)_"/"_$E(D,6,7)_"/"_$E(D,2,3)
- ;
- ;
- DEMO(P,T) ;EP - exclude demo patients
- I $G(P)="" Q 0
- I $G(T)="" S T="I"
- I T="I" Q 0
- NEW R
- S R=""
- I T="E" D Q R
- .I $P($G(^DPT(P,0)),U)["DEMO,PATIENT" S R=1 Q
- .NEW %
- .S %=$O(^DIBT("B","RPMS DEMO PATIENT NAMES",0))
- .I '% S R=0 Q
- .I $D(^DIBT(%,1,P)) S R=1 Q
- I T="O" D Q R
- .I $P($G(^DPT(P,0)),U)["DEMO,PATIENT" S R=0 Q
- .NEW %
- .S %=$O(^DIBT("B","RPMS DEMO PATIENT NAMES",0))
- .I '% S R=1 Q
- .I $D(^DIBT(%,1,P)) S R=0 Q
- .S R=1 Q
- Q 0
- WH(P,BDATE,EDATE,T,F) ;EP
- I '$G(P) Q ""
- I '$G(T) Q ""
- I '$G(F) S F=1
- I $G(EDATE)="" Q ""
- I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
- ;go through procedures in a date range for this patient, check proc type
- NEW D,X,Y,G,V,O
- S (G,V)=0,I="" F S V=$O(^BWPCD("C",P,V)) Q:V="" D
- .Q:'$D(^BWPCD(V,0))
- .I $P(^BWPCD(V,0),U,4)'=T Q
- .S D=$P(^BWPCD(V,0),U,12)
- .Q:D<BDATE
- .Q:D>EDATE
- .S I=$O(G(0)) I I>D Q
- .S G=V,G(D)=""
- .Q
- I 'G Q ""
- I F=1 Q $S(G:1,1:"")
- I F=2 Q G
- I F=3 S D=$P(^BWPCD(G,0),U,12) Q D
- I F=4 S D=$P(^BWPCD(G,0),U,12) Q $$FMTE^XLFDT(D)
- Q ""
- PLCODE(P,A,ED) ;EP
- I $G(P)="" Q ""
- I $G(A)="" Q ""
- I $G(ED)="" S ED=DT
- N T
- ;S T=$O(^ICD9("AB",A,0))
- S T=+$$CODEN^ICDEX(A,80)
- I T'>0 Q ""
- N X,Y,I S (X,Y,I)=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)),$P(^AUPNPROB(X,0),U,12)'="D" S Y=$P(^AUPNPROB(X,0),U) I Y=T S I=1
- Q I
- PLTAX(P,A) ;EP - is DX on problem list 1 or 0
- I $G(P)="" Q ""
- I $G(A)="" Q ""
- N T S T=$O(^ATXAX("B",A,0))
- I 'T Q ""
- N X,Y,I S (X,Y,I)=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)),$P(^AUPNPROB(X,0),U,12)'="D",$P(^AUPNPROB(X,0),U,12)'="I" S Y=$P(^AUPNPROB(X,0),U) I $$ICD^ATXCHK(Y,T,9) S I=1_U_$$VAL^XBDIQ1(9000011,X,.01)
- Q I
- PLCL(P,A,S) ;EP - is DX on problem list 1 or 0
- I $G(P)="" Q ""
- I $G(A)="" Q ""
- I $G(S)="" S S=0
- N T S T=$O(^BUDCTSSC("B",A,0))
- I 'T Q ""
- N X,Y,I S (X,Y,I)=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)) D
- .Q:$P(^AUPNPROB(X,0),U,12)="D"
- .I S Q:$P(^AUPNPROB(X,0),U,12)="I"
- .S Y=$P(^AUPNPROB(X,0),U) I $D(^BUDCTSSC("AD",Y,T)) S I=1_U_$$VAL^XBDIQ1(9000011,X,.01)_U_$P(^AUPNPROB(X,0),U,3)
- Q I
- CPT(P,BDATE,EDATE,T,F,SCEX) ;EP - return ien of CPT entry if patient had this CPT
- I '$G(P) Q ""
- I '$G(T) Q ""
- I '$G(F) S F=1
- S SCEX=$G(SCEX)
- I $G(EDATE)="" Q ""
- I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
- ;go through visits in a date range for this patient, check cpts
- NEW D,BD,ED,X,Y,D,G,V
- S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
- F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
- .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
- ..Q:'$D(^AUPNVSIT(V,0))
- ..Q:'$D(^AUPNVCPT("AD",V))
- ..I SCEX]"",SCEX[$P(^AUPNVSIT(V,0),U,7) Q
- ..S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X!(G) D
- ...I $$ICD^ATXCHK($P(^AUPNVCPT(X,0),U),T,1) S G=X
- ...Q
- ..Q
- .Q
- I 'G Q ""
- I F=1 Q $S(G:1,1:"")
- I F=2 Q G
- I F=3 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
- I F=4 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
- I F=5 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVCPT(G,0),U)),U,2)
- I F=6 S V=$P(^AUPNVCPT(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVCPT(G,0),U)),U,2)_"^"_G_"^"_V
- Q ""
- RAD(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT
- I '$G(P) Q ""
- I '$G(T) Q ""
- I '$G(F) S F=1
- I $G(EDATE)="" Q ""
- I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
- ;go through visits in a date range for this patient, check cpts
- NEW D,BD,ED,X,Y,D,G,V,C
- S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
- F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
- .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
- ..Q:'$D(^AUPNVSIT(V,0))
- ..Q:'$D(^AUPNVRAD("AD",V))
- ..S X=0 F S X=$O(^AUPNVRAD("AD",V,X)) Q:X'=+X!(G) D
- ...S C=$P(^AUPNVRAD(X,0),U) Q:C="" S C=$P($G(^RAMIS(71,C,0)),U,9) Q:C=""
- ...I $$ICD^ATXCHK(C,T,1) S G=X
- ...Q
- ..Q
- .Q
- I 'G Q ""
- I F=1 Q $S(G:1,1:"")
- I F=2 Q G
- I F=3 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
- I F=4 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
- I F=5 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P(^RAMIS(71,$P(^AUPNVRAD(G,0),U),0),U,9)
- I F=6 S V=$P(^AUPNVRAD(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P(^RAMIS(71,$P(^AUPNVRAD(G,0),U),0),U)_"^"_G
- Q ""
- CPTI(P,BDATE,EDATE,CPTI,SCEX,SCLN,SMOD) ;EP - did patient have this cpt (ien) in date range
- I '$G(P) Q ""
- I $G(CPTI)="" Q ""
- I $G(BDATE)="" Q ""
- I $G(EDATE)="" Q ""
- S SCEX=$G(SCEX)
- S SCLN=$G(SCLN)
- S SMOD=$G(SMOD)
- I '$D(^ICPT(CPTI)) Q "" ;not a valid cpt ien
- I '$D(^AUPNVCPT("AA",P)) Q "" ;no cpts for this patient
- NEW D,BD,ED,X,Y,D,G,V,I,M,M1,Z,J,K,Q
- S ED=9999999-EDATE-1,BD=9999999-BDATE,G=""
- F S ED=$O(^AUPNVCPT("AA",P,CPTI,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
- .S I=0 F S I=$O(^AUPNVCPT("AA",P,CPTI,ED,I)) Q:I'=+I!(G) D
- ..S V=$P($G(^AUPNVCPT(I,0)),U,3)
- ..I SCEX]"",SCEX[$P(^AUPNVSIT(V,0),U,7) Q
- ..I SCLN]"",$$CLINIC^APCLV(V,"C")=SCLN Q
- ..S M=$$VAL^XBDIQ1(9000010.18,I,.08)
- ..S M1=$$VAL^XBDIQ1(9000010.18,I,.09)
- ..S Q=0
- ..I SMOD]"" F J=1:1 S K=$P(SMOD,";",J) Q:K="" I K=M S Q=1
- ..Q:Q
- ..I SMOD]"" F J=1:1 S K=$P(SMOD,";",J) Q:K="" I K=M1 S Q=1
- ..Q:Q
- ..S G="1"_"^"_(9999999-ED)
- Q G
- ;
- TRANI(P,BDATE,EDATE,CPTI) ;EP
- I '$G(P) Q ""
- I $G(TRANI)="" Q ""
- I $G(BDATE)="" Q ""
- I $G(EDATE)="" Q ""
- I '$D(^ICPT(CPTI)) Q ""
- I '$D(^AUPNVTC("AC",P)) Q "" ;no cpts for this patient
- NEW X,V,C,G
- S G=""
- S X=0 F S X=$O(^AUPNVTC("AC",P,X)) Q:X'=+X D
- .S C=$P($G(^AUPNVTC(X,0)),U,7)
- .Q:C'=CPTI
- .S V=$P(^AUPNVTC(X,0),U,3)
- .S V=$P($P($G(^AUPNVSIT(V,0)),U),".")
- .Q:V<BDATE
- .Q:V>EDATE
- .S G="1"_"^"_V
- Q G
- TRAN(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT IN A TRAN CODE
- I '$G(P) Q ""
- I '$G(T) Q ""
- I '$G(F) S F=1
- I $G(EDATE)="" Q ""
- I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
- ;go through visits in a date range for this patient, check cpts
- NEW D,BD,ED,X,Y,D,G,V
- S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
- F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
- .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
- ..Q:'$D(^AUPNVSIT(V,0))
- ..Q:'$D(^AUPNVTC("AD",V))
- ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X!(G) D
- ...I $$ICD^ATXCHK($P(^AUPNVTC(X,0),U,7),T,1) S G=X
- ...Q
- ..Q
- .Q
- I 'G Q ""
- I F=1 Q $S(G:1,1:"")
- I F=2 Q G
- I F=3 S V=$P(^AUPNVTC(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
- I F=4 S V=$P(^AUPNVTC(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
- I F=5 S V=$P(^AUPNVTC(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVTC(G,0),U,7)),U,2)
- I F=6 S V=$P(^AUPNVTC(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVTC(G,0),U,7)),U,2)_"^"_G_"^"_V
- Q ""
- ;
- LASTITEM(P,BD,ED,BUDT,BUDV) ;PEP - return last item APCLV OF TYPE APCLT DURING BD TO ED IN FORM APCLF
- I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
- I $G(ED)="" S ED=DT
- I $G(BUDT)="" Q ""
- I $G(BUDV)="" Q ""
- NEW BUDR,%,E,Y K R S %=P_"^LAST "_BUDT_" "_BUDV_";DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDR(")
- I '$D(BUDR(1)) Q ""
- Q 1_U_$P(BUDR(1),U,1)_U_$P(BUDR(1),U,3)_U_$P(BUDR(1),U,2)
- ;
- BANNER ;EP
- V ; GET VERSION
- S BUD("VERSION")="2.0 January, 2003"
- S BUDTEXT="TEXT",BUDLINE=3 G PRINT
- F BUDJ=1:1 S BUDX=$T(@BUDTEXT+BUDJ),BUDX=$P(BUDX,";;",2) Q:BUDX="QUIT"!(BUDX="") S BUDLINE=BUDJ
- PRINT W:$D(IOF) @IOF
- F BUDJ=1:1:BUDLINE S BUDX=$T(@BUDTEXT+BUDJ),BUDX=$P(BUDX,";;",2) W !?80-$L(BUDX)\2,BUDX K BUDX
- W !?80-(8+$L(BUD("VERSION")))/2,"Version ",BUD("VERSION")
- SITE G XIT:'$D(DUZ(2)) G:'DUZ(2) XIT S BUD("SITE")=$P(^DIC(4,DUZ(2),0),"^") W !!?80-$L(BUD("SITE"))\2,BUD("SITE")
- XIT ;
- K BUDJ,BUDX,BUDTEXT,BUDLINE,BUD("SITE"),BUD("VERSION")
- Q
- BECPTS ;;
- ;;74270
- ;;74275
- ;;74280
- ;;
- SIGCPTS ;;
- ;;45300
- ;;45303
- ;;45305
- ;;45307
- ;;45308
- ;;45309
- ;;45315
- ;;45317
- ;;45320
- ;;45321
- ;;45327
- ;;45330
- ;;45331
- ;;45332
- ;;45333
- ;;45334
- ;;45336
- ;;45337
- ;;45338
- ;;45339
- ;;45341
- ;;45342
- ;;45345
- ;;
- COLOCPTS ;;
- ;;45355
- ;;45360
- ;;45361
- ;;45362
- ;;45363
- ;;45364
- ;;45365
- ;;45366
- ;;45367
- ;;45368
- ;;45369
- ;;45370
- ;;45371
- ;;45372
- ;;45378
- ;;45379
- ;;45380
- ;;45382
- ;;45383
- ;;45384
- ;;45385
- ;;45387
- ;;
- BUDCDU ; IHS/CMI/LAB - gpra utility calls ;
- +1 ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
- +2 ;
- +3 ;
- DATE(D) ;EP
- +1 IF D=""
- QUIT ""
- +2 QUIT $EXTRACT(D,4,5)_"/"_$EXTRACT(D,6,7)_"/"_$EXTRACT(D,2,3)
- +3 ;
- +4 ;
- DEMO(P,T) ;EP - exclude demo patients
- +1 IF $GET(P)=""
- QUIT 0
- +2 IF $GET(T)=""
- SET T="I"
- +3 IF T="I"
- QUIT 0
- +4 NEW R
- +5 SET R=""
- +6 IF T="E"
- Begin DoDot:1
- +7 IF $PIECE($GET(^DPT(P,0)),U)["DEMO,PATIENT"
- SET R=1
- QUIT
- +8 NEW %
- +9 SET %=$ORDER(^DIBT("B","RPMS DEMO PATIENT NAMES",0))
- +10 IF '%
- SET R=0
- QUIT
- +11 IF $DATA(^DIBT(%,1,P))
- SET R=1
- QUIT
- End DoDot:1
- QUIT R
- +12 IF T="O"
- Begin DoDot:1
- +13 IF $PIECE($GET(^DPT(P,0)),U)["DEMO,PATIENT"
- SET R=0
- QUIT
- +14 NEW %
- +15 SET %=$ORDER(^DIBT("B","RPMS DEMO PATIENT NAMES",0))
- +16 IF '%
- SET R=1
- QUIT
- +17 IF $DATA(^DIBT(%,1,P))
- SET R=0
- QUIT
- +18 SET R=1
- QUIT
- End DoDot:1
- QUIT R
- +19 QUIT 0
- WH(P,BDATE,EDATE,T,F) ;EP
- +1 IF '$GET(P)
- QUIT ""
- +2 IF '$GET(T)
- QUIT ""
- +3 IF '$GET(F)
- SET F=1
- +4 IF $GET(EDATE)=""
- QUIT ""
- +5 IF $GET(BDATE)=""
- SET BDATE=$$FMADD^XLFDT(EDATE,-365)
- +6 ;go through procedures in a date range for this patient, check proc type
- +7 NEW D,X,Y,G,V,O
- +8 SET (G,V)=0
- SET I=""
- FOR
- SET V=$ORDER(^BWPCD("C",P,V))
- IF V=""
- QUIT
- Begin DoDot:1
- +9 IF '$DATA(^BWPCD(V,0))
- QUIT
- +10 IF $PIECE(^BWPCD(V,0),U,4)'=T
- QUIT
- +11 SET D=$PIECE(^BWPCD(V,0),U,12)
- +12 IF D<BDATE
- QUIT
- +13 IF D>EDATE
- QUIT
- +14 SET I=$ORDER(G(0))
- IF I>D
- QUIT
- +15 SET G=V
- SET G(D)=""
- +16 QUIT
- End DoDot:1
- +17 IF 'G
- QUIT ""
- +18 IF F=1
- QUIT $SELECT(G:1,1:"")
- +19 IF F=2
- QUIT G
- +20 IF F=3
- SET D=$PIECE(^BWPCD(G,0),U,12)
- QUIT D
- +21 IF F=4
- SET D=$PIECE(^BWPCD(G,0),U,12)
- QUIT $$FMTE^XLFDT(D)
- +22 QUIT ""
- PLCODE(P,A,ED) ;EP
- +1 IF $GET(P)=""
- QUIT ""
- +2 IF $GET(A)=""
- QUIT ""
- +3 IF $GET(ED)=""
- SET ED=DT
- +4 NEW T
- +5 ;S T=$O(^ICD9("AB",A,0))
- +6 SET T=+$$CODEN^ICDEX(A,80)
- +7 IF T'>0
- QUIT ""
- +8 NEW X,Y,I
- SET (X,Y,I)=0
- FOR
- SET X=$ORDER(^AUPNPROB("AC",P,X))
- IF X'=+X!(I)
- QUIT
- IF $DATA(^AUPNPROB(X,0))
- IF $PIECE(^AUPNPROB(X,0),U,12)'="D"
- SET Y=$PIECE(^AUPNPROB(X,0),U)
- IF Y=T
- SET I=1
- +9 QUIT I
- PLTAX(P,A) ;EP - is DX on problem list 1 or 0
- +1 IF $GET(P)=""
- QUIT ""
- +2 IF $GET(A)=""
- QUIT ""
- +3 NEW T
- SET T=$ORDER(^ATXAX("B",A,0))
- +4 IF 'T
- QUIT ""
- +5 NEW X,Y,I
- SET (X,Y,I)=0
- FOR
- SET X=$ORDER(^AUPNPROB("AC",P,X))
- IF X'=+X!(I)
- QUIT
- IF $DATA(^AUPNPROB(X,0))
- IF $PIECE(^AUPNPROB(X,0),U,12)'="D"
- IF $PIECE(^AUPNPROB(X,0),U,12)'="I"
- SET Y=$PIECE(^AUPNPROB(X,0),U)
- IF $$ICD^ATXCHK(Y,T,9)
- SET I=1_U_$$VAL^XBDIQ1(9000011,X,.01)
- +6 QUIT I
- PLCL(P,A,S) ;EP - is DX on problem list 1 or 0
- +1 IF $GET(P)=""
- QUIT ""
- +2 IF $GET(A)=""
- QUIT ""
- +3 IF $GET(S)=""
- SET S=0
- +4 NEW T
- SET T=$ORDER(^BUDCTSSC("B",A,0))
- +5 IF 'T
- QUIT ""
- +6 NEW X,Y,I
- SET (X,Y,I)=0
- FOR
- SET X=$ORDER(^AUPNPROB("AC",P,X))
- IF X'=+X!(I)
- QUIT
- IF $DATA(^AUPNPROB(X,0))
- Begin DoDot:1
- +7 IF $PIECE(^AUPNPROB(X,0),U,12)="D"
- QUIT
- +8 IF S
- IF $PIECE(^AUPNPROB(X,0),U,12)="I"
- QUIT
- +9 SET Y=$PIECE(^AUPNPROB(X,0),U)
- IF $DATA(^BUDCTSSC("AD",Y,T))
- SET I=1_U_$$VAL^XBDIQ1(9000011,X,.01)_U_$PIECE(^AUPNPROB(X,0),U,3)
- End DoDot:1
- +10 QUIT I
- CPT(P,BDATE,EDATE,T,F,SCEX) ;EP - return ien of CPT entry if patient had this CPT
- +1 IF '$GET(P)
- QUIT ""
- +2 IF '$GET(T)
- QUIT ""
- +3 IF '$GET(F)
- SET F=1
- +4 SET SCEX=$GET(SCEX)
- +5 IF $GET(EDATE)=""
- QUIT ""
- +6 IF $GET(BDATE)=""
- SET BDATE=$$FMADD^XLFDT(EDATE,-365)
- +7 ;go through visits in a date range for this patient, check cpts
- +8 NEW D,BD,ED,X,Y,D,G,V
- +9 SET ED=(9999999-EDATE)
- SET BD=9999999-BDATE
- SET G=0
- +10 FOR
- SET ED=$ORDER(^AUPNVSIT("AA",P,ED))
- IF ED=""!($PIECE(ED,".")>BD)!(G)
- QUIT
- Begin DoDot:1
- +11 SET V=0
- FOR
- SET V=$ORDER(^AUPNVSIT("AA",P,ED,V))
- IF V'=+V!(G)
- QUIT
- Begin DoDot:2
- +12 IF '$DATA(^AUPNVSIT(V,0))
- QUIT
- +13 IF '$DATA(^AUPNVCPT("AD",V))
- QUIT
- +14 IF SCEX]""
- IF SCEX[$PIECE(^AUPNVSIT(V,0),U,7)
- QUIT
- +15 SET X=0
- FOR
- SET X=$ORDER(^AUPNVCPT("AD",V,X))
- IF X'=+X!(G)
- QUIT
- Begin DoDot:3
- +16 IF $$ICD^ATXCHK($PIECE(^AUPNVCPT(X,0),U),T,1)
- SET G=X
- +17 QUIT
- End DoDot:3
- +18 QUIT
- End DoDot:2
- +19 QUIT
- End DoDot:1
- +20 IF 'G
- QUIT ""
- +21 IF F=1
- QUIT $SELECT(G:1,1:"")
- +22 IF F=2
- QUIT G
- +23 IF F=3
- SET V=$PIECE(^AUPNVCPT(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")
- +24 IF F=4
- SET V=$PIECE(^AUPNVCPT(G,0),U,3)
- IF V
- QUIT $$FMTE^XLFDT($PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),"."))
- +25 IF F=5
- SET V=$PIECE(^AUPNVCPT(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE($$CPT^ICPTCOD($PIECE(^AUPNVCPT(G,0),U)),U,2)
- +26 IF F=6
- SET V=$PIECE(^AUPNVCPT(G,0),U,3)
- IF V
- QUIT 1_"^"_$PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE($$CPT^ICPTCOD($PIECE(^AUPNVCPT(G,0),U)),U,2)_"^"_G_"^"_V
- +27 QUIT ""
- RAD(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT
- +1 IF '$GET(P)
- QUIT ""
- +2 IF '$GET(T)
- QUIT ""
- +3 IF '$GET(F)
- SET F=1
- +4 IF $GET(EDATE)=""
- QUIT ""
- +5 IF $GET(BDATE)=""
- SET BDATE=$$FMADD^XLFDT(EDATE,-365)
- +6 ;go through visits in a date range for this patient, check cpts
- +7 NEW D,BD,ED,X,Y,D,G,V,C
- +8 SET ED=(9999999-EDATE)
- SET BD=9999999-BDATE
- SET G=0
- +9 FOR
- SET ED=$ORDER(^AUPNVSIT("AA",P,ED))
- IF ED=""!($PIECE(ED,".")>BD)!(G)
- QUIT
- Begin DoDot:1
- +10 SET V=0
- FOR
- SET V=$ORDER(^AUPNVSIT("AA",P,ED,V))
- IF V'=+V!(G)
- QUIT
- Begin DoDot:2
- +11 IF '$DATA(^AUPNVSIT(V,0))
- QUIT
- +12 IF '$DATA(^AUPNVRAD("AD",V))
- QUIT
- +13 SET X=0
- FOR
- SET X=$ORDER(^AUPNVRAD("AD",V,X))
- IF X'=+X!(G)
- QUIT
- Begin DoDot:3
- +14 SET C=$PIECE(^AUPNVRAD(X,0),U)
- IF C=""
- QUIT
- SET C=$PIECE($GET(^RAMIS(71,C,0)),U,9)
- IF C=""
- QUIT
- +15 IF $$ICD^ATXCHK(C,T,1)
- SET G=X
- +16 QUIT
- End DoDot:3
- +17 QUIT
- End DoDot:2
- +18 QUIT
- End DoDot:1
- +19 IF 'G
- QUIT ""
- +20 IF F=1
- QUIT $SELECT(G:1,1:"")
- +21 IF F=2
- QUIT G
- +22 IF F=3
- SET V=$PIECE(^AUPNVRAD(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")
- +23 IF F=4
- SET V=$PIECE(^AUPNVRAD(G,0),U,3)
- IF V
- QUIT $$FMTE^XLFDT($PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),"."))
- +24 IF F=5
- SET V=$PIECE(^AUPNVRAD(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE(^RAMIS(71,$PIECE(^AUPNVRAD(G,0),U),0),U,9)
- +25 IF F=6
- SET V=$PIECE(^AUPNVRAD(G,0),U,3)
- IF V
- QUIT 1_"^"_$PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE(^RAMIS(71,$PIECE(^AUPNVRAD(G,0),U),0),U)_"^"_G
- +26 QUIT ""
- CPTI(P,BDATE,EDATE,CPTI,SCEX,SCLN,SMOD) ;EP - did patient have this cpt (ien) in date range
- +1 IF '$GET(P)
- QUIT ""
- +2 IF $GET(CPTI)=""
- QUIT ""
- +3 IF $GET(BDATE)=""
- QUIT ""
- +4 IF $GET(EDATE)=""
- QUIT ""
- +5 SET SCEX=$GET(SCEX)
- +6 SET SCLN=$GET(SCLN)
- +7 SET SMOD=$GET(SMOD)
- +8 ;not a valid cpt ien
- IF '$DATA(^ICPT(CPTI))
- QUIT ""
- +9 ;no cpts for this patient
- IF '$DATA(^AUPNVCPT("AA",P))
- QUIT ""
- +10 NEW D,BD,ED,X,Y,D,G,V,I,M,M1,Z,J,K,Q
- +11 SET ED=9999999-EDATE-1
- SET BD=9999999-BDATE
- SET G=""
- +12 FOR
- SET ED=$ORDER(^AUPNVCPT("AA",P,CPTI,ED))
- IF ED=""!($PIECE(ED,".")>BD)!(G)
- QUIT
- Begin DoDot:1
- +13 SET I=0
- FOR
- SET I=$ORDER(^AUPNVCPT("AA",P,CPTI,ED,I))
- IF I'=+I!(G)
- QUIT
- Begin DoDot:2
- +14 SET V=$PIECE($GET(^AUPNVCPT(I,0)),U,3)
- +15 IF SCEX]""
- IF SCEX[$PIECE(^AUPNVSIT(V,0),U,7)
- QUIT
- +16 IF SCLN]""
- IF $$CLINIC^APCLV(V,"C")=SCLN
- QUIT
- +17 SET M=$$VAL^XBDIQ1(9000010.18,I,.08)
- +18 SET M1=$$VAL^XBDIQ1(9000010.18,I,.09)
- +19 SET Q=0
- +20 IF SMOD]""
- FOR J=1:1
- SET K=$PIECE(SMOD,";",J)
- IF K=""
- QUIT
- IF K=M
- SET Q=1
- +21 IF Q
- QUIT
- +22 IF SMOD]""
- FOR J=1:1
- SET K=$PIECE(SMOD,";",J)
- IF K=""
- QUIT
- IF K=M1
- SET Q=1
- +23 IF Q
- QUIT
- +24 SET G="1"_"^"_(9999999-ED)
- End DoDot:2
- End DoDot:1
- +25 QUIT G
- +26 ;
- TRANI(P,BDATE,EDATE,CPTI) ;EP
- +1 IF '$GET(P)
- QUIT ""
- +2 IF $GET(TRANI)=""
- QUIT ""
- +3 IF $GET(BDATE)=""
- QUIT ""
- +4 IF $GET(EDATE)=""
- QUIT ""
- +5 IF '$DATA(^ICPT(CPTI))
- QUIT ""
- +6 ;no cpts for this patient
- IF '$DATA(^AUPNVTC("AC",P))
- QUIT ""
- +7 NEW X,V,C,G
- +8 SET G=""
- +9 SET X=0
- FOR
- SET X=$ORDER(^AUPNVTC("AC",P,X))
- IF X'=+X
- QUIT
- Begin DoDot:1
- +10 SET C=$PIECE($GET(^AUPNVTC(X,0)),U,7)
- +11 IF C'=CPTI
- QUIT
- +12 SET V=$PIECE(^AUPNVTC(X,0),U,3)
- +13 SET V=$PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")
- +14 IF V<BDATE
- QUIT
- +15 IF V>EDATE
- QUIT
- +16 SET G="1"_"^"_V
- End DoDot:1
- +17 QUIT G
- TRAN(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT IN A TRAN CODE
- +1 IF '$GET(P)
- QUIT ""
- +2 IF '$GET(T)
- QUIT ""
- +3 IF '$GET(F)
- SET F=1
- +4 IF $GET(EDATE)=""
- QUIT ""
- +5 IF $GET(BDATE)=""
- SET BDATE=$$FMADD^XLFDT(EDATE,-365)
- +6 ;go through visits in a date range for this patient, check cpts
- +7 NEW D,BD,ED,X,Y,D,G,V
- +8 SET ED=(9999999-EDATE)
- SET BD=9999999-BDATE
- SET G=0
- +9 FOR
- SET ED=$ORDER(^AUPNVSIT("AA",P,ED))
- IF ED=""!($PIECE(ED,".")>BD)!(G)
- QUIT
- Begin DoDot:1
- +10 SET V=0
- FOR
- SET V=$ORDER(^AUPNVSIT("AA",P,ED,V))
- IF V'=+V!(G)
- QUIT
- Begin DoDot:2
- +11 IF '$DATA(^AUPNVSIT(V,0))
- QUIT
- +12 IF '$DATA(^AUPNVTC("AD",V))
- QUIT
- +13 SET X=0
- FOR
- SET X=$ORDER(^AUPNVTC("AD",V,X))
- IF X'=+X!(G)
- QUIT
- Begin DoDot:3
- +14 IF $$ICD^ATXCHK($PIECE(^AUPNVTC(X,0),U,7),T,1)
- SET G=X
- +15 QUIT
- End DoDot:3
- +16 QUIT
- End DoDot:2
- +17 QUIT
- End DoDot:1
- +18 IF 'G
- QUIT ""
- +19 IF F=1
- QUIT $SELECT(G:1,1:"")
- +20 IF F=2
- QUIT G
- +21 IF F=3
- SET V=$PIECE(^AUPNVTC(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")
- +22 IF F=4
- SET V=$PIECE(^AUPNVTC(G,0),U,3)
- IF V
- QUIT $$FMTE^XLFDT($PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),"."))
- +23 IF F=5
- SET V=$PIECE(^AUPNVTC(G,0),U,3)
- IF V
- QUIT $PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE($$CPT^ICPTCOD($PIECE(^AUPNVTC(G,0),U,7)),U,2)
- +24 IF F=6
- SET V=$PIECE(^AUPNVTC(G,0),U,3)
- IF V
- QUIT 1_"^"_$PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")_"^"_$PIECE($$CPT^ICPTCOD($PIECE(^AUPNVTC(G,0),U,7)),U,2)_"^"_G_"^"_V
- +25 QUIT ""
- +26 ;
- LASTITEM(P,BD,ED,BUDT,BUDV) ;PEP - return last item APCLV OF TYPE APCLT DURING BD TO ED IN FORM APCLF
- +1 IF $GET(BD)=""
- SET BD=$$DOB^AUPNPAT(P)
- +2 IF $GET(ED)=""
- SET ED=DT
- +3 IF $GET(BUDT)=""
- QUIT ""
- +4 IF $GET(BUDV)=""
- QUIT ""
- +5 NEW BUDR,%,E,Y
- KILL R
- SET %=P_"^LAST "_BUDT_" "_BUDV_";DURING "_BD_"-"_ED
- SET E=$$START1^APCLDF(%,"BUDR(")
- +6 IF '$DATA(BUDR(1))
- QUIT ""
- +7 QUIT 1_U_$PIECE(BUDR(1),U,1)_U_$PIECE(BUDR(1),U,3)_U_$PIECE(BUDR(1),U,2)
- +8 ;
- BANNER ;EP
- V ; GET VERSION
- +1 SET BUD("VERSION")="2.0 January, 2003"
- +2 SET BUDTEXT="TEXT"
- SET BUDLINE=3
- GOTO PRINT
- +3 FOR BUDJ=1:1
- SET BUDX=$TEXT(@BUDTEXT+BUDJ)
- SET BUDX=$PIECE(BUDX,";;",2)
- IF BUDX="QUIT"!(BUDX="")
- QUIT
- SET BUDLINE=BUDJ
- PRINT IF $DATA(IOF)
- WRITE @IOF
- +1 FOR BUDJ=1:1:BUDLINE
- SET BUDX=$TEXT(@BUDTEXT+BUDJ)
- SET BUDX=$PIECE(BUDX,";;",2)
- WRITE !?80-$LENGTH(BUDX)\2,BUDX
- KILL BUDX
- +2 WRITE !?80-(8+$LENGTH(BUD("VERSION")))/2,"Version ",BUD("VERSION")
- SITE IF '$DATA(DUZ(2))
- GOTO XIT
- IF 'DUZ(2)
- GOTO XIT
- SET BUD("SITE")=$PIECE(^DIC(4,DUZ(2),0),"^")
- WRITE !!?80-$LENGTH(BUD("SITE"))\2,BUD("SITE")
- XIT ;
- +1 KILL BUDJ,BUDX,BUDTEXT,BUDLINE,BUD("SITE"),BUD("VERSION")
- +2 QUIT
- BECPTS ;;
- +1 ;;74270
- +2 ;;74275
- +3 ;;74280
- +4 ;;
- SIGCPTS ;;
- +1 ;;45300
- +2 ;;45303
- +3 ;;45305
- +4 ;;45307
- +5 ;;45308
- +6 ;;45309
- +7 ;;45315
- +8 ;;45317
- +9 ;;45320
- +10 ;;45321
- +11 ;;45327
- +12 ;;45330
- +13 ;;45331
- +14 ;;45332
- +15 ;;45333
- +16 ;;45334
- +17 ;;45336
- +18 ;;45337
- +19 ;;45338
- +20 ;;45339
- +21 ;;45341
- +22 ;;45342
- +23 ;;45345
- +24 ;;
- COLOCPTS ;;
- +1 ;;45355
- +2 ;;45360
- +3 ;;45361
- +4 ;;45362
- +5 ;;45363
- +6 ;;45364
- +7 ;;45365
- +8 ;;45366
- +9 ;;45367
- +10 ;;45368
- +11 ;;45369
- +12 ;;45370
- +13 ;;45371
- +14 ;;45372
- +15 ;;45378
- +16 ;;45379
- +17 ;;45380
- +18 ;;45382
- +19 ;;45383
- +20 ;;45384
- +21 ;;45385
- +22 ;;45387
- +23 ;;