| 1 | SCMCHLZ ;BP/DJB - PCMM HL7 Bld ZPC Segment ; 3/7/00 1:08pm
|
|---|
| 2 | ;;5.3;Scheduling;**177,210,212,245,286,515**;AUG 13, 1993;Build 14
|
|---|
| 3 | ;
|
|---|
| 4 | ZPC(SCSTR,SCID,SCDATA,SCSEQ) ;Main entry point for building ZPC segment
|
|---|
| 5 | ;
|
|---|
| 6 | ;Input:
|
|---|
| 7 | ; SCSTR...: String of fields requested separated by commas
|
|---|
| 8 | ; SCID....: Provider Assignment ID. Unique ID string that
|
|---|
| 9 | ; Austin uses for the key field.
|
|---|
| 10 | ; SCDATA..: "^" Delimited string that contains all data needed
|
|---|
| 11 | ; to build a ZPC segment. If all pieces are "", Austin
|
|---|
| 12 | ; does a deletion.
|
|---|
| 13 | ; Format:
|
|---|
| 14 | ; ProviderIEN^DateAssign^DateUnassign^Type
|
|---|
| 15 | ; Examples:
|
|---|
| 16 | ; 3^2980605^2990203^PCP
|
|---|
| 17 | ; 6^2980605^2990203^AP
|
|---|
| 18 | ; ""^""^""^"" (deletion)
|
|---|
| 19 | ; SCSEQ...: Sequentially number multiple ZPC segments.
|
|---|
| 20 | ; djb/bp Patch 210.
|
|---|
| 21 | ;Output:
|
|---|
| 22 | ; ZPC segment string.
|
|---|
| 23 | ;
|
|---|
| 24 | NEW CS,FS,QT,SCZPC,SS
|
|---|
| 25 | ;
|
|---|
| 26 | ;Initialize variables
|
|---|
| 27 | D INIT
|
|---|
| 28 | I $G(SCID)="" Q SCZPC
|
|---|
| 29 | ;
|
|---|
| 30 | I SCSTR[",1," D ID ;........Provider Assignment ID
|
|---|
| 31 | I SCSTR[",2," D PROV ;......Provider
|
|---|
| 32 | I SCSTR[",3," D PROVDA ;....Date provider assigned
|
|---|
| 33 | I SCSTR[",4," D PROVDU ;....Date provider unassigned
|
|---|
| 34 | I SCSTR[",5," D PROVT ;.....Provider Type code
|
|---|
| 35 | I SCSTR[",6," D PROVPC ;....Provider Person Class PATCH 515
|
|---|
| 36 | I SCSTR[",8," D PROVSSN ;...Provider SSN;bp/ar and alb/rpm Patch 212
|
|---|
| 37 | I SCSTR[",9," D STATION ;....5 or 6 digit station number Patch 286
|
|---|
| 38 | I SCSTR[",10," D TEAM ;....Team Name - Patch 515
|
|---|
| 39 | I SCSTR[",11," D TMIEN ;....Team IEN - Patch 515
|
|---|
| 40 | I SCSTR[",16," D TMPUR ;...Team Purpose Patch 515
|
|---|
| 41 | I $L(SCZPC)>245 D ADJUST ;..If length>245 add continuation node
|
|---|
| 42 | Q SCZPC
|
|---|
| 43 | ;
|
|---|
| 44 | ID ;Provider Assignment ID
|
|---|
| 45 | ;Convert ID to IEN of file 404.49 since it's alot shorter.
|
|---|
| 46 | ;ID format:
|
|---|
| 47 | ; IEN404.43 - IEN404.52 - IEN404.53 - AP/PCP
|
|---|
| 48 | ; Examples: "2290-405-34-PCP"
|
|---|
| 49 | ; "2290-406-0-AP"
|
|---|
| 50 | ;
|
|---|
| 51 | NEW FAC,ID,OLDID,SCERR,SCFDA,SCIEN
|
|---|
| 52 | ;
|
|---|
| 53 | ;Find ID in PCMM HL7 ID file (404.49), and use IEN.
|
|---|
| 54 | S ID=$O(^SCPT(404.49,"B",SCID,""))
|
|---|
| 55 | ;
|
|---|
| 56 | ;If ID not found, add it to 404.49 now.
|
|---|
| 57 | I 'ID D ;
|
|---|
| 58 | . S SCFDA(404.49,"+1,",.01)=SCID
|
|---|
| 59 | . D UPDATE^DIE("E","SCFDA","SCIEN","SCERR")
|
|---|
| 60 | . S ID=$G(SCIEN(1))
|
|---|
| 61 | ;
|
|---|
| 62 | ;bp/djb Patch 210
|
|---|
| 63 | ;New code begins
|
|---|
| 64 | ;If this is a site integration entry, use old ID.
|
|---|
| 65 | S FAC=SCFAC ;..Facility
|
|---|
| 66 | S OLDID=$P($G(^SCPT(404.49,ID,0)),U,2)
|
|---|
| 67 | I OLDID]"" D ;
|
|---|
| 68 | . S FAC=$P(OLDID,"-",1)
|
|---|
| 69 | . S ID=$P(OLDID,"-",2)
|
|---|
| 70 | ;New code ends
|
|---|
| 71 | ;
|
|---|
| 72 | ;Add ID to ZPC segment
|
|---|
| 73 | S $P(SCZPC,FS,2)=FAC_"-"_ID
|
|---|
| 74 | Q
|
|---|
| 75 | ;
|
|---|
| 76 | STATION ; Add station # suffix patch SD*5.3*286
|
|---|
| 77 | NEW STAT,SNUM,SCTP,TEAM,TEAMP
|
|---|
| 78 | S $P(SCZPC,FS,10)=""
|
|---|
| 79 | S SCTP=+$P(SCZPC,"-",2),SCTP=+$P($G(^SCPT(404.49,SCTP,0)),"-",1) D
|
|---|
| 80 | .IF SCTP S TEAMP=$$GET1^DIQ(404.43,SCTP_",",.02,"I") D
|
|---|
| 81 | ..IF TEAMP S SNUM=$$GET1^DIQ(404.57,TEAMP_",",.02,"I") D
|
|---|
| 82 | ...IF SNUM S TEAM=$$GET1^DIQ(404.51,SNUM_",",.07,"I") D
|
|---|
| 83 | ....IF TEAM S STAT=$$GET1^DIQ(4,TEAM_",",99) D
|
|---|
| 84 | .....IF STAT S $P(SCZPC,FS,10)=STAT
|
|---|
| 85 | Q
|
|---|
| 86 | ;
|
|---|
| 87 | TEAM ;Add Team Name patch SD*5.3*515
|
|---|
| 88 | NEW SNUM,SCTP,TEAM,TEAMP
|
|---|
| 89 | S $P(SCZPC,FS,11)=QT
|
|---|
| 90 | Q:'$L(($P(SCDATA,U,2)))
|
|---|
| 91 | S SCTP=+$P(SCZPC,"-",2),SCTP=+$P($G(^SCPT(404.49,SCTP,0)),"-",1) D
|
|---|
| 92 | .IF SCTP S TEAMP=$$GET1^DIQ(404.43,SCTP_",",.02,"I") D
|
|---|
| 93 | ..IF TEAMP S SNUM=$$GET1^DIQ(404.57,TEAMP_",",.02,"I") D
|
|---|
| 94 | ...IF SNUM S TEAM=$$GET1^DIQ(404.51,SNUM_",",.01,"I") D
|
|---|
| 95 | ....IF $L(TEAM)>0 S $P(SCZPC,FS,11)=TEAM
|
|---|
| 96 | Q
|
|---|
| 97 | ;
|
|---|
| 98 | TMIEN ;Add Team IEN patch SD*5.3*515
|
|---|
| 99 | NEW SNUM,SCTP,TEAMP
|
|---|
| 100 | S $P(SCZPC,FS,12)=QT
|
|---|
| 101 | Q:'$L(($P(SCDATA,U,2)))
|
|---|
| 102 | S SCTP=+$P(SCZPC,"-",2),SCTP=+$P($G(^SCPT(404.49,SCTP,0)),"-",1) D
|
|---|
| 103 | .IF SCTP S TEAMP=$$GET1^DIQ(404.43,SCTP_",",.02,"I") D
|
|---|
| 104 | ..IF TEAMP S SNUM=$$GET1^DIQ(404.57,TEAMP_",",.02,"I") D
|
|---|
| 105 | ...IF SNUM S $P(SCZPC,FS,12)=SNUM
|
|---|
| 106 | Q
|
|---|
| 107 | ;
|
|---|
| 108 | PROV ;Provider
|
|---|
| 109 | NEW PROV,PTR200,SCNAM,SCNAME,SCTMP,X
|
|---|
| 110 | ;
|
|---|
| 111 | S $P(SCZPC,FS,3)=QT
|
|---|
| 112 | S PTR200=+SCDATA
|
|---|
| 113 | Q:'PTR200
|
|---|
| 114 | ;
|
|---|
| 115 | ;Get External Provider ID
|
|---|
| 116 | D PERSON^VAFHLRO3(PTR200,"SCTMP",QT)
|
|---|
| 117 | Q:'$D(SCTMP)
|
|---|
| 118 | S PROV=SCTMP(1,1,1)_SS_SCTMP(1,1,2)
|
|---|
| 119 | S $P(PROV,CS,8)=SCTMP(1,8)
|
|---|
| 120 | ;rpm/alb patch 210-Stuff facility in Assigning Facility(component 14)
|
|---|
| 121 | S $P(PROV,CS,14)=SCTMP(1,1,2)
|
|---|
| 122 | ;rpm/alb patch 210
|
|---|
| 123 | ;Get Standardized Name using Kernel API
|
|---|
| 124 | ;Standardized Name retrieval allowed by IA #3065
|
|---|
| 125 | S SCNAM("FILE")=200
|
|---|
| 126 | S SCNAM("IENS")=PTR200_","
|
|---|
| 127 | S SCNAM("FIELD")=.01
|
|---|
| 128 | S SCNAME=$$HLNAME^XLFNAME(.SCNAM,"",FS)
|
|---|
| 129 | F X=2:1:7 S $P(PROV,CS,X)=$P(SCNAME,FS,X-1)
|
|---|
| 130 | F X=9:1:13 S $P(PROV,CS,X)=""
|
|---|
| 131 | ;
|
|---|
| 132 | ;Add provider to ZPC segment
|
|---|
| 133 | S $P(SCZPC,FS,3)=PROV
|
|---|
| 134 | Q
|
|---|
| 135 | ;
|
|---|
| 136 | PROVDA ;Provider - Date Assigned
|
|---|
| 137 | NEW DATE
|
|---|
| 138 | S $P(SCZPC,FS,4)=QT
|
|---|
| 139 | S DATE=$P(SCDATA,U,2)
|
|---|
| 140 | Q:'DATE
|
|---|
| 141 | S $P(SCZPC,FS,4)=$$HLDATE^HLFNC(DATE,"DT")
|
|---|
| 142 | Q
|
|---|
| 143 | ;
|
|---|
| 144 | PROVDU ;Provider - Date Unassigned
|
|---|
| 145 | NEW DATE
|
|---|
| 146 | S $P(SCZPC,FS,5)=QT
|
|---|
| 147 | S DATE=$P(SCDATA,U,3)
|
|---|
| 148 | Q:'DATE
|
|---|
| 149 | S $P(SCZPC,FS,5)=$$HLDATE^HLFNC(DATE,"DT")
|
|---|
| 150 | Q
|
|---|
| 151 | ;
|
|---|
| 152 | PROVT ;Provider - Type code
|
|---|
| 153 | NEW PT
|
|---|
| 154 | S $P(SCZPC,FS,6)=QT
|
|---|
| 155 | S PT=$P(SCDATA,U,4)
|
|---|
| 156 | Q:PT']""
|
|---|
| 157 | S $P(SCZPC,FS,6)=PT
|
|---|
| 158 | Q
|
|---|
| 159 | ;
|
|---|
| 160 | PROVPC ;Provider - Person Class
|
|---|
| 161 | NEW CODE,PTR200
|
|---|
| 162 | S $P(SCZPC,FS,7)=QT
|
|---|
| 163 | S PTR200=+SCDATA
|
|---|
| 164 | Q:'PTR200
|
|---|
| 165 | S CODE=$$GET^XUA4A72(PTR200)
|
|---|
| 166 | ; PATCH 515 OLD CODE
|
|---|
| 167 | ; I CODE=-1!'CODE Q
|
|---|
| 168 | ; S $P(SCZPC,FS,7)=$P(CODE,"^",7)_CS_CS_"VA8932.1"
|
|---|
| 169 | I CODE=-1!'CODE S CODE=""
|
|---|
| 170 | S CODE=$P(CODE,"^",7)
|
|---|
| 171 | S $P(SCZPC,FS,7)=CODE_CS_CS_"VA8932.1"
|
|---|
| 172 | Q
|
|---|
| 173 | ;
|
|---|
| 174 | PROVSSN ;Provider - Social Security Number
|
|---|
| 175 | ;bp/ar and alb/rpm Patch 212
|
|---|
| 176 | NEW SCSNN,PTR200,SC200,SCARRY
|
|---|
| 177 | S $P(SCZPC,FS,9)=QT
|
|---|
| 178 | S PTR200=+SCDATA
|
|---|
| 179 | Q:'PTR200
|
|---|
| 180 | S SC200=$$NEWPERSN^SCMCGU(PTR200,"SCARRY")
|
|---|
| 181 | I SC200'=1 Q
|
|---|
| 182 | S SCSNN=$P($G(SCARRY(PTR200)),U,6)
|
|---|
| 183 | Q:SCSNN'?9N
|
|---|
| 184 | S $P(SCZPC,FS,9)=SCSNN
|
|---|
| 185 | Q
|
|---|
| 186 | ;
|
|---|
| 187 | TMPUR ; TEAM PURPOSE ADDED PATCH 515 send in BOTH DELETE & ADD
|
|---|
| 188 | S $P(SCZPC,FS,17)=QT
|
|---|
| 189 | ; Q:SCDATA="^^^" COMMENT OUT SO SEND W DELETE TOO
|
|---|
| 190 | NEW SCTMPI,SCTMP,SCTPD,SCTM,TMD,ND,SCTP
|
|---|
| 191 | ; Read PATIENT TEAM ASS FILE
|
|---|
| 192 | S ND=$G(^SCPT(404.43,$P(SCID,"-",1),0))
|
|---|
| 193 | Q:ND=""
|
|---|
| 194 | S SCTP=$P(ND,U,2) ; TP
|
|---|
| 195 | ; READ TP REC (57)
|
|---|
| 196 | S SCTPD=$G(^SCTM(404.57,SCTP,0))
|
|---|
| 197 | Q:SCTPD=""
|
|---|
| 198 | S SCTM=$P(SCTPD,U,2)
|
|---|
| 199 | ; READ TEAM FILE (404.51
|
|---|
| 200 | S TMD=^SCTM(404.51,SCTM,0)
|
|---|
| 201 | S SCTMP=$P(TMD,U,3)
|
|---|
| 202 | Q:SCTMP=""
|
|---|
| 203 | S SCTMPI=SCTMP
|
|---|
| 204 | S SCTMP=$G(^SD(403.47,SCTMP,0))
|
|---|
| 205 | Q:SCTMP=""
|
|---|
| 206 | S SCTMP=$P(SCTMP,U,1)
|
|---|
| 207 | Q:SCTMP=""
|
|---|
| 208 | S $P(SCZPC,FS,17)=SCTMPI_CS_SCTMP
|
|---|
| 209 | Q
|
|---|
| 210 | ;
|
|---|
| 211 | INIT ;Initialize variables
|
|---|
| 212 | ;
|
|---|
| 213 | ;Set delimeter values
|
|---|
| 214 | S FS=HL("FS") ;.........^
|
|---|
| 215 | S CS=$E(HL("ECH"),1) ;..~
|
|---|
| 216 | S SS=$E(HL("ECH"),4) ;..&
|
|---|
| 217 | S QT=HL("Q") ;..........""
|
|---|
| 218 | ;
|
|---|
| 219 | ;Default SCSEQ to 1. djb/bp Patch 210
|
|---|
| 220 | S:'$G(SCSEQ) SCSEQ=1
|
|---|
| 221 | ;
|
|---|
| 222 | ;Initialize ZPC segment to all nulls.
|
|---|
| 223 | ;bp/ar and alb/rpm Patch 212
|
|---|
| 224 | ;S $P(SCZPC,FS,5)="^" ;Initialize as empty; not null.
|
|---|
| 225 | ;S SCZPC="ZPC"_FS_SCZPC_FS_SCSEQ ;djb/bp Patch 210
|
|---|
| 226 | S $P(SCZPC,FS,9)=""
|
|---|
| 227 | S $P(SCZPC,FS,10)="" ; PATCH 286
|
|---|
| 228 | S $P(SCZPC,FS,11)="" ; PATCH 515
|
|---|
| 229 | S $P(SCZPC,FS,12)="" ; PATCH 515
|
|---|
| 230 | ; DEBBIE LEVY TPA CHGS 20070518 PATCH 515
|
|---|
| 231 | S $P(SCZPC,FS,17)=""
|
|---|
| 232 | S $P(SCZPC,FS,1)="ZPC"
|
|---|
| 233 | S $P(SCZPC,FS,8)=SCSEQ
|
|---|
| 234 | ;
|
|---|
| 235 | ;Initialize SCSTR to fields user requested.
|
|---|
| 236 | S SCSTR=$G(SCSTR)
|
|---|
| 237 | ;bp/ar and alb/rpm Added "8" to default fields Patch 212
|
|---|
| 238 | ; Added "9" to default fields Patch 286
|
|---|
| 239 | ; DEBBIE LEVY TPA CHGS 20070518 PATCH 515
|
|---|
| 240 | ; added team (10), team IEN (11) and team purpose (16)
|
|---|
| 241 | ;I SCSTR']"" S SCSTR="1,2,3,4,5,6,8,9" ;Default fields
|
|---|
| 242 | I SCSTR']"" S SCSTR="1,2,3,4,5,6,8,9,10,11,16" ;Default fields
|
|---|
| 243 | ;Add starting and ending comma.
|
|---|
| 244 | I $E(SCSTR)'="," S SCSTR=","_SCSTR
|
|---|
| 245 | I $E(SCSTR,$L(SCSTR))'="," S SCSTR=SCSTR_","
|
|---|
| 246 | Q
|
|---|
| 247 | ;
|
|---|
| 248 | ADJUST ;Add a continuation node if length is greater than 245.
|
|---|
| 249 | Q:$L(SCZPC)'>245
|
|---|
| 250 | S SCZPC(1)=$E(SCZPC,246,999) ;
|
|---|
| 251 | S SCZPC=$E(SCZPC,1,245)
|
|---|
| 252 | Q
|
|---|