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

BEHOPTP1.m

Go to the documentation of this file.
  1. BEHOPTP1 ;MSC/IND/DKM - Patient List Management ;16-Feb-2008 10:02;DKM
  1. ;;1.1;BEH COMPONENTS;**004004**;Mar 20, 2007
  1. ;=================================================================
  1. ; Return list of patients with clinic appt w/in range
  1. CLINPTS(DATA,LOC,START,END,MAX) ;EP
  1. I +$G(LOC)<1 S DATA(1)="^No clinic identified" Q
  1. I '$$ACTLOC^BEHOENCX(LOC) S DATA(1)="^Clinic is not active" Q
  1. N DFN,CNT,J,X,DAT,DATX,QUALS,VIEN,VSTR
  1. S MAX=$G(MAX,200),CNT=0
  1. D:START="" GETPAR^CIAVMRPC(.START,"ORLP DEFAULT CLINIC START DATE",,,"E")
  1. D:END="" GETPAR^CIAVMRPC(.END,"ORLP DEFAULT CLINIC STOP DATE",,,"E")
  1. D DT^DILF("T",START,.START,"","")
  1. D DT^DILF("T",END,.END,"","")
  1. I (START=-1)!(END=-1) S DATA(1)="^Error in date range." Q
  1. S END=END\1+.9,DAT=START,LOC=+LOC,DATX=$S(START\1=(END\1):"",1:" ")
  1. F S DAT=$O(^SC(LOC,"S",DAT)),J=0 Q:'DAT!(DAT>END) D:$L($G(^SC(LOC,"S",DAT,1,0))) Q:CNT'<MAX
  1. .S:$L(DATX) DATX=" on "_$$ENTRY^CIAUDT(DAT)
  1. .F S J=$O(^SC(+LOC,"S",DAT,1,J)) Q:'J!(CNT'<MAX) D
  1. ..S X=^SC(LOC,"S",DAT,1,J,0)
  1. ..Q:$P(X,U,9)="C" ; cancelled clinic availability
  1. ..S DFN=+X
  1. ..S X=$G(^DPT(DFN,"S",DAT,0))
  1. ..Q:+X'=LOC ; appt cancelled/resched
  1. ..I $P(X,U,2)'="NT",($P(X,U,2)["C")!($P(X,U,2)["N") Q ; quit if appt cancelled or no show
  1. ..S VIEN=+$P($G(^SCE(+$P(X,U,20),0)),U,5)
  1. ..I VIEN,$D(^AUPNVSIT(VIEN,0)) S VSTR=LOC_";"_+^(0)_";A;"_VIEN
  1. ..E S VSTR=LOC_";"_DAT_";A"
  1. ..S:$$ISACTIVE^BEHOPTCX(DFN,.QUALS) CNT=CNT+1,DATA(CNT)=DFN_U_$P(^DPT(DFN,0),U)_U_DATX_U_VSTR
  1. I CNT'<MAX D ;maximum allowable appointments exceeded
  1. .K DATA
  1. .S DATA(1)="^Too many appointments found; please narrow search range."
  1. S:'$D(DATA) DATA(1)="^No appointments."
  1. Q
  1. ; Return appts for a patient between beginning and end dates for a clinic, if no clinic return all appointments
  1. PTAPPTS(DATA,DFN,START,END,LOC) ;EP
  1. I '$$ACTLOC^BEHOENCX(LOC) S DATA(1)="^Clinic is not active" Q
  1. N VASD,VAERR,NUM,CNT,INVDT,INT,EXT,ORSRV
  1. S NUM=0,CNT=0
  1. I START="" D
  1. .D:'$L(LOC) GETPAR^CIAVMRPC(.START,"ORQQAP SEARCH RANGE START",,,"E")
  1. .S:START="" START="T" ;default start date across all clinics is today
  1. I END="" D
  1. .D:'$L(LOC) GETPAR^CIAVMRPC(.START,"ORQQAP SEARCH RANGE STOP",,,"E")
  1. .S:END="" END="T" ;default end date across all clinics is today
  1. D DT^DILF("T",START,.START,"","")
  1. D DT^DILF("T",END,.END,"","")
  1. I (START=-1)!(END=-1) S DATA(1)="^Error in date range." Q
  1. S VASD("F")=START
  1. S VASD("T")=END\1+.5
  1. S:$L(LOC) VASD("C",LOC)=""
  1. S DATA(1)="^No appointments."
  1. D SDA^VADPT
  1. Q:VAERR=1
  1. F S NUM=$O(^UTILITY("VASD",$J,NUM)) Q:'NUM D
  1. .S INT=^UTILITY("VASD",$J,NUM,"I"),INVDT=9999999-$P(INT,U)
  1. .S EXT=^UTILITY("VASD",$J,NUM,"E")
  1. .S CNT=CNT+1,DATA(CNT)=$P(INT,U)_U_$P(EXT,U,2)_U_$P(EXT,U,3)_U_$P(EXT,U,4)_U_INVDT
  1. K ^UTILITY("VASD",$J)
  1. Q
  1. ; Return provider list
  1. PROVLST(DATA,FROM,DIR,MAX) ;EP
  1. N IEN,CNT
  1. S FROM=$G(FROM),DIR=$G(DIR,1),MAX=$G(MAX,44),CNT=0
  1. F S FROM=$O(^VA(200,"B",FROM),DIR),IEN="" Q:FROM="" D:$E(FROM)'="*" Q:CNT'<MAX
  1. .F S IEN=$O(^VA(200,"B",FROM,IEN),DIR) Q:'IEN D
  1. ..I $D(^XUSEC("PROVIDER",IEN)),$$ACTIVE^XUSER(IEN) S CNT=CNT+1,DATA(CNT)=IEN_U_FROM
  1. Q
  1. ; Return list of patients associated w/ primary provider
  1. PROVPTS(DATA,PROV) ;EP
  1. I +$G(PROV)<1 S DATA(1)="^No provider identified" Q
  1. N DFN,CNT,QUALS
  1. S (CNT,DFN)=0,DATA(1)="^No patients found."
  1. F S DFN=+$O(^DPT("APR",PROV,DFN)) Q:'DFN D
  1. .S:$$ISACTIVE^BEHOPTCX(DFN,.QUALS) CNT=CNT+1,DATA(CNT)=DFN_U_$P(^DPT(DFN,0),U)
  1. Q
  1. ; Return list of treating specialties
  1. SPECLST(DATA,FROM,DIR,MAX) ;EP
  1. N CNT,IEN
  1. S FROM=$G(FROM),DIR=$G(DIR,1),MAX=$G(MAX,44),CNT=0
  1. F S FROM=$O(^DIC(45.7,"B",FROM),DIR),IEN="" Q:FROM="" D Q:CNT'<MAX
  1. .F S IEN=$O(^DIC(45.7,"B",FROM,IEN),DIR) Q:'IEN D
  1. ..S:$$ACTIVE^DGACT(45.7,IEN) CNT=CNT+1,DATA(CNT)=IEN_U_FROM
  1. Q
  1. ; Return list of patients associated w/ treating specialty
  1. SPECPTS(DATA,SPEC) ;EP
  1. I +$G(SPEC)<1 S DATA(1)="^No specialty identified" Q
  1. N CNT,DFN,QUALS
  1. S (CNT,DFN)=0,DATA(1)="^No patients found."
  1. F S DFN=+$O(^DPT("ATR",SPEC,DFN)) Q:'DFN D
  1. .S:$$ISACTIVE^BEHOPTCX(DFN,.QUALS) CNT=CNT+1,DATA(CNT)=DFN_U_$P(^DPT(DFN,0),U)
  1. Q
  1. ; Return list of patients on a ward
  1. WARDPTS(DATA,LOC) ;EP
  1. N CNT,DFN,WARD,QUALS
  1. I +$G(LOC)<1 S DATA(1)="^No ward identified." Q
  1. S WARD=+$G(^SC(+LOC,42))
  1. I '$D(^DIC(42,WARD,0)) S DATA(1)="^Not a valid ward." Q
  1. S (CNT,DFN)=0,WARD=$P(^DIC(42,WARD,0),U),DATA(1)="^No patients found."
  1. F S DFN=+$O(^DPT("CN",WARD,DFN)) Q:'DFN D:$$ISACTIVE^BEHOPTCX(DFN,.QUALS)
  1. .S CNT=CNT+1,DATA(CNT)=DFN_U_$P(^DPT(DFN,0),U)_U_$P($G(^DPT(DFN,.101)),U)
  1. .S DATA(CNT)=DATA(CNT)_U_$P($$ADMITINF^BEHOENCX(DFN,^DPT("CN",WARD,DFN)),U)
  1. Q
  1. ; Returns all teams to which a user belongs
  1. ; PER = If nonzero, return personal lists. Otherwise, return team lists.
  1. TEAMLST(DATA,PER) ;EP
  1. N CNT,IEN,X
  1. S (CNT,IEN)=0,PER=''$G(PER)
  1. F S IEN=$O(^OR(100.21,"C",DUZ,IEN)) Q:'IEN D
  1. .S X=$G(^OR(100.21,IEN,0))
  1. .S:$P(X,U,2)="P"=PER CNT=CNT+1,DATA(CNT)=IEN_U_X
  1. Q
  1. ; Return list of patients belonging to a team
  1. TEAMPTS(DATA,TEAM) ;EP
  1. N CNT,IEN,DFN,QUALS
  1. S DATA(1)="^No patients found.",(CNT,IEN)=0,TEAM=+TEAM
  1. I '$D(^OR(100.21,TEAM,0)) S DATA(1)="^Not a valid team." Q
  1. F S IEN=$O(^OR(100.21,TEAM,10,IEN)) Q:'IEN S DFN=+$G(^(IEN,0)) D
  1. .S:$$ISACTIVE^BEHOPTCX(DFN,.QUALS) CNT=CNT+1,DATA(CNT)=DFN_U_$P(^DPT(DFN,0),U)
  1. Q
  1. ; Return list of locations
  1. HOSPLOC(DATA,FROM,DIR,MAX,TYPE,START,END) ;EP
  1. D HOSPLOC^BEHOENCX(.DATA,.FROM,.DIR,.MAX,.TYPE,.START,.END)
  1. Q