| 1 | SCMCTSK ;ALB/JDS - PCMM ; 03 Jun 2004  3:30 PM
 | 
|---|
| 2 |  ;;5.3;Scheduling;**264,278,272,297**;AUG 13, 1993
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 | RPT1 ;REPORT
 | 
|---|
| 5 |  N DHD,DIOBEG
 | 
|---|
| 6 |  S DIOBEG="D INACTIVE^SCMCTSK",DIC="^SCPT(404.43,",(FLDS,BY)="[SCMC PENDING UNASSIGN]"
 | 
|---|
| 7 |  S DHD="Patients Flagged for Inactivation from Primary Care Panels"
 | 
|---|
| 8 |  D EN1^DIP
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 | INACTIVE ;run every night to determine if patient can be inactivated from
 | 
|---|
| 11 |  ;team
 | 
|---|
| 12 |  ;Inactivation happens for patients without activity for 24 months
 | 
|---|
| 13 |  N I,TEAMNM
 | 
|---|
| 14 |  D DT^DICRW S X="T-12M" D ^%DT S STDT=Y
 | 
|---|
| 15 |  S X="T-24M" D ^%DT S TYDT=+Y
 | 
|---|
| 16 | RPT ;eneter for report with STDT and TYDT defined
 | 
|---|
| 17 |  S A="^SCPT(404.43,""ADFN""",L=""""""
 | 
|---|
| 18 |  S Q=A_")"
 | 
|---|
| 19 |  F  S Q=$Q(@Q) Q:Q'[A  D
 | 
|---|
| 20 |  .S ENTRY=+$P(Q,",",6)
 | 
|---|
| 21 |  .S TEAM=$P(Q,",",4)
 | 
|---|
| 22 |  .;I $P($G(^SCTM(404.51,+TEAM,0)),U,16) Q  ;no automatic for this team
 | 
|---|
| 23 |  .;I $G(^DPT(DFN,.35)) D DIS Q  ;Patient is deceased
 | 
|---|
| 24 |  .I $P(Q,",",5)>STDT Q  ;Later
 | 
|---|
| 25 |  .S ZERO=$G(^SCPT(404.43,+ENTRY,0))
 | 
|---|
| 26 |  .I $P(ZERO,U,4) Q  ;Already unassigned
 | 
|---|
| 27 |  .I '$P(ZERO,U,5) Q  ;not Primary Care
 | 
|---|
| 28 |  .;I $P(ZERO,U,16) Q  ;No Automatic unassign
 | 
|---|
| 29 |  .;Check if any activity
 | 
|---|
| 30 |  .S DFN=$P(Q,",",3),DFN=+$G(^SCPT(404.42,+DFN,0))
 | 
|---|
| 31 |  .S SEEN=0
 | 
|---|
| 32 |  .S TEAM=$P(Q,",",4),TEAMNM=$P($G(^SCTM(404.51,+TEAM,0)),U)
 | 
|---|
| 33 |  .;who was provider for this position
 | 
|---|
| 34 |  .Q:$$SEEN1(DFN,+$P(ZERO,U,2))
 | 
|---|
| 35 |  .;I $G(DIS) D DIS Q
 | 
|---|
| 36 |  .S ^TMP("SCMCTSK",$J,ENTRY)=""
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 | SEEN1(DFN,POS) ;
 | 
|---|
| 39 |  S SEEN=0
 | 
|---|
| 40 |  K PROV F I=0:0 S I=$O(^SCTM(404.52,"B",+$G(POS),I)) Q:'I  D
 | 
|---|
| 41 |  .N A S A=$G(^SCTM(404.52,+I,0)) I $P(A,U,4) S PROV(+$P(A,U,3))="" Q
 | 
|---|
| 42 |  .I $P(A,U,2)<TYDT K PROV(+$P(A,U,3))
 | 
|---|
| 43 |  F PROV=0:0 S PROV=$O(PROV(PROV)) Q:'PROV  D SEEN
 | 
|---|
| 44 |  Q SEEN
 | 
|---|
| 45 | SEEN ;See if seen in last 24 months go through visits
 | 
|---|
| 46 |  F I=0:0 S I=$O(^AUPNVSIT("AA",DFN,I)) Q:'I  Q:(9999999-I<TYDT)  D  Q:SEEN
 | 
|---|
| 47 |  .F J=0:0 S J=$O(^AUPNVSIT("AA",DFN,I,J)) Q:'J  D
 | 
|---|
| 48 |  ..F P=0:0 S P=$O(^AUPNVPRV("AD",J,P))  Q:'P  S:PROV=(+$G(^AUPNVPRV(P,0))) SEEN=1 Q:SEEN  ;GET THE PROVIDERJ
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | DIS ;discharge
 | 
|---|
| 51 |  N ZERO S ZERO=$G(^SCPT(404.43,+ENTRY,0))
 | 
|---|
| 52 |  I $P(ZERO,U,4) Q  ;Already discharged
 | 
|---|
| 53 |  ;I $P(ZERO,U,16) Q
 | 
|---|
| 54 |  S DA=ENTRY,DIE="^SCPT(404.43,",DR=".04////"_DT_";.12////IU"
 | 
|---|
| 55 |  D ^DIE
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | DEATH ;Called from date of death event
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  I $G(DGFILE)'=2 Q
 | 
|---|
| 61 |  I $G(DGFIELD)'=.351 Q
 | 
|---|
| 62 |  S DFN=+$G(DGDA)
 | 
|---|
| 63 |  N DEATH,I,DR,SCJ
 | 
|---|
| 64 |  D DEM^VADPT S DEATH=$G(VADM(6))
 | 
|---|
| 65 |  ;loop through assignments
 | 
|---|
| 66 |  F SCJ=0:0 S SCJ=$O(^SCPT(404.42,"B",DFN,SCJ)) Q:'SCJ  D
 | 
|---|
| 67 |  .S ZERO=$G(^SCPT(404.42,SCJ,0)) Q:'$L(ZERO)
 | 
|---|
| 68 |  .I DEATH,'$P(ZERO,U,9) D
 | 
|---|
| 69 |  ..S DA=SCJ,DIE="^SCPT(404.42,",DR=".09////"_DT_";.15////DU" D ^DIE
 | 
|---|
| 70 |  .I ('DEATH)&($P(ZERO,U,15)="DU")&($P(ZERO,U,9)) D
 | 
|---|
| 71 |  ..S DA=SCJ,DIE="^SCPT(404.42,",DR=".09///@;.15////DD" D ^DIE
 | 
|---|
| 72 |  .F SCI=0:0 S SCI=$O(^SCPT(404.43,"B",SCJ,SCI)) Q:'SCI  D
 | 
|---|
| 73 |  ..S ZERO=$G(^SCPT(404.43,SCI,0)),SCTP=+$P(ZERO,U,2) Q:'$L(ZERO)
 | 
|---|
| 74 |  ..I DEATH,$P(ZERO,U,4) Q
 | 
|---|
| 75 |  ..I 'DEATH I (('$P(ZERO,U,4))!($P(ZERO,U,12)'="DU")) Q
 | 
|---|
| 76 |  ..I DEATH D  Q
 | 
|---|
| 77 |  ...S DA=SCI,DIE="^SCPT(404.43,",DR=".04////"_DT_";.12////DU" D ^DIE
 | 
|---|
| 78 |  ..I '+$$ACTHIST^SCAPMCU2(404.52,SCTP,,.SCERR) Q
 | 
|---|
| 79 |  ..S DA=SCI,DIE="^SCPT(404.43,",DR=".04///@;.12////DD" D ^DIE
 | 
|---|
| 80 |  Q:'DEATH
 | 
|---|
| 81 |  ;DISPOSITION WAIT LIST
 | 
|---|
| 82 |  F I=0:0 S I=$O(^SDWL(409.3,"B",+$G(DFN),I)) Q:'I  S A=$G(^SDWL(409.3,I,0)) D
 | 
|---|
| 83 |  .I $G(^SDWL(409.3,I,"DIS")) Q
 | 
|---|
| 84 |  .N FDA S FDA(409.3,I_",",21)="D"
 | 
|---|
| 85 |  .S FDA(409.3,I_",",19)=DT,FDA(409.3,I_",",23)="C"
 | 
|---|
| 86 |  .S FDA(409.3,I_",",20)=DUZ
 | 
|---|
| 87 |  .D UPDATE^DIE("","FDA")
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 | POST ;
 | 
|---|
| 90 |  D MES^XPDUTL("Deleting Traditional ASTAT CROSS REFERENCE from FILE 404.43")
 | 
|---|
| 91 |  D DELIX^DDMOD(404.43,.12,1)
 | 
|---|
| 92 |  N ENTRY,DGDA,DGFIELD,DGFILE
 | 
|---|
| 93 |  K DGLEFDA,YEAR
 | 
|---|
| 94 |  I '$D(^SCTM(404.46,"B","1.2.3.0")) D
 | 
|---|
| 95 |  .K DO S DIC(0)="LM",DIC("DR")=".02////1;.03////"_DT,DIC="^SCTM(404.46,",X="1.2.3.0" D FILE^DICN
 | 
|---|
| 96 |  I '$D(^SCTM(404.45,"B","SD*5.3*264")) D
 | 
|---|
| 97 |  .S ENTRY=$O(^SCTM(404.46,"B","1.2.3.0",0))
 | 
|---|
| 98 |  .S DIC("DR")=".02////"_(+ENTRY)_";.03////"_DT_";.04////1",DIC(0)="LM"
 | 
|---|
| 99 |  .K DO S X="SD*5.3*264",DIC="^SCTM(404.45," D FILE^DICN
 | 
|---|
| 100 |  D MES^XPDUTL("Removing Patients with Date of Death from Team/Position Assignments")
 | 
|---|
| 101 |  S YEAR=0
 | 
|---|
| 102 |  F DATE=0:0 S DATE=$O(^DPT("AEXP1",DATE)) Q:'DATE  F DGDA=0:0 S DGDA=$O(^DPT("AEXP1",DATE,DGDA)) Q:'DGDA  D
 | 
|---|
| 103 |  .S DFN=+DGDA D DEM^VADPT I $G(VADM(6)) S DGFILE=2,DGFIELD=.351 D DEATH
 | 
|---|
| 104 |  .I $E(YEAR,1,3)'=$E(DATE,1,3) S YEAR=$E(DATE,1,3) I "05"[$E(YEAR,3) D MES^XPDUTL("Starting with Dates of Death in "_(1700+YEAR))
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | POST278 ;postinit for 278
 | 
|---|
| 107 |  D MES^XPDUTL("Setting up GUI to VistA mapping")
 | 
|---|
| 108 |  I '$D(^SCTM(404.46,"B","1.2.3.1")) D
 | 
|---|
| 109 |  .K DO S DIC(0)="LM",DIC("DR")=".02////1;.03////"_DT,DIC="^SCTM(404.46,",X="1.2.3.1" D FILE^DICN
 | 
|---|
| 110 |  I '$D(^SCTM(404.45,"B","SD*5.3*278")) D
 | 
|---|
| 111 |  .S ENTRY=$O(^SCTM(404.46,"B","1.2.3.1",0))
 | 
|---|
| 112 |  .S DIC("DR")=".02////"_(+ENTRY)_";.03////"_DT_";.04////1",DIC(0)="LM"
 | 
|---|
| 113 |  .K DO S X="SD*5.3*278",DIC="^SCTM(404.45," D FILE^DICN
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 | FTEE(DATA,SCTEAM) ;return list of posistions for the team
 | 
|---|
| 116 |  ;IEN^POSITION^PROVIDER^FTEE
 | 
|---|
| 117 |  N CNT,I,J,K,A S CNT=1 S SCTEAM=+$G(SCTEAM),DATA(1)="<DATA>"
 | 
|---|
| 118 |  S A=""
 | 
|---|
| 119 |  F  S A=$O(^SCTM(404.57,"ATMPOS",SCTEAM,A)) Q:A=""  D
 | 
|---|
| 120 |  .F I=0:0 S I=$O(^SCTM(404.57,"ATMPOS",SCTEAM,A,I)) Q:'I  D
 | 
|---|
| 121 |  ..I '$$DATES^SCAPMCU1(404.59,I) Q   ;Not an active position
 | 
|---|
| 122 |  ..I '$P($G(^SCTM(404.57,I,0)),U,4) Q  ;Not PC
 | 
|---|
| 123 |  ..S J=-(DT+1) S J=$O(^SCTM(404.52,"AIDT",I,1,J)) Q:J=""
 | 
|---|
| 124 |  ..I $O(^SCTM(404.52,"AIDT",I,0,-(DT+1)))<J Q
 | 
|---|
| 125 |  ..S K=0 S K=$O(^SCTM(404.52,"AIDT",I,1,J,K)) Q:'K
 | 
|---|
| 126 |  ..S ZERO=$G(^SCTM(404.52,+K,0)) Q:'$P(ZERO,U,4)
 | 
|---|
| 127 |  ..S CNT=CNT+1
 | 
|---|
| 128 |  ..S DATA(CNT)=K_U_A_U_$$GET1^DIQ(200,(+$P(ZERO,U,3))_",",.01)_U_$P(ZERO,U,9)_U_K_U_$P(ZERO,U,3)
 | 
|---|
| 129 |  Q
 | 
|---|
| 130 | FILE(RES,DATA) ;File data on FTEE
 | 
|---|
| 131 |  N I
 | 
|---|
| 132 |  F I=1:1 Q:'$D(DATA(I))   D
 | 
|---|
| 133 |  .S ZERO=$G(^SCTM(404.52,+DATA(I),0))
 | 
|---|
| 134 |  .I $P(ZERO,U,9)=$P(DATA(I),U,7) Q
 | 
|---|
| 135 |  .S FLDA(404.52,(+DATA(I))_",",.09)=+$TR($P(DATA(I),U,7)," ")
 | 
|---|
| 136 |  I $O(FLDA(0)) D FILE^DIE("E","FLDA","ERR")
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 | FTEXR ;Ftee cross reference
 | 
|---|
| 139 |  N DIC,DD,DO,DINUM,DS,ENTRY,VALUE
 | 
|---|
| 140 |  I '$D(^SCTM(404.52,+DA,1,0)) S ^(0)="^404.521DA"
 | 
|---|
| 141 |  S ENTRY=+$G(DA),VALUE=X
 | 
|---|
| 142 |  N DIC,FLDA,Y,DA,X S DIC="^SCTM(404.52,"_ENTRY_",1,",DA(1)=ENTRY
 | 
|---|
| 143 |  S DIC(0)="LM",X="NOW",DIC("DR")=".02////"_VALUE_";.03////"_$G(DUZ)
 | 
|---|
| 144 |  D ^DICN
 | 
|---|
| 145 |  Q
 | 
|---|
| 146 | SCREEN ;Screen for active assignments
 | 
|---|
| 147 |  N A S A=$G(^SCTM(404.52,D0,0))
 | 
|---|
| 148 |  N J S J=-(DT+1),J=$O(^SCTM(404.52,"AIDT",+A,1,J)) I J="" S X=0 Q
 | 
|---|
| 149 |  I '$P($G(^SCTM(404.57,+A,0)),U,4) Q  ;Not PC
 | 
|---|
| 150 |  I '$$DATES^SCAPMCU1(404.59,+A) Q   ;Not an active position
 | 
|---|
| 151 |  I $O(^SCTM(404.52,"AIDT",+A,0,-(DT+1)))<J S X=0 Q
 | 
|---|
| 152 |  I '$D(^SCTM(404.52,"AIDT",+A,1,J,D0)) S X=0 Q
 | 
|---|
| 153 |  S X=1 Q
 | 
|---|