| 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) | 
|---|