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

SCMCTSK1.m

Go to the documentation of this file.
  1. SCMCTSK1 ;ALB/JDS - PCMM Inactivations; 18 Apr 2003 9:36 AM ; 10/24/07 12:24pm ; Compiled January 25, 2008 12:11:43 ; Compiled March 26, 2008 22:27:26
  1. ;;5.3;Scheduling;**297,498,527,499,532,504,581**;AUG 13, 1993;Build 16
  1. Q
  1. INACTIVE ;
  1. ;Flag patients
  1. N I,CNT,SC297,TPZ,TYDT,TEAMN,STDT,Q,SDDT,STDD S CNT=0
  1. D DT^DICRW
  1. N SD1 S SDDT="" F SD1=DT,DT-1 I $D(^XTMP("SCMCTSK2-"_SD1,$J,"START")) S SDDT=SD1 Q
  1. I SDDT'>0 D DT^DICRW S SDDT=DT
  1. S %DT="",X="T-11M" D ^%DT S STDD=+Y
  1. S A="^SCPT(404.43,""ADFN""",L=""""""
  1. S Q=A_")"
  1. F S Q=$Q(@Q) Q:Q'[A D
  1. .S ENTRY=+$P(Q,",",6)
  1. .S ZERO=$G(^SCPT(404.43,+ENTRY,0))
  1. .I $P(ZERO,U,15) Q
  1. .S POS=+$P(ZERO,U,2)
  1. .I $P(ZERO,U,4) Q ;UNASS
  1. .I '$P(ZERO,U,5) Q ;Not PC
  1. .I $P(ZERO,U,3)>STDD Q ;<11 months
  1. .;get preceptor
  1. .S PREC=$$DATES^SCAPMCU1(404.53,+POS),PREC=$S(PREC:$P($G(^SCTM(404.53,+$P(PREC,U,4),0)),U,6),1:+POS)
  1. .S DFN=$P(Q,",",3)
  1. .I $G(XPDIDTOT),('(DFN#5)) D UPDATE^XPDID(DFN)
  1. .S TEAM=$P(Q,",",4),TEAMNM=$P($G(^SCTM(404.51,+TEAM,0)),U)
  1. .N STDT S %DT="",X="T-12M" D ^%DT S STDT=+Y
  1. .;N-new or E-est
  1. .N NEW
  1. .I $P(ZERO,U,3)<STDT S NEW=0
  1. .E S NEW=1
  1. .N TYDT
  1. .I NEW N STDT S %DT="",X="T-11M" D ^%DT S STDT=+Y D
  1. ..S X1=STDT,X2=-7 D C^%DTC S TYDT=X
  1. .I 'NEW N STDT S %DT="",X="T-23M" D ^%DT S STDT=+Y Q:$P(ZERO,U,3)'<STDT D
  1. ..S X1=STDT,X2=-7 D C^%DTC S TYDT=X
  1. .N PROV,SEEN,PRECP D SEEN(DFN,POS,TYDT,SDDT,.PROV,.PRECP,.SEEN) Q:SEEN
  1. .;flag
  1. .S DIE="^SCPT(404.43,",DR=".15////"_SDDT,DA=ENTRY D ^DIE
  1. .S TPZ=$G(^SCTM(404.57,+POS,2))
  1. .I "TP"[$P(TPZ,U,9) I $G(PROV) S CNT=CNT+1,^TMP("SCF",$J,PROV,CNT,ENTRY)=""
  1. .I $P(TPZ,U,10),$G(PRECP) S CNT=CNT+1,^TMP("SCF",$J,PRECP,CNT,ENTRY)=""
  1. Q
  1. SEEN(DFN,POS,TYDT,SDDT,PROV,PROVP,SEEN) ;
  1. S SEEN=0,PROVP=""
  1. N SCPRO,I,PRO,X,SCPRDTS,SCPR,PREC
  1. S PROV=+$$GETPRTP^SCAPMCU2(POS,SDDT)
  1. S SCPRDTS("BEGIN")=TYDT,SCPRDTS("END")=SDDT,SCPRDTS("INCL")=0
  1. S X=$$PRTP^SCAPMC(POS,"SCPRDTS","SCPR")
  1. S I=0 F S I=$O(SCPR(I)) Q:'I S SCPRO(+SCPR(I))="",SCPRO(+SCPR(I),I)=$P(SCPR(I),U,9,10) D
  1. .S PREC=$P(SCPR(I),U,12)
  1. .I PREC,PREC'=POS S PROVP=+$$GETPRTP^SCAPMCU2(PREC,SDDT) S SCPRO(+PROVP)="" S SCPRO(+PROVP,I)=$P(SCPR(I),U,9,10)
  1. F I=TYDT:0 S I=$O(^SCE("ADFN",DFN,I)) Q:'I D Q:SEEN
  1. .S J=0 F S J=$O(^SCE("ADFN",DFN,I,J)) Q:'J D Q:SEEN
  1. ..N VISIT S VISIT=+$P($G(^SCE(J,0)),U,5) I $G(^SCE(J,0))<$G(TYDT) Q
  1. ..S PRO=0 F S PRO=$O(SCPRO(PRO)) Q:'PRO D Q:SEEN
  1. ...I $D(^SDD(409.44,"AO",J,$G(PRO))) D CHK I SEEN=1 Q
  1. ...N V F V=0:0 S V=$O(^AUPNVPRV("AD",VISIT,V)) Q:'V I PRO=(+$G(^AUPNVPRV(V,0))) D CHK I SEEN=1 Q
  1. Q
  1. CHK ;
  1. N SDX S SDX="" F S SDX=$O(SCPRO(PRO,SDX)) Q:SDX="" D Q:SEEN
  1. .I $P(SCPRO(PRO,SDX),U,2)="" D Q
  1. ..I I'<$P(SCPRO(PRO,SDX),U) S SEEN=1
  1. .I I'<TYDT&(I'>$P(SCPRO(PRO,SDX),U,2)) S SEEN=1
  1. Q
  1. DIS ;disch
  1. N ZERO S ZERO=$G(^SCPT(404.43,+ENTRY,0))
  1. I $P(ZERO,U,4) Q
  1. D DIS2^SCMCTSK7
  1. Q
  1. CHKENR(DATA,INFO) ;check if patient enrolled in teamposition clinic
  1. S DATA(0)=-1
  1. Q
  1. EXTEND(DATA,SCTEAM) ;to inact. in next 60 days
  1. ;IEN^POSITION^PATIENT^EXTENDED^REASON
  1. K DATA,SCDATA,SDDATA
  1. N CNT,I,J,K,A,POSA S CNT=1 S SCTEAM=$G(SCTEAM),DATA(1)="<DATA>"
  1. D DT^DICRW
  1. N SD1 S SDDT="" F SD1=DT,DT-1 I $D(^XTMP("SCMCTSK2-"_SD1,$J,"START")) S SDDT=SD1 Q
  1. I SDDT'>0 D DT^DICRW S SDDT=DT
  1. S X="T-9M" D ^%DT S STDT=Y
  1. S X="T-21M" D ^%DT S TYDT=+Y ;MAKE THIS 21
  1. S POSA=""
  1. S POS=+$P(SCTEAM,U,2) I POS D POS,EX1 Q
  1. F S POSA=$O(^SCTM(404.57,"ATMPOS",+SCTEAM,POSA)) Q:POSA="" D Q:CNT>100
  1. .F POS=0:0 S POS=$O(^SCTM(404.57,"ATMPOS",+SCTEAM,POSA,POS)) Q:'POS D POS Q:CNT>100
  1. I CNT>100 S DATA(1)="TOO MANY" Q
  1. EX1 S A="SDDATA",CNT=1 F S A=$Q(@A) Q:A="" D
  1. .S B=@A
  1. .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)
  1. .S CNT=CNT+1
  1. Q
  1. POS I '$$DATES^SCAPMCU1(404.59,POS) Q ;Position inact
  1. I '$P($G(^SCTM(404.57,POS,0)),U,4) Q ;Not PC
  1. ;patients for position
  1. K ^TMP("SC TMP LIST",$J)
  1. S X=$$PTTP^SCAPMC(POS,"",.SCLIST,.SCERR)
  1. S J=0 F S J=$O(@SCLIST@(J)) Q:'J S SCDATA=^(J) D
  1. .N J I $P(SCDATA,U,4)>STDT Q
  1. .I '$P($G(^SCPT(404.43,+$P(SCDATA,U,3),0)),U,5) Q
  1. .I '$P($G(^SCPT(404.43,+$P(SCDATA,U,3),0)),U,15) Q
  1. .S DFN=+SCDATA
  1. .D SEEN(DFN,POS,TYDT,SDDT,.PROV,.PRECP,.SEEN) Q:SEEN
  1. .S SDDATA($P($G(^SCTM(404.57,POS,0)),U),$P(SCDATA,U,2),+SCDATA)=SCDATA,CNT=CNT+1
  1. K @SCLIST
  1. Q
  1. FILE(RES,DATA) ;File data on FTEE
  1. N I
  1. F I=1:1 Q:'$D(DATA(I)) D
  1. .S $P(DATA(I),U,7)=$TR($P(DATA(I),U,7),"[]")
  1. .S ZERO=$G(^SCPT(404.43,+DATA(I),0))
  1. .I $P(ZERO,U,13)=$P(DATA(I),U,6) I $P(ZERO,U,14)=$P(DATA(I),U,7) Q
  1. .S FLDA(404.43,(+DATA(I))_",",.13)=$P(DATA(I),U,6)
  1. .S FLDA(404.43,(+DATA(I))_",",.14)=$E($P(DATA(I),U,7),1,50)
  1. .S FLDA(404.43,(+DATA(I))_",",.16)="`"_(+$G(DUZ))
  1. I $O(FLDA(0)) D FILE^DIE("E","FLDA","ERR")
  1. Q
  1. SCREEN ;Active assign. screen
  1. N A S A=$G(^SCTM(404.52,D0,0))
  1. N J S J=-(DT+1),J=$O(^SCTM(404.52,"AIDT",+A,1,J)) I J="" S X=0 Q
  1. I '$P($G(^SCTM(404.57,+A,0)),U,4) Q ;Not PC
  1. I '$$DATES^SCAPMCU1(404.59,+A) Q ;Not an active position
  1. I $O(^SCTM(404.52,"AIDT",+A,0,-(DT+1)))<J S X=0 Q
  1. I '$D(^SCTM(404.52,"AIDT",+A,1,J,D0)) S X=0 Q
  1. S X=1 Q
  1. SUM(PR,POSI) ;get pos for prov
  1. N I,INS,ZERO,SCA,TEAM,FTEE,Z
  1. S I="",FTEE=0
  1. F S I=$O(^SCTM(404.52,"C",PR,I),-1) Q:'I D
  1. .S ZERO=$G(^SCTM(404.52,I,0)) Q:$D(SCA(+ZERO)) Q:(POSI=(+ZERO)) S SCA(+ZERO)=""
  1. .S INS=$P($G(^SCTM(404.51,+$P($G(^SCTM(404.57,+ZERO,0)),U,2),0)),U,7)
  1. .S ACTIVE=$$DATES^SCAPMCU1(404.52,+ZERO,DT+.5) Q:'ACTIVE
  1. .S (Z,ZERO)=$G(^SCTM(404.52,+$P(ACTIVE,U,4),0)) Q:$P(Z,U,3)'=PR
  1. .S ACTIVE=$$DATES^SCAPMCU1(404.59,+Z,DT+.5) Q:'ACTIVE
  1. .S Z=$G(^SCTM(404.57,+Z,0))
  1. .;Q:'$P(Z,U,4) ;Cannot be primary; enable all sd/581
  1. .S TEAM=$G(^SCTM(404.51,+$P(Z,U,2),0))
  1. .Q:'$P(TEAM,U,5)
  1. .S FTEE=FTEE+$P(ZERO,U,9)
  1. Q FTEE
  1. FTEECHK(DATA,PAIEN) ;check Ftee>1
  1. ;SD*5.3*504 change begin - ensure passed FTEE is numeric
  1. N X,X1,X2,FTEE
  1. S DATA=0
  1. D:$P(PAIEN,U,2)'="" Q:DATA=99.1
  1. .S X=$$TRIM^XLFSTR($P(PAIEN,U,2),"R"," ")
  1. .S X1=$P(X,"."),X1=$S(X1'="":X1,1:0)
  1. .S X2=$P(X,".",2,3),X2=$$TRIM^XLFSTR(X2,"L","0"),X2=$S(X2'="":X2,1:0)
  1. .S:X1<0!(+X1'=X1)!(+X2'=X2)!(X2'=$TR(X2,".","")) DATA=99.1
  1. .Q
  1. ;SD*5.3*504 change end
  1. N A S A=$G(^SCTM(404.52,+PAIEN,0)),FTEE=$$SUM(+$P(PAIEN,U,3),+A)
  1. S DATA=0
  1. S DATA=FTEE+$P(PAIEN,U,2)
  1. Q
  1. SORT(DIPA,SDD) ;sort tmpl
  1. N DIC
  1. S DIC=4,DIC(0)="ZME"
  1. S DIC("S")="I $D(^SCTM(404.51,""AINST"",+Y))"
  1. S DIR("A")="Start with Institution",DIR("B")="FIRST",DIR(0)="F" D ^DIR
  1. I X="FIRST" S DIPA("SI")="",DIPA("EI")="zzz",SDD=1 Q
  1. D ^DIC I Y<0 S DIPA("SI")=X S SDD=X Q:SDD[U D
  1. .S DIR("A")="Go to Institutiton",DIR("B")="LAST" S DIR(0)="F" D ^DIR
  1. .I X="LAST" S DIPA("EI")="zzz"
  1. I Y>0 S DIPA("SI")=$P(Y(0),U),DIC(0)="AZQME",DIC("A")="Go to Institution: "
  1. D ^DIC
  1. I Y>0 S DIPA("EI")=$P(Y(0),U)
  1. I Y<0 S DIPA("EI")=X S SDD=X Q:SDD[U
  1. S SDD=1 Q
  1. FTEERPT ;FTEE REPORT
  1. D FTERPT^SCMCTSK6 Q
  1. Q
  1. POSCHK(DATA,INFO) ;
  1. N PCLASS
  1. ;TEAM POSITION IEN^PC^STANDARD POSITITION IEN
  1. I '$P(INFO,U,3) S DATA="1^Role Must be Entered" Q
  1. 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
  1. 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
  1. S DATA=0
  1. I ('INFO)!('$P(INFO,U,2)) Q
  1. ;Is provider role acceptable?
  1. S J=-(DT+1) S J=$O(^SCTM(404.52,"AIDT",+INFO,1,J)) Q:J=""
  1. I $O(^SCTM(404.52,"AIDT",+INFO,0,-(DT+1)))<J Q
  1. S K=0 S K=$O(^SCTM(404.52,"AIDT",+INFO,1,J,K)) Q:'K
  1. S ZERO=$G(^SCTM(404.52,+K,0))
  1. ;Get person class for provider
  1. S PCLASS=$$GET^XUA4A72(+$P(ZERO,U,3))
  1. ;IEN^Occupation^specialty^sub-specialty^Effective date^expiration date^VA Code^specialty code
  1. I '$D(^SD(403.46,+$P(INFO,U,3),2,"B",+PCLASS)) S DATA="1^Person Class of "_$$GET1^DIQ(200,(+$P(ZERO,U,3))_",",.01)_" is not valid in this Role." D POSCHK^SCMCTSK4
  1. Q
  1. SEED ;seed one patient/provider
  1. W !,"To retransmit all patients for a given provider press return to select the provider",!!
  1. N DIC,SCADT,SCDDT,SCPAI
  1. S SC177=$$PDAT^SCMCGU("SD*5.3*177")
  1. I +SC177=0 D Q
  1. . S SC2=" Unable to obtain SD*5.3*177 Installation Date."
  1. . D MSG^SCMCCV6(SC1,SC2)
  1. . Q
  1. S DIC="^DPT(",DIC(0)="MEQA" D ^DIC G PRSEED:Y'>0
  1. ;event filer for 1 patient
  1. S SCDFN=+Y W !,SCDFN
  1. SCDFN S SC1="^SCPT(404.43,""APCPOS"",SCDFN,1)"
  1. ;quit if no PC assign
  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. ..; 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. ...;quit if not active within date range
  1. ...Q:$$DTCHK^SCAPU1(SC177,DT,0,SCADT,SCDDT)<1
  1. ...N SCVAR S SCVAR=SCPAI_";SCPT(404.43,"
  1. ...;add to HL7 event file
  1. ...Q:$D(^SCPT(404.48,"AACXMIT",SCVAR))
  1. ...Q:$$CHECK^SCMCHLB1(SCVAR)'=1
  1. ...D ADD^SCMCHLE("NOW",SCVAR,SCDFN,SCTP)
  1. Q
  1. PRSEED ;seed practitioner
  1. N AH,SC177
  1. S SC177=$$PDAT^SCMCGU("SD*5.3*177")
  1. I +SC177=0 D Q
  1. . S SC2=" No SD*5.3*177 Installation Date."
  1. . D MSG^SCMCCV6(SC1,SC2)
  1. S DIC=200,DIC(0)="MEQA",DIC("A")="Select Provider: " D ^DIC Q:Y'>0
  1. S SCPROV=+Y
  1. F AH=0:0 S AH=$O(^SCTM(404.52,"C",SCPROV,AH)) Q:'AH S TP=+$G(^SCTM(404.52,+AH,0)) D
  1. . Q:$D(SCTP(TP))
  1. . S SCTP(TP)=1
  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
  1. . Q:'$P($G(^SCTM(404.57,TP,0)),U,4)
  1. . S SCVAR=AH_";SCTM(404.52,"
  1. . ;Quit if an event entry already exists
  1. . N QUIT,I S QUIT=0
  1. . 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
  1. . Q:QUIT
  1. . D ADD^SCMCHLE("NOW",SCVAR,,AH,1)
  1. Q
  1. INCON ;inconsistent PC assignments
  1. N POS
  1. D INCON^SCMCTSK3
  1. Q
  1. INCONR ;inconsistent report
  1. N BY
  1. K ^TMP("SCMCTSK",$J)
  1. S DIC="^SCTM(404.57,",(FLDS,BY)="[SCMC INCONSISTENT]",DIOBEG="D INCON^SCMCTSK1"
  1. D EN1^DIP
  1. Q
  1. INACTDT(PA) ;Scheduled inactivation date.
  1. D INACT^SCMCTSK3 Q
  1. IU(DFN) ;is patient inactivity unassigned
  1. Q $$IU^SCMCTSK3(DFN)
  1. N I,A,B,DATA