SCMCTSK1 ;ALB/JDS - PCMM Inactivations; 18 Apr 2003 9:36 AM ; 10/24/07 12:24pm ;;5.3;Scheduling;**297,498,527**;AUG 13, 1993;Build 6 Q INACTIVE ;run every night to determine if patient can be inactivated from ;team ;Inactivation happens for patients without activity for 24 months N I,CNT,SC297,TPZ,TYDT,TEAMN,STDT,Q S CNT=0 D DT^DICRW S %DT="",X="T-11M" D ^%DT S STDT=Y S SC297=$$PDAT^SCMCGU("SD*5.3*297"),X1=DT,X2=SC297 D D^%DTC S SC297=X S X="T-"_$S(SC297>330:"11M",1:"23M") D ^%DT S TYDT=+Y S A="^SCPT(404.43,""ADFN""",L="""""" S Q=A_")" F S Q=$Q(@Q) Q:Q'[A D .S ENTRY=+$P(Q,",",6) .S ZERO=$G(^SCPT(404.43,+ENTRY,0)) .S POS=+$P(ZERO,U,2) .S TEAM=$P(Q,",",4) .;I $P($G(^SCTM(404.51,+TEAM,0)),U,16) Q ;no automatic for this team .;I $G(^DPT(DFN,.35)) D DIS Q ;Patient is deceased .I $P(ZERO,U,3)>STDT Q ;Later .I $P(ZERO,U,17) Q ;Already reactivated .;get preceptor position .S PREC=$$DATES^SCAPMCU1(404.53,+POS),PREC=$S(PREC:$P($G(^SCTM(404.53,+$P(PREC,U,4),0)),U,6),1:+POS) .;see if provider changed .I $O(^SCTM(404.52,"AIDT",+PREC,1,-STDT),-1) Q .I $P(ZERO,U,4) Q ;Already unassigned .I '$P(ZERO,U,5) Q ;Not primary care .;I $P(ZERO,U,16) Q ;No Automatic unassign .;Check if any activity .S DFN=$P(Q,",",3) .I $G(XPDIDTOT),('(DFN#5)) D UPDATE^XPDID(DFN) .S TEAM=$P(Q,",",4),TEAMNM=$P($G(^SCTM(404.51,+TEAM,0)),U) .D SEEN Q:SEEN .I '$P(ZERO,U,15) D ..S DIE="^SCPT(404.43,",DR=".15////"_DT,DA=ENTRY D ^DIE ..S TPZ=$G(^SCTM(404.57,+POS,2)) ..I "TP"[$P(TPZ,U,10) I $G(PROV) S CNT=CNT+1,^TMP("SCF",$J,PROV,CNT,ENTRY)="" ..I $P(TPZ,U,9),$G(PRECP) S CNT=CNT+1,^TMP("SCF",$J,PRECP,CNT,ENTRY)="" Q SEEN ;was patient seen S SEEN=0 N SCPRO,I,PRECP,PRO N X,SCPRDTS,SCPR ;get list of providers for this position S PROV=+$$GETPRTP^SCAPMCU2(POS,DT) S SCPRO(+PROV)="" S SCPRDTS("BEGIN")=TYDT S SCPRDTS("END")=DT S X=$$PRTP^SCAPMC(POS,"SCPRDTS","SCPR") F I=0:0 S I=$O(SCPR(I)) Q:'I S SCPRO(+SCPR(I))="" S PRECP=0 I $G(PREC),$G(PREC)'=POS S PRECP=+$$GETPRTP^SCAPMCU2(PREC,DT),SCPRO(+PRECP)="" F I=TYDT:0 S I=$O(^SCE("ADFN",DFN,I)) Q:'I D Q:SEEN .F J=0:0 S J=$O(^SCE("ADFN",DFN,I,J)) Q:'J D Q:SEEN ..N VISIT S VISIT=+$P($G(^SCE(J,0)),U,5) I $G(^SCE(J,0))<$G(TYDT) Q ..F PRO=0:0 S PRO=$O(SCPRO(PRO)) Q:'PRO D Q:SEEN ...I $D(^SDD(409.44,"AO",J,$G(PRO))) S SEEN=1 Q ;GET THE PROVIDERJ ...N V F V=0:0 S V=$O(^AUPNVPRV("AD",VISIT,V)) Q:'V I PRO=(+$G(^AUPNVPRV(V,0))) S SEEN=1 Q Q DIS ;discharge N ZERO S ZERO=$G(^SCPT(404.43,+ENTRY,0)) I $P(ZERO,U,4) Q ;Already discharged D DIS2^SCMCTSK7 Q EXTEND(DATA,SCTEAM) ;return list of patients to inactivate in next 60 days ;IEN^POSITION^PATIENT^EXTENDED^REASON K DATA,SCDATA,SDDATA N CNT,I,J,K,A,POSA S CNT=1 S SCTEAM=$G(SCTEAM),DATA(1)="" D DT^DICRW S X="T-9M" D ^%DT S STDT=Y S X="T-21M" D ^%DT S TYDT=+Y ;MAKE THIS 21 S POSA="" S POS=+$P(SCTEAM,U,2) I POS D POS,EX1 Q F S POSA=$O(^SCTM(404.57,"ATMPOS",+SCTEAM,POSA)) Q:POSA="" D Q:CNT>100 .F POS=0:0 S POS=$O(^SCTM(404.57,"ATMPOS",+SCTEAM,POSA,POS)) Q:'POS D POS Q:CNT>100 I CNT>100 S DATA(1)="TOO MANY" Q EX1 S A="SDDATA",CNT=1 F S A=$Q(@A) Q:A="" D .S B=@A .S DATA(CNT)=(+$P(B,U,3))_U_$TR($P($P(A,"(",2),","),$C(34))_U_$TR($P(B,U,2),$C(34))_U_$P($G(^SCPT(404.43,+$P(B,U,3),0)),U,13)_U_$P($G(^SCPT(404.43,+$P(B,U,3),0)),U,14) .S CNT=CNT+1 Q POS I '$$DATES^SCAPMCU1(404.59,POS) Q ;Not an active position I '$P($G(^SCTM(404.57,POS,0)),U,4) Q ;Not PC ;get patients for this position K ^TMP("SC TMP LIST",$J) S X=$$PTTP^SCAPMC(POS,"",.SCLIST,.SCERR) S J=0 F S J=$O(@SCLIST@(J)) Q:'J S SCDATA=^(J) D .N J I $P(SCDATA,U,4)>STDT Q .I '$P($G(^SCPT(404.43,+$P(SCDATA,U,3),0)),U,5) Q .I '$P($G(^SCPT(404.43,+$P(SCDATA,U,3),0)),U,15) Q .S DFN=+SCDATA .D SEEN Q:SEEN .S SDDATA($P($G(^SCTM(404.57,POS,0)),U),$P(SCDATA,U,2),+SCDATA)=SCDATA,CNT=CNT+1 K @SCLIST Q FILE(RES,DATA) ;File data on FTEE N I F I=1:1 Q:'$D(DATA(I)) D .S $P(DATA(I),U,7)=$TR($P(DATA(I),U,7),"[]") .S ZERO=$G(^SCPT(404.43,+DATA(I),0)) .I $P(ZERO,U,13)=$P(DATA(I),U,6) I $P(ZERO,U,14)=$P(DATA(I),U,7) Q .S FLDA(404.43,(+DATA(I))_",",.13)=$P(DATA(I),U,6) .S FLDA(404.43,(+DATA(I))_",",.14)=$E($P(DATA(I),U,7),1,50) .S FLDA(404.43,(+DATA(I))_",",.16)="`"_(+$G(DUZ)) I $O(FLDA(0)) D FILE^DIE("E","FLDA","ERR") Q SCREEN ;Screen for active assignments N A S A=$G(^SCTM(404.52,D0,0)) N J S J=-(DT+1),J=$O(^SCTM(404.52,"AIDT",+A,1,J)) I J="" S X=0 Q I '$P($G(^SCTM(404.57,+A,0)),U,4) Q ;Not PC I '$$DATES^SCAPMCU1(404.59,+A) Q ;Not an active position I $O(^SCTM(404.52,"AIDT",+A,0,-(DT+1)))0 S DIPA("SI")=$P(Y(0),U),DIC(0)="AZQME",DIC("A")="Go to Institution: " D ^DIC I Y>0 S DIPA("EI")=$P(Y(0),U) I Y<0 S DIPA("EI")=X Q:X[U S X=1 Q FTEERPT ;FTEE REPORT D FTERPT^SCMCTSK6 Q Q POSCHK(DATA,INFO) ; N PCLASS ;TEAM POSITION IEN^PC^STANDARD POSITITION IEN I '$P(INFO,U,3) S DATA="1^Role Must be Entered" Q I $P(INFO,U,2) I '$P($G(^SD(403.46,+$P(INFO,U,3),0)),U,3) S DATA="1^This Role cannot provide Primary Care" Q I $P(INFO,U,2),($P($G(^SD(403.46,+$P(INFO,U,3),0)),U,3)=2) I '$$DATES^SCAPMCU1(404.53,+INFO) S DATA="1^This Role cannot provide Primary Care unless Precepted" Q S DATA=0 I ('INFO)!('$P(INFO,U,2)) Q ;Check if provider can be in this role. S J=-(DT+1) S J=$O(^SCTM(404.52,"AIDT",+INFO,1,J)) Q:J="" I $O(^SCTM(404.52,"AIDT",+INFO,0,-(DT+1)))0 ;event filer for 1 patient S SCDFN=+Y W !,SCDFN SCDFN S SC1="^SCPT(404.43,""APCPOS"",SCDFN,1)" ; ;quit if no PC assignments Q:'$D(@SC1) S SCADT=0 F S SCADT=$O(@SC1@(SCADT)) Q:SCADT="" D . S SCTP=0 . F S SCTP=$O(@SC1@(SCADT,SCTP)) Q:'SCTP D . . ; . . ; quit if team position does not exist . . Q:'$D(^SCTM(404.57,SCTP,0)) . . S SCPAI=0 . . F S SCPAI=$O(@SC1@(SCADT,SCTP,SCPAI)) Q:'SCPAI D . . . S SCDDT=$P($G(^SCPT(404.43,SCPAI,0)),U,4) . . . ; . . . ; quit if not active within date range . . . Q:$$DTCHK^SCAPU1(SC177,DT,0,SCADT,SCDDT)<1 . . . N SCVAR S SCVAR=SCPAI_";SCPT(404.43," . . . ; . . . ; add to HL7 event file . . . Q:$D(^SCPT(404.48,"AACXMIT",SCVAR)) . . . Q:$$CHECK^SCMCHLB1(SCVAR)'=1 . . . D ADD^SCMCHLE("NOW",SCVAR,SCDFN,SCTP) Q PRSEED ;seed practitioner N AH,SC177 S SC177=$$PDAT^SCMCGU("SD*5.3*177") I +SC177=0 D Q . S SC2=" Unable to obtain SD*5.3*177 Installation Date." . D MSG^SCMCCV6(SC1,SC2) . Q S DIC=200,DIC(0)="MEQA",DIC("A")="Select Provider: " D ^DIC Q:Y'>0 S SCPROV=+Y F AH=0:0 S AH=$O(^SCTM(404.52,"C",SCPROV,AH)) Q:'AH S TP=+$G(^SCTM(404.52,+AH,0)) D . Q:$D(SCTP(TP)) . S SCTP(TP)=1 . F SCDFN=0:0 S SCDFN=$O(^SCPT(404.43,"ADFN",SCDFN)) Q:'SCDFN I $D(^(SCDFN,TP)) I '$D(SCU(SCDFN)) D SCDFN S SCU(SCDFN)=1 . Q:'$P($G(^SCTM(404.57,TP,0)),U,4) . S SCVAR=AH_";SCTM(404.52," . ;Quit if an event entry already exists . N QUIT,I S QUIT=0 . F I=0:0 S I=$O(^SCPT(404.48,"AACXMIT",SCVAR,I)) Q:'I I $P($G(^SCPT(404.48,I,0)),U,8) S QUIT=1 Q . Q:QUIT . D ADD^SCMCHLE("NOW",SCVAR,,AH,1) Q INCON ;get list of incositent provider assignments N POS D INCON^SCMCTSK3 Q INCONR ;inconsistent report N BY K ^TMP("SCMCTSK",$J) S DIC="^SCTM(404.57,",(FLDS,BY)="[SCMC INCONSISTENT]",DIOBEG="D INCON^SCMCTSK1" D EN1^DIP Q CHKENR(DATA,INFO) ;check if patient enrolled in teamposition clinic S DATA(0)=-1 N I N POS,DFN S DFN=+$G(INFO) Q:'DFN S POS=+$P($G(INFO),U,2) Q:'POS F I=0:0 S I=$O(^SCTM(404.57,POS,5,I)) Q:'I D CECHK^SCRPPAT2(I,.CNAME,DFN) I $L(CNAME) S:DATA(0)=-1 DATA(0)="" S DATA(0)=DATA(0)_CNAME_"." I DATA(0)'=-1 S DATA(0)=$E(DATA(0),1,$L(DATA(0))-2) Q INACTDT(PA) ;Scheduled inactivation date. D INACT^SCMCTSK3 Q IU(DFN) ;is patient inactivity unassigned Q $$IU^SCMCTSK3(DFN) N I,A,B,DATA