| 1 | ORQPTQ2 ; slc/CLA - Functions which return patient lists and list sources pt 2 ;3/14/05 10:50
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**9,10,85,187,190,195,215**;Dec 17, 1997
|
---|
| 3 | ;
|
---|
| 4 | ; Ref. to ^UTILITY via IA 10061
|
---|
| 5 | ; DBIA 3869 GETPLIST^SDAMA202 ^TMP($J,"SDAMA202")
|
---|
| 6 | ;
|
---|
| 7 | CLIN(Y) ; RETURN LIST OF CLINICS
|
---|
| 8 | N ORLST,IEN,I
|
---|
| 9 | D GETLST^XPAR(.ORLST,"ALL","ORWD COMMON CLINIC")
|
---|
| 10 | S I=0 F S I=$O(ORLST(I)) Q:'I D
|
---|
| 11 | . S IEN=$P(ORLST(I),U,2) I $$ACTLOC^ORWU(IEN)=1 D
|
---|
| 12 | .. S Y(I)=IEN_U_$P(^SC(IEN,0),U,1)
|
---|
| 13 | Q
|
---|
| 14 | ;
|
---|
| 15 | CLINPTS(Y,CLIN,ORBDATE,OREDATE) ; RETURN LIST OF PTS W/CLINIC APPT W/IN BEGINNING AND END DATES
|
---|
| 16 | ; PKS-8/2003: Modified for new scheduling pkg APIs.
|
---|
| 17 | I +$G(CLIN)<1 S Y(1)="^No clinic identified" Q
|
---|
| 18 | I $$ACTLOC^ORWU(CLIN)'=1 S Y(1)="^Clinic is inactive or Occasion Of Service" Q
|
---|
| 19 | N DFN,NAME,I,J,X,ORJ,ORSRV,ORNOWDT,CHKX,CHKIN,MAXAPPTS,ORC,CLNAM,ORFLDS,ORCLIN,ORRESULT,ORSTART,OREND,ORSTAT,ORASTAT,ORERR,ORI,ORPT,ORPTSTAT,ORMAX,ORHOLD
|
---|
| 20 | S MAXAPPTS=200
|
---|
| 21 | S ORNOWDT=$$NOW^XLFDT
|
---|
| 22 | S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 23 | S DFN=0,I=1
|
---|
| 24 | I ORBDATE="" S ORBDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"E"))
|
---|
| 25 | I OREDATE="" S OREDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"E"))
|
---|
| 26 | ;
|
---|
| 27 | ; Convert ORBDATE, OREDATE to FM Date/Time:
|
---|
| 28 | D DT^DILF("T",ORBDATE,.ORBDATE,"","")
|
---|
| 29 | D DT^DILF("T",OREDATE,.OREDATE,"","")
|
---|
| 30 | I (ORBDATE=-1)!(OREDATE=-1) S Y(1)="^Error in date range." Q
|
---|
| 31 | S OREDATE=$P(OREDATE,".")_.5 ; Add 1/2 day to end date.
|
---|
| 32 | ; IA# 3869:
|
---|
| 33 | K ^TMP($J,"SDAMA202","GETPLIST") ; Clean house before starting.
|
---|
| 34 | S ORRESULT=""
|
---|
| 35 | S ORCLIN=+CLIN,ORFLDS="1;3;4;12",ORASTAT="R;NT",ORSTART=ORBDATE,OREND=OREDATE,ORSTAT="" ; Assign parameters.
|
---|
| 36 | ; ORFLDS: 1;3;4;12 = ApptDateTime;ApptStatus;IEN^PtName;PtStatus.
|
---|
| 37 | D GETPLIST^SDAMA202(ORCLIN,ORFLDS,ORASTAT,ORSTART,OREND,.ORRESULT,ORSTAT) ; DBIA 3869.
|
---|
| 38 | ;
|
---|
| 39 | ; Deal with server errors:
|
---|
| 40 | S ORERR=$$CLINERR^ORQRY01
|
---|
| 41 | I $L(ORERR) S Y(1)=U_ORERR Q
|
---|
| 42 | ;
|
---|
| 43 | ; Reassign ^TMP array to local array:
|
---|
| 44 | S (ORPT,ORI)=0,ORMAX=MAXAPPTS
|
---|
| 45 | I ORRESULT'>0 S Y(1)="^No appointments." Q
|
---|
| 46 | F S ORPT=$O(^TMP($J,"SDAMA202","GETPLIST",ORPT)) Q:ORPT=""!(ORI>ORMAX) D ;DBIA 3869
|
---|
| 47 | .S ORI=ORI+1
|
---|
| 48 | .S Y(ORI)=$G(^TMP($J,"SDAMA202","GETPLIST",ORPT,4)) ; IEN^Name.
|
---|
| 49 | .S Y(ORI)=Y(ORI)_U_ORCLIN ; ^Clinic IEN.
|
---|
| 50 | .S Y(ORI)=Y(ORI)_U_$G(^TMP($J,"SDAMA202","GETPLIST",ORPT,1)) ; App't.
|
---|
| 51 | .S ORPTSTAT=$G(^TMP($J,"SDAMA202","GETPLIST",ORPT,12)) ; Pt Status.
|
---|
| 52 | .S ORPTSTAT=$S(ORPTSTAT="I":"IPT",ORPTSTAT="O":"OPT",1:"")
|
---|
| 53 | .S ORHOLD=$G(^TMP($J,"SDAMA202","GETPLIST",ORPT,3)) ; Appt Status.
|
---|
| 54 | .I ORPTSTAT=""&(ORHOLD="NT") S ORPTSTAT="NT" ; "No Action Taken."
|
---|
| 55 | .S Y(ORI)=Y(ORI)_U_U_U_U_U_ORPTSTAT ; Pt I or O status (or "NT").
|
---|
| 56 | ;
|
---|
| 57 | K ^TMP($J,"SDAMA202","GETPLIST") ; Clean house after finishing.
|
---|
| 58 | ;
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | CDATRANG(ORY) ; return default start and stop dates for clinics in form start^stop
|
---|
| 62 | N ORBDATE,OREDATE,ORSRV
|
---|
| 63 | S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 64 | S ORBDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"E"))
|
---|
| 65 | S OREDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"E"))
|
---|
| 66 | S ORBDATE=$S($L($G(ORBDATE)):ORBDATE,1:""),OREDATE=$S($L($G(OREDATE)):OREDATE,1:"")
|
---|
| 67 | S ORY=$$UP^XLFSTR(ORBDATE)_"^"_$$UP^XLFSTR(OREDATE)
|
---|
| 68 | Q
|
---|
| 69 | PTAPPTS(Y,DFN,ORBDATE,OREDATE,CLIN) ; return appts for a patient between beginning and end dates for a clinic, if no clinic return all appointments
|
---|
| 70 | ;I +$G(CLIN)<1 S Y(1)="^No clinic identified" Q
|
---|
| 71 | I +$G(CLIN)>0,$$ACTLOC^ORWU(CLIN)'=1 S Y(1)="^Clinic is inactive or Occasion Of Service" Q
|
---|
| 72 | N ERR,ERRMSG,VASD,NUM,CNT,INVDT,INT,EXT,ORSRV,VAERR K ^UTILITY("VASD",$J) S NUM=0,CNT=1 ;IA 10061
|
---|
| 73 | I (ORBDATE="")!(OREDATE="") D ;get user's service and set up entities:
|
---|
| 74 | .S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
|
---|
| 75 | I ORBDATE="" D
|
---|
| 76 | .I '$L(CLIN) S ORBDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQEAPT ENC APPT START",1,"E"))
|
---|
| 77 | .S:ORBDATE="" ORBDATE="T" ;default start date across all clinics is today
|
---|
| 78 | I OREDATE="" D
|
---|
| 79 | .I '$L(CLIN) S OREDATE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_+$G(ORSRV)_"^DIV^SYS^PKG","ORQQEAPT ENC APPT STOP",1,"E"))
|
---|
| 80 | .S:OREDATE="" OREDATE="T" ;default end date across all clinics is today
|
---|
| 81 | ;CONVERT ORBDATE AND OREDATE INTO FILEMAN DATE/TIME
|
---|
| 82 | D DT^DILF("T",ORBDATE,.ORBDATE,"","")
|
---|
| 83 | D DT^DILF("T",OREDATE,.OREDATE,"","")
|
---|
| 84 | I (ORBDATE=-1)!(OREDATE=-1) S Y(1)="^Error in date range." Q
|
---|
| 85 | S VASD("F")=ORBDATE
|
---|
| 86 | S VASD("T")=$P(OREDATE,".")_.5 ;ADD 1/2 DAY TO END DATE
|
---|
| 87 | I $L($G(CLIN)) S VASD("C",CLIN)=""
|
---|
| 88 | D SDA^ORQRY01(.ERR,.ERRMSG)
|
---|
| 89 | I ERR K ^UTILITY("VASD",$J) S Y(1)=ERRMSG Q
|
---|
| 90 | F S NUM=$O(^UTILITY("VASD",$J,NUM)) Q:'NUM D
|
---|
| 91 | .S INT=^UTILITY("VASD",$J,NUM,"I"),INVDT=9999999-$P(INT,U)
|
---|
| 92 | .S EXT=^UTILITY("VASD",$J,NUM,"E")
|
---|
| 93 | .S Y(CNT)=$P(INT,U)_U_$P(EXT,U,2)_U_$P(EXT,U,3)_U_$P(EXT,U,4)_U_INVDT
|
---|
| 94 | .S CNT=CNT+1
|
---|
| 95 | S:+$G(Y(1))<1 Y(1)="^No appointments."
|
---|
| 96 | K ^UTILITY("VASD",$J)
|
---|
| 97 | Q
|
---|
| 98 | PROV(Y) ; RETURN LIST OF PROVIDERS
|
---|
| 99 | N I,IEN,NAME,TDATE
|
---|
| 100 | S I=1,NAME=""
|
---|
| 101 | F S NAME=$O(^VA(200,"B",NAME)) Q:NAME="" S IEN=0,IEN=$O(^(NAME,IEN)) D
|
---|
| 102 | .Q:$E(NAME)="*"
|
---|
| 103 | .I $D(^XUSEC("PROVIDER",IEN)),$$ACTIVE^XUSER(IEN) S Y(I)=IEN_"^"_NAME,I=I+1
|
---|
| 104 | Q
|
---|
| 105 | PROVPTS(Y,PROV) ; RETURN LIST OF PATIENTS LINKED TO A PRIMARY PROVIDER
|
---|
| 106 | I +$G(PROV)<1 S Y(1)="^No provider identified" Q
|
---|
| 107 | N ORI,DFN
|
---|
| 108 | S ORI=1,DFN=0
|
---|
| 109 | F S DFN=$O(^DPT("APR",PROV,DFN)) Q:DFN'>0 S Y(ORI)=+DFN_"^"_$P(^DPT(+DFN,0),"^"),ORI=ORI+1
|
---|
| 110 | S:+$G(Y(1))<1 Y(1)="^No patients found."
|
---|
| 111 | Q
|
---|
| 112 | SPEC(Y) ; RETURN LIST OF TREATING SPECIALTIES
|
---|
| 113 | N I,NAME,IEN
|
---|
| 114 | S I=1,NAME=""
|
---|
| 115 | ;access to DIC(45.7 global granted under DBIA #519:
|
---|
| 116 | F S NAME=$O(^DIC(45.7,"B",NAME)) Q:NAME="" S IEN=0,IEN=$O(^(NAME,IEN)) I $$ACTIVE^DGACT(45.7,IEN) S Y(I)=IEN_"^"_NAME,I=I+1
|
---|
| 117 | Q
|
---|
| 118 | SPECPTS(Y,SPEC) ; RETURN LIST OF PATIENTS LINKED TO A TREATING SPECIALTY
|
---|
| 119 | I +$G(SPEC)<1 S Y(1)="^No specialty identified" Q
|
---|
| 120 | N ORI,DFN
|
---|
| 121 | S ORI=1,DFN=0
|
---|
| 122 | F S DFN=$O(^DPT("ATR",SPEC,DFN)) Q:DFN'>0 S Y(ORI)=+DFN_"^"_$P(^DPT(+DFN,0),"^"),ORI=ORI+1
|
---|
| 123 | S:+$G(Y(1))<1 Y(1)="^No patients found."
|
---|
| 124 | Q
|
---|
| 125 | WARD(Y) ; RETURN LIST OF ACTIVE WARDS
|
---|
| 126 | N I,IEN,NAME,D0
|
---|
| 127 | S I=1,NAME=""
|
---|
| 128 | ;access to DIC(42 global granted under DBIA #36:
|
---|
| 129 | F S NAME=$O(^DIC(42,"B",NAME)) Q:NAME="" S IEN=$O(^(NAME,0)) D
|
---|
| 130 | . S D0=IEN D WIN^DGPMDDCF
|
---|
| 131 | . I X=0 S Y(I)=IEN_"^"_NAME,I=I+1
|
---|
| 132 | Q
|
---|
| 133 | WARDPTS(Y,WARD) ; RETURN LIST OF PATIENTS IN A WARD
|
---|
| 134 | ; SLC/PKS - Modifications for Room/Bed data on 1/19/2001.
|
---|
| 135 | I +$G(WARD)<1 S Y(1)="^No ward identified" Q
|
---|
| 136 | N ORI,DFN,RBDAT
|
---|
| 137 | S ORI=1,DFN=0
|
---|
| 138 | ; Access to DIC(42 global granted under DBIA #36:
|
---|
| 139 | S WARD=$P(^DIC(42,WARD,0),"^") ;GET WARD NAME FOR "CN" LOOKUP
|
---|
| 140 | ; Next section modified 1/19/2001 by PKS:
|
---|
| 141 | F D Q:DFN'>0
|
---|
| 142 | .S DFN=$O(^DPT("CN",WARD,DFN)) Q:DFN'>0
|
---|
| 143 | .S Y(ORI)=+DFN_"^"_$P(^DPT(+DFN,0),"^")
|
---|
| 144 | .S RBDAT=""
|
---|
| 145 | .; Add patient room/bed information where data exists:
|
---|
| 146 | .S RBDAT=$P($G(^DPT(+DFN,.101)),U)
|
---|
| 147 | .I RBDAT'="" D ; Any R/B data?
|
---|
| 148 | ..I $L(RBDAT)<4 S RBDAT=RBDAT_" " ; Add if < 4 chars.
|
---|
| 149 | ..S RBDAT=$E(RBDAT,1,4) ; Get first 4 only.
|
---|
| 150 | .S Y(ORI)=Y(ORI)_U_RBDAT ; Add R/B to string
|
---|
| 151 | .S ORI=ORI+1 ; Increment counter.
|
---|
| 152 | ;
|
---|
| 153 | S:+$G(Y(1))<1 Y(1)="^No patients found."
|
---|
| 154 | Q
|
---|
| 155 | NLIST(ORQY) ; return a null list
|
---|
| 156 | S ORQY(1)=""
|
---|
| 157 | Q
|
---|