Ignore:
Timestamp:
Dec 4, 2009, 8:26:01 PM (14 years ago)
Author:
George Lilly
Message:

WorldVistAEHR overlayed on FOIAVistA

Location:
FOIAVistA/tag/r
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • FOIAVistA/tag/r/SCHEDULING-SD-SC/SCMCTSK2.m

    r628 r636  
    1 SCMCTSK2 ;ALB/JDS - PCMM Inactivation Nightly Job; 18 Apr 2003  9:36 AM ; 10/24/07 12:23pm  ; Compiled November 21, 2007 13:32:47  ; Compiled March 17, 2008 15:27:15
    2  ;;5.3;Scheduling;**297,498,527,499**;AUG 13, 1993;Build 21
    3  Q
    4 NIGHT ;
    5  N ENDDT,NOINAC,SIXM,FLGDT,L,PATDT,SEEN,SDDT
    6  D DT^DICRW S SDDT=$P($G(^XTMP("SCMCTSK2-"_DT,0)),U,2)
    7  I SDDT="" S SDDT=DT
    8  S ALPHA=$G(^SCTM(404.44,1,1)),ALPHA=$P(ALPHA,U,8) I ALPHA<SDDT S ALPHA=0
    9  ;if 'ALPHA NOINAC=1 except 15th and the Last Day of a Month (LDoM)
    10  ;inact only on 15th and on LDoM
    11  S NOINAC=0
    12  I 'ALPHA  S X1=SDDT,X2=1 D C^%DTC I ($E(SDDT,6,7)'=15)&($E(SDDT,1,5)=$E(X,1,5)) S NOINAC=1
    13  I 'ALPHA D INACTIVE^SCMCTSK1
     1SCMCTSK2 ;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
     4NIGHT ;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
    1411 S SIXM=$P($G(^SCTM(404.44,1,1)),U,9)
    1512 I SIXM D PRFLAG
    1613 I ALPHA D INACTIVE^SCMCTSK1
    17  ;determine ENDDT-Inactn Date-30 days if flagged today
    18  F DATE=0:0 S DATE=$O(^SCPT(404.43,"AFLG",DATE)) Q:'DATE  D
     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
    1918 .F ENTRY=0:0 S ENTRY=$O(^SCPT(404.43,"AFLG",DATE,ENTRY)) Q:'ENTRY  D
    2019 ..S ZERO=$G(^SCPT(404.43,ENTRY,0)) Q:'ZERO
    2120 ..S DFN=+$G(^SCPT(404.42,+ZERO,0)) Q:'DFN
    2221 ..S POS=$P(ZERO,U,2)
    23  ..I $P(ZERO,U,4) D UNFLG Q  ;unass.
    24  ..S X1=DATE,X2=$S(ALPHA:+2,1:+30) D C^%DTC S ENDDT=X
    25  ..N SDASS S SDASS=$P(ZERO,U,3)
    26  ..;N-new or E-stbl.
    27  ..;assig >12 months since flagging, not NEW, E-stbl)
    28  ..N NEW
    29  ..S NEW=0 S X1=DATE,X2=SDASS D ^%DTC I X<365 S NEW=1
    30  ..I NEW S %DT="",X="T-12M" D ^%DT S STDT=+Y D
    31  ...S X1=STDT,X2=-7 D C^%DTC S TYDT=X
    32  ..I 'NEW S %DT="",X="T-24M" D ^%DT S STDT=+Y D
    33  ...S X1=STDT,X2=-7 D C^%DTC S TYDT=X
    34  ..;
    35  ..I $P(ZERO,U,17) D UNFLG Q  ;react.
    36  ..;get prec
    37  ..;S %DT="",X="T-12M" D ^%DT S STDT=+Y
    38  ..;S PREC=$$DATES^SCAPMCU1(404.53,+POS),PREC=$S(PREC:$P($G(^SCTM(404.53,+$P(PREC,U,4),0)),U,6),1:+POS)
    39  ..I '$P(ZERO,U,5) D UNFLG Q  ;Not PC
    40  ..D SEEN^SCMCTSK1(DFN,POS,TYDT,SDDT,.PROV,.PRECP,.SEEN)
    41  ..;S PC=$$GET^XUA4A72(+PROV)
    42  ..I SEEN D UNFLG Q
    43  ..I $P(ZERO,U,13) S X1=DATE,X2=$S(ALPHA:4,1:90) D C^%DTC S FLGDT=X I FLGDT>SDDT Q  ;do not inactivate yet; extended
    44  ..I ('NOINAC)&(SDDT'<ENDDT) D DIS^SCMCTSK1
    45  ;flag prov 6m after install sd/297
    46  I NOINAC D:ALPHA BULL I '$D(^SCPT(404.43,"AFLG",SDDT)) K ^TMP($J,"SCMCTSK2") Q
    47  ;flag prov 6m after install sd/297
    48  I SIXM,SIXM'>SDDT D
     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
    4945 .D PRINAC
    5046 .N FLDA
    5147 .S FLDA(404.44,"1,",19)=""
    5248 .D FILE^DIE("I","FLDA","ERR")
    53  D BULL K ^TMP($J,"SCMCTSK2")
    54  Q
    55 UNFLG ;Unflagging
     49 D BULL
     50 Q
     51UNFLG ;Remove the flag
    5652 N DR,DIE,DA
    5753 S DR=".15///@;.13///@;.12///@",DIE="^SCPT(404.43,",DA=ENTRY D ^DIE
    5854 Q
    59 PRFLAG ;flag incorrect provider pos
     55PRFLAG ;flag incorrect provider positions
    6056 N POS
    61  ;prov inact. has run once
     57 ;provider inactivation has run once
    6258 I $P($G(^SCTM(404.44,1,1)),U,11)'="" Q
    6359 D PRFLAG^SCMCTSK3
    6460 Q
    65 PRINAC ;inact. flagged providers
     61PRINAC ;inactivate flagged providers
    6662 N I,II
    67  ;Prov inact. run already
    68  I $G(SDDT)="" S SDDT=DT
    69  S II=$P($G(^SCTM(404.44,1,1)),U,11) I II'="",II'=SDDT Q
     63 ;Provider inactivation run already
     64 S II=$P($G(^SCTM(404.44,1,1)),U,11) I II'="",II'=DT Q
    7065 F I=0:0 S I=$O(^SCTM(404.52,I)) Q:'I  S ZERO=$G(^(I,0)) I $P(ZERO,U,10) D
    7166 .;I $P(ZERO,U,10)>$G(ENDT) Q   ;not time yet
    72  .I $O(^SCTM(404.52,"AIDT",+ZERO,0,-9999999))<(-$P(ZERO,U,2)) Q   ;inactivated
    73  .;Check valid criteria
     67 .I $O(^SCTM(404.52,"AIDT",+ZERO,0,-9999999))<(-$P(ZERO,U,2)) Q   ;already inactivated
     68 .;Check if criteria still valid
    7469 .S POS=+ZERO
    75  .S PROV=+$$GETPRTP^SCAPMCU2(POS,SDDT)
     70 .S PROV=+$$GETPRTP^SCAPMCU2(POS,DT)
    7671 .S PC=$$GET^XUA4A72(+PROV)
    7772 .S DR=".091///@",DIE="^SCTM(404.52,",DA=I D ^DIE  ;remove flag
    7873 .S ZERO1=$G(^SCTM(404.57,POS,0))
    7974 .I '$D(^SD(403.46,+$P(ZERO1,U,3),2,+PC)) D
    80  ..;inactivation
    81  ..S DIC="^SCTM(404.52,",X=+ZERO,DIC("DR")=".02////"_SDDT_";.03////"_$P(ZERO,U,3)_";.04////0;.05///EMPLOYEE LEAVES POSITION;.11////1"
     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"
    8277 ..S DIC(0)="LM" D ^DIC
    83  ;only run inact. once
    84  S $P(^SCTM(404.44,1,1),U,11)=SDDT
    85  Q
    86 FUTAPP(DFN) ;print future appts
     78 ;only run the inactivation once.
     79 S $P(^SCTM(404.44,1,1),U,11)=DT
     80 Q
     81FUTAPP(DFN) ;print future appointments
    8782 N TAB,SCDT0 S TAB=$X
    88  I $G(SDDT)="" S SDDT=DT
    89  S SCDT=SDDT+.24
     83 S SCDT=DT+.24
    9084 F  S SCDT=$O(^DPT(DFN,"S",SCDT)) Q:'SCDT  D
    9185 . S SCDT0=$G(^DPT(DFN,"S",SCDT,0)) Q:$L($P(SCDT0,U,2))
     
    9387 . S Y=SCDT X ^DD("DD") W $E(Y_" ",1,17)_" "_$E($P($G(^SC(+CLIEN,0)),U),1,10)
    9488 Q
    95 GETASC(DATA,ENTRY) ;get assoc. clinics
     89GETASC(DATA,ENTRY) ;get associated clinics
    9690 N I,CNT S CNT=0
    9791 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)
    9892 Q
    99 SETASC(RESULT,DATA) ;set assoc. clinics
     93SETASC(RESULT,DATA) ;set associated clinics
    10094 D SETASC^SCMCTSK7(.RESULT,DATA) Q
    101 MSG(SCTP,DFN) ;send inact. message
    102  ;given valid positions get current practitioners
     95MSG(SCTP,DFN) ;send inactivation message
     96         ;given list of valid positions get current practitioners
    10397 S SCLIST="SCL"
    104  I $G(SDDT)="" S SDDT=DT
    10598 I "N"'[$P($G(^SCTM(404.57,SCTP,2)),U,9) D
    10699 .S SCOK=$$PRTP^SCAPMC(SCTP,"",.SCLIST,.SCERR)
    107100 .;if preceptor notice turned on for message type
    108101 I +$P($G(^SCTM(404.57,SCTP,2)),U,9) D
    109  .S SCX=+$$OKPREC2^SCMCLK(SCTP,SDDT)
     102 .S SCX=+$$OKPREC2^SCMCLK(SCTP,DT)
    110103 .;if preceptor duz returned, add to array
    111104 .I SCX S @SCLIST@("SCPR",SCX)=""
    112105 N XMY F I=0:0 S I=$O(@SCLIST@("SCPR",I)) Q:'I  S XMY(I)=""
    113  S SCTEXT(1,0)="PATIENT "_$P($G(^DPT(DFN,0)),U)_" has been inactivated from PC team position "_$P($G(^SCTM(404.57,SCTP,0)),U)
     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)
    114107 S XMSUB="Provider's Inactivated Primary Care Patients" D ^XMD
    115108 Q
    116 BULL ;EOM Bulletin
     109BULL ;end of Month Bulletin
    117110 N DISUPNO,BY,DHIT,HEAD
    118111 S DISUPNO=1,L=0
    119  S XMSUB="Patients Scheduled for Inactivation from PC Panel"
     112 S XMSUB="Patients Scheduled for Inactivation from Primary Care Panel"
    120113 S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
    121114 K ^TMP("SCMC",$J),^TMP("SCMCTXT",$J),^TMP("SCML",$J)
     
    130123 .K XMY S XMY(SCI)="" K ^TMP("SCMC",$J),^TMP("SCMCTXT",$J)
    131124 .M ^TMP("SCMC",$J)=^TMP("SCF",$J,SCI)
    132  .S XMSUB="Patients Scheduled for Inactivation from PC Panel"
     125 .S XMSUB="Patients Scheduled for Inactivation from Primary Care Panel"
    133126 .S XMTEXT="^TMP(""SCMCTXT"",$J,"
     127 .;D LINES(1) D ^XMD
    134128 S DISUPNO=1
    135129 K ^TMP("SCMC",$J),^TMP("SCMCTXT")
    136  I $G(NOINAC) K ^TMP($J,"SCMCTSK2") Q  ; SD/499
    137130 S XMSUB="Patients With Extended PCMM Inactivation Dates"
    138131 S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
     
    147140 S DISUPNO=1
    148141 K ^TMP("SCMC",$J),^TMP("SCMCTXT")
    149  S XMSUB="Patients Automated Inactivations from PC Panels"
     142 S XMSUB="Patients Automated Inactivations from Primary Care Panels"
    150143 S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
    151144 K ^TMP("SCMC",$J)
     
    160153 K ^TMP("SCMC",$J),^TMP("SCMCTXT")
    161154 I $P($G(^SCTM(404.44,1,1)),U,11)="" D
    162  . S XMSUB="PC Providers Scheduled for Inactivation"
     155 . S XMSUB="Primary Care Providers Scheduled for Inactivation"
    163156 . S XMY("G.PCMM PATIENT/PROVIDER INACTIVE")=""
    164157 . K ^TMP("SCMC",$J)
     
    189182INRPT  ; REPORT
    190183 N DIOEND,SCDHD
    191  D PROMPT^SCMCTSK3("** Date Range Selection **","DATE PATIENTS INACTIVATED FROM PC PANELS")
     184 D PROMPT^SCMCTSK3("**** Date Range Selection ****","DATE PATIENTS INACTIVATED FROM PRIMARY CARE PANELS")
    192185 Q:'$D(^TMP("SC",$J,"XR"))
    193186 D UNASSIGN^SCMCTSK3
     
    201194 D EN1^DIP
    202195 Q
    203 IN30 ;inact. last month
    204  N DIPA,SDD D SORT^SCMCTSK1(.DIPA,.SDD) Q:'SDD  ;SD/499
     196IN30 ;inactivated last month
     197 D SORT^SCMCTSK1 Q:'X
    205198 S Q=""""
    206199 S DIC="^SCPT(404.43,",L=0,BY="[SCMC INACTIVATION SORT]"
Note: See TracChangeset for help on using the changeset viewer.