| [613] | 1 | SCRPO1 ;BP-CIOFO/KEITH - Historical Patient Position Assignment Listing ; 20 Aug 99  7:49 AM
 | 
|---|
 | 2 |  ;;5.3;Scheduling;**177**;AUG 13, 1993
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | EN ;Queue report
 | 
|---|
 | 5 |  N LIST,SORT,SCSP,RTN,DESC
 | 
|---|
 | 6 |  S LIST="DIV,TEAM,POS,PCP,ASPR,CLINIC",SORT="DV,TM,TP,PR,EC,PA"
 | 
|---|
 | 7 |  S SCSP="PA",RTN="RUN^SCRPO1"
 | 
|---|
 | 8 |  S DESC="Historical Patient Position Assignment Listing"
 | 
|---|
 | 9 |  D PROMPT(LIST,SORT,SCSP,RTN,DESC) Q
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 | PROMPT(LIST,SORT,SCSP,SCRTN,SCDESC) ;Prompt for report parameters, queue report
 | 
|---|
 | 12 |  ;Input: LIST=comma delimited string of list subscripts to prompt for
 | 
|---|
 | 13 |  ;Input: SORT=comma delimited string of sort acronyms to prompt for
 | 
|---|
 | 14 |  ;Input: SCSP=acronym of last sort to add if not selected (optional)
 | 
|---|
 | 15 |  ;Input: SCRTN=report routine entry point
 | 
|---|
 | 16 |  ;Input: SCDESC=tasked job description
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  N SCDIV,SCBDT,SCEDT,SC,SCI,SCX,SCOUT,SCT
 | 
|---|
 | 19 |  S SC="^TMP(""SC"",$J)" K @SC S SCOUT=0
 | 
|---|
 | 20 |  D TITL^SCRPW50(SCDESC)
 | 
|---|
 | 21 |  D SUBT^SCRPW50("**** Date Range Selection ****")
 | 
|---|
 | 22 |  S (SCBDT("B"),SCEDT("B"))="TODAY"
 | 
|---|
 | 23 |  G:'$$DTR^SCRPO(.SC,.SCBDT,.SCEDT) END
 | 
|---|
 | 24 |  D SUBT^SCRPW50("**** Report Parameter Selection ****")
 | 
|---|
 | 25 |  G:'$$ATYPE^SCRPO(.SC) END
 | 
|---|
 | 26 |  G:'$$DSUM^SCRPO(.SC) END
 | 
|---|
 | 27 |  F SCI=1:1:$L(LIST,",") S SCX=$P(LIST,",",SCI) D  Q:SCOUT
 | 
|---|
 | 28 |  .S SCOUT='$$LIST^SCRPO(.SC,SCX,1)
 | 
|---|
 | 29 |  .Q
 | 
|---|
 | 30 |  G:SCOUT END
 | 
|---|
 | 31 |  D SUBT^SCRPW50("**** Output sort order (optional) ****")
 | 
|---|
 | 32 |  G:'$$SORT^SCRPO(.SC,SORT,SCSP) END
 | 
|---|
 | 33 |  S SCT(1)="**** Report Parameters Selected ****" D SUBT^SCRPW50(SCT(1))
 | 
|---|
 | 34 |  G:'$$PPAR^SCRPO(.SC,1,.SCT) END
 | 
|---|
 | 35 |  W !!,"This report requires 132 column output!"
 | 
|---|
 | 36 |  W ! N ZTSAVE S ZTSAVE("^TMP(""SC"",$J,")="",ZTSAVE("SC")=""
 | 
|---|
 | 37 |  D EN^XUTMDEVQ(SCRTN,SCDESC,.ZTSAVE)
 | 
|---|
 | 38 | END K ^TMP("SC",$J) D DISP0^SCRPW23,END^SCRPW50 Q
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 | RUN ;Print report
 | 
|---|
 | 41 |  N SCFMT,SCTITL,SCTITL2,SCLINE,SCPAGE,SCOUT,SCFF,SCX,SCFF,SCLINE,SCPAGE
 | 
|---|
 | 42 |  N SC1,SC2,SC3,SC4,SC5,SC6,SC7,SCN,SCASP,SCUNP,SCI,SCPNOW
 | 
|---|
 | 43 |  S SCFMT=$E(^TMP("SC",$J,"FMT")),(SCFF,SCOUT,SCUNP)=0
 | 
|---|
 | 44 |  D BUILD(SCFMT) Q:SCOUT  S SCI=0
 | 
|---|
 | 45 |  F  S SCI=$O(^TMP("SCRPT",$J,0,"UNIQUES",SCI)) Q:'SCI  S SCUNP=SCUNP+1
 | 
|---|
 | 46 |  D HINI D:$E(IOST)="C" DISP0^SCRPW23
 | 
|---|
 | 47 |  S SCTITL(2)=$$HDRX("P") D HDR^SCRPO(.SCTITL,132) Q:SCOUT  S SCOUT=$$PPAR^SCRPO(.SC,,.SCTITL)=0
 | 
|---|
 | 48 |  Q:SCOUT
 | 
|---|
 | 49 |  I '$D(^TMP("SCRPT",$J,0)) D  G EXIT
 | 
|---|
 | 50 |  .K SCTITL(2) D HDR^SCRPO(.SCTITL,132) Q:SCOUT
 | 
|---|
 | 51 |  .S SCX="No patient position assignments found within selected report parameters!"
 | 
|---|
 | 52 |  .W !!?(132-$L(SCX)\2),SCX
 | 
|---|
 | 53 |  .Q
 | 
|---|
 | 54 |  S SCPAGE=1
 | 
|---|
 | 55 |  I SCFMT="D" S SCTITL(2)=$$HDRX("D") D HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT  D
 | 
|---|
 | 56 |  .S SC1=""
 | 
|---|
 | 57 |  .F  S SC1=$O(^TMP("SCRPT",$J,1,SC1)) Q:SC1=""!SCOUT  D
 | 
|---|
 | 58 |  ..S SC2=""
 | 
|---|
 | 59 |  ..F  S SC2=$O(^TMP("SCRPT",$J,1,SC1,SC2)) Q:SC2=""!SCOUT  D
 | 
|---|
 | 60 |  ...S SC3=""
 | 
|---|
 | 61 |  ...F  S SC3=$O(^TMP("SCRPT",$J,1,SC1,SC2,SC3)) Q:SC3=""!SCOUT  D
 | 
|---|
 | 62 |  ....S SCN=^TMP("SCRPT",$J,1,SC1,SC2,SC3),SC4=""
 | 
|---|
 | 63 |  ....F  S SC4=$O(^TMP("SCRPT",$J,2,SCN,SC4)) Q:SC4=""!SCOUT  D
 | 
|---|
 | 64 |  .....S SC5=""
 | 
|---|
 | 65 |  .....F  S SC5=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5)) Q:SC5=""!SCOUT  D
 | 
|---|
 | 66 |  ......S SC6=""
 | 
|---|
 | 67 |  ......F  S SC6=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6)) Q:SC6=""!SCOUT  D
 | 
|---|
 | 68 |  .......S SC7=""
 | 
|---|
 | 69 |  .......F  S SC7=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)) Q:SC7=""!SCOUT  D
 | 
|---|
 | 70 |  ........S SCX=^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)
 | 
|---|
 | 71 |  ........I $Y>(IOSL-9) D FOOT1,HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT
 | 
|---|
 | 72 |  ........S SCY="0^20^27^39^43^57^73^89^94^110^122" W !
 | 
|---|
 | 73 |  ........F SCI=1:1:11 W ?($P(SCY,U,SCI)),$P(SCX,U,SCI)
 | 
|---|
 | 74 |  .......Q
 | 
|---|
 | 75 |  ......Q
 | 
|---|
 | 76 |  .....Q
 | 
|---|
 | 77 |  ....Q
 | 
|---|
 | 78 |  ...Q
 | 
|---|
 | 79 |  ..Q
 | 
|---|
 | 80 |  .D:'SCOUT FOOT1
 | 
|---|
 | 81 |  .Q
 | 
|---|
 | 82 |  G:SCOUT EXIT
 | 
|---|
 | 83 |  S SCTITL(2)=$$HDRX("S") D HDR^SCRPO(.SCTITL,132),SHDR("S") G:SCOUT EXIT
 | 
|---|
 | 84 |  S SCASP=^TMP("SCRPT",$J,0,"ASSIGNMENTS")
 | 
|---|
 | 85 |  F SCI="PRIMARY ELIGIBILITY","MEANS TEST CATEGORY","GENDER","AGE GROUP","NATIONAL ENROLLMENT PRIORITY","TEAM","PRIMARY CARE","ASSIGNED PROVIDER","PRECEPTOR PROVIDER","DIVISION" D  Q:SCOUT
 | 
|---|
 | 86 |  .Q:'$D(^TMP("SCRPT",$J,0,SCI))
 | 
|---|
 | 87 |  .D:$Y>(IOSL-9) FOOT2,HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
 | 
|---|
 | 88 |  .W ! D SLINE("--"_SCI_"--") S SCX=""
 | 
|---|
 | 89 |  .F  S SCX=$O(^TMP("SCRPT",$J,0,SCI,SCX)) Q:SCX=""!SCOUT  D
 | 
|---|
 | 90 |  ..S SCY=^TMP("SCRPT",$J,0,SCI,SCX)
 | 
|---|
 | 91 |  ..S SCZ=SCY*100/SCASP
 | 
|---|
 | 92 |  ..D:$Y>(IOSL-5) HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
 | 
|---|
 | 93 |  ..D SLINE(SCX,SCY,SCZ)
 | 
|---|
 | 94 |  ..Q
 | 
|---|
 | 95 |  .Q
 | 
|---|
 | 96 |  G:SCOUT EXIT
 | 
|---|
 | 97 |  W ! D SLINE("Total assignments that meet the parameters of this report:",SCASP,100)
 | 
|---|
 | 98 |  D SLINE("Total unique patients that meet the parameters of this report:",SCUNP,100)
 | 
|---|
 | 99 |  D FOOT2
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 | EXIT I $E(IOST)="C",'$G(SCOUT) N DIR S DIR(0)="E" D ^DIR
 | 
|---|
 | 102 |  F SCI="SC","SCARR","SCRPT" K ^TMP(SCI,$J)
 | 
|---|
 | 103 |  K SC D END^SCRPW50 Q
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 | SLINE(SCX,SCY,SCZ) ;Print summary line
 | 
|---|
 | 106 |  ;Input: SCX=element
 | 
|---|
 | 107 |  ;Input: SCY=count
 | 
|---|
 | 108 |  ;Input: SCZ=percent
 | 
|---|
 | 109 |  ;
 | 
|---|
 | 110 |  W !,$J($P(SCX,U),70) I $L($G(SCY)) W ?71,$J(SCY,10),?81,$J(SCZ,10,2)
 | 
|---|
 | 111 |  Q
 | 
|---|
 | 112 |  ;
 | 
|---|
 | 113 | SHDR(SCX) ;Print report subheader
 | 
|---|
 | 114 |  ;Input: SCX='D' for detail, 'S' for summary
 | 
|---|
 | 115 |  Q:SCOUT
 | 
|---|
 | 116 |  I SCX="S" D  Q
 | 
|---|
 | 117 |  .W !!?62,"Category",?76,"Count",?84,"Percent"
 | 
|---|
 | 118 |  .W !?30,$E(SCLINE,1,40),"   --------  --------"
 | 
|---|
 | 119 |  .Q
 | 
|---|
 | 120 |  W !?20,"Pat.",?27,"Primary",?38,"MT",?94,"Enrolled",!,"Patient Name"
 | 
|---|
 | 121 |  W ?20,"Id.",?27,"Elig.",?38,"Cat",?43,"Team",?57,"Provider"
 | 
|---|
 | 122 |  W ?73,"Team Position",?89,"PC?",?94,"Clinic",?110,"Act. Date"
 | 
|---|
 | 123 |  W ?122,"Inac. Date",!
 | 
|---|
 | 124 |  W "------------------  -----  ---------  ---  ------------  --------------  --------------  ---  --------------  ----------  ----------"
 | 
|---|
 | 125 |  Q
 | 
|---|
 | 126 |  ;
 | 
|---|
 | 127 | HDRX(SCX) ;extra header line
 | 
|---|
 | 128 |  ;Input: SCX='P' for parameters, 'D' for detail, 'S' for summary
 | 
|---|
 | 129 |  Q:SCX="P" "Selected Report Parameters"
 | 
|---|
 | 130 |  Q $S(SCX="D":"Detail",1:"Summary")_" for Patient Position Assignments Effective: "_^TMP("SC",$J,"DTR","PBDT")_" to "_^TMP("SC",$J,"DTR","PEDT")
 | 
|---|
 | 131 |  ;
 | 
|---|
 | 132 | HINI ;Initialize header variables
 | 
|---|
 | 133 |  N Y
 | 
|---|
 | 134 |  S SCTITL(1)="<*>  HISTORICAL PATIENT POSITION ASSIGNMENT LISTING  <*>"
 | 
|---|
 | 135 |  S SCLINE="",$P(SCLINE,"-",133)="",SCPAGE=1
 | 
|---|
 | 136 |  S Y=$$NOW^XLFDT() X ^DD("DD") S SCPNOW=$P(Y,":",1,2)
 | 
|---|
 | 137 |  Q
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 | STOP ;Check for stop task request
 | 
|---|
 | 140 |  S:$D(ZTQUEUED) (SCOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
 | 
|---|
 | 141 |  ;
 | 
|---|
 | 142 | BUILD(SCFMT) ;Build report data
 | 
|---|
 | 143 |  ;Input: SCFMT=report format (detail or summary)
 | 
|---|
 | 144 |  N SCTM,SCTP
 | 
|---|
 | 145 |  ;Build from position list
 | 
|---|
 | 146 |  I $O(^TMP("SC",$J,"POS",0)) S SCTP=0 D  Q
 | 
|---|
 | 147 |  .F  S SCTP=$O(^TMP("SC",$J,"POS",SCTP)) Q:'SCTP!SCOUT  D
 | 
|---|
 | 148 |  ..D CKPOS(SCTP,SCFMT),STOP
 | 
|---|
 | 149 |  ..Q
 | 
|---|
 | 150 |  .Q
 | 
|---|
 | 151 |  ;Build from all positions
 | 
|---|
 | 152 |  S SCTP=0 F  S SCTP=$O(^SCTM(404.57,SCTP)) Q:'SCTP!SCOUT  D
 | 
|---|
 | 153 |  .D CKPOS(SCTP,SCFMT),STOP
 | 
|---|
 | 154 |  .Q
 | 
|---|
 | 155 |  Q
 | 
|---|
 | 156 |  ;
 | 
|---|
 | 157 | CKPOS(SCTP,SCFMT) ;Check team position
 | 
|---|
 | 158 |  ;Input: SCTP=TEAM POSITION ifn
 | 
|---|
 | 159 |  ;Input: SCFMT=report format (detail or summary)
 | 
|---|
 | 160 |  ;
 | 
|---|
 | 161 |  N SCDIV,SCTEAM,SCPOS,SCLINIC,SCTP0,SCX
 | 
|---|
 | 162 |  S SCTP0=$G(^SCTM(404.57,+SCTP,0)) Q:'$L(SCTP0)
 | 
|---|
 | 163 |  S SCX=$P(SCTP0,U) Q:'$L(SCX)
 | 
|---|
 | 164 |  S SCPOS=SCX_U_SCTP
 | 
|---|
 | 165 |  S SCTEAM=$P(SCTP0,U,2) Q:'$$TMDV(.SCTEAM,.SCDIV)
 | 
|---|
 | 166 |  S SCLINIC=$P(SCTP0,U,9) Q:'$$TPCL(.SCLINIC)
 | 
|---|
 | 167 |  D BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
 | 
|---|
 | 168 |  Q
 | 
|---|
 | 169 |  ;
 | 
|---|
 | 170 | TPCL(SCLINIC) ;Get team position associated clinic
 | 
|---|
 | 171 |  ;Input: SCLINIC=associated clinic pointer from team position
 | 
|---|
 | 172 |  ;               (returned as name^ifn, if successful and one exists)
 | 
|---|
 | 173 |  ;Output: '1' if success, '0' otherwise
 | 
|---|
 | 174 |  ;
 | 
|---|
 | 175 |  I $O(^TMP("SC",$J,"CLINIC",0)),'$D(^TMP("SC",$J,"CLINIC",+SCLINIC)) Q 0
 | 
|---|
 | 176 |  Q:SCLINIC<1 1
 | 
|---|
 | 177 |  S SCLINIC=$P($G(^SC(SCLINIC,0)),U)_U_SCLINIC
 | 
|---|
 | 178 |  Q 1
 | 
|---|
 | 179 |  ;
 | 
|---|
 | 180 | TMDV(SCTEAM,SCDIV) ;Get team and division
 | 
|---|
 | 181 |  ;Input: SCTEAM=team ifn (returned as name^ifn, if successful)
 | 
|---|
 | 182 |  ;Input: SCDIV=variable to return division as name^ifn
 | 
|---|
 | 183 |  ;Output: '1' if success, '0' otherwise
 | 
|---|
 | 184 |  N SCTM0,SCX
 | 
|---|
 | 185 |  Q:SCTEAM<1 0
 | 
|---|
 | 186 |  I $O(^TMP("SC",$J,"TEAM",0)),'$D(^TMP("SC",$J,"TEAM",SCTEAM)) Q 0
 | 
|---|
 | 187 |  S SCTM0=$G(^SCTM(404.51,SCTEAM,0)) Q:'$L(SCTM0) 0
 | 
|---|
 | 188 |  S SCX=$P(SCTM0,U) Q:'$L(SCX) 0
 | 
|---|
 | 189 |  S SCTEAM=SCX_U_SCTEAM
 | 
|---|
 | 190 |  S SCDIV=$P(SCTM0,U,7) Q:SCDIV<1 0
 | 
|---|
 | 191 |  I $O(^TMP("SC",$J,"DIV",0)),'$D(^TMP("SC",$J,"DIV",SCDIV)) Q 0
 | 
|---|
 | 192 |  S SCX=$P($G(^DIC(4,SCDIV,0)),U) Q:'$L(SCX) 0
 | 
|---|
 | 193 |  S SCDIV=SCX_U_SCDIV
 | 
|---|
 | 194 |  Q 1
 | 
|---|
 | 195 |  ;
 | 
|---|
 | 196 | BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT) ;Build list of patients for a position
 | 
|---|
 | 197 |  ;Input: SCTP=team position ifn
 | 
|---|
 | 198 |  ;Input: SCDIV=division^ifn
 | 
|---|
 | 199 |  ;Input: SCTEAM=team^ifn
 | 
|---|
 | 200 |  ;Input: SCPOS=team position^ifn
 | 
|---|
 | 201 |  ;Input: SCLINIC=associated clinic^ifn (if one exists)
 | 
|---|
 | 202 |  ;Input: SCFMT=report format (detail or summary)
 | 
|---|
 | 203 |  ;
 | 
|---|
 | 204 |  N SCARR,SCDT,SCI,SCPASS
 | 
|---|
 | 205 |  S SCARR="^TMP(""SCARR"",$J,1)" K @SCARR
 | 
|---|
 | 206 |  M SCDT=^TMP("SC",$J,"DTR") S SCDT="SCDT"
 | 
|---|
 | 207 |  S SCI=$$PTTP^SCAPMC(SCTP,.SCDT,SCARR),SCI=0
 | 
|---|
 | 208 |  F  S SCI=$O(^TMP("SCARR",$J,1,SCI)) Q:'SCI  D
 | 
|---|
 | 209 |  .S SCPASS=^TMP("SCARR",$J,1,SCI)
 | 
|---|
 | 210 |  .D BPTPA^SCRPO2(SCPASS,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
 | 
|---|
 | 211 |  .Q
 | 
|---|
 | 212 |  Q
 | 
|---|
 | 213 |  ;
 | 
|---|
 | 214 | FOOT1 ;Detail report footer
 | 
|---|
 | 215 |  N SCI
 | 
|---|
 | 216 |  F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
 | 
|---|
 | 217 |  W !,SCLINE
 | 
|---|
 | 218 |  W !,"NOTE: More than one provider may be associated with a single patient position assignment.  This output returns a separate output"
 | 
|---|
 | 219 |  W !?6,"line for each related provider during the date range selected."
 | 
|---|
 | 220 |  W !!?6,"'PC?' represents provider type:  AP = Associate provider, PCP = Primary Care Provider, NPC = Non-Primary Care Provider."
 | 
|---|
 | 221 |  W !,SCLINE
 | 
|---|
 | 222 |  Q
 | 
|---|
 | 223 |  ;
 | 
|---|
 | 224 | FOOT2 ;Summary report footer
 | 
|---|
 | 225 |  N SCI
 | 
|---|
 | 226 |  F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
 | 
|---|
 | 227 |  W !,SCLINE
 | 
|---|
 | 228 |  W !,"NOTE: More than one provider may be associated with a single patient position assignment.  The sum of assignments related to"
 | 
|---|
 | 229 |  W !?6,"providers detailed in this summary is likely to be greater than the actual number of patient position assignments"
 | 
|---|
 | 230 |  W !?6,"returned by this report."
 | 
|---|
 | 231 |  W !,SCLINE
 | 
|---|
 | 232 |  Q
 | 
|---|