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

PXRMCAT.m

Go to the documentation of this file.
  1. PXRMCAT ; SLC/PJH - Edit/Inquire reminder categories ;01/05/2001
  1. ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
  1. ;
  1. ;Called by option PXRM REMINDER CATEGORIES
  1. ;
  1. START N DIC,PXRMHD,PXRMCAT,PXRMGTYP,Y
  1. SELECT ;General selection
  1. S PXRMHD="Reminder Categories",PXRMGTYP="RCAT",PXRMCAT=""
  1. D START^PXRMSEL(PXRMHD,PXRMGTYP,"PXRMCAT")
  1. ;Should return a value
  1. I PXRMCAT D G SELECT
  1. .S PXRMHD="REMINDER CATEGORY NAME:"
  1. .;Listman option
  1. .D START^PXRMGEN(PXRMHD,PXRMGTYP,PXRMCAT)
  1. END Q
  1. ;
  1. ;Build Category Inquiry array
  1. ;----------------------------
  1. BUILD(ARRAY,D0) ;
  1. N D1,IC,LEVEL,SEQ,TAB,TXT,TEMP
  1. ;Category Description
  1. S LEVEL=5 D DES
  1. ;Reminders
  1. S LEVEL=0 D REM
  1. ;Sort Sub-category into display order
  1. D SORT(D0,.TEMP)
  1. ;Sub-category ... D0=IEN OF PARENT D1=NODE NUMBER IN 10 OF CHILD
  1. S SEQ=0
  1. F S SEQ=$O(TEMP(SEQ)) Q:'SEQ D
  1. .S D1=TEMP(SEQ)
  1. .D GETLST(D0,D1,0)
  1. Q
  1. ;
  1. ;Build display for selected category - Called from PXRMGEN
  1. ;---------------------------------------------------------
  1. CAT(PXRMCAT) ;
  1. N DATA,DARRAY,SUB
  1. S VALMCNT=0 K ^TMP("PXRMGENS",$J),^TMP("PXRMGEN",$J)
  1. ;
  1. ;Format headings to include category name
  1. S HEADER=PXRMHD_" "_$P(^PXRMD(811.7,PXRMCAT,0),U)
  1. ;
  1. ;Build Reminder Category Display
  1. D BUILD(.DARRAY,PXRMCAT) M ^TMP("PXRMGENS",$J)=DARRAY
  1. ;
  1. ;Put the list into the array List Manager is using.
  1. S SUB="",VALMCNT=0
  1. F S SUB=$O(^TMP("PXRMGENS",$J,SUB)) Q:SUB="" D
  1. .S DATA=$G(^TMP("PXRMGENS",$J,SUB))
  1. .S VALMCNT=VALMCNT+1
  1. .S ^TMP("PXRMGEN",$J,VALMCNT,0)=DATA
  1. K ^TMP("PXRMGENS",$J)
  1. ;Create headings
  1. D CHGCAP^VALM("HEADER1","")
  1. D CHGCAP^VALM("HEADER2","")
  1. D CHGCAP^VALM("HEADER3","")
  1. Q
  1. ;
  1. ;Category description
  1. ;--------------------
  1. DES ;array.
  1. N DIWF,DIWL,DIWR,SUB,X
  1. S DIWF="C70",DIWL=0,DIWR=70
  1. K ^UTILITY($J,"W")
  1. S SUB=0
  1. F S SUB=$O(^PXRMD(811.7,D0,1,SUB)) Q:SUB="" D
  1. .S X=$G(^PXRMD(811.7,D0,1,SUB,0))
  1. .D ^DIWP
  1. S ARRAY(1)="Category Description:",IC=1
  1. F S SUB=$O(^UTILITY($J,"W",0,SUB)) Q:SUB="" D
  1. .S IC=IC+1,ARRAY(IC)=$J("",LEVEL)_^UTILITY($J,"W",0,SUB,0)
  1. K ^UTILITY($J,"W")
  1. Q
  1. ;
  1. ;Get list of sub-categories
  1. ;--------------------------
  1. GETLST(D0,D1,LEVEL) ;
  1. N CHILD,DATA,NAME,PXRMIEN,PXRMCAT,PXRMSEQ,SEQ,SUB,TEMP
  1. ;Determine if this subcategory has children
  1. S DATA=$G(^PXRMD(811.7,D0,10,D1,0)) Q:DATA=""
  1. S PXRMCAT=$P(DATA,U) Q:PXRMCAT=""
  1. S PXRMSEQ=$P(DATA,U,2),NAME=$G(^PXRMD(811.7,PXRMCAT,0))
  1. I NAME="" S NAME=PXRMCAT
  1. I LEVEL=0 S IC=IC+1,ARRAY(IC)=""
  1. S IC=IC+1,ARRAY(IC)=$J("",LEVEL)_"Sub-category:"_NAME
  1. S ARRAY(IC)=ARRAY(IC)_$J("",38-$L(NAME))_" Sequence: "_PXRMSEQ
  1. ;Increment tab
  1. S LEVEL=LEVEL+5
  1. ;Don't allow > 4 levels
  1. I LEVEL>20 S IC=IC+1,ARRAY(IC)=$J("",LEVEL)_"Further levels" Q
  1. ;Save details of reminders for this category
  1. D REM
  1. ;Sort Sub-categories into display order
  1. D SORT(PXRMCAT,.TEMP)
  1. ;
  1. ;Process sub-sub categories in the same manner
  1. S SEQ=""
  1. F S SEQ=$O(TEMP(SEQ)) Q:SEQ="" D
  1. .S SUB=TEMP(SEQ)
  1. .D GETLST(PXRMCAT,SUB,LEVEL)
  1. Q
  1. ;
  1. ;Reminders for this category
  1. ;---------------------------
  1. REM S SUB=0 K TEMP
  1. ;Sort Reminders from this category into display sequence
  1. F S SUB=$O(^PXRMD(811.7,PXRMCAT,2,SUB)) Q:SUB="" D
  1. .S DATA=$G(^PXRMD(811.7,PXRMCAT,2,SUB,0)) Q:DATA=""
  1. .S PXRMIEN=$P(DATA,U) Q:PXRMIEN=""
  1. .S SEQ=$P(DATA,U,2)
  1. .S DATA=$G(^PXD(811.9,PXRMIEN,0)) Q:DATA=""
  1. .S NAME=$P(DATA,U) I NAME="" S NAME="Unknown"
  1. .S TEMP(SEQ_0)=NAME
  1. ;
  1. I LEVEL=0,$O(TEMP("")) S IC=IC+1,ARRAY(IC)=""
  1. ;
  1. ;Re-save reminders in output array for display
  1. S SEQ=""
  1. F S SEQ=$O(TEMP(SEQ)) Q:SEQ="" D
  1. .S IC=IC+1
  1. .S ARRAY(IC)=$J("",LEVEL)_"Sequence: "_$J(SEQ/10,2)_" Reminder: "_TEMP(SEQ)
  1. Q
  1. ;
  1. ;Sort Sub-Categories for this category into display order
  1. ;--------------------------------------------------------
  1. SORT(PXRMCAT,TEMP) ;
  1. N DATA,SEQ,SUB
  1. S SUB=0 K TEMP
  1. F S SUB=$O(^PXRMD(811.7,PXRMCAT,10,SUB)) Q:SUB="" D
  1. .S DATA=$G(^PXRMD(811.7,PXRMCAT,10,SUB,0)) Q:DATA=""
  1. .S SEQ=$P(DATA,U,2),TEMP(SEQ)=SUB
  1. Q