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

SCMCQK2.m

Go to the documentation of this file.
  1. SCMCQK2 ;ALB/REW - Single Pt Tm/Pt Tm Pos Assign and Discharge ; 07 Oct 2002 12:10 PM
  1. ;;5.3;Scheduling;**297,1015**;AUG 13, 1993;Build 21
  1. ;
  1. DSPL ;
  1. N LP,SCD,SCPOS
  1. S SCTOK=$$TMPT^SCAPMC3(DFN,"SCDT","","SCD","SCER1")
  1. S SCOK=$$TPPT^SCAPMC(DFN,"","","","","","","SCPOS","SCBKERR")
  1. ;
  1. ;loop through positions only getting the ones associated with the team
  1. ;and that are active.
  1. ;
  1. F LP=0:0 S LP=$O(SCPOS(LP)) Q:'LP D
  1. .I $P(SCPOS(LP),U,6)]"" K SCPOS(LP) Q
  1. .S SCPOS("T",$P(SCPOS(LP),U,3),+SCPOS(LP))=SCPOS(LP)
  1. S CNT=0,POS=0
  1. F LP=0:0 S LP=$O(SCD(LP)) Q:'LP S A=SCD(LP) I '$P(A,U,8) D
  1. .I 'CNT W !!,"NON PC ASSIGNMENTS",!
  1. .S CNT=CNT+1 W !,CNT,?4,"Non-PC Team: "_$P(A,U,2),?48,"Phone: "_$P($G(^SCTM(404.51,+A,0)),U,2) S DATA(CNT)=+A
  1. .F I=0:0 S I=$O(SCPOS("T",+A,I)) Q:'I D
  1. ..I $P(DATA(CNT),U,2) S CNT=CNT+1
  1. ..S B=SCPOS("T",+A,I)
  1. ..S DATA(CNT)=(+A)_U_(+B),POS=1
  1. ..S SCPR=$$GETPRTP^SCAPMCU2(+B,DT),RES=$$NEWPERSN^SCMCGU(+SCPR,"SCPR")
  1. ..W:$X>76 !,CNT,?4,"Non-PC Team: "_$P(A,U,2),?48,"Phone: "_$P($G(^SCTM(404.51,+A,0)),U,2)
  1. ..W !,?7,"Provider: "_$P(SCPR,U,2),?45,"Position: "_$P(B,U,2)_" "
  1. ..W !,?10,"Pager: "_$P($G(SCPR(+SCPR)),U,5),?48,"Phone: ",$P($G(SCPR(+SCPR)),U,2),?77," "
  1. I 'CNT W !,"No active NON PC ASSIGNMENTS for this patient",!
  1. Q
  1. NPC N SCDT,SCER1,SCD,SCPOS
  1. D DSPL
  1. S DIR(0)="SO^0:NONE;1:TEAM ASSIGNMENT;"_$S(CNT:"2:POSITION ASSIGNMENT;3:UNASSIGNMENT;",1:"")
  1. S DIR("B")=1
  1. D ^DIR
  1. I Y=0 Q
  1. I Y=U Q
  1. I Y=1 D ASTM G NPC
  1. READ S:CNT=1 X=1 I CNT>1 W !,"Select 1-"_CNT_": " R X:DTIME Q:X=U S X=+X I X>CNT!X<1 G READ
  1. I Y=3 S DATA=DATA(+X) S SCTPSTAT=1,SCTP=+$P(DATA,U,2),SCTM=+DATA D UNTP:SCTP,UNTM:'SCTP G NPC
  1. S DATA=DATA(+X),SCTM=+DATA S SCSELECT=$$SELPOS() G NPC:'$L(SCSELECT) D ASTP G NPC
  1. Q
  1. UNTP ;unassign patient from position
  1. IF '$G(SCTP) W !,"No position defined" Q
  1. N OK,SCER,SCCL,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
  1. S OK=0
  1. W !,"About to Unassign "_$$NAME(DFN)_" from: ",!,?8,$$POSITION(SCTP)_" position ["_$P($$GETPRTP^SCAPMCU2(SCTP,DT),U,2)_"]"
  1. S SCDISCH=$$DATE("D")
  1. G:SCDISCH<1 QTUNTP
  1. G:'$$CONFIRM() QTUNTP
  1. S OK=$$INPTSCTP^SCAPMC22(DFN,SCTP,SCDISCH,.SCER)
  1. G:OK'>0 QTUNTP
  1. S SCCL=$P($G(^SCTM(404.57,+$G(SCTP),0)),U,9)
  1. QTUNTP W !,"Position Unassignment "_$S(OK:"made.",1:"NOT made.")
  1. Q
  1. ;
  1. ;
  1. UNTM ;
  1. ;assign patient from non pc team (and pc position if possible)
  1. N OK,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS,OK2,OK3
  1. S OK=0
  1. W !!,"About to Unassign "_$$NAME(DFN)_" from "_$$TEAMNM(SCTM)_" team"
  1. W:'SCTPSTAT !,?5,"AND from "_$$POSITION(SCTP)_" position ["_$$WRITETP^SCMCDD1(SCTP)_"]"
  1. S SCDISCH=$$DATE("D")
  1. G:SCDISCH<1 QTUNTM
  1. G:'$$CONFIRM() QTUNTM
  1. IF 'SCTPSTAT D G:OK2'>0 QTUNTM
  1. .W !,"Unassigned."
  1. .S OK2=$$INPTSCTP^SCAPMC22(DFN,SCTP,SCDISCH,.SCER)
  1. .IF OK2>0 D
  1. ..W "made."
  1. ..S SCCL=$P(^SCTM(404.57,SCTP,0),U,9)
  1. S OK3=$$ALLPOS^SCMCQK1()
  1. IF $$OKINPTTM^SCMCTMU2(DFN,SCTM,SCDISCH) D
  1. .S OK=$$INPTSCTM^SCAPMC7(DFN,SCTM,SCDISCH,.SCER)
  1. ELSE D
  1. . W !,"Future/Current Patient-Position Assignment exists"
  1. QTUNTM W !,"Team Unassignment "_$S(OK:"made",1:"NOT made.")
  1. Q
  1. ;
  1. ASTM ;assign patient to team
  1. N DIC,Y,OK,SCTM,SCTMFLDS,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
  1. S OK=0
  1. W !!,"About to Assign "_$$NAME(DFN)_" to a non primary care team"
  1. I $$SC^SCMCQK1(DFN) W !!,"********** This patient is 50 percent or greater service-connected ************"
  1. S DIC="^SCTM(404.51,"
  1. S DIC(0)="AEMQZ"
  1. S DIC("S")="IF $$ACTTM^SCMCTMU(Y,DT) I $$NEW^SCMCQK2()"
  1. ; - select from active teams that can not be PC Teams
  1. D ^DIC
  1. G:Y<1 QTASTM
  1. S SCTM=+Y
  1. S SCASSDT=$$DATE("A")
  1. G:SCASSDT<1 QTASTM
  1. S SCTMCT=$$TEAMCNT^SCAPMCU1(SCTM)
  1. S SCTMMAX=$P($$GETEAM^SCAPMCU3(SCTM),"^",8)
  1. I SCTMCT'<SCTMMAX D G QTASTM:'$$YESNO2()
  1. .W !,"This assignment will reach or exceeded the maximum set for this team."
  1. .W !,"Currently assigned: "_SCTMCT
  1. .W !,"Maximum set for team: "_SCTMMAX
  1. I SCTMCT<SCTMMAX,'$$CONFIRM() G QTASTM
  1. S SCTM=+Y
  1. ;setup fields
  1. ;S SCTMFLDS(.08)=1 ;primary care assignment
  1. S SCTMFLDS(.11)=$G(DUZ,.5)
  1. D NOW^%DTC S SCTMFLDS(.12)=%
  1. IF $$ACPTTM^SCAPMC(DFN,SCTM,"SCTMFLDS",SCASSDT,"SCTPTME") D
  1. .S SCSELECT=$$SELPOS()
  1. .D:$L(SCSELECT) ASTP ;prompt for position prompt
  1. .S OK=1
  1. QTASTM W !,"Team Assignment "_$S(OK:"made",1:"NOT made.")
  1. Q
  1. ASTP ;assign patient to practitioner
  1. N DIC,Y,OK,SCCL,X,SCTPFLDS,SCER,SCBEGIN,SCN,SCLIST,SCEND,SCINCL,SCLSEQ,SCDATES,SCDTS
  1. S OK=0
  1. W !!,"About to Assign "_$$NAME(DFN)_" to non PC Position Assignment"
  1. I $$SC^SCMCQK1(DFN) W !!,"********** This patient is 50 percent or greater service-connected ************"
  1. ;lookup to display only position and [practitioner]
  1. IF SCSELECT="PRACT" D
  1. .S DIC("W")="N SCP1 S SCP1=$G(^SCTM(404.52,Y,0)) W "" ["",$P($G(^VA(200,+$P(SCP1,U,3),0)),U,1),""]"""
  1. .S DIC("A")="POSITION's Current PRACTITIONER: "
  1. .S DIC="^SCTM(404.52,"
  1. .;Must be from team, must be active,must not have future inactivation
  1. .S DIC("S")="I $$PRACSCR^SCMCQK2(Y)"
  1. .S D="C"
  1. ELSE D
  1. .S DIC="^SCTM(404.57,"
  1. .S D="B"
  1. .S DIC("A")="POSITION's Name: "
  1. .S DIC("S")="I $$POSSCR^SCMCQK2(Y)"
  1. S DIC(0)="AEMQZ"
  1. D MIX^DIC1
  1. G:Y<1 QTASTP
  1. IF SCSELECT="PRACT" D
  1. .S SCTP=$P(Y,U,2)
  1. ELSE D
  1. .S SCTP=$P(Y,U,1)
  1. S SCASSDT=$$DATE("A")
  1. G:SCASSDT<1 QTASTP
  1. S SCTMCT=$$PCPOSCNT^SCAPMCU1(SCTP),SCTMMAX=+$P($G(^SCTM(404.57,SCTP,0)),U,8)
  1. I SCTMCT'<SCTMMAX D G QTASTP:'$$YESNO2
  1. .W !,"This assignment will reach or exceeded the maximum set for this position."
  1. .W !,"Currently assigned: "_SCTMCT
  1. .W !,"Maximum set for position: "_SCTMMAX
  1. G:'$$CONFIRM() QTASTP
  1. ;setup fields
  1. S SCTPFLDS(.03)=SCASSDT
  1. ;S SCTPFLDS(.05)=1 ;pc pract role
  1. S SCTPFLDS(.06)=$G(DUZ,.5)
  1. D NOW^%DTC S SCTPFLDS(.07)=%
  1. IF $$ACPTTP^SCAPMC21(DFN,SCTP,"SCTPFLDS",SCASSDT,"SCTPTME",0) D
  1. .S OK=1
  1. .S SCCL=$P(^SCTM(404.57,SCTP,0),U,9)
  1. QTASTP W !,"Position Assignment "_$S(OK:"made",1:"NOT made.")
  1. Q
  1. NAME(DFN) ;return patient name
  1. Q $P($G(^DPT(DFN,0)),U,1)
  1. ;
  1. POSITION(SCTP) ;return position name
  1. Q $P($G(^SCTM(404.57,SCTP,0)),U,1)
  1. ;
  1. TEAMNM(SCTM) ;return team name
  1. Q $P($G(^SCTM(404.51,SCTM,0)),U,1)
  1. ;
  1. CLINIC(SCCL) ;return clinic name
  1. Q $P($G(^SC(+SCCL,0)),U,1)
  1. ;
  1. YESNO() ;
  1. N DIR,X,Y
  1. S DIR(0)="Y",DIR("B")="YES"
  1. D ^DIR
  1. Q Y>0
  1. ;
  1. YESNO2() ;
  1. N DIR,X,Y
  1. S DIR(0)="Y",DIR("B")="NO"
  1. S DIR("A")="Do you wish to continue with the assignment (Yes/No)?"
  1. D ^DIR
  1. Q Y>0
  1. CONFIRM() ;confirmation call
  1. N DIR,X,Y
  1. S DIR("A")="Are you sure (Yes/No)"
  1. S DIR(0)="Y"
  1. D ^DIR
  1. Q +Y=1
  1. ;
  1. SELPOS() ;return way to select position: 1=PRACT,2=POSIT,3=NONE
  1. N DIR,X,Y
  1. W !,"Choose way to select NON PC POSITION Assignment: "
  1. S DIR(0)="SO^0:NONE;1:BY PRACTITIONER ASSIGNMENT;2:BY POSITION ASSIGNMENT"
  1. S DIR("B")=1
  1. D ^DIR
  1. Q $S(Y'>0:"",+Y=1:"PRACT",1:"POSIT")
  1. ;
  1. DATE(TYPE) ;return date type=A or D
  1. N DIR,X,Y
  1. S DIR("A")=$S(TYPE="A":"Assignment",1:"Unassignment")_" date: "
  1. S DIR(0)="DA^::EXP"
  1. S Y=$S($D(SCDISCH):SCDISCH,$D(SCASSDT):SCASSDT,(TYPE="A"):"TODAY",1:"TODAY-1")
  1. X ^DD("DD")
  1. S DIR("B")=Y
  1. D ^DIR
  1. Q Y
  1. ;
  1. PRACSCR(SC40452) ;screen for for file 404.52
  1. N SCP,SCNODE,OK
  1. S SCP=$G(^SCTM(404.52,SC40452,0))
  1. S OK=0
  1. G:'SCP QTPP
  1. S SCNODE=$G(^SCTM(404.57,+SCP,0))
  1. S OK=$S($P(SCNODE,U,2)'=SCTM:0,$P(SCNODE,U,4):0,($O(^SCTM(404.52,"AIDT",+SCP,1,""))'=-$P(SCP,U,2)):0,($O(^SCTM(404.52,"AIDT",+SCP,0,-$P(SCP,U,2)),-1)):0,($$ACTTP^SCMCTPU(+SCP)>0):1,1:0)
  1. QTPP Q OK
  1. ;
  1. POSSCR(SCTP) ;screen for file 404.57
  1. N SCNODE
  1. S SCNODE=$G(^SCTM(404.57,SCTP,0))
  1. Q $S($P(SCNODE,U,2)'=SCTM:0,$P(SCNODE,U,4):0,($$ACTTP^SCMCTPU(SCTP)>0):1,1:0)
  1. Q
  1. NEW() ;
  1. F I=0:0 S I=$O(SCD(I)) Q:'I I (+SCD(I))=(+Y) Q
  1. Q 'I