Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SCMCCV6

SCMCCV6.m

Go to the documentation of this file.
  1. SCMCCV6 ;BP/CMF - PCMM HL7 Baseline Xmit to AAC ; March 26, 2000
  1. ;;5.3;Scheduling;**212**;AUG 13, 1993
  1. ;
  1. ;Traverse PATIENT TEAM POSITION ASSIGNMENT file (#404.43)
  1. ;and create events in file (#404.48) for all entries that meet
  1. ;the following criteria:
  1. ; 1. Field PC ROLE=1 ;..Primary Care
  1. ; -- and one of the following --
  1. ; 2a. assignment is active as of SD*5.3*212 run date (now!)
  1. ; 2b. assignment was active as of SD*5.3*177 install date
  1. ; 2c. assignment was active between 2a and 2b
  1. ;
  1. ;
  1. W !,"This is not an interactive entry point."
  1. W !,"This routine should only be executed by IRM staff"
  1. W !," -- ONCE --"
  1. W !,"using Taskman to Queue option 'PCMM BASELINE SEEDING'"
  1. W !,"to run during a non-busy period."
  1. Q
  1. ;
  1. EN(SCTST,SCDFN) ;
  1. ; entry point for option 'SCMC PCMM BASELINE SEEDING'
  1. ; this option should not be on any users menu
  1. ; this option should be queued to run once
  1. ; it should not be run more than once without consulting NVS
  1. ;
  1. ; input
  1. ; SCTST - 1 = test [default = 0]
  1. ; SCDFN - Patient IEN used to seed for restarts only [default = 0]
  1. ;
  1. S SCTST=+$G(SCTST,0)
  1. S SCDFN=+$G(SCDFN,0)
  1. N SCP177 ; patch 177 install date
  1. N SCP212 ; patch 212 run date
  1. N SC1,SC2 ; message holders
  1. N SCARRAY ; message text array
  1. N SCSTIM ; process start time
  1. S SCSTIM=$$HTE^XLFDT($H)
  1. S SC1="PCMM PC Baseline Seed Process Aborted:"
  1. ;
  1. I $$VPATCH^SCUTBK3("SD*5.3*177")=0 D Q
  1. . S SC2=" PCMM Patch 'SD*5.3*177' has not been loaded!"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. I $$VPROGMR^SCUTBK3()=0 D Q
  1. . S SC2=" User must have 'XUPROG' key!"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. S SCP212=$$CHECK()
  1. I SCP212'="" D Q
  1. . I +SCP212 D Q
  1. . . S SC2=" PCMM Baseline seeded on "_$$FMTE^XLFDT(SCP212)_"."
  1. . . D MSG(SC1,SC2)
  1. . . Q
  1. . I SCP212=-1 D Q
  1. . . S SC2=" Missing PCMM Parameter file entry."
  1. . . D MSG(SC1,SC2)
  1. . . Q
  1. . I SCP212=-2 D Q
  1. . . S SC2=" FM Error retrieving data from PCMM Parameter file."
  1. . . D MSG(SC1,SC2)
  1. . . Q
  1. . S SC2=" Undefined Error."
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. S SCP177=$$PDAT^SCMCGU("SD*5.3*177")
  1. I +SCP177=0 D Q
  1. . S SC2=" Unable to obtain SD*5.3*177 Installation Date."
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. I $$BASELINE(SCP177,DT,SCDFN,SCTST)'=1 D Q
  1. . S SC2=" PCMM PC Baseline failed"_$$FMTE^XLFDT($$NOW^XLFDT)_"."
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. Q
  1. ;
  1. BASELINE(SCP177,SCP212,SCPDFN,SCPTST) ;
  1. ; input
  1. ; SCP177 = Patch 177 date (required)
  1. ; SCP212 = Patch 212 date (optional, default = today)
  1. ; SCPDFN = Patient ien (optional, default = 0)
  1. ; SCPTST = 1 := test [default = 0]
  1. ;
  1. ; output
  1. ; 1 = success
  1. ; 0 = failure
  1. ;
  1. N SCFLAG,SC1,SC2
  1. S SC1="PCMM PC Baseline Process Failure:"
  1. S SC177=$G(SCP177,"")
  1. I SC177="" D Q 0
  1. . S SC2=" Invalid SD*5.3*177 Date Parameter"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. S SC212=$G(SCP212,DT)
  1. I SC212="" D Q 0
  1. . S SC2=" Invalid SD*5.3*212 Date (DT) Parameter"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. S SCDFN=$G(SCPDFN,0)
  1. I SCDFN="" D Q 0
  1. . S SC2=" Invalid DFN Parameter"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. I '$D(^SCPT(404.43,"APCPOS")) D Q 0
  1. . S SC2=" Missing ""APCPOS"" x-ref in file 404.43!"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ;
  1. S SCTST=+$G(SCPTST,0)
  1. S SCFLAG=$$EVENT(SC177,SC212,SCDFN,SCTST)
  1. ;
  1. I SCTST=1 D MSG("","",+SCFLAG) Q 1
  1. N SCFDA,SCERR,SC1,SC2
  1. S SC1="PCMM PC Baseline Seeding"
  1. S SC2=+$P(SCFLAG,U,2)
  1. S SCFLAG=+$P(SCFLAG,U)
  1. S SC1=SC1_$S(+SC2:" stopped by TM stop request:",1:" completed:")
  1. S SCFDA(1,404.44,"1,",17)=SC212
  1. D FILE^DIE("","SCFDA(1)","SCERR")
  1. I $D(SCERR) D
  1. . S SC2=" Caution: Baseline Date NOT updated in PCMM Parameter file"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. S SC2=" "_SCFLAG_" assignments placed in HL7 transmission queue."
  1. D MSG(SC1,SC2)
  1. Q 1
  1. ;
  1. CHECK() ;
  1. ; Description: Determine whether or not the Baseline has run.
  1. ;
  1. ; Input: None
  1. ;
  1. ; Output:
  1. ; Function Value: Return date Baseline was run
  1. ;
  1. N SCX
  1. I '$D(^SCTM(404.44,1)) Q -1
  1. K ^TMP($J,"SCMCCV6")
  1. S SCX=$$GET1^DIQ(404.44,"1,",17,"I","","^TMP($J,""SCMCCV6"")")
  1. I $D(^TMP($J,"SCMCCV6")) S SCX=-2
  1. K ^TMP($J,"SCMCCV6")
  1. Q SCX
  1. ;
  1. ;
  1. EVENT(SC177,SC212,SCDFN,SCTST) ;
  1. ; Description: Create an Event in file (#404.48)
  1. ;
  1. ; Input:
  1. ; SC177 - date patch SD*5.3*177 was installed. [required]
  1. ; SC212 - date process runs [default = DT]
  1. ; SCDFN - patient ien (ptr file 2) [default = 0]
  1. ; SCTST - 1 = test [default = 0]
  1. ;
  1. ; Output:
  1. ; p1 = number of entries created
  1. ; p2 = stopped by Taskman
  1. ;
  1. N SCCNT ; counter
  1. N SCPAI ; position assignment IEN (ptr file 404.43)
  1. N SCTP ; team position IEN (ptr file 404.57)
  1. N SCADT ; position assignment start date
  1. N SCDDT ; position assignment end date
  1. N SCNOW ; time process starts
  1. N SCVAR ; variable pointer string for HL7
  1. N SC1 ; shorthand for ' "APCPOS",SCDFN,1 ' node
  1. N SCZ ; Taskman flag to stop process
  1. ;
  1. ; check for ZSTOP
  1. S SCZ=$$S^%ZTLOAD
  1. I +SCZ Q 0_U_1
  1. S SCTST=+$G(SCTST,0)
  1. K ^XTMP("SCMCCV6")
  1. S ^XTMP("SCMCCV6",0)=DT_U_$$FMADD^XLFDT(""_DT_"",7)_U_"SCMC PCMM BASELINE SEEDING"
  1. S SCNOW=$$NOW^XLFDT
  1. S SCCNT=0
  1. S SCDFN=+SCDFN
  1. F S SCDFN=$O(^SCPT(404.43,"APCPOS",SCDFN)) Q:(SCDFN="")!(SCZ) D
  1. . S SCZ=$$S^%ZTLOAD
  1. . Q:+SCZ
  1. . ;
  1. . S ^XTMP("SCMCCV6","LASTDFN")=SCDFN
  1. . S SC1="^SCPT(404.43,""APCPOS"",SCDFN,1)"
  1. . ;
  1. . ; quit if no PC assignments
  1. . Q:'$D(@SC1)
  1. . S SCADT=0
  1. . F S SCADT=$O(@SC1@(SCADT)) Q:SCADT="" D
  1. . . S SCTP=0
  1. . . F S SCTP=$O(@SC1@(SCADT,SCTP)) Q:'SCTP D
  1. . . . ;
  1. . . . ; quit if team position does not exist
  1. . . . Q:'$D(^SCTM(404.57,SCTP,0))
  1. . . . S SCPAI=0
  1. . . . F S SCPAI=$O(@SC1@(SCADT,SCTP,SCPAI)) Q:'SCPAI D
  1. . . . . S SCDDT=$P($G(^SCPT(404.43,SCPAI,0)),U,4)
  1. . . . . ;
  1. . . . . ; quit if not active within date range
  1. . . . . Q:$$DTCHK^SCAPU1(SC177,SC212,0,SCADT,SCDDT)<1
  1. . . . . S SCVAR=SCPAI_";SCPT(404.43,"
  1. . . . . ;
  1. . . . . ; add to HL7 event file
  1. . . . . Q:$$CHECK^SCMCHLB1(SCVAR)'=1
  1. . . . . ;
  1. . . . . ; queue for transmit or report
  1. . . . . I SCTST=0 D ADD^SCMCHLE("NOW",SCVAR,SCDFN,SCTP)
  1. . . . . 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)
  1. . . . . ;
  1. . . . . ; increment counter
  1. . . . . S SCCNT=SCCNT+1
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . Q
  1. ;
  1. Q SCCNT_U_SCZ
  1. ;
  1. MSG(SC1,SC2,SCTST) ;
  1. N XMY,XMDUZ,XMSUB,XMTEXT
  1. S SCTST=+$G(SCTST,0)
  1. S XMDUZ="PCMM Module"
  1. S (XMY(DUZ),XMY(XMDUZ))=""
  1. I SCTST=0 D
  1. . S XMSUB="PCMM PC Baseline Seeding Job"
  1. . K SCARRAY
  1. . S SCARRAY(1)=""
  1. . S SCARRAY(2)=SC1
  1. . S SCARRAY(3)=SC2
  1. . S SCARRAY(4)=""
  1. . S SCARRAY(5)="TaskMan Job Number: "_$G(ZTSK)
  1. . S SCARRAY(6)="Baseline Start Date/Time: "_$G(SCSTIM)
  1. . S SCARRAY(7)="Baseline End Date/Time: "_$$HTE^XLFDT($H)
  1. . S SCARRAY(8)="HL7 Transmit Limit: "_$$GET1^DIQ(404.44,"1,",15)
  1. . S SCARRAY(9)=""
  1. . Q
  1. E D
  1. . S XMSUB="PCMM PC Baseline Trial Entries ("_$G(ZTSK)_")"
  1. . S SCARRAY(1)=""
  1. . S SCARRAY(2)=SCTST_" entries would have been placed in HL7 queue:"
  1. . S SCARRAY(3)="==================================================="
  1. S XMTEXT="SCARRAY("
  1. D ^XMD
  1. Q
  1. ;
  1. RESTART(SCTST) ; alb/rpm
  1. ; This undocumented entry point allows a user to clear the Baseline
  1. ; date stored in file #404.44 field #17. Then the last patient IEN
  1. ; that was processed from the last run is retrieved from ^XTMP("SCMCCV6"
  1. ; and decremented to seed the restart point. If ^XTMP does not exist
  1. ; the IEN is set to 0.
  1. ;
  1. ; Input:
  1. ; SCTST - 1 = test [default = 0]
  1. ;
  1. S SCTST=+$G(SCTST,0)
  1. ;
  1. NEW SC1,SC2,SCDFA,SCDFN,SCERR
  1. S SC1="PCMM PC Baseline Seeding"
  1. S SCDFN=0
  1. ; Retrieve the last IEN processed
  1. I +$G(^XTMP("SCMCCV6","LASTDFN"))>0 D
  1. . S SCDFN=+$G(^XTMP("SCMCCV6","LASTDFN"))-1
  1. ; Delete the Baseline date from last run
  1. S SCFDA(1,404.44,"1,",17)="@"
  1. D FILE^DIE("","SCFDA(1)","SCERR")
  1. I $D(SCERR) D Q
  1. . S SC2=" Warning: Baseline Date NOT cleared in PCMM Parameter file"
  1. . D MSG(SC1,SC2)
  1. . Q
  1. ; Call interactive entry point
  1. D EN(SCTST,SCDFN)
  1. Q