- BGP4DU ; IHS/CMI/LAB - gpra utility calls ;
- ;;14.1;IHS CLINICAL REPORTING;;MAY 29, 2014;Build 114
- ;
- ;
- 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
- .Q:$$UP^XLFSTR($$VAL^XBDIQ1(9002086.1,V,.05))="ERROR/DISREGARD"
- .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) ;EP
- I $G(P)="" Q ""
- I $G(A)="" Q ""
- N T
- ;S T=$O(^ICD9("AB",A,0))
- S T=+$$CODEN^BGP4UTL2(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",$P(^AUPNPROB(X,0),U,12)'="I" 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^BGP4UTL2(Y,T,9) S I=1
- 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^BGP4UTL2($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
- 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^BGP4UTL2(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)_"^"_$$VALI^XBDIQ1(9000010.18,I,.03)
- 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_"^"_$$VALI^XBDIQ1(9000010.33,X,.03)
- 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^BGP4UTL2($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
- Q ""
- ;
- LASTITEM(P,BD,ED,BGPT,BGPV) ;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(BGPT)="" Q ""
- I $G(BGPV)="" Q ""
- NEW BGPR,%,E,Y K R S %=P_"^LAST "_BGPT_" "_BGPV_";DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BGPR(")
- I '$D(BGPR(1)) Q ""
- Q 1_U_$P(BGPR(1),U,1)_U_$P(BGPR(1),U,3)_U_$P(BGPR(1),U,2)
- ;
- BANNER ;EP
- V ; GET VERSION
- S BGP("VERSION")="2.0 January, 2003"
- S BGPTEXT="TEXT",BGPLINE=3 G PRINT
- F BGPJ=1:1 S BGPX=$T(@BGPTEXT+BGPJ),BGPX=$P(BGPX,";;",2) Q:BGPX="QUIT"!(BGPX="") S BGPLINE=BGPJ
- PRINT W:$D(IOF) @IOF
- F BGPJ=1:1:BGPLINE S BGPX=$T(@BGPTEXT+BGPJ),BGPX=$P(BGPX,";;",2) W !?80-$L(BGPX)\2,BGPX K BGPX
- W !?80-(8+$L(BGP("VERSION")))/2,"Version ",BGP("VERSION")
- SITE G XIT:'$D(DUZ(2)) G:'DUZ(2) XIT S BGP("SITE")=$P(^DIC(4,DUZ(2),0),"^") W !!?80-$L(BGP("SITE"))\2,BGP("SITE")
- XIT ;
- K BGPJ,BGPX,BGPTEXT,BGPLINE,BGP("SITE"),BGP("VERSION")
- Q
- PAUSE ;EP - pause
- K DIR,DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
- S DIR("A")="Press Enter to Continue",DIR(0)="E" D ^DIR KILL DIR
- Q
- TEXT ;
- ;;*******************************************************
- ;;** Indian Health Service GPRA Data Reporting System **
- ;;*******************************************************
- ;;QUIT
- 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
- ;;
- BGP4DU ; IHS/CMI/LAB - gpra utility calls ;
- +1 ;;14.1;IHS CLINICAL REPORTING;;MAY 29, 2014;Build 114
- +2 ;
- +3 ;
- 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 IF $$UP^XLFSTR($$VAL^XBDIQ1(9002086.1,V,.05))="ERROR/DISREGARD"
- QUIT
- +12 SET D=$PIECE(^BWPCD(V,0),U,12)
- +13 IF D<BDATE
- QUIT
- +14 IF D>EDATE
- QUIT
- +15 SET I=$ORDER(G(0))
- IF I>D
- QUIT
- +16 SET G=V
- SET G(D)=""
- +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 D=$PIECE(^BWPCD(G,0),U,12)
- QUIT D
- +22 IF F=4
- SET D=$PIECE(^BWPCD(G,0),U,12)
- QUIT $$FMTE^XLFDT(D)
- +23 QUIT ""
- PLCODE(P,A) ;EP
- +1 IF $GET(P)=""
- QUIT ""
- +2 IF $GET(A)=""
- QUIT ""
- +3 NEW T
- +4 ;S T=$O(^ICD9("AB",A,0))
- +5 SET T=+$$CODEN^BGP4UTL2(A,80)
- +6 IF T'>0
- QUIT ""
- +7 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 Y=T
- SET I=1
- +8 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^BGP4UTL2(Y,T,9)
- SET I=1
- +6 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^BGP4UTL2($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
- +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^BGP4UTL2(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)_"^"_$$VALI^XBDIQ1(9000010.18,I,.03)
- 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_"^"_$$VALI^XBDIQ1(9000010.33,X,.03)
- 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^BGP4UTL2($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
- +25 QUIT ""
- +26 ;
- LASTITEM(P,BD,ED,BGPT,BGPV) ;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(BGPT)=""
- QUIT ""
- +4 IF $GET(BGPV)=""
- QUIT ""
- +5 NEW BGPR,%,E,Y
- KILL R
- SET %=P_"^LAST "_BGPT_" "_BGPV_";DURING "_BD_"-"_ED
- SET E=$$START1^APCLDF(%,"BGPR(")
- +6 IF '$DATA(BGPR(1))
- QUIT ""
- +7 QUIT 1_U_$PIECE(BGPR(1),U,1)_U_$PIECE(BGPR(1),U,3)_U_$PIECE(BGPR(1),U,2)
- +8 ;
- BANNER ;EP
- V ; GET VERSION
- +1 SET BGP("VERSION")="2.0 January, 2003"
- +2 SET BGPTEXT="TEXT"
- SET BGPLINE=3
- GOTO PRINT
- +3 FOR BGPJ=1:1
- SET BGPX=$TEXT(@BGPTEXT+BGPJ)
- SET BGPX=$PIECE(BGPX,";;",2)
- IF BGPX="QUIT"!(BGPX="")
- QUIT
- SET BGPLINE=BGPJ
- PRINT IF $DATA(IOF)
- WRITE @IOF
- +1 FOR BGPJ=1:1:BGPLINE
- SET BGPX=$TEXT(@BGPTEXT+BGPJ)
- SET BGPX=$PIECE(BGPX,";;",2)
- WRITE !?80-$LENGTH(BGPX)\2,BGPX
- KILL BGPX
- +2 WRITE !?80-(8+$LENGTH(BGP("VERSION")))/2,"Version ",BGP("VERSION")
- SITE IF '$DATA(DUZ(2))
- GOTO XIT
- IF 'DUZ(2)
- GOTO XIT
- SET BGP("SITE")=$PIECE(^DIC(4,DUZ(2),0),"^")
- WRITE !!?80-$LENGTH(BGP("SITE"))\2,BGP("SITE")
- XIT ;
- +1 KILL BGPJ,BGPX,BGPTEXT,BGPLINE,BGP("SITE"),BGP("VERSION")
- +2 QUIT
- PAUSE ;EP - pause
- +1 KILL DIR,DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
- +2 SET DIR("A")="Press Enter to Continue"
- SET DIR(0)="E"
- DO ^DIR
- KILL DIR
- +3 QUIT
- TEXT ;
- +1 ;;*******************************************************
- +2 ;;** Indian Health Service GPRA Data Reporting System **
- +3 ;;*******************************************************
- +4 ;;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 ;;