Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: APCLV1

APCLV1.m

Go to the documentation of this file.
  1. APCLV1 ; IHS/CMI/LAB - visit entry utilities/get codes ;
  1. ;;2.0;IHS PCC SUITE;**10**;MAY 14, 2009;Build 88
  1. ;
  1. ;IHS/TUCSON/LAB - patch 1 modified subroutine FACTX to check
  1. ;for existence of AUTTLOC( node 3/4/97
  1. ;cmi/anch/maw 9/12/2007 code set versioning in EM
  1. COMM ;EP ; get COMMUNITY - STATE,COUNTY,COMMUNITY codes
  1. NEW Y,%,P,Z
  1. S %=""
  1. I '$D(^AUPNVSIT(V,0)) Q %
  1. S P=$P(^AUPNVSIT(V,0),U,5)
  1. I 'P Q %
  1. I '$D(^AUPNPAT(P)) Q %
  1. S Y=$O(^AUPNPAT(P,51,""),-1) I 'Y Q %
  1. S Z=$P(^AUPNPAT(P,51,Y,0),U,3)
  1. I 'Z S Z=$P($G(^AUPNPAT(P,11)),U,17)
  1. I 'Z Q ""
  1. Q $S($G(F)="E":$P(^AUTTCOM(Z,0),U),$G(F)="C":$P(^AUTTCOM(Z,0),U,8),1:Z)
  1. ;
  1. CHART ;EP - returns ASUFAC_HRN ( 12 digits, HRN is left zero filled)
  1. NEW L,%,C,S,P,Z
  1. S %=""
  1. I '$D(^AUPNVSIT(V,0)) Q %
  1. S Z=^AUPNVSIT(V,0)
  1. S P=$P(Z,U,5)
  1. I 'P Q %
  1. I $P(Z,U,6),$D(^AUPNPAT(P,41,$P(Z,U,6),0)) S L=$P(Z,U,6) S %=$$GETCHART(L) I %]"" Q %
  1. I $G(DUZ(2)) S L=DUZ(2) S %=$$GETCHART(L)
  1. I %="" S L=$O(^AUPNPAT(P,41,0)) I L S %=$$GETCHART(L)
  1. I %="" S %=" ??????"
  1. Q %
  1. GETCHART(L) ;
  1. S S=$P(^AUTTLOC(L,0),U,10)
  1. I S="" Q S
  1. S C=$P($G(^AUPNPAT(P,41,L,0)),U,2)
  1. I C="" Q C
  1. S C=$E("000000",1,6-$L(C))_C
  1. S %=S_C
  1. Q %
  1. ;
  1. GETABBRV ;
  1. LOCENC ;EP - given visit ien V, return loc. of encounter in format F
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,6)
  1. I Y="" Q Y
  1. I '$D(^AUTTLOC(Y)) Q -1
  1. Q $S($G(F)="E":$P(^DIC(4,Y,0),U),$G(F)="C":$P(^AUTTLOC(Y,0),U,10),1:Y)
  1. ;
  1. VD ; EP - given visit ien in V, return date of visit in internal or external format
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. VDTM ;EP - given visit ien in V, return visit date and time in F format
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2"),$G(F)="E":$$FMTE^XLFDT(Y,"1"),1:Y)
  1. ;
  1. TIME ;EP - given visit ien in V, returns visit time of day in format F
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U)
  1. I Y="" Q Y
  1. S Y=$S($G(F)="E":$$FMTE^XLFDT(Y,"2"),$G(F)="P":$$FMTE^XLFDT(Y,"2P"),1:Y)
  1. I $G(F)="P" Q $P(Y," ",2,99)
  1. I $G(F)="E" Q $P(Y,"@",2)
  1. Q $P(Y,".",2)
  1. ;
  1. LASTVD(P,F) ;PEP - given patient DFN in P, return pt's last pcc visit date,
  1. ; using the data fetcher. Returns date in format specified in F.
  1. I '$G(P) Q ""
  1. I $G(F)="" S F="I"
  1. I '$D(^AUPNVSIT("AC",P)) Q ""
  1. NEW Y,ERR,LVD
  1. S ERR=$$START1^APCLDF(P_"^LAST VISIT","LVD(")
  1. I '$D(LVD(1)) Q "" ;IHS/CMI/LAB
  1. S Y=$P(LVD(1),U)
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. DOW ;EP - returns
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P($P(^AUPNVSIT(V,0),U),".")
  1. I Y="" Q Y
  1. Q $S($G(F)="E":$$DOW^XLFDT(Y),1:$$DOW^XLFDT(Y,1))
  1. ;
  1. TYPE ;EP type of visit
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,3)
  1. Q $S(Y="":Y,$G(F)="E":$$EXTSET^XBFUNC(9000010,.03,Y),1:Y)
  1. ;
  1. SC ;EP - service category
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,7)
  1. Q $S(Y="":Y,$G(F)="E":$$EXTSET^XBFUNC(9000010,.07,Y),1:Y)
  1. ;
  1. CLINIC ;EP - clinic
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,8)
  1. I Y="" Q Y
  1. I '$D(^DIC(40.7,Y)) Q -1
  1. Q $S($G(F)="E":$P(^DIC(40.7,Y,0),U),$G(F)="C":$P(^DIC(40.7,Y,0),U,2),1:Y)
  1. ;
  1. EM ;EP - eval&man cpt code
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,17)
  1. I Y="" Q Y
  1. I '$D(^ICPT(Y)) Q -1
  1. ;Q $S($G(F)="E":$P(^ICPT(Y,0),U,2),$G(F)="C":$P(^ICPT(Y,0),U),1:Y) ;cmi/anch/maw 9/12/2007 orig line
  1. Q $S($G(F)="E":$P($$CPT^ICPTCOD(Y),U,3),$G(F)="C":$P($$CPT^ICPTCOD(Y),U,2),1:Y) ;cmi/anch/maw 9/10/2007 csv
  1. ;
  1. LS ;EP - level of service code
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,19)
  1. Q $S(Y="":Y,$G(F)="E":$$EXTSET^XBFUNC(9000010,.19,Y),1:Y)
  1. ;
  1. NLAB ;EP - #labs
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y
  1. S (Y,%)=0 F S Y=$O(^AUPNVLAB("AD",V,Y)) Q:Y'=+Y S %=%+1
  1. Q %
  1. NRX ;EP - #rxs
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y
  1. S (Y,%)=0 F S Y=$O(^AUPNVMED("AD",V,Y)) Q:Y'=+Y S %=%+1
  1. Q %
  1. ;
  1. ADMSERV ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. S Y=$$VALI^XBDIQ1(9000010.02,Z,.04)
  1. Q $S('Y:%,$G(F)="C":$P($G(^DIC(45.7,Y,9999999)),U),$G(F)="I":Y,$G(F)="E":$P(^DIC(45.7,Y,0),U),1:"")
  1. DSCHSERV ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. S Y=$$VALI^XBDIQ1(9000010.02,Z,.05)
  1. Q $S('Y:%,$G(F)="C":$P($G(^DIC(45.7,Y,9999999)),U),$G(F)="I":Y,$G(F)="E":$P(^DIC(45.7,Y,0),U),1:"")
  1. ADMTYPE ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. S Y=$$VALI^XBDIQ1(9000010.02,Z,.07)
  1. I $P(^DD(9000010.02,.07,0),U,2)[42.1 Q $S('Y:%,$G(F)="C":$P($G(^DIC(42.1,Y,9999999)),U),$G(F)="I":Y,$G(F)="E":$P(^DIC(42.1,Y,0),U),1:"")
  1. I $P(^DD(9000010.02,.07,0),U,2)[405.1 Q $S('Y:%,$G(F)="C":$P($G(^DG(405.1,Y,"IHS")),U),$G(F)="I":Y,$G(F)="E":$P(^DG(405.1,Y,0),U),1:"")
  1. Q ""
  1. ADMUB ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. I $G(F)="C" Q $$VALI^XBDIQ1(9000010.02,Z,6101)
  1. Q $$VAL^XBDIQ1(9000010.02,Z,6101)
  1. ADMSOURC ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. I $G(F)="C" D Q Y
  1. .S Y=$$VALI^XBDIQ1(9000010.02,Z,6102) I 'Y Q
  1. .S Y=$$VAL^XBDIQ1(9999999.53,Y,.02)
  1. Q $$VAL^XBDIQ1(9000010.02,Z,6102)
  1. DSCHTYPE ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. S Y=$$VALI^XBDIQ1(9000010.02,Z,.06)
  1. I $P(^DD(9000010.02,.06,0),U,2)[42.2 Q $S('Y:%,$G(F)="C":$P($G(^DIC(42.2,Y,9999999)),U),$G(F)="I":Y,$G(F)="E":$P(^DIC(42.2,Y,0),U),1:"")
  1. I $P(^DD(9000010.02,.06,0),U,2)[405.1 Q $S('Y:%,$G(F)="C":$P($G(^DG(405.1,Y,"IHS")),U),$G(F)="I":Y,$G(F)="E":$P(^DG(405.1,Y,0),U),1:"")
  1. Q ""
  1. DSCHDATE ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y,Z
  1. S Z=$O(^AUPNVINP("AD",V,0)) I 'Z Q Z
  1. S Y=$P(^AUPNVINP(Z,0),U)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. DDTM ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y,Z
  1. S Z=$O(^AUPNVINP("AD",V,0)) I 'Z Q Z
  1. S Y=$P(^AUPNVINP(Z,0),U)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2"),$G(F)="E":$$FMTE^XLFDT(Y),1:Y)
  1. CONSULTS ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y,Z
  1. I $P(^AUPNVSIT(V,0),U,7)'="H" Q ""
  1. S Z=$O(^AUPNVINP("AD",V,0)) I 'Z Q Z
  1. Q $P(^AUPNVINP(Z,0),U,8)
  1. LOS ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y,Z,X,X1,X2
  1. S Z=$O(^AUPNVINP("AD",V,0)) I 'Z Q Z
  1. S X1=$P($P(^AUPNVINP(Z,0),U),"."),X2=$P($P(^AUPNVSIT($P(^AUPNVINP(Z,0),U,3),0),U),".") D ^%DTC
  1. S:X=0 X=1
  1. Q X
  1. FACTX ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW %,Y,Z
  1. S %="",Z=$O(^AUPNVINP("AD",V,0))
  1. I 'Z Q %
  1. I F="I" Q $$VALI^XBDIQ1(9000010.02,Z,.09)
  1. I F="C" S Y=$$VALI^XBDIQ1(9000010.02,Z,.09) S Y=+Y S Y=$S('Y:"",$D(^AUTTLOC(Y,0)):$P(^AUTTLOC(Y,0),U,10),1:"") Q Y ;IHS/TUCSON/LAB - patch1 changed this line to check for existence of AUTTLOC node 3/4/97
  1. Q $$VAL^XBDIQ1(9000010.02,Z,.09)
  1. ACTTIME ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$O(^AUPNVTM("AD",V,0))
  1. I 'Y Q Y
  1. Q $$VALI^XBDIQ1(9000010.19,Y,.01)
  1. TRAVTIME ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$O(^AUPNVTM("AD",V,0))
  1. I 'Y Q Y
  1. Q $$VALI^XBDIQ1(9000010.19,Y,.04)
  1. CHSCOST ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$O(^AUPNVCHS("AD",V,0))
  1. I 'Y Q Y
  1. Q $$VALI^XBDIQ1(9000010.03,Y,.06)
  1. ;
  1. PATIENT ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,5)
  1. I Y="" Q Y
  1. I '$D(^DPT(Y)) Q -1
  1. Q $S($G(F)="E":$P(^DPT(Y,0),U),$G(F)="C":$$CHART^APCLV(V),1:Y)
  1. ;
  1. DLM ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,13)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. DVEX ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,14)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. DWEX ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P($G(^AUPNVSIT(V,11)),U,6)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. APWI ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,16)
  1. Q $S(Y="":Y,$G(F)="E":$$EXTSET^XBFUNC(9000010,.16,Y),1:Y)
  1. ;
  1. CODT ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,18)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. ;
  1. APDT ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. S Y=$P(^AUPNVSIT(V,0),U,25)
  1. I Y="" Q Y
  1. Q $S($G(F)="S":$$FMTE^XLFDT(Y,"2D"),$G(F)="E":$$FMTE^XLFDT(Y,"1D"),1:$P(Y,"."))
  1. OUTSL ;EP
  1. I 'V Q -1
  1. I '$D(^AUPNVSIT(V)) Q -1
  1. NEW Y
  1. Q $P($G(^AUPNVSIT(V,21)),U)
  1. ;
  1. PCHART ;EP
  1. NEW %,C,S,Z
  1. S %=""
  1. I '$D(^AUPNPAT(P,0)) Q %
  1. I 'L Q %
  1. I '$D(^AUPNPAT(P,41,L,0)) Q %
  1. S %=$$GETCHART(L)
  1. I %="" S %=" ??????"
  1. S %=$P(^AUTTLOC(L,0),U,7)_$E(%,7,12)
  1. Q %
  1. ;
  1. APCWL ;EP
  1. I $G(V)="" Q ""
  1. I '$D(^AUPNVSIT(V)) Q ""
  1. NEW R,L,P,C S R=^AUPNVSIT(V,0)
  1. I $P(R,U,11) Q "" ;deleted visit
  1. I '$P(R,U,9) Q "" ;no dep entries
  1. I '$D(^AUPNVPOV("AD",V)) Q "" ;no pov's
  1. I '$D(^AUPNVPRV("AD",V)) Q "" ; no provider
  1. I $P(R,U,3)="" Q ""
  1. I $P(R,U,7)="" Q ""
  1. I "AOS"'[$P(R,U,7) Q "" ;no A, O S
  1. I "CVS"[$P(R,U,3) Q "" ;no contract, state or VA
  1. S P=$P(R,U,5)
  1. I 'P Q "" ;no patient
  1. I '$D(^DPT(P,0)) Q "" ;no patient
  1. I $P(^DPT(P,0),U)["DEMO,PATIENT" Q "" ;no demo,patient visits
  1. S L=$P(R,U,6)
  1. I L="" Q "" ;no location
  1. I '$D(^AUTTLOC(L,0)) Q "" ;location invalid
  1. ;check clinic
  1. N CL ;cmi/anch/maw 8/7/2007
  1. S C=$P(R,U,8) ;cmi/anch/maw 8/7/2007 split line here for dental mod
  1. S CL=$S(C:$P(^DIC(40.7,C,0),U,2),1:25) ;if no clinic make it other
  1. I CL=56,$D(^AUPNVMED("AD",V)) Q 1 ;dental visit with med
  1. I C,$P($G(^DIC(40.7,C,90000)),U)'="Y" Q "" ;cmi/anch/maw 8/7/2007 moved this line and modified from split line
  1. ;I $T(@C)]"" Q "" ;not a workload reportable clinic code
  1. S D=$$PRIMPROV^APCLV(V,"F") ;get internal of prov disc
  1. I D="" Q ""
  1. I '$D(^DIC(7,D,9999999)) Q "" ;can't check discipline
  1. I $P($G(^DIC(7,D,9999999)),U,5)="Y" Q 1
  1. Q ""
  1. CLEX ;
  1. 09 ;;
  1. 11 ;;
  1. 36 ;;
  1. 41 ;;
  1. 42 ;;
  1. 51 ;;
  1. 52 ;;
  1. 53 ;;
  1. 54 ;;
  1. 60 ;;
  1. 99 ;;