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

PXRMCVRP.m

Go to the documentation of this file.
  1. PXRMCVRP ;SLC/PKR - Cover sheet reminder report. ;01/22/2020
  1. ;;2.0;CLINICAL REMINDERS;**42**;Feb 04, 2005;Build 245
  1. ;==============================
  1. ADDCAT(CATIEN,IDX,IND,LIST,REMLIST) ;Add reminders in a Category to
  1. ;the list.
  1. N CATLIST,CATIDX,CATIND,DEC,JND,REMIEN
  1. D CATREM^PXRMAPI0(CATIEN,.CATLIST)
  1. S JND=0
  1. F S JND=+$O(CATLIST(JND)) Q:JND=0 D
  1. . S DEC=.00001*JND
  1. . S CATIND=IND+DEC
  1. . S CATIDX=IDX+DEC
  1. . S REMIEN=CATLIST(JND)
  1. . S LIST(CATIND)=CATIDX_U_REMIEN
  1. . D ADDREM(REMIEN,CATIDX,CATIND,.LIST,.REMLIST)
  1. Q
  1. ;
  1. ;==============================
  1. ADDLIST(LIST,REMLIST) ;Add a list of reminders in the new parameter
  1. ;format to the final list.
  1. I '$D(LIST) Q
  1. N CODE,IEN,IDX,IND,TEMP
  1. S IND=0
  1. F S IND=+$O(LIST(IND)) Q:IND=0 D
  1. . S IDX=$P(LIST(IND),U,1)
  1. . S TEMP=$P(LIST(IND),U,2)
  1. . S CODE=$E(TEMP,2)
  1. . I CODE="R" S IEN=$P(TEMP,"R",2) D ADDREM(IEN,IDX,IND,.LIST,.REMLIST) Q
  1. . I CODE="C" S IEN=$P(TEMP,"C",2) D ADDCAT(IEN,IDX,IND,.LIST,.REMLIST)
  1. Q
  1. ;
  1. ;==============================
  1. ADDLISTO(LIST,REMLIST) ;Add a list of reminders in the old format to the
  1. ;final list.
  1. I '$D(LIST) Q
  1. N IEN,IDX,IND
  1. S IND=0
  1. F S IND=+$O(LIST(IND)) Q:IND=0 D
  1. . S IDX=$P(LIST(IND),U,1)
  1. . S IEN=$P(LIST(IND),U,2)
  1. . D ADDREM(IEN,IDX,IND,.LIST,.REMLIST)
  1. Q
  1. ;
  1. ;==============================
  1. ADDREM(IEN,IDX,IND,LIST,REMLIST) ;Add a reminder to the reminder list.
  1. ;If it is already on the reminder list don't add it again.
  1. I $D(REMLIST("IEN",IEN)) Q
  1. ;If it does not exist don't add it.
  1. I '$D(^PXD(811.9,IEN)) S $P(LIST(IND),U,3)="DOES NOT EXIST" Q
  1. ;If it is not active don't add it.
  1. I $P(^PXD(811.9,IEN,0),U,6)=1 S $P(LIST(IND),U,3)="INACTIVE" Q
  1. ;If it is not a cover sheet reminder don't add it.
  1. N USAGE
  1. S USAGE=$P(^PXD(811.9,IEN,100),U,4)
  1. I (USAGE["L")!(USAGE["O") S $P(LIST(IND),U,3)="NOT A COVER SHEET REMINDER" Q
  1. I (USAGE'["C")&(USAGE'["*") S $P(LIST(IND),U,3)="NOT A COVER SHEET REMINDER" Q
  1. S REMLIST(IDX)=IEN
  1. S REMLIST("IEN",IEN)=""
  1. Q
  1. ;
  1. ;==============================
  1. CPRSLIST(LIST,LVLLIST,USELECT) ;Build the cover sheet reminder list just like
  1. ;CPRS does.
  1. N ERR,LOCATION,LOCP,SERVICE,TLIST,TREMLIST,USER,USERP
  1. S LOCATION=USELECT("CPRS","LOCATION")
  1. S USER=USELECT("CPRS","USER")
  1. S LOCP=$P(LOCATION,U,1),USERP=$P(USER,U,1)
  1. D REMACCUM^PXRMCVRL(.LIST,"PKG","Q",1000)
  1. D REMACCUM^PXRMCVRL(.LIST,"SYS","Q",2000)
  1. D REMACCUM^PXRMCVRL(.LIST,"DIV","Q",3000)
  1. S SERVICE=$$GET1^DIQ(200,USERP,29,"I")
  1. I +SERVICE D
  1. . D REMACCUM^PXRMCVRL(.LIST,"SRV.`"_SERVICE,"Q",4000)
  1. . S USELECT("CPRS","SERVICE")=$$GET1^DIQ(200,USERP,29)
  1. I +LOCP D REMACCUM^PXRMCVRL(.LIST,"LOC.`"_LOCP,"Q",5000)
  1. D REMACCUM^PXRMCVRL(.LIST,"CLASS","Q",6000,"",USERP)
  1. D CPRSCVUC(USERP,.USELECT)
  1. D REMACCUM^PXRMCVRL(.LIST,"USR.`"_USERP,"Q",7000)
  1. D ADDLIST(.LIST,.TREMLIST) K TREMLIST("IEN")
  1. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. M REMLIST(LVLLIST(LI),"LIST")=LIST
  1. Q
  1. ;
  1. ;==============================
  1. CPRSCVUC(USER,USELECT) ;Return the cover sheet user classes the user is a
  1. ;member of.
  1. N CLASS,CLASSLIST,CLASSPARAM,ERR,IND
  1. S CLASSPARAM="ORQQPX COVER SHEET REM CLASSES"
  1. D GETLST^XPAR(.CLASSLIST,"SYS",CLASSPARAM,"Q",.ERR)
  1. S IND=0
  1. F S IND=$O(CLASSLIST(IND)) Q:'IND D
  1. . S CLASS=$P(CLASSLIST(IND),U,1)
  1. . I $$ISA^USRLM(USER,CLASS,.ERR) D
  1. .. S USELECT("CPRS","USER CLASS",CLASS)=$$CLNAME^USRLM(CLASS,1)
  1. Q
  1. ;
  1. ;==============================
  1. NEWRPP() ;Ask the user if they want to use the new reminder parameters.
  1. N DIR,DUOUT,DTOUT
  1. S DIR(0)="S^1:YES;2:NO"
  1. S DIR("B")="YES"
  1. W !,"Do you want to use the new reminder parameters?"
  1. D ^DIR
  1. I $D(DUOUT)!$D(DTOUT) Q 0
  1. Q $S(Y=1:1,Y=2:0)
  1. ;
  1. ;==============================
  1. NEWPARAM(LVLLIST,SELLIST,USELECT,REMLIST) ;Produce the reminder list using
  1. ;the new parameters.
  1. N ERR,IND,LI,LIST,TLIST,TREMLIST
  1. S LI=0
  1. F S LI=$O(SELLIST(LI)) Q:LI="" D
  1. . I LVLLIST(LI)="PACKAGE" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"PKG","Q",1000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="SYSTEM" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"SYS","Q",2000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="DIVISION" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"DIV.`"_$P(USELECT(LI),U,1),"Q",3000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="SERVICE" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"SRV.`"_$P(USELECT(LI),U,1),"Q",4000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="LOCATION" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"LOC.`"_$P(USELECT(LI),U,1),"Q",5000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="USER CLASS" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"CLASS","Q",6000,$P(USELECT(LI),U,1))
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="USER" D Q
  1. .. D REMACCUM^PXRMCVRL(.LIST,"USR.`"_$P(USELECT(LI),U,1),"Q",7000)
  1. .. K TLIST,TREMLIST
  1. .. M TLIST=LIST D ADDLIST(.TLIST,.TREMLIST) K TREMLIST("IEN")
  1. .. M REMLIST(LVLLIST(LI),"REM")=TREMLIST
  1. .. M REMLIST(LVLLIST(LI),"LIST")=TLIST
  1. . I LVLLIST(LI)="CPRS" D CPRSLIST(.LIST,.LVLLIST,.USELECT)
  1. Q
  1. ;
  1. ;==============================
  1. NEWREMP(USER) ;
  1. N ERR,GBL,RESULT,SERVICE
  1. S SERVICE=$$GET1^DIQ(200,USER,29,"I")
  1. D GETLST^XPAR(.RESULT,"USR.`"_USER_"^SRV.`"_SERVICE_"^DIV^SYS^PKG","ORQQPX NEW REMINDER PARAMS","I",.ERR)
  1. Q RESULT
  1. ;
  1. ;==============================
  1. OLDPARAM(LVLLIST,SELLIST,USELECT,REMLIST) ;Produce the reminder list using
  1. ;the old parameters. Under the old parameters the list is built
  1. ;processing the entity string from left to right, it stops with
  1. ;the first item in the entity list that is populated. Then entity
  1. ;list is built in the order: USER, LOCATION, SERVICE, DIVISION,
  1. ;SYSTEM, PACKAGE.
  1. N DIVISION,ENTITY,ERR,IND,LI,LIST,LOCATION,SERVICE,TENTITY,USER
  1. S LI=0
  1. F S LI=$O(SELLIST(LI)) Q:LI="" D
  1. . I LVLLIST(LI)="PACKAGE" D Q
  1. .. S $P(ENTITY,U,6)="PKG"
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,6)="PKG"
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="SYSTEM" D Q
  1. .. S $P(ENTITY,U,5)="SYS"
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,5)="SYS"
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="DIVISION" D Q
  1. .. S DIVISION="DIV.`"_$P(USELECT(LI),U,1)
  1. .. S $P(ENTITY,U,4)=DIVISION
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,4)=DIVISION
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="SERVICE" D Q
  1. .. S SERVICE="SRV.`"_$P(USELECT(LI),U,1)
  1. .. S $P(ENTITY,U,3)=SERVICE
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,3)=SERVICE
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="LOCATION" D Q
  1. .. S LOCATION="LOC.`"_$P(USELECT(LI),U,1)
  1. .. S $P(ENTITY,U,2)=LOCATION
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,2)=LOCATION
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="USER" D Q
  1. .. S USER="USR.`"_$P(USELECT(LI),U,1)
  1. .. S $P(ENTITY,U,1)=USER
  1. .. K TENTITY
  1. .. S $P(TENTITY,U,1)=USER
  1. .. D OLDPARAML(LVLLIST(LI),TENTITY,.REMLIST)
  1. . I LVLLIST(LI)="CPRS" D
  1. .. S USER=USELECT("CPRS","USER")
  1. .. S LOCATION=USELECT("CPRS","LOCATION")
  1. .. S SERVICE=$$GET1^DIQ(200,$P(USER,U,1),29,"I")
  1. .. S ENTITY="USR.`"_$P(USER,U,1)_U_"LOC.`"_$P(LOCATION,U,1)_U_"SRV.`"_SERVICE_U_"DIV^SYS^PKG"
  1. .. D OLDPARAML(LVLLIST(LI),ENTITY,.REMLIST)
  1. D GETLST^XPAR(.LIST,ENTITY,"ORQQPX SEARCH ITEMS","Q",.ERR)
  1. D ADDLISTO(.LIST,.REMLIST) K REMLIST("IEN")
  1. Q
  1. ;
  1. ;==============================
  1. OLDPARAML(LEVEL,ENTITY,REMLIST) ;Create the old parameter list at a
  1. ;specific level.
  1. N LIST,TREMLIST
  1. D GETLST^XPAR(.LIST,ENTITY,"ORQQPX SEARCH ITEMS","Q",.ERR)
  1. D ADDLISTO(.LIST,.TREMLIST) K TREMLIST("IEN")
  1. M REMLIST(LEVEL,"REM")=TREMLIST
  1. M REMLIST(LEVEL,"LIST")=LIST
  1. Q
  1. ;
  1. ;==============================
  1. REPD ;Main report driver.
  1. N DONE,LI,LVLLIST,NEWRP,NUM,REMLIST,SELLIST,USELDONE,USELECT
  1. S DONE=0
  1. W !,"Clinical Reminders Cover Sheet Reminder List Report"
  1. S NEWRP=$$NEWRPP
  1. F Q:DONE D
  1. .;Get a list of levels for the report.
  1. . D SELLIST(NEWRP,.LVLLIST,.SELLIST)
  1. . I '$D(SELLIST) S DONE=1 Q
  1. . K REMLIST,USELECT
  1. . S (LI,USELDONE)=0
  1. . F S LI=$O(SELLIST(LI)) Q:(LI="")!(USELDONE) D
  1. .. I LVLLIST(LI)="DIVISION" D Q
  1. ... S USELECT(LI)=$$SELECT(4,"Select the division: ")
  1. ... I USELECT(LI)=-1 S USELDONE=1
  1. .. I LVLLIST(LI)="SERVICE" D Q
  1. ... S USELECT(LI)=$$SELECT(49,"Select the service: ")
  1. ... I USELECT(LI)=-1 S USELDONE=1
  1. .. I LVLLIST(LI)="LOCATION" D Q
  1. ... S USELECT(LI)=$$SELECT(44,"Select the location: ")
  1. ... I USELECT(LI)=-1 S USELDONE=1
  1. .. I LVLLIST(LI)="USER CLASS" D Q
  1. ... S USELECT(LI)=$$SELECT(8930,"Select the user class: ")
  1. ... I USELECT(LI)=-1 S USELDONE=1
  1. .. I LVLLIST(LI)="USER" D Q
  1. ... S USELECT(LI)=$$SELECT(200,"Select the user: ")
  1. ... I USELECT(LI)=-1 S USELDONE=1
  1. .. I LVLLIST(LI)="CPRS" D Q
  1. ... S USELECT("CPRS","USER")=$$SELECT(200,"Select the user: ")
  1. ... I USELECT("CPRS","USER")=-1 S USELDONE=1 Q
  1. ... S USELECT("CPRS","LOCATION")=$$SELECT(44,"Select the location: ")
  1. ... I USELECT("CPRS","LOCATION")=-1 S USELDONE=1
  1. . I USELDONE=1 Q
  1. . I NEWRP D NEWPARAM(.LVLLIST,.SELLIST,.USELECT,.REMLIST)
  1. . I 'NEWRP D OLDPARAM(.LVLLIST,.SELLIST,.USELECT,.REMLIST)
  1. . K REMLIST("IEN")
  1. .;Produce the report.
  1. . D REPORT(NEWRP,.LVLLIST,.SELLIST,.USELECT,.REMLIST)
  1. Q
  1. ;
  1. ;==============================
  1. REPORT(NEWRP,LVLLIST,SELLIST,USELECT,REMLIST) ;Generate the report.
  1. N BOP,FIRST,IEN,IND,NDEF,NL,LEVELS,LI,OUTPUT,SELECT,TEMP
  1. S NL=0
  1. S NL=NL+1,OUTPUT(NL)="Report Criteria"
  1. S NL=NL+1,OUTPUT(NL)="Use new cover sheet parameters: "_$S(NEWRP=1:"YES",1:"NO")
  1. S NL=NL+1,OUTPUT(NL)="Selected levels:"
  1. S LI=0
  1. F S LI=$O(SELLIST(LI)) Q:LI="" D
  1. . S NL=NL+1,OUTPUT(NL)=" "_LVLLIST(LI)
  1. . S SELECT=$G(USELECT(LI))
  1. . I SELECT=-1 S NL=NL+1,OUTPUT(NL)=" Value - No selection"
  1. . I $P(SELECT,U,2)'="" S NL=NL+1,OUTPUT(NL)=" Value - "_$P(SELECT,U,2)
  1. . I LVLLIST(LI)="CPRS" D
  1. .. S NL=NL+1,OUTPUT(NL)=" User - "_$P(USELECT("CPRS","USER"),U,2)
  1. .. S NL=NL+1,OUTPUT(NL)=" Location - "_$P(USELECT("CPRS","LOCATION"),U,2)
  1. .. I 'NEWRP Q
  1. .. S NL=NL+1,OUTPUT(NL)=" Service - "_USELECT("CPRS","SERVICE")
  1. .. S IND=0
  1. .. F S IND=$O(USELECT("CPRS","USER CLASS",IND)) Q:IND="" D
  1. ... S NL=NL+1,OUTPUT(NL)=" User Class - "_USELECT("CPRS","USER CLASS",IND)
  1. S NL=NL+1,OUTPUT(NL)=""
  1. S FIRST=$O(SELLIST(0))
  1. S LEVELS="",LI=0
  1. F S LI=$O(SELLIST(LI)) Q:LI="" D
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. . I NEWRP D
  1. .. I LI>FIRST S LEVELS=LEVELS_","
  1. .. S LEVELS=LEVELS_" "_LVLLIST(LI)
  1. .. S NL=NL+1,OUTPUT(NL)="Reminder list at"_LEVELS
  1. .. S OUTPUT(NL)=OUTPUT(NL)_$S(LI=FIRST:" level",1:" levels")
  1. . I 'NEWRP D
  1. .. S LEVELS=LVLLIST(LI)
  1. .. S NL=NL+1,OUTPUT(NL)="Reminder list at the "_LEVELS_" level"
  1. . S IND=0
  1. . F S IND=+$O(REMLIST(LVLLIST(LI),"LIST",IND)) Q:IND=0 D
  1. .. S NL=NL+1,OUTPUT(NL)="LIST("_IND_")="_REMLIST(LVLLIST(LI),"LIST",IND)
  1. . S IND="",NDEF=0
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="Reminders in Display Order"
  1. . F S IND=$O(REMLIST(LVLLIST(LI),"REM",IND)) Q:IND="" D
  1. .. S NDEF=NDEF+1
  1. .. S IEN=REMLIST(LVLLIST(LI),"REM",IND)
  1. .. S TEMP=^PXD(811.9,IEN,0)
  1. .. I NDEF>1 S NL=NL+1,OUTPUT(NL)=""
  1. .. S NL=NL+1,OUTPUT(NL)="Name - "_$P(TEMP,U,1)_" (IEN="_IEN_")"
  1. .. S NL=NL+1,OUTPUT(NL)="Print Name - "_$P(TEMP,U,3)
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="There are "_NDEF_" reminders on the list."
  1. I 'NEWRP,'$D(REMLIST("CPRS")) D
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="Final Reminder List"
  1. . S IND=0,NDEF=0
  1. .F S IND=+$O(REMLIST(IND)) Q:IND=0 D
  1. .. S NDEF=NDEF+1
  1. .. S IEN=REMLIST(IND)
  1. .. S TEMP=^PXD(811.9,IEN,0)
  1. .. I NDEF>1 S NL=NL+1,OUTPUT(NL)=""
  1. .. S NL=NL+1,OUTPUT(NL)="Name - "_$P(TEMP,U,1)
  1. .. S NL=NL+1,OUTPUT(NL)="Print Name - "_$P(TEMP,U,3)
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. . S NL=NL+1,OUTPUT(NL)="There are "_NDEF_" reminders on the list."
  1. . S NL=NL+1,OUTPUT(NL)=""
  1. S BOP=$$BORP^PXRMUTIL("B")
  1. I BOP="B" D
  1. . S X="IORESET"
  1. . D ENDR^%ZISS
  1. . D BROWSE^DDBR("OUTPUT","NR","CPRS Cover Sheet Reminder List")
  1. . W IORESET
  1. . D KILL^%ZISS
  1. I BOP="P" D GPRINT^PXRMUTIL("OUTPUT")
  1. Q
  1. ;
  1. ;==============================
  1. SELECT(FILENUM,PROMPT) ;Let the user make a selection.
  1. N DIC,DONE,X,Y
  1. S DIC=FILENUM,DIC(0)="AEO"
  1. S DIC("A")=PROMPT
  1. S DONE=0
  1. F Q:DONE D
  1. . D ^DIC
  1. . I X'="" S DONE=1
  1. Q Y
  1. ;
  1. ;==============================
  1. SELLIST(NEWRP,LVLLIST,OLIST) ;Build a list of selections and let the user
  1. ;select from the list.
  1. N CPRSLVL,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IND,NLVL,SELLIST,X,Y
  1. K OLIST
  1. S NLVL=0
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - PACKAGE",LVLLIST(NLVL)="PACKAGE"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - SYSTEM",LVLLIST(NLVL)="SYSTEM"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - DIVISION",LVLLIST(NLVL)="DIVISION"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - SERVICE",LVLLIST(NLVL)="SERVICE"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - LOCATION",LVLLIST(NLVL)="LOCATION"
  1. I NEWRP S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - USER CLASS",LVLLIST(NLVL)="USER CLASS"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - USER",LVLLIST(NLVL)="USER"
  1. S NLVL=NLVL+1,SELLIST(NLVL)=" "_$J(NLVL,4)_" - CPRS",LVLLIST(NLVL)="CPRS"
  1. S CPRSLVL=NLVL
  1. M DIR("A")=SELLIST
  1. S DIR("A")="Enter your list for the report"
  1. S DIR(0)="LO^1:"_NLVL
  1. W !!,"Select from the following levels:"
  1. D ^DIR
  1. I $D(DIROUT)!$D(DIRUT) K OLIST Q
  1. I $D(DUOUT)!$D(DTOUT) K OLIST Q
  1. ;If the list contains CPRS only return CPRS.
  1. I Y[CPRSLVL S Y=CPRSLVL_","
  1. ;Make sure the list is ordered.
  1. F IND=1:1:$L(Y,",")-1 S OLIST($P(Y,",",IND))=""
  1. Q
  1. ;