| 1 | SCRPPAT ;ALB/CMM - Practitioner's Patients ; 8/30/99 3:17pm
 | 
|---|
| 2 |  ;;5.3;Scheduling;**41,52,177,297**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Listing of Practitioner's Patients
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | PROMPTS ;
 | 
|---|
| 7 |  ;Prompt for division, team, role, practitioner, summary only and print device
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  N QTIME,PRNT,VAUTP,Y,VAUTD,VAUTT,VAUTR,VAUTS,SORT,NUMBER
 | 
|---|
| 10 |  K SCUP
 | 
|---|
| 11 |  S QTIME=""
 | 
|---|
| 12 |  W ! D INST^SCRPU1 I Y=-1 G ERR
 | 
|---|
| 13 |  W ! K Y D PRMTT^SCRPU1 I '$D(VAUTT) G ERR
 | 
|---|
| 14 |  W ! K Y D ROLE^SCRPU1 I '$D(VAUTR) G ERR
 | 
|---|
| 15 |  W ! D PRACT^SCRPU1 I '$D(VAUTP) G ERR
 | 
|---|
| 16 |  W ! S VAUTS=$$SUMM^SCRPU2() I VAUTS<0 G ERR
 | 
|---|
| 17 |  W ! S SORT=$$SORT^SCRPU2() I SORT<1 G ERR
 | 
|---|
| 18 |  S PRNT=$$PDEVICE^SCRPU3()
 | 
|---|
| 19 |  I PRNT=-1 G ERR
 | 
|---|
| 20 |  I PRNT["Q;" S QTIME=$$GETTIME^SCRPU3()
 | 
|---|
| 21 |  I QTIME=-1 G ERR
 | 
|---|
| 22 |  I PRNT'?1"Q;".E S PRNT="Q;"_PRNT
 | 
|---|
| 23 |  S NUMBER=$$ENTRY2(.VAUTD,.VAUTT,.VAUTR,.VAUTP,VAUTS,SORT,PRNT,QTIME)
 | 
|---|
| 24 |  I NUMBER>0 W !!,"Print queued, task number: ",NUMBER
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 |  D QUE(.VAUTD,.VAUTT,.VAUTR,.VAUTP,VAUTS,SORT) Q
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 | QUE(INST,TEAM,ROLE,PRACT,SUMM,SORT) ;queue report
 | 
|---|
| 29 |  ;Input Parameters: 
 | 
|---|
| 30 |  ;INST - institutions selected (variable and array) 
 | 
|---|
| 31 |  ;TEAM - teams selected (variable and array) 
 | 
|---|
| 32 |  ;ROLE - roles selected (variable and array) 
 | 
|---|
| 33 |  ;PRACT - practitioners selected (variable and array) 
 | 
|---|
| 34 |  ;SUMM - summary info? y/n (1-yes/0-no) yes don't print patient data 
 | 
|---|
| 35 |  ;SORT - sort criteria (1-d,t,p/2-d,p,t)
 | 
|---|
| 36 |  N ZTSAVE,II
 | 
|---|
| 37 |  F II="INST","INST(","TEAM","TEAM(","ROLE","ROLE(","PRACT(","PRACT","SUMM","SORT" S ZTSAVE(II)=""
 | 
|---|
| 38 |  W ! D EN^XUTMDEVQ("QENTRY^SCRPPAT","Practitioner's Patients",.ZTSAVE)
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | ENTRY2(INST,TEAM,ROLE,PRACT,SUMM,SORT,IOP,ZTDTH) ;
 | 
|---|
| 42 |  ;Second entry point for GUI to use
 | 
|---|
| 43 |  ;Input Parameters:
 | 
|---|
| 44 |  ;INST - institutions selected (variable and array)
 | 
|---|
| 45 |  ;TEAM - teams selected (variable and array)
 | 
|---|
| 46 |  ;ROLE - roles selected (variable and array)
 | 
|---|
| 47 |  ;PRACT - practitioners selected (ien new person file) - (variable and array)
 | 
|---|
| 48 |  ;SUMM - summary info? y/n (1-yes/0-no) yes don't print patient data
 | 
|---|
| 49 |  ;SORT - sort criteria (1-d,t,p/2-d,p,t)
 | 
|---|
| 50 |  ;IOP - print device
 | 
|---|
| 51 |  ;ZTDTH - queue time (optional)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  ;validate parameters
 | 
|---|
| 54 |  I '$D(INST)!'$D(TEAM)!'$D(ROLE)!'$D(PRACT)!'$D(SUMM)!'$D(SORT)!'$D(IOP)!(IOP="") Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  N NUMBER
 | 
|---|
| 57 |  S IOST=$P(IOP,"^",2),IOP=$P(IOP,"^")
 | 
|---|
| 58 |  I IOP?1"Q;".E S IOP=$P(IOP,"Q;",2)
 | 
|---|
| 59 |  I IOST?1"C-".E D QENTRY G RET
 | 
|---|
| 60 |  I ZTDTH="" S ZTDTH=$H
 | 
|---|
| 61 |  S ZTRTN="QENTRY^SCRPPAT"
 | 
|---|
| 62 |  S ZTDESC="Practitioner's Patients",ZTIO=IOP
 | 
|---|
| 63 |  N II
 | 
|---|
| 64 |  F II="IOSL","INST","INST(","TEAM","TEAM(","ROLE","ROLE(","PRACT(","PRACT","SUMM","IOP","SORT" S ZTSAVE(II)=""
 | 
|---|
| 65 |  D ^%ZTLOAD
 | 
|---|
| 66 | RET S NUMBER=0
 | 
|---|
| 67 |  I $D(ZTSK) S NUMBER=ZTSK
 | 
|---|
| 68 |  D EXIT1
 | 
|---|
| 69 |  Q NUMBER
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | QENTRY ;
 | 
|---|
| 72 |  ;driver entry point
 | 
|---|
| 73 |  S TITL="Practitioner's Patients"
 | 
|---|
| 74 |  I SUMM S TITL=TITL_" Summary Report"
 | 
|---|
| 75 |  S STORE="^TMP("_$J_",""SCRPPAT"")"
 | 
|---|
| 76 |  K @STORE
 | 
|---|
| 77 |  S @STORE=0
 | 
|---|
| 78 |  D DRIVE^SCRPPAT2
 | 
|---|
| 79 |  I $O(@STORE@(0))="" S NODATA=$$NODATA^SCRPU3(TITL)
 | 
|---|
| 80 |  I '$D(NODATA) D PRINTIT(STORE,IOP,TITL,SORT)
 | 
|---|
| 81 |  D EXIT2
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | ERR ;
 | 
|---|
| 85 | EXIT1 ;
 | 
|---|
| 86 |  K ZTDTH,ZTRTN,ZTDESC,ZTSK,ZTIO,ZTSAVE,VAUTD,VAUTT,VAUTP,VAUTR
 | 
|---|
| 87 |  K SCUP,VAUTS,SORT
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | EXIT2 ;
 | 
|---|
| 91 |  K @STORE
 | 
|---|
| 92 |  K STORE,TITL,IOP,PRACT,INST,TEAM,ROLE,SORT,SUMM,NODATA,STOP
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | PRINTIT(STORE,IOP,TITL,SORT) ; Print All Data
 | 
|---|
| 96 |  ;STORE - global location of data
 | 
|---|
| 97 |  ;IOP - device to print to
 | 
|---|
| 98 |  ;TITL - title of report
 | 
|---|
| 99 |  ;SORT - sort order 1-div,team,pract/2-div,pract,team
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  N PAGE
 | 
|---|
| 102 |  S PAGE=1,STOP=0 W:$E(IOST)="C" @IOF
 | 
|---|
| 103 |  N SEC1,SEC2,SEC2,SEC3,SEC4,ST1,ST2,ST3,ST4
 | 
|---|
| 104 |  I SORT=1 S SEC1="""T""",SEC2="""P""",SEC3="""TN""",SEC4="""PN"""
 | 
|---|
| 105 |  I SORT=2!(SORT=3) S SEC1="""P""",SEC2="""T""",SEC3="""PN""",SEC4="""TN"""
 | 
|---|
| 106 |  ;I SORT=3 S SEC4=SEC3,SEC3="""TN"""
 | 
|---|
| 107 |  N SEC,TRD,INS,INAME,SECN,TRDN,PT,FIRST
 | 
|---|
| 108 |  S (INAME,INS)="",FIRST=1
 | 
|---|
| 109 |  F  S INAME=$O(@STORE@("I",INAME)) Q:INAME=""!(STOP)  D
 | 
|---|
| 110 |  .S INS=$O(@STORE@("I",INAME,""))
 | 
|---|
| 111 |  .Q:INS=""!STOP
 | 
|---|
| 112 |  .D S
 | 
|---|
| 113 |  ;I SORT=3 D
 | 
|---|
| 114 |  ;.N I F I=0:0 S I=$O(@STORE@("P",I)) Q:'I  D
 | 
|---|
| 115 |  ;..S A="" F  S A=$O(@STORE@("P",I,A)) Q:A=""  S @STORE@("P1",A,$O(@STORE@("P",I,A,0)))="" 
 | 
|---|
| 116 |  ;.F  S INAME=$O(@STORE@("P1",INAME)) Q:INAME=""!(STOP)  D
 | 
|---|
| 117 |  ;..S INS=$O(@STORE@("P1",INAME,""))
 | 
|---|
| 118 |  ;..Q:INS=""!STOP
 | 
|---|
| 119 |  ;..D S W !,STORE,!,ST1 R XXX
 | 
|---|
| 120 |  D S1
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | S ;
 | 
|---|
| 123 |  S SECN="",ST1=$E(STORE,1,($L(STORE)-1))_","_SEC1_")"
 | 
|---|
| 124 |  F  S SECN=$O(@ST1@(INS,SECN)) Q:SECN=""!(STOP)  D
 | 
|---|
| 125 |  .S SEC=$O(@ST1@(INS,SECN,"")) ;ien of team or practitioner
 | 
|---|
| 126 |  .Q:SEC=""
 | 
|---|
| 127 |  .S ST3=$E(STORE,1,($L(STORE)-1))_","_SEC3_")"
 | 
|---|
| 128 |  .S TRDN="",ST2=$E(STORE,1,($L(STORE)-1))_","_SEC2_")"
 | 
|---|
| 129 |  .F  S TRDN=$O(@ST2@(INS,TRDN)) Q:TRDN=""!(STOP)  D
 | 
|---|
| 130 |  ..S TRD=$O(@ST2@(INS,TRDN,"")) ;ien of team or practitioner
 | 
|---|
| 131 |  ..Q:TRD=""
 | 
|---|
| 132 |  ..;have first team and first practitioner ien
 | 
|---|
| 133 |  ..S ST4=$E(STORE,1,($L(STORE)-1))_","_SEC4_")"
 | 
|---|
| 134 |  ..D PRNT(ST4,ST3,SEC3,.PAGE,TITL,INS,SEC,TRD) Q:STOP
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 | S1 I $E(IOST)="C",'STOP W ! N DIR S DIR(0)="E" D ^DIR S STOP=Y'=1
 | 
|---|
| 137 |  I 'STOP,SUMM=0 S (FIRST,SUMM)=1,TITL=TITL_" Summary Report" W @IOF D PRINTIT(STORE,$G(IOP),TITL,SORT)
 | 
|---|
| 138 |  Q
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | PRNT(ST4,ST3,SEC3,PAGE,TITL,INS,SEC,TRD) ;
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  N POS
 | 
|---|
| 143 |  I (SEC3="""PN""")&($D(@ST3@(INS,SEC,TRD))) D
 | 
|---|
| 144 |  .;get each position for practitioner
 | 
|---|
| 145 |  .N MORE S POS="",MORE=0
 | 
|---|
| 146 |  .F  S POS=$O(@ST3@(INS,SEC,TRD,POS)) Q:POS=""!(STOP)  D
 | 
|---|
| 147 |  ..I 'SUMM I SORT=3 D  Q
 | 
|---|
| 148 |  ...;I MORE ;S FIRST=0
 | 
|---|
| 149 |  ...K @STORE@("H1") D SHEAD^SCRPPAT3
 | 
|---|
| 150 |  ...I 'MORE I (PAGE=1)!(IOST?1"C-".E) D TITLE^SCRPU3(.PAGE,TITL)
 | 
|---|
| 151 |  ...I 'MORE W !,$G(@ST3@(INS,SEC,TRD,POS)),!
 | 
|---|
| 152 |  ...D PAT^SCRPPAT3(INS,SEC,TRD,SEC3,ST3,ST4,POS) S MORE=1
 | 
|---|
| 153 |  ...I $O(@ST3@(INS,SEC,TRD,POS))="" D
 | 
|---|
| 154 |  ....I (IOST?1"C-".E) D HOLD(.PAGE,"") S PAGE=PAGE+1 Q:STOP
 | 
|---|
| 155 |  ....I (IOST'?1"C-".E) D NEWP1^SCRPU3(.PAGE,TITL) Q:STOP
 | 
|---|
| 156 |  ..I SUMM D  Q
 | 
|---|
| 157 |  ...I FIRST D TITLE^SCRPU3(.PAGE,TITL),SHEAD^SCRPPAT3,SSH S FIRST=0
 | 
|---|
| 158 |  ...I (IOST'?1"C-".E),$Y>(IOSL-4) D NEWP1^SCRPU3(.PAGE,TITL) Q:STOP  D SSH
 | 
|---|
| 159 |  ...I (IOST?1"C-".E),$Y>(IOSL-6) D HOLD^SCRPU3(.PAGE,TITL) Q:STOP  D SSH
 | 
|---|
| 160 |  ...W !,@STORE@("SUM0",INS,SEC,TRD,POS)
 | 
|---|
| 161 |  ...W ?72,$J($G(@STORE@("TOTAL",INS,SEC,TRD,POS)),8)
 | 
|---|
| 162 |  ...Q
 | 
|---|
| 163 |  ..Q:SORT=3
 | 
|---|
| 164 |  ..I FIRST D:'MORE TITLE^SCRPU3(.PAGE,TITL) D SHEAD^SCRPPAT3
 | 
|---|
| 165 |  ..I (IOST'?1"C-".E),'SUMM,'FIRST D NEWP1^SCRPU3(.PAGE,TITL) W:'STOP !,$G(@STORE@(INS))
 | 
|---|
| 166 |  ..I (IOST?1"C-".E),'SUMM,'FIRST D HOLD^SCRPU3(.PAGE,TITL) W:'STOP !,$G(@STORE@(INS))
 | 
|---|
| 167 |  ..Q:STOP  S FIRST=1 I 'MORE S FIRST=0
 | 
|---|
| 168 |  ..W !,$G(@ST3@(INS,SEC,TRD,POS)) ;write practitioner (sort 1)
 | 
|---|
| 169 |  ..I $L($G(@ST3@(INS,SEC,TRD,POS,"PRCP"))) W !,@ST3@(INS,SEC,TRD,POS,"PRCP")
 | 
|---|
| 170 |  ..I $G(SORT)'=3 W !,$G(@ST4@(INS,TRD)) ;write team (sort 2)
 | 
|---|
| 171 |  ..W !,$G(@STORE@(INS))
 | 
|---|
| 172 |  ..;$o through patients for practitioner on team
 | 
|---|
| 173 |  ..D PAT^SCRPPAT3(INS,SEC,TRD,SEC3,ST3,ST4,POS) Q:STOP
 | 
|---|
| 174 |  ..I (IOST'?1"C-".E),$Y>(IOSL-4) D NEWP1^SCRPU3(.PAGE,TITL) Q:STOP
 | 
|---|
| 175 |  ..I (IOST?1"C-".E),$Y>(IOSL-6) D HOLD^SCRPU3(.PAGE,TITL) Q:STOP
 | 
|---|
| 176 |  ..D TOTAL1^SCRPPAT3(INS,SEC,TRD,POS) ;print team/practitioner total
 | 
|---|
| 177 |  ;
 | 
|---|
| 178 |  I (SEC3="""TN""")&($D(@ST4@(INS,TRD,SEC))) D
 | 
|---|
| 179 |  .S POS=""
 | 
|---|
| 180 |  .F  S POS=$O(@ST4@(INS,TRD,SEC,POS)) Q:POS=""!(STOP)  D
 | 
|---|
| 181 |  ..I SUMM D  Q
 | 
|---|
| 182 |  ...I FIRST D TITLE^SCRPU3(.PAGE,TITL),SHEAD^SCRPPAT3,SSH S FIRST=0
 | 
|---|
| 183 |  ...I (IOST'?1"C-".E),$Y>(IOSL-4) D NEWP1^SCRPU3(.PAGE,TITL) Q:STOP  D SSH
 | 
|---|
| 184 |  ...I (IOST?1"C-".E),$Y>(IOSL-6) D HOLD^SCRPU3(.PAGE,TITL) Q:STOP  D SSH
 | 
|---|
| 185 |  ...W !,@STORE@("SUM0",INS,TRD,SEC,POS)
 | 
|---|
| 186 |  ...W ?72,$J(@STORE@("TOTAL",INS,TRD,SEC,POS),8)
 | 
|---|
| 187 |  ...Q
 | 
|---|
| 188 |  ..I FIRST D TITLE^SCRPU3(.PAGE,TITL),SHEAD^SCRPPAT3
 | 
|---|
| 189 |  ..I (IOST'?1"C-".E),'SUMM,'FIRST D NEWP1^SCRPU3(.PAGE,TITL)
 | 
|---|
| 190 |  ..I (IOST?1"C-".E),'SUMM,'FIRST D HOLD^SCRPU3(.PAGE,TITL)
 | 
|---|
| 191 |  ..Q:STOP  S FIRST=0
 | 
|---|
| 192 |  ..I $G(SORT)'=3 W !,$G(@ST3@(INS,SEC)) ;write team (sort 1)
 | 
|---|
| 193 |  ..W !,$G(@STORE@(INS))
 | 
|---|
| 194 |  ..I $G(SORT)'=3 W !,$G(@ST4@(INS,TRD,SEC,POS)) ;write practitioner (sort 2)
 | 
|---|
| 195 |  ..I $L($G(@ST4@(INS,TRD,SEC,POS,"PRCP"))) W !,@ST4@(INS,TRD,SEC,POS,"PRCP")
 | 
|---|
| 196 |  ..W !
 | 
|---|
| 197 |  ..;$o through patients for practitioner on team
 | 
|---|
| 198 |  ..D PAT^SCRPPAT3(INS,SEC,TRD,SEC3,ST3,ST4,POS) Q:STOP
 | 
|---|
| 199 |  ..I (IOST'?1"C-".E),$Y>(IOSL-4) D NEWP1^SCRPU3(.PAGE,TITL) Q:STOP
 | 
|---|
| 200 |  ..I (IOST?1"C-".E),$Y>(IOSL-6) D HOLD^SCRPU3(.PAGE,TITL) Q:STOP
 | 
|---|
| 201 |  ..D TOTAL1^SCRPPAT3(INS,SEC,TRD,POS) ;print team/practitioner total
 | 
|---|
| 202 |  Q
 | 
|---|
| 203 |  ;
 | 
|---|
| 204 | SSH ;Summary subheader
 | 
|---|
| 205 |  W !?72,"Patients",!,"Practitioner",?24,"Position",?48,"Team"
 | 
|---|
| 206 |  W ?72,"Assigned",! N SCI F SCI=1:1:80 W "="
 | 
|---|
| 207 |  Q
 | 
|---|
| 208 | HOLD(PAGE,TIT,MARG) ;
 | 
|---|
| 209 |  ;device is home, reached end of page
 | 
|---|
| 210 |  N X
 | 
|---|
| 211 |  S MARG=$G(MARG) S:MARG'>80 MARG=80
 | 
|---|
| 212 |  W !!,"Press Any Key to Continue or '^' to Quit" R X:DTIME
 | 
|---|
| 213 |  I '$T!(X="^") S STOP=1 Q
 | 
|---|
| 214 |  W @IOF
 | 
|---|
| 215 |  Q
 | 
|---|