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