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

PXRMDEDX.m

Go to the documentation of this file.
  1. PXRMDEDX ;SLC/PJH - Delete dialog components ;12/12/2001
  1. ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
  1. ;
  1. ;=====================================================================
  1. ;
  1. ;Yes/No Prompts
  1. ;--------------
  1. ASK(YESNO,TEXT,HELP) ;
  1. W !
  1. N DIR,X,Y
  1. K DIROUT,DIRUT,DTOUT,DUOUT
  1. S DIR(0)="YA0"
  1. M DIR("A")=TEXT
  1. S DIR("B")="Y"
  1. S DIR("?")="Enter Y or N. For detailed help type ??"
  1. S DIR("??")=U_"D HLP^PXRMDEDX(HELP)"
  1. D ^DIR K DIR
  1. I $D(DIROUT) S DTOUT=1
  1. I $D(DTOUT)!($D(DUOUT)) Q
  1. S YESNO=$E(Y(0))
  1. Q
  1. ;
  1. ;Give option to delete all descendents
  1. ;-------------------------------------
  1. DELETE(COMP) ;
  1. N ANS,HLP,DIEN,DNAM,DTYP,IC,TEXT
  1. ;Parent name and type
  1. S DNAM=$P(COMP(0),U),DTYP=$P(COMP(0),U,2)
  1. ;Prompt information
  1. I DTYP="R" D
  1. .S TEXT(1)="Reminder dialog "_DNAM_" had unused components."
  1. .S TEXT="Delete all these components:"
  1. I DTYP="G" D
  1. .S TEXT(1)="Dialog group "_DNAM_" had unused elements or prompts."
  1. .S TEXT="Delete all these components:"
  1. I DTYP="E" D
  1. .S TEXT(1)="Deleted dialog element "_DNAM_" had unused prompts."
  1. .S TEXT="Delete all these components:"
  1. ;List component names
  1. S IC=2,DIEN=0,TEXT(2)="",HLP=1
  1. F S DIEN=$O(COMP(DIEN)) Q:'DIEN D Q:IC>15
  1. .S IC=IC+1 I IC>15 S TEXT(IC)="<<more>>" Q
  1. .N DTYP
  1. .S DTYP=$P(COMP(DIEN),U,2)
  1. .S DTYP=$S(DTYP="E":"element",DTYP="G":"group",1:"prompt")
  1. .S TEXT(IC)=$P(COMP(DIEN),U)_$J("",5)_DTYP
  1. S TEXT(IC+1)=""
  1. ;Ask Delete Y/N?
  1. D ASK(.ANS,.TEXT,HLP) Q:$G(ANS)'="Y"
  1. ;Use DIK to remove all unused components
  1. N DA,DIK
  1. S DIEN=0
  1. ;Scan list of unused components
  1. F S DIEN=$O(COMP(DIEN)) Q:'DIEN D
  1. .;Delete component dialog
  1. .S DA=DIEN,DIK="^PXRMD(801.41," D ^DIK
  1. Q
  1. ;
  1. ;Build list of components
  1. ;------------------------
  1. COMP(PXRMDIEN,COMP) ;
  1. ;Build list of components
  1. D COMPR(PXRMDIEN,.COMP) Q:'$D(COMP)
  1. ;Get reminder dialog, group or element name and type
  1. N DDATA
  1. S DDATA=$G(^PXRMD(801.41,PXRMDIEN,0))
  1. ;Save for future use
  1. S COMP(0)=$P(DDATA,U)_U_$P(DDATA,U,4)
  1. Q
  1. ;
  1. ;Recursive call
  1. ;--------------
  1. COMPR(PXRMDIEN,COMP) ;
  1. N DIEN,DNAME,DNODE,DTYP,PARENT,SUB
  1. S DIEN=0,PARENT="LOCAL"
  1. ;Check if parent is national
  1. I $P($G(^PXRMD(801.41,PXRMDIEN,100)),U)="N" S PARENT="NATIONAL"
  1. ;
  1. F S DIEN=$O(^PXRMD(801.41,PXRMDIEN,10,"D",DIEN)) Q:'DIEN D
  1. .;Ignore national components
  1. .I $P($G(^PXRMD(801.41,DIEN,100)),U)="N",PARENT'="NATIONAL" Q
  1. .;Ignore if in use
  1. .I $$USED(DIEN,PXRMDIEN) Q
  1. .;Save component dialog type and name
  1. .S DNODE=$G(^PXRMD(801.41,DIEN,0)),DNAME=$P(DNODE,U),DTYP=$P(DNODE,U,4)
  1. .S COMP(DIEN)=DNAME_U_DTYP
  1. .;For groups and element check sub-components
  1. .I (DTYP="G")!(DTYP="E") D COMPR(DIEN,.COMP)
  1. Q
  1. ;
  1. ;Check if in use
  1. ;---------------
  1. USED(DIEN,PXRMDIEN) ;
  1. N SUB,DINUSE
  1. S SUB=0,DINUSE=0
  1. F S SUB=$O(^PXRMD(801.41,"AD",DIEN,SUB)) Q:'SUB D Q:DINUSE
  1. .;In use by other than parent
  1. .I SUB'=PXRMDIEN S DINUSE=1
  1. Q DINUSE
  1. ;
  1. ;General help text routine.
  1. ;--------------------------
  1. HLP(CALL) ;
  1. N HTEXT
  1. N DIWF,DIWL,DIWR,IC
  1. S DIWF="C75",DIWL=0,DIWR=75
  1. ;
  1. I CALL=1 D
  1. .S HTEXT(1)="Enter 'Yes' to DELETE all sub-components listed above"
  1. .S HTEXT(2)="or enter 'No' to quit."
  1. K ^UTILITY($J,"W")
  1. S IC=""
  1. F S IC=$O(HTEXT(IC)) Q:IC="" D
  1. . S X=HTEXT(IC)
  1. . D ^DIWP
  1. W !
  1. S IC=0
  1. F S IC=$O(^UTILITY($J,"W",0,IC)) Q:IC="" D
  1. . W !,^UTILITY($J,"W",0,IC,0)
  1. K ^UTILITY($J,"W")
  1. W !
  1. Q