| 1 | SCMCCV6 ;BP/CMF - PCMM HL7 Baseline Xmit to AAC ; March 26, 2000 | 
|---|
| 2 | ;;5.3;Scheduling;**212**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | ;Traverse PATIENT TEAM POSITION ASSIGNMENT file (#404.43) | 
|---|
| 5 | ;and create events in file (#404.48) for all entries that meet | 
|---|
| 6 | ;the following criteria: | 
|---|
| 7 | ;    1. Field PC ROLE=1 ;..Primary Care | 
|---|
| 8 | ;           -- and one of the following -- | 
|---|
| 9 | ;    2a. assignment is active as of SD*5.3*212 run date (now!) | 
|---|
| 10 | ;    2b. assignment was active as of SD*5.3*177 install date | 
|---|
| 11 | ;    2c. assignment was active between 2a and 2b | 
|---|
| 12 | ; | 
|---|
| 13 | ; | 
|---|
| 14 | W !,"This is not an interactive entry point." | 
|---|
| 15 | W !,"This routine should only be executed by IRM staff" | 
|---|
| 16 | W !,"              -- ONCE --" | 
|---|
| 17 | W !,"using Taskman to Queue option 'PCMM BASELINE SEEDING'" | 
|---|
| 18 | W !,"to run during a non-busy period." | 
|---|
| 19 | Q | 
|---|
| 20 | ; | 
|---|
| 21 | EN(SCTST,SCDFN) ; | 
|---|
| 22 | ; entry point for option 'SCMC PCMM BASELINE SEEDING' | 
|---|
| 23 | ;  this option should not be on any users menu | 
|---|
| 24 | ;  this option should be queued to run once | 
|---|
| 25 | ;  it should not be run more than once without consulting NVS | 
|---|
| 26 | ; | 
|---|
| 27 | ; input | 
|---|
| 28 | ;  SCTST - 1 = test [default = 0] | 
|---|
| 29 | ;  SCDFN - Patient IEN used to seed for restarts only [default = 0] | 
|---|
| 30 | ; | 
|---|
| 31 | S SCTST=+$G(SCTST,0) | 
|---|
| 32 | S SCDFN=+$G(SCDFN,0) | 
|---|
| 33 | N SCP177  ; patch 177 install date | 
|---|
| 34 | N SCP212  ; patch 212 run date | 
|---|
| 35 | N SC1,SC2 ; message holders | 
|---|
| 36 | N SCARRAY ; message text array | 
|---|
| 37 | N SCSTIM  ; process start time | 
|---|
| 38 | S SCSTIM=$$HTE^XLFDT($H) | 
|---|
| 39 | S SC1="PCMM PC Baseline Seed Process Aborted:" | 
|---|
| 40 | ; | 
|---|
| 41 | I $$VPATCH^SCUTBK3("SD*5.3*177")=0 D  Q | 
|---|
| 42 | . S SC2="  PCMM Patch 'SD*5.3*177' has not been loaded!" | 
|---|
| 43 | . D MSG(SC1,SC2) | 
|---|
| 44 | . Q | 
|---|
| 45 | ; | 
|---|
| 46 | I $$VPROGMR^SCUTBK3()=0 D  Q | 
|---|
| 47 | . S SC2="  User must have 'XUPROG' key!" | 
|---|
| 48 | . D MSG(SC1,SC2) | 
|---|
| 49 | . Q | 
|---|
| 50 | ; | 
|---|
| 51 | S SCP212=$$CHECK() | 
|---|
| 52 | I SCP212'="" D  Q | 
|---|
| 53 | . I +SCP212 D  Q | 
|---|
| 54 | . . S SC2="  PCMM Baseline seeded on "_$$FMTE^XLFDT(SCP212)_"." | 
|---|
| 55 | . . D MSG(SC1,SC2) | 
|---|
| 56 | . . Q | 
|---|
| 57 | . I SCP212=-1 D  Q | 
|---|
| 58 | . . S SC2="  Missing PCMM Parameter file entry." | 
|---|
| 59 | . . D MSG(SC1,SC2) | 
|---|
| 60 | . . Q | 
|---|
| 61 | . I SCP212=-2 D  Q | 
|---|
| 62 | . . S SC2="  FM Error retrieving data from PCMM Parameter file." | 
|---|
| 63 | . . D MSG(SC1,SC2) | 
|---|
| 64 | . . Q | 
|---|
| 65 | . S SC2="  Undefined Error." | 
|---|
| 66 | . D MSG(SC1,SC2) | 
|---|
| 67 | . Q | 
|---|
| 68 | ; | 
|---|
| 69 | S SCP177=$$PDAT^SCMCGU("SD*5.3*177") | 
|---|
| 70 | I +SCP177=0 D  Q | 
|---|
| 71 | . S SC2="  Unable to obtain SD*5.3*177 Installation Date." | 
|---|
| 72 | . D MSG(SC1,SC2) | 
|---|
| 73 | . Q | 
|---|
| 74 | ; | 
|---|
| 75 | I $$BASELINE(SCP177,DT,SCDFN,SCTST)'=1 D  Q | 
|---|
| 76 | . S SC2="  PCMM PC Baseline failed"_$$FMTE^XLFDT($$NOW^XLFDT)_"." | 
|---|
| 77 | . D MSG(SC1,SC2) | 
|---|
| 78 | . Q | 
|---|
| 79 | ; | 
|---|
| 80 | Q | 
|---|
| 81 | ; | 
|---|
| 82 | BASELINE(SCP177,SCP212,SCPDFN,SCPTST) ; | 
|---|
| 83 | ; input | 
|---|
| 84 | ;  SCP177 = Patch 177 date (required) | 
|---|
| 85 | ;  SCP212 = Patch 212 date (optional, default = today) | 
|---|
| 86 | ;  SCPDFN = Patient ien    (optional, default = 0) | 
|---|
| 87 | ;  SCPTST = 1 := test [default = 0] | 
|---|
| 88 | ; | 
|---|
| 89 | ; output | 
|---|
| 90 | ;  1 = success | 
|---|
| 91 | ;  0 = failure | 
|---|
| 92 | ; | 
|---|
| 93 | N SCFLAG,SC1,SC2 | 
|---|
| 94 | S SC1="PCMM PC Baseline Process Failure:" | 
|---|
| 95 | S SC177=$G(SCP177,"") | 
|---|
| 96 | I SC177="" D  Q 0 | 
|---|
| 97 | . S SC2="  Invalid SD*5.3*177 Date Parameter" | 
|---|
| 98 | . D MSG(SC1,SC2) | 
|---|
| 99 | . Q | 
|---|
| 100 | S SC212=$G(SCP212,DT) | 
|---|
| 101 | I SC212="" D  Q 0 | 
|---|
| 102 | . S SC2="  Invalid SD*5.3*212 Date (DT) Parameter" | 
|---|
| 103 | . D MSG(SC1,SC2) | 
|---|
| 104 | . Q | 
|---|
| 105 | S SCDFN=$G(SCPDFN,0) | 
|---|
| 106 | I SCDFN="" D  Q 0 | 
|---|
| 107 | . S SC2="  Invalid DFN Parameter" | 
|---|
| 108 | . D MSG(SC1,SC2) | 
|---|
| 109 | . Q | 
|---|
| 110 | I '$D(^SCPT(404.43,"APCPOS")) D  Q 0 | 
|---|
| 111 | . S SC2="  Missing ""APCPOS"" x-ref in file 404.43!" | 
|---|
| 112 | . D MSG(SC1,SC2) | 
|---|
| 113 | . Q | 
|---|
| 114 | ; | 
|---|
| 115 | S SCTST=+$G(SCPTST,0) | 
|---|
| 116 | S SCFLAG=$$EVENT(SC177,SC212,SCDFN,SCTST) | 
|---|
| 117 | ; | 
|---|
| 118 | I SCTST=1 D MSG("","",+SCFLAG) Q 1 | 
|---|
| 119 | N SCFDA,SCERR,SC1,SC2 | 
|---|
| 120 | S SC1="PCMM PC Baseline Seeding" | 
|---|
| 121 | S SC2=+$P(SCFLAG,U,2) | 
|---|
| 122 | S SCFLAG=+$P(SCFLAG,U) | 
|---|
| 123 | S SC1=SC1_$S(+SC2:" stopped by TM stop request:",1:" completed:") | 
|---|
| 124 | S SCFDA(1,404.44,"1,",17)=SC212 | 
|---|
| 125 | D FILE^DIE("","SCFDA(1)","SCERR") | 
|---|
| 126 | I $D(SCERR) D | 
|---|
| 127 | . S SC2="  Caution: Baseline Date NOT updated in PCMM Parameter file" | 
|---|
| 128 | . D MSG(SC1,SC2) | 
|---|
| 129 | . Q | 
|---|
| 130 | S SC2="  "_SCFLAG_" assignments placed in HL7 transmission queue." | 
|---|
| 131 | D MSG(SC1,SC2) | 
|---|
| 132 | Q 1 | 
|---|
| 133 | ; | 
|---|
| 134 | CHECK() ; | 
|---|
| 135 | ; Description:  Determine whether or not the Baseline has run. | 
|---|
| 136 | ; | 
|---|
| 137 | ; Input: None | 
|---|
| 138 | ; | 
|---|
| 139 | ; Output: | 
|---|
| 140 | ;   Function Value: Return date Baseline was run | 
|---|
| 141 | ; | 
|---|
| 142 | N SCX | 
|---|
| 143 | I '$D(^SCTM(404.44,1)) Q -1 | 
|---|
| 144 | K ^TMP($J,"SCMCCV6") | 
|---|
| 145 | S SCX=$$GET1^DIQ(404.44,"1,",17,"I","","^TMP($J,""SCMCCV6"")") | 
|---|
| 146 | I $D(^TMP($J,"SCMCCV6")) S SCX=-2 | 
|---|
| 147 | K ^TMP($J,"SCMCCV6") | 
|---|
| 148 | Q SCX | 
|---|
| 149 | ; | 
|---|
| 150 | ; | 
|---|
| 151 | EVENT(SC177,SC212,SCDFN,SCTST) ; | 
|---|
| 152 | ; Description: Create an Event in file (#404.48) | 
|---|
| 153 | ; | 
|---|
| 154 | ; Input: | 
|---|
| 155 | ;   SC177 - date patch SD*5.3*177 was installed. [required] | 
|---|
| 156 | ;   SC212 - date process runs [default = DT] | 
|---|
| 157 | ;   SCDFN - patient ien (ptr file 2) [default = 0] | 
|---|
| 158 | ;   SCTST - 1 = test [default = 0] | 
|---|
| 159 | ; | 
|---|
| 160 | ; Output: | 
|---|
| 161 | ;   p1 = number of entries created | 
|---|
| 162 | ;   p2 = stopped by Taskman | 
|---|
| 163 | ; | 
|---|
| 164 | N SCCNT   ; counter | 
|---|
| 165 | N SCPAI   ; position assignment IEN (ptr file 404.43) | 
|---|
| 166 | N SCTP    ; team position IEN (ptr file 404.57) | 
|---|
| 167 | N SCADT   ; position assignment start date | 
|---|
| 168 | N SCDDT   ; position assignment end date | 
|---|
| 169 | N SCNOW   ; time process starts | 
|---|
| 170 | N SCVAR   ; variable pointer string for HL7 | 
|---|
| 171 | N SC1     ; shorthand for ' "APCPOS",SCDFN,1 ' node | 
|---|
| 172 | N SCZ     ; Taskman flag to stop process | 
|---|
| 173 | ; | 
|---|
| 174 | ; check for ZSTOP | 
|---|
| 175 | S SCZ=$$S^%ZTLOAD | 
|---|
| 176 | I +SCZ Q 0_U_1 | 
|---|
| 177 | S SCTST=+$G(SCTST,0) | 
|---|
| 178 | K ^XTMP("SCMCCV6") | 
|---|
| 179 | S ^XTMP("SCMCCV6",0)=DT_U_$$FMADD^XLFDT(""_DT_"",7)_U_"SCMC PCMM BASELINE SEEDING" | 
|---|
| 180 | S SCNOW=$$NOW^XLFDT | 
|---|
| 181 | S SCCNT=0 | 
|---|
| 182 | S SCDFN=+SCDFN | 
|---|
| 183 | F  S SCDFN=$O(^SCPT(404.43,"APCPOS",SCDFN)) Q:(SCDFN="")!(SCZ)  D | 
|---|
| 184 | . S SCZ=$$S^%ZTLOAD | 
|---|
| 185 | . Q:+SCZ | 
|---|
| 186 | . ; | 
|---|
| 187 | . S ^XTMP("SCMCCV6","LASTDFN")=SCDFN | 
|---|
| 188 | . S SC1="^SCPT(404.43,""APCPOS"",SCDFN,1)" | 
|---|
| 189 | . ; | 
|---|
| 190 | . ; quit if no PC assignments | 
|---|
| 191 | . Q:'$D(@SC1) | 
|---|
| 192 | . S SCADT=0 | 
|---|
| 193 | . F  S SCADT=$O(@SC1@(SCADT)) Q:SCADT=""  D | 
|---|
| 194 | . . S SCTP=0 | 
|---|
| 195 | . . F  S SCTP=$O(@SC1@(SCADT,SCTP)) Q:'SCTP  D | 
|---|
| 196 | . . . ; | 
|---|
| 197 | . . . ; quit if team position does not exist | 
|---|
| 198 | . . . Q:'$D(^SCTM(404.57,SCTP,0)) | 
|---|
| 199 | . . . S SCPAI=0 | 
|---|
| 200 | . . . F  S SCPAI=$O(@SC1@(SCADT,SCTP,SCPAI)) Q:'SCPAI  D | 
|---|
| 201 | . . . . S SCDDT=$P($G(^SCPT(404.43,SCPAI,0)),U,4) | 
|---|
| 202 | . . . . ; | 
|---|
| 203 | . . . . ; quit if not active within date range | 
|---|
| 204 | . . . . Q:$$DTCHK^SCAPU1(SC177,SC212,0,SCADT,SCDDT)<1 | 
|---|
| 205 | . . . . S SCVAR=SCPAI_";SCPT(404.43," | 
|---|
| 206 | . . . . ; | 
|---|
| 207 | . . . . ; add to HL7 event file | 
|---|
| 208 | . . . . Q:$$CHECK^SCMCHLB1(SCVAR)'=1 | 
|---|
| 209 | . . . . ; | 
|---|
| 210 | . . . . ; queue for transmit or report | 
|---|
| 211 | . . . . I SCTST=0 D ADD^SCMCHLE("NOW",SCVAR,SCDFN,SCTP) | 
|---|
| 212 | . . . . I SCTST=1 S SCARRAY(SCCNT+3)=SCVAR_" ^ "_$$GET1^DIQ(2,SCDFN_",",.01)_" ^ "_$$GET1^DIQ(404.57,SCTP_",",.01)_" ^ "_$$FMTE^XLFDT(SCADT)_" ^ "_$$FMTE^XLFDT(SCDDT) | 
|---|
| 213 | . . . . ; | 
|---|
| 214 | . . . . ; increment counter | 
|---|
| 215 | . . . . S SCCNT=SCCNT+1 | 
|---|
| 216 | . . . . Q | 
|---|
| 217 | . . . Q | 
|---|
| 218 | . . Q | 
|---|
| 219 | . Q | 
|---|
| 220 | ; | 
|---|
| 221 | Q SCCNT_U_SCZ | 
|---|
| 222 | ; | 
|---|
| 223 | MSG(SC1,SC2,SCTST) ; | 
|---|
| 224 | N XMY,XMDUZ,XMSUB,XMTEXT | 
|---|
| 225 | S SCTST=+$G(SCTST,0) | 
|---|
| 226 | S XMDUZ="PCMM Module" | 
|---|
| 227 | S (XMY(DUZ),XMY(XMDUZ))="" | 
|---|
| 228 | I SCTST=0 D | 
|---|
| 229 | . S XMSUB="PCMM PC Baseline Seeding Job" | 
|---|
| 230 | . K SCARRAY | 
|---|
| 231 | . S SCARRAY(1)="" | 
|---|
| 232 | . S SCARRAY(2)=SC1 | 
|---|
| 233 | . S SCARRAY(3)=SC2 | 
|---|
| 234 | . S SCARRAY(4)="" | 
|---|
| 235 | . S SCARRAY(5)="TaskMan Job Number:       "_$G(ZTSK) | 
|---|
| 236 | . S SCARRAY(6)="Baseline Start Date/Time: "_$G(SCSTIM) | 
|---|
| 237 | . S SCARRAY(7)="Baseline End Date/Time:   "_$$HTE^XLFDT($H) | 
|---|
| 238 | . S SCARRAY(8)="HL7 Transmit Limit:       "_$$GET1^DIQ(404.44,"1,",15) | 
|---|
| 239 | . S SCARRAY(9)="" | 
|---|
| 240 | . Q | 
|---|
| 241 | E  D | 
|---|
| 242 | . S XMSUB="PCMM PC Baseline Trial Entries ("_$G(ZTSK)_")" | 
|---|
| 243 | . S SCARRAY(1)="" | 
|---|
| 244 | . S SCARRAY(2)=SCTST_" entries would have been placed in HL7 queue:" | 
|---|
| 245 | . S SCARRAY(3)="===================================================" | 
|---|
| 246 | S XMTEXT="SCARRAY(" | 
|---|
| 247 | D ^XMD | 
|---|
| 248 | Q | 
|---|
| 249 | ; | 
|---|
| 250 | RESTART(SCTST) ; alb/rpm | 
|---|
| 251 | ; This undocumented entry point allows a user to clear the Baseline | 
|---|
| 252 | ; date stored in file #404.44 field #17.  Then the last patient IEN | 
|---|
| 253 | ; that was processed from the last run is retrieved from ^XTMP("SCMCCV6" | 
|---|
| 254 | ; and decremented to seed the restart point.  If ^XTMP does not exist | 
|---|
| 255 | ; the IEN is set to 0. | 
|---|
| 256 | ; | 
|---|
| 257 | ; Input: | 
|---|
| 258 | ;       SCTST - 1 = test [default = 0] | 
|---|
| 259 | ; | 
|---|
| 260 | S SCTST=+$G(SCTST,0) | 
|---|
| 261 | ; | 
|---|
| 262 | NEW SC1,SC2,SCDFA,SCDFN,SCERR | 
|---|
| 263 | S SC1="PCMM PC Baseline Seeding" | 
|---|
| 264 | S SCDFN=0 | 
|---|
| 265 | ; Retrieve the last IEN processed | 
|---|
| 266 | I +$G(^XTMP("SCMCCV6","LASTDFN"))>0 D | 
|---|
| 267 | . S SCDFN=+$G(^XTMP("SCMCCV6","LASTDFN"))-1 | 
|---|
| 268 | ; Delete the Baseline date from last run | 
|---|
| 269 | S SCFDA(1,404.44,"1,",17)="@" | 
|---|
| 270 | D FILE^DIE("","SCFDA(1)","SCERR") | 
|---|
| 271 | I $D(SCERR) D  Q | 
|---|
| 272 | . S SC2="  Warning: Baseline Date NOT cleared in PCMM Parameter file" | 
|---|
| 273 | . D MSG(SC1,SC2) | 
|---|
| 274 | . Q | 
|---|
| 275 | ; Call interactive entry point | 
|---|
| 276 | D EN(SCTST,SCDFN) | 
|---|
| 277 | Q | 
|---|