| 1 | SDPPTEM ;BP-CIOFO/KEITH - Patient Profile Team Info ; 8/27/99 10:39am
 | 
|---|
| 2 |  ;;5.3;Scheduling;**41,177,297**;AUG 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Gathering Team Information for Patient Profile
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | TDATA(DFN,VALMCNT,SDATE,SDPRT,SDCOL) ;Team information - gather, format and optionally print.
 | 
|---|
| 7 |  ;Input: DFN=patient ifn
 | 
|---|
| 8 |  ;Input: VALMCNT=variable to return number of lines (pass by reference)
 | 
|---|
| 9 |  ;Input: SDATE=effective date (optional)
 | 
|---|
| 10 |  ;Input: SDPRT=print flag, 'P' for PC info only, 'A' for all (optional)
 | 
|---|
| 11 |  ;Input: SDCOL=column to print in conjunction with SDPRT flag (optional)
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  Q:DFN'>0
 | 
|---|
| 14 |  N SDI,SDATE,SDLIST,SDX,SDLN,SDY,SDPH,SDTEAM,SDPTA,SDII,SDIII,SDZ
 | 
|---|
| 15 |  N SDTM,SDTMN,SDPO,SDPON,SDPR,SDPRN
 | 
|---|
| 16 |  N PAGER,PHONE
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  F SDI="SDPLIST","SDTEMP" K ^TMP(SDI,$J)
 | 
|---|
| 19 |  S SDCOL=+$G(SDCOL),SDATE=$G(SDATE) S:SDATE<1 SDATE=DT
 | 
|---|
| 20 |  F SDI="BEGIN","END" S SDATE(SDI)=SDATE
 | 
|---|
| 21 |  S SDATE="SDATE",SDLIST="^TMP(""SDPLIST"",$J)",SDLN=2
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  S SDI=$$GETALL^SCAPMCA(DFN,.SDATE,SDLIST)
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ;PC Team
 | 
|---|
| 26 |  S SDI=0 F  S SDI=$O(^TMP("SDPLIST",$J,DFN,"PCTM",SDI)) Q:'SDI  D
 | 
|---|
| 27 |  .S SDX=$G(^TMP("SDPLIST",$J,DFN,"PCTM",SDI)) Q:'$L(SDX)
 | 
|---|
| 28 |  .S SDY=""
 | 
|---|
| 29 |  .D S1("Primary Care Team",$P(SDX,U,2))
 | 
|---|
| 30 |  .S SDPH=$P($G(^SCTM(404.51,+SDX,0)),U,2) D:$L(SDPH) S2("Phone",SDPH)
 | 
|---|
| 31 |  .S:$P(SDX,U,3) SDPTA($P(SDX,U,3))=""
 | 
|---|
| 32 |  .D STL(SDY)
 | 
|---|
| 33 |  .Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ;AP
 | 
|---|
| 36 |  S SDI=0 F  S SDI=$O(^TMP("SDPLIST",$J,DFN,"PCAP",SDI)) Q:'SDI  D
 | 
|---|
| 37 |  .S SDX=$G(^TMP("SDPLIST",$J,DFN,"PCAP",SDI)) Q:'$L(SDX)
 | 
|---|
| 38 |  .S SDY=""
 | 
|---|
| 39 |  .D S1("Associate Provider",$P(SDX,U,2))
 | 
|---|
| 40 |  .D S2("Position",$P(SDX,U,4))
 | 
|---|
| 41 |  .D STL(SDY)
 | 
|---|
| 42 |  .D PHONE($P(SDX,U,1))
 | 
|---|
| 43 |  .S SDY=""
 | 
|---|
| 44 |  .D S3("Pager",PAGER)
 | 
|---|
| 45 |  .D S4("Phone",PHONE)
 | 
|---|
| 46 |  .D STL(SDY)
 | 
|---|
| 47 |  .Q
 | 
|---|
| 48 |  ;PCP
 | 
|---|
| 49 |  S SDI=0 F  S SDI=$O(^TMP("SDPLIST",$J,DFN,"PCPR",SDI)) Q:'SDI  D
 | 
|---|
| 50 |  .S SDX=$G(^TMP("SDPLIST",$J,DFN,"PCPR",SDI)) Q:'$L(SDX)
 | 
|---|
| 51 |  .S SDY=""
 | 
|---|
| 52 |  .D S1("PC Provider",$P(SDX,U,2))
 | 
|---|
| 53 |  .D S2("Position",$P(SDX,U,4))
 | 
|---|
| 54 |  .D STL(SDY)
 | 
|---|
| 55 |  .D PHONE($P(SDX,U,1))
 | 
|---|
| 56 |  .S SDY=""
 | 
|---|
| 57 |  .D S3("Pager",PAGER)
 | 
|---|
| 58 |  .D S4("Phone",PHONE)
 | 
|---|
| 59 |  .D STL(SDY)
 | 
|---|
| 60 |  .Q
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  I $G(SDPRT)="P" D PRT G TDQ
 | 
|---|
| 63 |  S SDII=0
 | 
|---|
| 64 |  F  S SDII=$O(^TMP("SDPLIST",$J,DFN,"NPCPOS",SDII)) Q:'SDII  D
 | 
|---|
| 65 |  .S SDX=^TMP("SDPLIST",$J,DFN,"NPCPOS",SDII)
 | 
|---|
| 66 |  .Q:'$D(SDPTA(+$P(SDX,U,11)))  S SDIII=0
 | 
|---|
| 67 |  .F  S SDIII=$O(^TMP("SDPLIST",$J,DFN,"NPCPR",SDIII)) Q:'SDIII  D
 | 
|---|
| 68 |  ..S SDZ=^TMP("SDPLIST",$J,DFN,"NPCPR",SDIII)
 | 
|---|
| 69 |  ..Q:$P(SDZ,U,3)'=+SDX  S SDY=""
 | 
|---|
| 70 |  ..D S1("Non-PC Provider",$P(SDZ,U,2)),S2("Position",$P(SDZ,U,4))
 | 
|---|
| 71 |  ..D STL(SDY) Q
 | 
|---|
| 72 |  .Q
 | 
|---|
| 73 |  S SDI=0
 | 
|---|
| 74 |  F  S SDI=$O(^TMP("SDPLIST",$J,DFN,"NPCTM",SDI)) Q:'SDI  D
 | 
|---|
| 75 |  .S SDX=^TMP("SDPLIST",$J,DFN,"NPCTM",SDI)
 | 
|---|
| 76 |  .S SDTEAM($P(SDX,U,2),+SDX)="",SDPTA=$P(SDX,U,3) Q:'SDPTA  D
 | 
|---|
| 77 |  ..S SDII=0
 | 
|---|
| 78 |  ..F  S SDII=$O(^TMP("SDPLIST",$J,DFN,"NPCPOS",SDII)) Q:'SDII  D
 | 
|---|
| 79 |  ...S SDY=^TMP("SDPLIST",$J,DFN,"NPCPOS",SDII)
 | 
|---|
| 80 |  ...Q:$P(SDY,U,11)'=SDPTA
 | 
|---|
| 81 |  ...S SDTEAM($P(SDX,U,2),+SDX,$P(SDY,U,2),+SDY)="",SDIII=0
 | 
|---|
| 82 |  ...F  S SDIII=$O(^TMP("SDPLIST",$J,DFN,"NPCPR",SDIII)) Q:'SDIII  D
 | 
|---|
| 83 |  ....S SDZ=^TMP("SDPLIST",$J,DFN,"NPCPR",SDIII)
 | 
|---|
| 84 |  ....Q:$P(SDZ,U,3)'=+SDY
 | 
|---|
| 85 |  ....S SDTEAM($P(SDX,U,2),+SDX,$P(SDY,U,2),+SDY,$P(SDZ,U,2),+SDZ)=""
 | 
|---|
| 86 |  ....Q
 | 
|---|
| 87 |  ...Q
 | 
|---|
| 88 |  ..Q
 | 
|---|
| 89 |  .Q
 | 
|---|
| 90 |  S SDTM="" F  S SDTM=$O(SDTEAM(SDTM)) Q:SDTM=""  D
 | 
|---|
| 91 |  .S SDTMN=0 F  S SDTMN=$O(SDTEAM(SDTM,SDTMN)) Q:'SDTMN  D
 | 
|---|
| 92 |  ..I SDLN>0 D STL("")
 | 
|---|
| 93 |  ..S SDY="" D S1("Non-PC Team",SDTM)
 | 
|---|
| 94 |  ..S SDPH=$P($G(^SCTM(404.51,+SDTMN,0)),U,2) D:$L(SDPH) S2("Phone",SDPH)
 | 
|---|
| 95 |  ..D STL(SDY) S SDPO=""
 | 
|---|
| 96 |  ..F  S SDPO=$O(SDTEAM(SDTM,SDTMN,SDPO)) Q:SDPO=""  S SDPON=0 D
 | 
|---|
| 97 |  ...F  S SDPON=$O(SDTEAM(SDTM,SDTMN,SDPO,SDPON)) Q:'SDPON  D
 | 
|---|
| 98 |  ....I $O(SDTEAM(SDTM,SDTMN,SDPO,SDPON,""))="" S SDY="" D S1("Non-PC Provider",""),S2("Position",SDPO),STL(SDY) Q
 | 
|---|
| 99 |  ....S SDPR=""
 | 
|---|
| 100 |  ....F  S SDPR=$O(SDTEAM(SDTM,SDTMN,SDPO,SDPON,SDPR)) Q:SDPR=""  D
 | 
|---|
| 101 |  .....S SDPRN=0
 | 
|---|
| 102 |  .....F  S SDPRN=$O(SDTEAM(SDTM,SDTMN,SDPO,SDPON,SDPR,SDPRN)) Q:'SDPRN  D
 | 
|---|
| 103 |  ......S SDY=""
 | 
|---|
| 104 |  ......D S1("Non-PC Provider",SDPR)
 | 
|---|
| 105 |  ......D S2("Position",SDPO)
 | 
|---|
| 106 |  ......D STL(SDY)
 | 
|---|
| 107 |  ......D PHONE(SDPRN)
 | 
|---|
| 108 |  ......S SDY=""
 | 
|---|
| 109 |  ......D S3("Pager",PAGER)
 | 
|---|
| 110 |  ......D S4("Phone",PHONE)
 | 
|---|
| 111 |  ......D STL(SDY)
 | 
|---|
| 112 |  ......Q
 | 
|---|
| 113 |  .....Q
 | 
|---|
| 114 |  ....Q
 | 
|---|
| 115 |  ...Q
 | 
|---|
| 116 |  ..Q
 | 
|---|
| 117 |  .Q
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  I $G(SDPRT)="A" D PRT G TDQ
 | 
|---|
| 120 |  S SDY="",$E(SDY,29)="*** Team Information ***"
 | 
|---|
| 121 |  S ^TMP("SDTEMP",$J,1)=SDY,^TMP("SDTEMP",$J,2)=""
 | 
|---|
| 122 |  I SDLN=2 S SDY="",$E(SDY,20)="-- No team assignment information found --",^TMP("SDTEMP",$J,3)=SDY
 | 
|---|
| 123 |  S GBL=$G(GBL,"") I $L(GBL)<1 S GBL=$S('$D(VALMAR):"^TMP(""SDPP"",$J)",$L(VALMAR)>1:VALMAR,1:"^TMP(""SDPP"",$J)")
 | 
|---|
| 124 |  ;add line at bottom of array for readability
 | 
|---|
| 125 |  S SDI=$O(^TMP("SDTEMP",$J,""),-1)+1,^TMP("SDTEMP",$J,SDI)=""
 | 
|---|
| 126 |  ;respect the array count passed in to the function
 | 
|---|
| 127 |  S (SDII,VALMCNT)=$O(@GBL@(""),-1)+1
 | 
|---|
| 128 |  S SDI=0
 | 
|---|
| 129 |  F  S SDI=$O(^TMP("SDTEMP",$J,SDI)) Q:'SDI  D
 | 
|---|
| 130 |  .S SDX=^TMP("SDTEMP",$J,SDI),SDII=SDII+1
 | 
|---|
| 131 |  .S @GBL@(SDII,0)=SDX,VALMCNT=$G(VALMCNT)+1
 | 
|---|
| 132 |  .I SDLN<7,SDI>3 S SDII=SDII+1,@GBL@(SDII,0)="",VALMCNT=$G(VALMCNT)+1
 | 
|---|
| 133 |  .Q
 | 
|---|
| 134 | TDQ F SDI="SDPLIST","SDTEMP" K ^TMP(SDI,$J,DFN)
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 | S1(SDT,SDX) ;Set first piece of string
 | 
|---|
| 138 |  ;Input: SDT=subtitle
 | 
|---|
| 139 |  ;Input: SDX=data value
 | 
|---|
| 140 |  S SDY=$J(SDT,18)_": "_$E(SDX,1,28) Q
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 | S2(SDT,SDX) ;Set second piece of string
 | 
|---|
| 143 |  ;Input: SDT=subtitle
 | 
|---|
| 144 |  ;Input: SDX=data value
 | 
|---|
| 145 |  I $L($G(SDPRT)),SDCOL>0 Q
 | 
|---|
| 146 |  S $E(SDY,53)=$J(SDT,8)_": "_$E(SDX,1,18) Q
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 | S3(SDT,SDX) ;Set first piece of string that displays phone numbers
 | 
|---|
| 149 |  ;Input: SDT=subtitle
 | 
|---|
| 150 |  ;Input: SDX=data value
 | 
|---|
| 151 |  S SDY=$J(SDT,30)_": "_$E(SDX,1,20)
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 | S4(SDT,SDX) ;Set second piece of string that displays phone numbers
 | 
|---|
| 155 |  ;Input: SDT=subtitle
 | 
|---|
| 156 |  ;Input: SDX=data value
 | 
|---|
| 157 |  I $L($G(SDPRT)),SDCOL>0 Q
 | 
|---|
| 158 |  S $E(SDY,56)=$J(SDT,4)_": "_$E(SDX,1,20)
 | 
|---|
| 159 |  Q
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 | PHONE(IEN) ;Get provider's pager and phone numbers.
 | 
|---|
| 162 |  ;Return: PAGER = Pager number
 | 
|---|
| 163 |  ;        PHONE = Phone number
 | 
|---|
| 164 |  NEW LIST
 | 
|---|
| 165 |  S (PAGER,PHONE)=""
 | 
|---|
| 166 |  Q:'$G(IEN)
 | 
|---|
| 167 |  Q:'$$NEWPERSN^SCMCGU(IEN,"LIST")
 | 
|---|
| 168 |  S PAGER=$P(LIST(IEN),U,5)
 | 
|---|
| 169 |  S PHONE=$P(LIST(IEN),U,2)
 | 
|---|
| 170 |  Q
 | 
|---|
| 171 |  ;
 | 
|---|
| 172 | STL(SDY) ;Set text line
 | 
|---|
| 173 |  ;Input: SDY=string
 | 
|---|
| 174 |  S SDLN=SDLN+1
 | 
|---|
| 175 |  S ^TMP("SDTEMP",$J,SDLN)=SDY
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 |  ;
 | 
|---|
| 178 | PRT ;Write assignment information
 | 
|---|
| 179 |  N SDI S SDI=0
 | 
|---|
| 180 |  F  S SDI=$O(^TMP("SDTEMP",$J,SDI)) Q:'SDI  D
 | 
|---|
| 181 |  .W !?(SDCOL),^TMP("SDTEMP",$J,SDI) Q
 | 
|---|
| 182 |  Q
 | 
|---|
| 183 |  ;
 | 
|---|
| 184 | PCLINE(DFN,SDATE) ;PC provider, associate and team in a single line
 | 
|---|
| 185 |  ;Input: DFN=patient ifn
 | 
|---|
| 186 |  ;Input: SDATE=effective date (optional)
 | 
|---|
| 187 |  ;Output: PC provider, associate and team formatted as 80 character
 | 
|---|
| 188 |  ;        line, or "" if none
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  N SDLIST,SDI,SDX,SDY,SDZ,SDL,SDC,SDTL
 | 
|---|
| 191 |  Q:'DFN ""  S:$G(SDATE)<1 SDATE=DT S SDLIST="^TMP(""SDPLIST"",$J)"
 | 
|---|
| 192 |  F SDI="BEGIN","END" S SDATE(SDI)=SDATE
 | 
|---|
| 193 |  S SDATE="SDATE"
 | 
|---|
| 194 |  S SDI=$$GETALL^SCAPMCA(DFN,.SDATE,SDLIST)
 | 
|---|
| 195 |  S SDY="PC Prov: ^Assoc. Prov: ^Team: ",SDL=48,SDC=3,SDTL=0
 | 
|---|
| 196 |  S SDX(1)=$$PCL("PCPR")
 | 
|---|
| 197 |  S SDX(2)=$$PCL("PCAP")
 | 
|---|
| 198 |  S SDX(3)=$$PCL("PCTM")
 | 
|---|
| 199 |  K ^TMP("SDPLIST",$J,DFN)
 | 
|---|
| 200 |  F SDI=1,2,3 S SDZ($L(SDX(SDI)),SDI)=""
 | 
|---|
| 201 |  S SDI="" F  S SDI=$O(SDZ(SDI)) Q:SDI=""  D
 | 
|---|
| 202 |  .S SDII=0 F  S SDII=$O(SDZ(SDI,SDII)) Q:'SDII  D
 | 
|---|
| 203 |  ..I 'SDI S SDC=SDC-1 Q
 | 
|---|
| 204 |  ..I SDI<(SDL\SDC) S SDX(SDII)=$P(SDY,U,SDII)_SDX(SDII),SDL=SDL-SDI,SDC=SDC-1 Q
 | 
|---|
| 205 |  ..S SDX(SDII)=$P(SDY,U,SDII)_$E(SDX(SDII),1,(SDL\SDC))
 | 
|---|
| 206 |  ..Q
 | 
|---|
| 207 |  .Q
 | 
|---|
| 208 |  F SDI=1,2,3 S SDTL=SDTL+$L(SDX(SDI))
 | 
|---|
| 209 |  Q:SDTL=0 ""
 | 
|---|
| 210 |  S SDX=SDX(1),$E(SDX,($L(SDX)+1+(80-SDTL\2)))=SDX(2),$E(SDX,81-$L(SDX(3)))=SDX(3)
 | 
|---|
| 211 |  Q SDX
 | 
|---|
| 212 |  ;
 | 
|---|
| 213 | PCL(SDSUB) ;Get name value
 | 
|---|
| 214 |  ;Input: SDSUB=node from GETALL^SCAPMCA
 | 
|---|
| 215 |  N SDN
 | 
|---|
| 216 |  S SDN=+$G(^TMP("SDPLIST",$J,DFN,"PCPOS",0))
 | 
|---|
| 217 |  Q:SDN=0 ""
 | 
|---|
| 218 |  Q:SDN>1 "[ambiguous data]"
 | 
|---|
| 219 |  S SDN=+$G(^TMP("SDPLIST",$J,DFN,SDSUB,0))
 | 
|---|
| 220 |  Q:SDN=0 ""
 | 
|---|
| 221 |  Q:SDN>1 "[ambiguous data]"
 | 
|---|
| 222 |  Q $P($G(^TMP("SDPLIST",$J,DFN,SDSUB,1)),U,2)
 | 
|---|