[623] | 1 | SCMCTSK2 ;ALB/JDS - PCMM Inactivation Nightly Job; 18 Apr 2003 9:36 AM ; 10/24/07 12:23pm
|
---|
| 2 | ;;5.3;Scheduling;**297,498,527**;AUG 13, 1993;Build 6
|
---|
| 3 | Q
|
---|
| 4 | NIGHT ;nightly task for inact.
|
---|
| 5 | N ENDDT,NOINAC,SIXM,FLGDT,L,PATDT,SEEN
|
---|
| 6 | K ^TMP("SCTSK",$J)
|
---|
| 7 | D DT^DICRW
|
---|
| 8 | S ALPHA=$G(^SCTM(404.44,1,1)),ALPHA=$P(ALPHA,U,8) I ALPHA<DT S ALPHA=0
|
---|
| 9 | ;check if this is last day of month
|
---|
| 10 | S X1=DT,X2=1 D C^%DTC I $E(DT,1,5)'=$E(X,1,5) I 'ALPHA D INACTIVE^SCMCTSK1
|
---|
| 11 | S SIXM=$P($G(^SCTM(404.44,1,1)),U,9)
|
---|
| 12 | I SIXM D PRFLAG
|
---|
| 13 | I ALPHA D INACTIVE^SCMCTSK1
|
---|
| 14 | S NOINAC=0 I 'ALPHA S X1=DT,X2=1 D C^%DTC I ($E(DT,6,7)'=15)&($E(DT,1,5)=$E(X,1,5)) S NOINAC=1
|
---|
| 15 | ;check for 60 days after flagged for inact.
|
---|
| 16 | S X1=DT,X2=$S(ALPHA:-2,1:-30) D C^%DTC S ENDDT=X
|
---|
| 17 | F DATE=0:0 S DATE=$O(^SCPT(404.43,"AFLG",DATE)) Q:(('DATE)!(('NOINAC)&(DATE>ENDDT))) D
|
---|
| 18 | .F ENTRY=0:0 S ENTRY=$O(^SCPT(404.43,"AFLG",DATE,ENTRY)) Q:'ENTRY D
|
---|
| 19 | ..S ZERO=$G(^SCPT(404.43,ENTRY,0)) Q:'ZERO
|
---|
| 20 | ..S DFN=+$G(^SCPT(404.42,+ZERO,0)) Q:'DFN
|
---|
| 21 | ..S POS=$P(ZERO,U,2)
|
---|
| 22 | ..I $P(ZERO,U,4) D UNFLG Q ;already unassigned
|
---|
| 23 | ..I $P(ZERO,U,13) S X1=DATE,X2=$S(ALPHA:4,1:90) D C^%DTC S FLGDT=X I FLGDT>DT Q ;ext
|
---|
| 24 | ..;check if criteria still met
|
---|
| 25 | ..I $P(ZERO,U,17) D UNFLG Q ;Already reactivated
|
---|
| 26 | ..;get preceptor position
|
---|
| 27 | ..S %DT="",X="T-12M" D ^%DT S STDT=+Y
|
---|
| 28 | ..S PREC=$$DATES^SCAPMCU1(404.53,+POS),PREC=$S(PREC:$P($G(^SCTM(404.53,+$P(PREC,U,4),0)),U,6),1:+POS)
|
---|
| 29 | ..;see if provider changed
|
---|
| 30 | ..I $O(^SCTM(404.52,"AIDT",+PREC,1,-STDT),-1) D UNFLG Q
|
---|
| 31 | ..I '$P(ZERO,U,5) D UNFLG Q ;Not primary care
|
---|
| 32 | ..S PROV=+$$GETPRTP^SCAPMCU2(POS,DT)
|
---|
| 33 | ..S PC=$$GET^XUA4A72(+PROV)
|
---|
| 34 | ..S SC297=$$PDAT^SCMCGU("SD*5.3*297")
|
---|
| 35 | ..N NEW S NEW=$S($P(ZERO,U,3)<SC297:0,1:1) ;D D^%DTC S NEW=$S(X>330:0,1:1)
|
---|
| 36 | ..S X1=DT,X2=SC297 D D^%DTC S SC297=X
|
---|
| 37 | ..S X="T-"_$S(SC297>365:"11M",NEW:"11M",1:"23M") D ^%DT S TYDT=+Y D SEEN^SCMCTSK1 I $G(SEEN) D UNFLG Q
|
---|
| 38 | ..S X="T-"_$S(SC297>365:"12M",NEW:"12M",1:"24M") D ^%DT S TYDT=+Y D SEEN^SCMCTSK1 I $G(SEEN) D:(DATE>ENDDT) UNFLG Q
|
---|
| 39 | ..I ('NOINAC)&(DATE'>ENDDT) D DIS^SCMCTSK1
|
---|
| 40 | ..;D MSG(POS,DFN)
|
---|
| 41 | ;if 6 months after installation check to flag providers
|
---|
| 42 | I NOINAC D:ALPHA BULL Q
|
---|
| 43 | S PATDT=$$PDAT^SCMCGU("SD*5.3*297") Q:'PATDT
|
---|
| 44 | I SIXM,SIXM'>DT D
|
---|
| 45 | .D PRINAC
|
---|
| 46 | .N FLDA
|
---|
| 47 | .S FLDA(404.44,"1,",19)=""
|
---|
| 48 | .D FILE^DIE("I","FLDA","ERR")
|
---|
| 49 | D BULL
|
---|
| 50 | Q
|
---|
| 51 | UNFLG ;Remove the flag
|
---|
| 52 | N DR,DIE,DA
|
---|
| 53 | S DR=".15///@;.13///@;.12///@",DIE="^SCPT(404.43,",DA=ENTRY D ^DIE
|
---|
| 54 | Q
|
---|
| 55 | PRFLAG ;flag incorrect provider positions
|
---|
| 56 | N POS
|
---|
| 57 | ;provider inactivation has run once
|
---|
| 58 | I $P($G(^SCTM(404.44,1,1)),U,11)'="" Q
|
---|
| 59 | D PRFLAG^SCMCTSK3
|
---|
| 60 | Q
|
---|
| 61 | PRINAC ;inactivate flagged providers
|
---|
| 62 | N I,II
|
---|
| 63 | ;Provider inactivation run already
|
---|
| 64 | S II=$P($G(^SCTM(404.44,1,1)),U,11) I II'="",II'=DT Q
|
---|
| 65 | F I=0:0 S I=$O(^SCTM(404.52,I)) Q:'I S ZERO=$G(^(I,0)) I $P(ZERO,U,10) D
|
---|
| 66 | .;I $P(ZERO,U,10)>$G(ENDT) Q ;not time yet
|
---|
| 67 | .I $O(^SCTM(404.52,"AIDT",+ZERO,0,-9999999))<(-$P(ZERO,U,2)) Q ;already inactivated
|
---|
| 68 | .;Check if criteria still valid
|
---|
| 69 | .S POS=+ZERO
|
---|
| 70 | .S PROV=+$$GETPRTP^SCAPMCU2(POS,DT)
|
---|
| 71 | .S PC=$$GET^XUA4A72(+PROV)
|
---|
| 72 | .S DR=".091///@",DIE="^SCTM(404.52,",DA=I D ^DIE ;remove flag
|
---|
| 73 | .S ZERO1=$G(^SCTM(404.57,POS,0))
|
---|
| 74 | .I '$D(^SD(403.46,+$P(ZERO1,U,3),2,+PC)) D
|
---|
| 75 | ..;enter the inactivation
|
---|
| 76 | ..S DIC="^SCTM(404.52,",X=+ZERO,DIC("DR")=".02////"_DT_";.03////"_$P(ZERO,U,3)_";.04////0;.05///EMPLOYEE LEAVES POSITION;.11////1"
|
---|
| 77 | ..S DIC(0)="LM" D ^DIC
|
---|
| 78 | ;only run the inactivation once.
|
---|
| 79 | S $P(^SCTM(404.44,1,1),U,11)=DT
|
---|
| 80 | Q
|
---|
| 81 | FUTAPP(DFN) ;print future appointments
|
---|
| 82 | N TAB,SCDT0 S TAB=$X
|
---|
| 83 | S SCDT=DT+.24
|
---|
| 84 | F S SCDT=$O(^DPT(DFN,"S",SCDT)) Q:'SCDT D
|
---|
| 85 | . S SCDT0=$G(^DPT(DFN,"S",SCDT,0)) Q:$L($P(SCDT0,U,2))
|
---|
| 86 | . S CLIEN=$P(SCDT0,"^") Q:'CLIEN
|
---|
| 87 | . S Y=SCDT X ^DD("DD") W $E(Y_" ",1,17)_" "_$E($P($G(^SC(+CLIEN,0)),U),1,10)
|
---|
| 88 | Q
|
---|
| 89 | GETASC(DATA,ENTRY) ;get associated clinics
|
---|
| 90 | N I,CNT S CNT=0
|
---|
| 91 | F I=0:0 S I=$O(^SCTM(404.57,+$G(ENTRY),5,I)) Q:'I S CNT=CNT+1,DATA(CNT)=I_U_$P($G(^SC(I,0)),U)
|
---|
| 92 | Q
|
---|
| 93 | SETASC(RESULT,DATA) ;set associated clinics
|
---|
| 94 | D SETASC^SCMCTSK7(.RESULT,DATA) Q
|
---|
| 95 | MSG(SCTP,DFN) ;send inactivation message
|
---|
| 96 | ;given list of valid positions get current practitioners
|
---|
| 97 | S SCLIST="SCL"
|
---|
| 98 | I "N"'[$P($G(^SCTM(404.57,SCTP,2)),U,9) D
|
---|
| 99 | .S SCOK=$$PRTP^SCAPMC(SCTP,"",.SCLIST,.SCERR)
|
---|
| 100 | .;if preceptor notice turned on for message type
|
---|
| 101 | I +$P($G(^SCTM(404.57,SCTP,2)),U,9) D
|
---|
| 102 | .S SCX=+$$OKPREC2^SCMCLK(SCTP,DT)
|
---|
| 103 | .;if preceptor duz returned, add to array
|
---|
| 104 | .I SCX S @SCLIST@("SCPR",SCX)=""
|
---|
| 105 | N XMY F I=0:0 S I=$O(@SCLIST@("SCPR",I)) Q:'I S XMY(I)=""
|
---|
| 106 | S SCTEXT(1,0)="PATIENT "_$P($G(^DPT(DFN,0)),U)_" has been inactivated from primary care team position "_$P($G(^SCTM(404.57,SCTP,0)),U)
|
---|
| 107 | S XMSUB="Provider's Inactivated Primary Care Patients" D ^XMD
|
---|
| 108 | Q
|
---|
| 109 | BULL ;end of Month Bulletin
|
---|
| 110 | N DISUPNO,BY,DHIT,HEAD
|
---|
| 111 | S DISUPNO=1,L=0
|
---|
| 112 | S XMSUB="Patients Scheduled for Inactivation from Primary Care Panel"
|
---|
| 113 | S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
|
---|
| 114 | K ^TMP("SCMC",$J),^TMP("SCMCTXT",$J),^TMP("SCML",$J)
|
---|
| 115 | S XMTEXT="^TMP(""SCMCTXT"",$J," ;S @XMTEXT@(0)=""
|
---|
| 116 | S DIC="^SCPT(404.43,",BY="[SCMC FLAGGED BULLETIN]",FLDS="[SC BULLETIN]",CNT=0
|
---|
| 117 | S:0 FLDS="" S IOP="",DHD="@@",(FR,TO)="" D EN1^DIP
|
---|
| 118 | S ^TMP("SCMCTXT",$J,1,0)="There are "_$O(^TMP("SCMC",$J,""),-1)_" Patients scheduled for inactivation in next 30 days"
|
---|
| 119 | D LINES(1)
|
---|
| 120 | D ^XMD
|
---|
| 121 | D PRMAIL^SCMCTSK5(1)
|
---|
| 122 | F SCI=0:0 S SCI=$O(^TMP("SCF",$J,SCI)) Q:'SCI D
|
---|
| 123 | .K XMY S XMY(SCI)="" K ^TMP("SCMC",$J),^TMP("SCMCTXT",$J)
|
---|
| 124 | .M ^TMP("SCMC",$J)=^TMP("SCF",$J,SCI)
|
---|
| 125 | .S XMSUB="Patients Scheduled for Inactivation from Primary Care Panel"
|
---|
| 126 | .S XMTEXT="^TMP(""SCMCTXT"",$J,"
|
---|
| 127 | .;D LINES(1) D ^XMD
|
---|
| 128 | S DISUPNO=1
|
---|
| 129 | K ^TMP("SCMC",$J),^TMP("SCMCTXT")
|
---|
| 130 | S XMSUB="Patients With Extended PCMM Inactivation Dates"
|
---|
| 131 | S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
|
---|
| 132 | K ^TMP("SCMC",$J)
|
---|
| 133 | S XMTEXT="^TMP(""SCMCTXT"",$J," ;S @XMTEXT@(0)=""
|
---|
| 134 | S DIC="^SCPT(404.43,",BY="[SCMC EXTENDED BULLETIN]",DHIT="S CNT=$G(CNT)+1,^TMP(""SCMC"",$J,CNT,D0)=""""",CNT=0
|
---|
| 135 | S FR=",,,",TO=FR,FLDS="",IOP="",DHD="@@" D EN1^DIP
|
---|
| 136 | S ^TMP("SCMCTXT",$J,1,0)="There are "_$O(^TMP("SCMC",$J,""),-1)_" Patients Extended from inactivation"
|
---|
| 137 | D LINES(3)
|
---|
| 138 | D ^XMD
|
---|
| 139 | D PRMAIL^SCMCTSK5(3)
|
---|
| 140 | S DISUPNO=1
|
---|
| 141 | K ^TMP("SCMC",$J),^TMP("SCMCTXT")
|
---|
| 142 | S XMSUB="Patients Automated Inactivations from Primary Care Panels"
|
---|
| 143 | S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
|
---|
| 144 | K ^TMP("SCMC",$J)
|
---|
| 145 | S XMTEXT="^TMP(""SCMCTXT"",$J," ;S @XMTEXT@(0)=""
|
---|
| 146 | S DIC="^SCPT(404.43,",BY="[SCMC INACTIVATED]",DHIT="S CNT=$G(CNT)+1,^TMP(""SCMC"",$J,CNT,D0)=""""",CNT=0
|
---|
| 147 | S FLDS="",IOP="",DHD="@@",FR=",T-30,,",TO=",,,,," D EN1^DIP
|
---|
| 148 | S ^TMP("SCMCTXT",$J,1,0)="There are "_$O(^TMP("SCMC",$J,""),-1)_" Patients Inactivated in last 30 days"
|
---|
| 149 | D LINES(2)
|
---|
| 150 | D ^XMD
|
---|
| 151 | S DISUPNO=1
|
---|
| 152 | D PRMAIL^SCMCTSK5(2)
|
---|
| 153 | K ^TMP("SCMC",$J),^TMP("SCMCTXT")
|
---|
| 154 | I $P($G(^SCTM(404.44,1,1)),U,11)="" D
|
---|
| 155 | . S XMSUB="Primary Care Providers Scheduled for Inactivation"
|
---|
| 156 | . S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
|
---|
| 157 | . K ^TMP("SCMC",$J)
|
---|
| 158 | . S XMTEXT="^TMP(""SCMCTXT"",$J,"
|
---|
| 159 | . S DIC="^SCTM(404.52,",BY="[SC PROVIDER FLAGGED BULLE]",DHIT="S CNT=$G(CNT)+1,^TMP(""SCMC"",$J,CNT,D0)=""""",CNT=0
|
---|
| 160 | . S FLDS="",IOP="",DHD="@@",FR="",TO="" D EN1^DIP
|
---|
| 161 | . D LINES(4)
|
---|
| 162 | . D ^XMD
|
---|
| 163 | . D PRMAIL^SCMCTSK5(4)
|
---|
| 164 | . D BULL^SCMCTSK6
|
---|
| 165 | Q
|
---|
| 166 | LINES(TYPE) ;Lines of Bulletin
|
---|
| 167 | D LINES^SCMCTSK5(TYPE) Q
|
---|
| 168 | ROLE(DATA,INFO) ;SCMC ROLE
|
---|
| 169 | N ROLE,TP,I
|
---|
| 170 | S ROLE=+$G(INFO),TP=+$P($G(INFO),U,2)
|
---|
| 171 | S DATA(0)="0^0^0"
|
---|
| 172 | I 'ROLE Q
|
---|
| 173 | I 'TP Q
|
---|
| 174 | S DATA(0)=+$P($G(^SD(403.46,ROLE,0)),U,3) ;I DATA(0)=3!(DATA(0)=0) S DATA(0)=DATA(0)_"^0^0" Q
|
---|
| 175 | I $$DATES^SCAPMCU1(404.53,+TP) S DATA(0)=DATA(0)_"^1^0" Q
|
---|
| 176 | N PREC S PREC=0
|
---|
| 177 | F I=0:0 S I=$O(^SCTM(404.53,"AD",TP,I)) Q:'I D Q:PREC
|
---|
| 178 | .I $D(^SCTM(404.53,"AD",TP,I,1)) I '$D(^(0)) S PREC=1
|
---|
| 179 | I PREC S DATA(0)=DATA(0)_"^0^1" Q
|
---|
| 180 | S DATA(0)=DATA(0)_"^0^0"
|
---|
| 181 | Q
|
---|
| 182 | INRPT ; REPORT
|
---|
| 183 | N DIOEND,SCDHD
|
---|
| 184 | D PROMPT^SCMCTSK3("**** Date Range Selection ****","DATE PATIENTS INACTIVATED FROM PRIMARY CARE PANELS")
|
---|
| 185 | Q:'$D(^TMP("SC",$J,"XR"))
|
---|
| 186 | D UNASSIGN^SCMCTSK3
|
---|
| 187 | S Q=""""
|
---|
| 188 | S DIC="^SCPT(404.43," ;=0,BY="[SCMC INACTIVATION SORT]"
|
---|
| 189 | D BY
|
---|
| 190 | S (SCDHD,DHD)="AUTOMATED PATIENT INACTIVATION FROM PRIMARY CARE PANELS REPORT"
|
---|
| 191 | S DIOBEG="D DIOBEG^SCMCTSK4"
|
---|
| 192 | S DIOEND="D DIOEND1^SCMCTSK4"
|
---|
| 193 | S FLDS="[SCMC INACTIVATED]" ;,FR="?,,"_$TR(DIPA("SI"),","," "),TO="T,,"_$TR(DIPA("EI")_"z",","," ")
|
---|
| 194 | D EN1^DIP
|
---|
| 195 | Q
|
---|
| 196 | IN30 ;inactivated last month
|
---|
| 197 | D SORT^SCMCTSK1 Q:'X
|
---|
| 198 | S Q=""""
|
---|
| 199 | S DIC="^SCPT(404.43,",L=0,BY="[SCMC INACTIVATION SORT]"
|
---|
| 200 | S DHD="Patients Inactivated from Primary Care Panels in the Past Month"
|
---|
| 201 | S FLDS="[SCMC INACTIVATED]",FR="T-31,,"_$TR(DIPA("SI"),","," "),TO="T,,"_$TR(DIPA("EI")_"z",","," ")
|
---|
| 202 | D EN1^DIP
|
---|
| 203 | Q
|
---|
| 204 | EXRPT ;EXTEND REPORT
|
---|
| 205 | K CLIN,TEAM,INST
|
---|
| 206 | D PROMPT^SCMCTSK3("PCMM Patients with Extended Inactivations","Scheduled Inactivation Date")
|
---|
| 207 | Q:'$D(^TMP("SC",$J,"XR"))
|
---|
| 208 | S Q="""",SORT=1
|
---|
| 209 | D EXTEND^SCMCTSK3
|
---|
| 210 | S DIC="^SCPT(404.43," ;,L=0,BY="[SCMC EXTENDED]"
|
---|
| 211 | S (SCDHD,DHD)="PCMM Patients with extended Inactivations"
|
---|
| 212 | S DIOBEG="D DIOBEG^SCMCTSK4",DIOEND="D EXTKEY^SCMCTSK9"
|
---|
| 213 | D BY
|
---|
| 214 | S FLDS="[SCMC EXTENDED]"
|
---|
| 215 | D EN1^DIP
|
---|
| 216 | Q
|
---|
| 217 | BY N DISPAR
|
---|
| 218 | S BY(0)="^TMP(""SCSORT"",$J)",L(0)=$O(^TMP("SC",$J,"SORT",99),-1)+1,DISPAR(0,1)="+",L=0 I $G(SCDHD)["FTEE" S DISPAR(0,1)="+#" ;BY="@'.01"
|
---|
| 219 | F I=1:1:$L(SORTN,U) S A=$P(SORTN,U,I) Q:'$L(A) S $P(DISPAR(0,I),U,2)=";"_Q_A_": "_Q D
|
---|
| 220 | .I A["PATIENT" I (I>1)!($G(SCDHD)["Patients Scheduled for Inactivation from PC Panel") S $P(DISPAR(0,I),U)="@"
|
---|
| 221 | .I $G(SCDHD)["FTEE" D
|
---|
| 222 | ..I A["PROV" S $P(DISPAR(0,I),U)="@"
|
---|
| 223 | ..I I>1 I (A["CLI")!(A["POS") S $P(DISPAR(0,I),U)="@"_$P($G(DISPAR(0,I)),U)
|
---|
| 224 | S ZTSAVE("^TMP(""SC"",$J,")="",ZTSAVE("^TMP(""SCSORT"",$J,")=""
|
---|
| 225 | Q
|
---|
| 226 | FLRPT ;FLAGGED REPORT
|
---|
| 227 | D PROMPT^SCMCTSK3("Patients Scheduled for Inactivation from PC Panels","Date Scheduled for Inactivation")
|
---|
| 228 | Q:'$D(^TMP("SC",$J,"XR"))
|
---|
| 229 | D FLAGG^SCMCTSK3
|
---|
| 230 | S Q=""""
|
---|
| 231 | S DIC="^SCPT(404.43,",L=0
|
---|
| 232 | S (SCDHD,DHD)="Patients Scheduled for Inactivation from PC Panels"
|
---|
| 233 | D BY
|
---|
| 234 | S DIOBEG="D DIOBEG^SCMCTSK4"
|
---|
| 235 | S FLDS="[SCMC PENDING UNASSIGN]"
|
---|
| 236 | I $G(DISPAR(0,1))["PATIENT" S FLDS="[SCMC PENDING UNASSIGN PAT]"
|
---|
| 237 | S DIOEND="D DIOEND^SCMCTSK4"
|
---|
| 238 | D EN1^DIP
|
---|