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

PXRMDUTL.m

Go to the documentation of this file.
  1. PXRMDUTL ; SLC/AGP - DIALOG UTILITIES. ;04/10/2013
  1. ;;2.0;CLINICAL REMINDERS;**24,26**;Feb 04, 2005;Build 404
  1. Q
  1. ;
  1. ;==========================================
  1. ALLOWDEL(IEN) ; check to see if the item can be deleted
  1. N CLASS,TYPE
  1. S TYPE=$P($G(^PXRMD(801.41,IEN,0)),U,4)
  1. S CLASS=$P($G(^PXRMD(801.41,IEN,100)),U)
  1. I (CLASS="N")&((TYPE="P")!(TYPE="F")) Q 0
  1. Q 1
  1. ;
  1. DELD(DIEN) ; delete the dialog item
  1. N ARRAY,CNT,DARRAY,DA,DIK,PXRMINST
  1. S CNT=0
  1. D DITEMAR(DIEN,.ARRAY,.DARRAY,.CNT)
  1. S PXRMINST=1
  1. S DIK="^PXRMD(801.41,"
  1. S CNT="" F S CNT=$O(ARRAY(CNT),-1) Q:CNT="" D
  1. .S DA=$O(ARRAY(CNT,"")) Q:DA'>0
  1. .I $$ALLOWDEL(DA)=0 Q
  1. .D ^DIK
  1. Q
  1. ;
  1. ; builds an array of items beneath the dialog item, lowest item first.
  1. DITEMAR(DIEN,ARRAY,DARRAY,DCNT) ;
  1. ; DIEN is the IEN of the dialog top level
  1. ; Array contains the dialog elements and groups within the dialog.
  1. N CNT,IEN,REPIEN,TYPE
  1. S CNT=0 F S CNT=$O(^PXRMD(801.41,DIEN,10,CNT)) Q:CNT'>0 D
  1. .S IEN=$P($G(^PXRMD(801.41,DIEN,10,CNT,0)),U,2) Q:IEN'>0
  1. .S REPIEN=$P($G(^PXRMD(801.41,IEN,49)),U,3)
  1. .I REPIEN>0 D DITEMAR(REPIEN,.ARRAY,.DARRAY,.DCNT)
  1. .S TYPE=$P($G(^PXRMD(801.41,IEN,0)),U,4)
  1. .I TYPE="G"!(TYPE="E") D DITEMAR(IEN,.ARRAY,.DARRAY,.DCNT)
  1. .I '$D(DARRAY(IEN)) S DARRAY(IEN)="",DCNT=DCNT+1,ARRAY(DCNT,IEN)=""
  1. I '$D(DARRAY(DIEN)) S DARRAY(DIEN)="",DCNT=DCNT+1,ARRAY(DCNT,DIEN)=""
  1. Q
  1. ;
  1. DMAKENAT(DA) ; sets the class field and renamed to the correct national format
  1. N CLASS,DIE,DR,IEN,NAME,NEWNAME,PREFIX,TYPE
  1. S NAME=$P($G(^PXRMD(801.41,DA,0)),U)
  1. I $E(NAME,1,3)="VA-"!($E(NAME,1,4)="PXRM") Q
  1. S CLASS="N"
  1. S DIE="^PXRMXD(801.41,"
  1. S DR="100////^S X=CLASS"
  1. D ^DIE
  1. S TYPE=$P($G(^PXRMD(801.41,DA,0)),U,4)
  1. S PREFIX=$S(TYPE="R":"VA-",TYPE="G":"VA-",TYPE="E":"VA-",1:"PXRM ")
  1. S NEWNAME=PREFIX_NAME
  1. D RENAME^PXRMUTIL(801.41,NAME,NEWNAME)
  1. Q
  1. ;
  1. ;=============================================================
  1. ; Build an array of findings for dialog types
  1. ; Input a string of characters for the dialog type field.
  1. ; example "EGS" = search element, groups, result groups
  1. ; Output an array by finding types, Finding IEN, Dialog IEN, "F" or "A"
  1. ; example OUT("AUTTHF(",608,631,"F")=""
  1. FARRAY(OUTPUT,TYPES) ;
  1. N AFIEN,AFIND,DIEN,FIND,NODE,OI,TYPE,X
  1. F X=1:1:$L(TYPES) S TYPE=$E(TYPES,X) D
  1. .S DIEN=""
  1. .F S DIEN=$O(^PXRMD(801.41,"TYPE",TYPE,DIEN)) Q:DIEN'>0 D
  1. ..I TYPE="S" D Q
  1. ...S FIND=$P($G(^PXRMD(801.41,DIEN,50)),U)
  1. ...I FIND'="" D SETGBL(.OUTPUT,DIEN,FIND_";YTT(601.71,","RG",0)
  1. ..S NODE=$G(^PXRMD(801.41,DIEN,1))
  1. ..S FIND=$P(NODE,U,5),OI=$P(NODE,U,7)
  1. ..I FIND'="" D SETGBL(.OUTPUT,DIEN,FIND,"F",0)
  1. ..I OI'="" D SETGBL(.OUTPUT,DIEN,OI_";ORD(101.43,","O",0)
  1. ..S AFIND=""
  1. ..F S AFIND=$O(^PXRMD(801.41,DIEN,3,"B",AFIND)) Q:AFIND="" D
  1. ...S AFIEN=$O(^PXRMD(801.41,DIEN,3,"B",AFIND,""))
  1. ...D SETGBL(.OUTPUT,DIEN,AFIND,"A",AFIEN)
  1. Q
  1. ;
  1. RTAXNAME(NAME) ;
  1. I '$D(^PXD(811.2,"B",NAME)) Q NAME
  1. N CNT,FOUND,RESULT,TEMP
  1. S TEMP=NAME,CNT=0
  1. I $L(NAME)>64 S TEMP=$E(NAME,1,60)
  1. S TEMP=TEMP_"*"
  1. I '$D(^PXD(811.2,"B",TEMP)) Q TEMP
  1. S FOUND=0
  1. F D Q:FOUND=1
  1. .S CNT=CNT+1
  1. .I '$D(^PXD(811.2,"B",TEMP_CNT)) S RESULT=TEMP_CNT,FOUND=1
  1. Q RESULT
  1. ;
  1. SETGBL(ARRAY,DIEN,VARP,LOC,IEN) ;
  1. N FIEN,GBL
  1. S GBL=$P(VARP,";",2),FIEN=$P(VARP,";")
  1. I LOC="A" S ARRAY(GBL,FIEN,DIEN,LOC,IEN)="" Q
  1. S ARRAY(GBL,FIEN,DIEN,LOC)=""
  1. Q
  1. ;
  1. NATCONV(DIEN) ; entry point to convert a local dialog to a national dialog
  1. N ARRAY,IEN
  1. D DITEMAR(DIEN,.ARRAY)
  1. S IEN=0 F S IEN=$O(ARRAY(IEN)) Q:IEN'>0 D
  1. .D DMAKENAT(IEN)
  1. D DMAKENAT(DIEN)
  1. Q
  1. ;