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

SCMCMU1.m

Go to the documentation of this file.
SCMCMU1 ;ALB/MJK - PCMM Mass Team/Position List Manager ; 10-JUL-1998
 ;;5.3;Scheduling;**148**;AUG 13, 1993
 ;
EN(SCTEAM,SCPOS,SCTPDIS,SCMUTYPE,SCDATE) ; -- main entry point for SCMC MU MASS TEAM UNASSIGNMENT
 D EN^VALM("SCMC MU MASS TEAM UNASSIGNMENT")
 Q
 ;
HDR ; -- header code
 N X,SCTEAM0
 S SCTEAM0=$G(^SCTM(404.51,+SCTEAM,0),"Unknown")
 S X=$E("    Team: "_$P(SCTEAM0,U),1,40)
 S X=$$SETSTR^VALM1(" Total: "_+$G(SCALLCNT)_"  Selected: "_+$G(SCSELCNT),X,45,35)
 S VALMHDR(1)=X
 ;
 S X=""
 IF SCMUTYPE="P" D
 . S SCPOS0=$G(^SCTM(404.57,+SCPOS,0),"Unknown")
 . S X=$E("Position: "_$P(SCPOS0,U),1,40)
 . IF '$G(SCTPDIS(+SCPOS)) Q
 . S X=$$SETSTR^VALM1("Clinic: "_$P($G(^SC(+$P(SCPOS0,U,9),0),"Unknown"),U),X,45,35)
 .Q
 ;
 S VALMHDR(2)=X
 S X="Proposed Effective Date: "_$$FMTE^XLFDT($E(SCDATE,1,7),"5Z")
 S X=$$SETSTR^VALM1("  View: "_SCVIEW_$S(SCVIEW="ALL":"",1:"ED"),X,45,35)
 S VALMHDR(3)=X
 Q
 ;
INIT ; -- init variables and list array
 N SCPATS,SCI,SCALPHA,SCX,SCDTE
 S SCPATS=$NA(^TMP("SCMU",$J,"PATIENTS"))
 S SCALPHA=$NA(^TMP("SCMU",$J,"PATS ALPHA"))
 K @SCPATS,@SCALPHA
 ;
 ; -- set up persistent structures
 S SCPTINFO=$NA(^TMP("SCMU",$J,"PATIENT INFO"))    ; useful patient data
 S SCPTSEL=$NA(^TMP("SCMU",$J,"SELECTED"))         ; patients selected
 S SCPTALL=$NA(^TMP("SCMU",$J,"PATIENT ALL"))      ; listman data
 ;
 K @SCPTINFO,@SCPTSEL,@SCPTALL
 S (SCALLCNT,SCSELCNT,SCMSG)=0
 S SCVIEW="ALL"
 ;
 W ! D WAIT^DICD
 ;
 ; -- change title is appropriate
 IF SCMUTYPE="P" S VALM("TITLE")="Mass Position Unassignment"
 ;
 ; -- get patients
 D DATE(SCDATE,.SCDTE)
 IF SCMUTYPE="T",'$$PTTM^SCAPMC(SCTEAM,SCDTE,SCPATS) G INITQ
 IF SCMUTYPE="P",'$$PTTP^SCAPMC(SCPOS,SCDTE,SCPATS) G INITQ
 ;
 ; -- build list for display
 S SCI=0
 F  S SCI=$O(@SCPATS@(SCI)) Q:'SCI  D
 . S SCX=@SCPATS@(SCI)
 . S @SCALPHA@($P(SCX,U,2)_SCI)=SCI
 . Q
 ;
 S SCNT=0
 S SCI=""
 F  S SCI=$O(@SCALPHA@(SCI)) Q:SCI=""  D
 . S SCX=$G(@SCPATS@(+@SCALPHA@(SCI)))
 . IF '$$FILTER(SCX,SCDATE) Q
 . S SCNT=SCNT+1
 . S Y=$$SETSTR^VALM1(SCNT,"",1,4)                          ; number
 . S Y=$$SETSTR^VALM1($P(SCX,U,2),Y,15,25)                    ; pt name
 . S Y=$$SETSTR^VALM1($P(SCX,U,6),Y,42,12)                    ; pt id
 . S Y=$$SETSTR^VALM1($$FMTE^XLFDT($P(SCX,U,4),"5Z"),Y,56,10) ; assigned
 . S Y=$$SETSTR^VALM1($$FMTE^XLFDT($P(SCX,U,5),"5Z"),Y,69,10) ; unassigned
 . ;
 . ; -- flag if this is a future assignment
 . IF $P(SCX,U,4)>DT D
 . . S Y=$$SETSTR^VALM1("*",Y,55,1)
 . . IF 'SCMSG S SCMSG=1 D MSG
 . ;
 . ; -- flag if this is a future unassignment
 . IF $P(SCX,U,5)>DT D
 . . S Y=$$SETSTR^VALM1("*",Y,68,1)
 . . IF 'SCMSG S SCMSG=1 D MSG
 . ;
 . S @SCPTALL@(SCNT,0)=Y
 . S @SCPTALL@("IDX",SCNT,SCNT)=SCNT
 . S @SCPTINFO@(SCNT)=SCX
 . Q
 K @SCPATS,@SCALPHA
 S SCALLCNT=SCNT
 ;
 ; -- set up lm array
 D BLD
 ;
INITQ Q
 ;
FILTER(SCX,SCDATE) ; -- apply filter criteria
 N SCOK
 S SCOK=1
 ; -- if inactivation date is =< effective then don't use
 IF $P(SCX,U,5),$P(SCX,U,5)'>SCDATE S SCOK=0
 Q SCOK
 ;
BLD ; -- build VALMAR
 K @VALMAR
 ;
 IF SCVIEW="ALL" D
 . M @VALMAR=@SCPTALL
 . S VALMCNT=SCALLCNT
 . Q
 ;
 ELSE  D
 . N SCNT
 . S (SCNT,VALMCNT)=0
 . F  S SCNT=$O(@SCPTALL@(SCNT)) Q:'SCNT  D
 . . ; -- if in select view and patient not selected then don't use
 . . IF SCVIEW="SELECT",'$D(@SCPTSEL@(SCNT)) Q
 . . ; -- if in de-select view and patient selected then don't use
 . . IF SCVIEW="DE-SELECT",$D(@SCPTSEL@(SCNT)) Q
 . . ;
 . . S VALMCNT=VALMCNT+1
 . . S Y=@SCPTALL@(SCNT,0)
 . . S @VALMAR@(VALMCNT,0)=$$SETSTR^VALM1(VALMCNT,Y,1,4)
 . . ;
 . . ; -- set idx to pointer back to SCPTALL (this is key!)
 . . S @VALMAR@("IDX",VALMCNT,VALMCNT)=SCNT
 . . Q
 . Q
 ;
 IF '$O(@VALMAR@(0)) D
 . S @VALMAR@(1,0)=" "
 . S @VALMAR@(2,0)=" "
 . S @VALMAR@(3,0)="         No patients to list."
 . Q
 IF $G(VALMBG),'$D(@VALMAR@(VALMBG,0)) S VALMBG=1
 K VALMHDR
 D BACK("R")
 Q
 ;
SETSEL(FLAG,SCNT) ; -- set selected flag indicator
 N Y,SCPTCNT
 ;
 ; -- get pointer back to SCPTALL
 S SCPTCNT=+$G(@VALMAR@("IDX",SCNT,SCNT))
 IF FLAG="DE-SELECT",$D(@SCPTSEL@(SCPTCNT)) D
 . K @SCPTSEL@(SCPTCNT)
 . S SCSELCNT=$S(SCSELCNT=0:0,1:SCSELCNT-1)
 ;
 IF FLAG="SELECT",'$D(@SCPTSEL@(SCPTCNT)) D
 . S @SCPTSEL@(SCPTCNT)=""
 . S SCSELCNT=$S(SCSELCNT=SCALLCNT:SCALLCNT,1:SCSELCNT+1)
 ;
 S Y=$G(@VALMAR@(SCNT,0))
 S Y=$$SETSTR^VALM1($S(FLAG="SELECT":"Yes",1:""),Y,8,3)
 S @VALMAR@(SCNT,0)=Y
 ;
 ; -- need to do SCPTALL separately because of potential for differnt #'s
 S Y=$G(@SCPTALL@(SCPTCNT,0))
 S Y=$$SETSTR^VALM1($S(FLAG="SELECT":"Yes",1:""),Y,8,3)
 S @SCPTALL@(SCPTCNT,0)=Y
 Q
 ;
HELP ; -- help code
 S X="?" D DISP^XQORM1 W !!
 Q
 ;
EXIT ; -- exit code
 D CLEAR^VALM1
 K @VALMAR,SCSELCNT,SCVIEW,SCALLCNT,SCMSG
 K @SCPTALL,@SCPTSEL,@SCPTINFO
 K SCPTALL,SCPTSEL,SCPTINFO
 Q
 ;
EXPND ; -- expand code
 Q
 ;
ALL(SCACT) ;  -- entry point for SCMC SELECT ALL & SCMC DESELECT ALL protocols
 IF SCVIEW=SCACT D  Q
 . W !!,"All patients in current view are already '"_SCACT_"ED'."
 . D PAUSE
 . D BACK("")
 . Q
 D ACT(SCACT,SCPTALL)
 Q
 ;
SOME(SCACT) ; -- entry point for SCMC SELECT SOME & SCMC DESELECT SOME protocols
 IF SCVIEW=SCACT D  Q
 . W !!,"All patients in current view are already '"_SCACT_"ED'."
 . D PAUSE
 . D BACK("")
 . Q
 D EN^VALM2(XQORNOD(0),"O")
 D ACT(SCACT,"VALMY")
 Q
 ;
ACT(SCACT,SCLIST) ; -- change select flag
 N SCNT
 S SCNT=0
 F  S SCNT=$O(@SCLIST@(SCNT)) Q:'SCNT  D SETSEL(SCACT,SCNT)
 W !
 D WAIT^DICD,BLD
 Q
 ;
VIEW(SCVW) ; -- change view
 S SCVIEW=SCVW
 W !
 D WAIT^DICD,BLD
 Q
 ;
BACK(ACTION) ; -- return to lm processing
 IF $G(SCMSG) D MSG
 S VALMBCK=ACTION
 Q
 ;
MSG ; -- set message var
 S VALMSG="* Future date"
 Q
 ;
DATE(SCDATE,SCDTE) ; -- setup date array
 S SCDTE="SCDTE"
 S SCDTE("BEGIN")=SCDATE
 S SCDTE("END")=9999999
 S SCDTE("INCL")=0
 Q
 ;
PAUSE ; -- pause
 N DIR,Y
 S DIR(0)="EA"
 S DIR("A")="Enter RETURN to continue:"
 D ^DIR
 Q