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

PXRMEXDB.m

Go to the documentation of this file.
  1. PXRMEXDB ;SLC/PKR,AGP - Build List Manager dialog display. ;08/16/2018
  1. ;;2.0;CLINICAL REMINDERS;**6,12,42**;Feb 04, 2005;Build 245
  1. ;
  1. ;======================================
  1. BLDDISP(VIEW) ;Build ListMan array. Information about the dialog is passed
  1. ;in ^TMP("PXRMEXTMP",$J) which is built by PXRMEXLB which is
  1. ;called by CDISP^PXRMEXLC.
  1. N DNAME,NLINE,NSEL
  1. S DNAME=$G(^TMP("PXRMEXTMP",$J,"PXRMDNAME")) Q:DNAME=""
  1. K ^TMP("PXRMEXLD",$J)
  1. S (NLINE,NSEL)=0
  1. ;Save reminder dialog
  1. D DLINE(DNAME,VIEW,.NLINE,DNAME,"","","")
  1. S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=""
  1. S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. ;Process components
  1. D DCMP(DNAME,VIEW,.NLINE,DNAME,"",0)
  1. ;Process replacement elements
  1. I $D(^TMP("PXRMEXTMP",$J,"DREPL",DNAME))>0 D DREPL(DNAME,VIEW,.NLINE)
  1. S ^TMP("PXRMEXLD",$J,"VALMCNT")=NLINE
  1. Q
  1. ;
  1. ;======================================
  1. CHKREPL(DIALNAM,DLG) ;
  1. N CNT,RESULT
  1. S (CNT,RESULT)=0
  1. F S CNT=$O(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM,CNT)) Q:CNT'>0!(RESULT>0) D
  1. .I DLG=$O(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM,CNT,"")) S RESULT=CNT Q
  1. Q RESULT
  1. ;
  1. ;======================================
  1. DCMP(DIALNAM,VIEW,NLINE,DLG,LEV,INREPL) ;Save details of dialog components for display
  1. N DNAME,DREP,DSEQ,LAST,NUM
  1. S (DSEQ,LAST)=0
  1. I INREPL,$D(^TMP("PXRMEXTMP",$J,"DREPL ITEMS",DLG)) D
  1. .S DNAME="" F S DNAME=$O(^TMP("PXRMEXTMP",$J,"DREPL ITEMS",DLG,DNAME)) Q:DNAME="" D
  1. ..S DREP=$G(PXRMNMCH(FILENUM,DNAME)) I DREP=DNAME S DREP=""
  1. ..D DLINE(DIALNAM,VIEW,.NLINE,DNAME,LEV,"",DREP)
  1. ..D DCMP(DIALNAM,VIEW,.NLINE,DNAME,LEV,INREPL)
  1. F S DSEQ=$O(^TMP("PXRMEXTMP",$J,"DMAP",DLG,DSEQ)) Q:'DSEQ D
  1. .S DNAME=$P(^TMP("PXRMEXTMP",$J,"DMAP",DLG,DSEQ),U,1) Q:DNAME=""
  1. .;Check if this component has been replaced
  1. .S DREP=$G(PXRMNMCH(FILENUM,DNAME)) I DREP=DNAME S DREP=""
  1. .;Save line in workfile
  1. .S NUM=DSEQ
  1. .I +LEV>0,NUM>0,$E(LEV,$L(LEV))'="." S LEV=LEV_"."
  1. .D DLINE(DIALNAM,VIEW,.NLINE,DNAME,LEV,NUM,DREP) Q:DREP'=""
  1. .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAME)) D DCMP(DIALNAM,VIEW,.NLINE,DNAME,LEV_DSEQ_".",INREPL)
  1. .;Extra line feed
  1. .I LEV="" D
  1. ..S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=""
  1. ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. Q
  1. ;
  1. ;======================================
  1. DLINE(DIALNAM,VIEW,NLINE,DNAME,LEV,DSEQ,DREP) ;Update workfile
  1. N DEXIST,DTXT,DTYP,EXIST,FMTSTR,IND,ITEM,LEVSEQ,LINE,NOUT
  1. N SEP,TEMP,TEXTOUT,X
  1. S NSEL=NSEL+1,ITEM=NSEL,NLINE=NLINE+1
  1. S LEVSEQ=LEV_DSEQ,SEP=$E(LEV,$L(LEV))
  1. ;Determine type
  1. S DTYP=$G(^TMP("PXRMEXTMP",$J,"DTYP",DNAME))
  1. I $D(^TMP("PXRMEXDGH",$J,ITEM)) G EXF
  1. S TEMP=ITEM
  1. I (DTYP'["rs")&(DTYP'["prompt")&(DTYP'["forced") S TEMP=TEMP_"^"_LEVSEQ_" "_DNAME
  1. E S TEMP=TEMP_"^"_DNAME
  1. ;Check for replacements
  1. I $D(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM)),$$CHKREPL(DIALNAM,DNAME) S TEMP=TEMP_"*"
  1. ;Add Type
  1. S TEMP=TEMP_"^"_DTYP
  1. ;Dialog component display
  1. S FMTSTR="4R3^52L1^10R1"
  1. D COLFMT^PXRMTEXT(FMTSTR,TEMP," ",.NOUT,.TEXTOUT)
  1. S ^TMP("PXRMEXDGH",$J,ITEM)=NOUT
  1. F IND=1:1:NOUT S ^TMP("PXRMEXDGH",$J,ITEM,IND)=TEXTOUT(IND)
  1. ;
  1. ;Exists flag
  1. EXF S DEXIST=$$EXISTS^PXRMEXIU(801.41,DNAME)
  1. S LINE=^TMP("PXRMEXDGH",$J,ITEM,1)
  1. I DEXIST S LINE=LINE_$J("",76-$L(LINE))_"X"
  1. S ^TMP("PXRMEXLD",$J,NLINE,0)=LINE
  1. ;
  1. ;Set up selection index
  1. S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. S TEMP=^TMP("PXRMEXTMP",$J,"DLOC",DNAME)
  1. ;Store the file number, 100 node start and stop line, 120 node indexes.
  1. S ^TMP("PXRMEXLD",$J,"SEL",NSEL)=801.41_U_TEMP_U_DEXIST_U_DNAME
  1. ;
  1. ;Display any additional lines.
  1. S NOUT=^TMP("PXRMEXDGH",$J,ITEM)
  1. I NOUT>1 F IND=2:1:NOUT S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=^TMP("PXRMEXDGH",$J,ITEM,IND)
  1. ;
  1. ;Insert additional text lines
  1. I VIEW=1,DREP="" D VIEW1(DNAME,.NLINE,NSEL,SEP)
  1. ;
  1. ;Insert finding items
  1. I VIEW=2,("element;group"[DTYP),"rs."'[DTYP,DREP="" D VIEW2(DNAME,.NLINE,NSEL)
  1. ;
  1. ;Usage screen
  1. I VIEW=4,DREP="" D VIEW4(.NLINE,NSEL,SEP)
  1. Q
  1. ;
  1. ;======================================
  1. DREPL(DIALNAM,VIEW,NLINE) ;Build replacement elements/groups for List Man display.
  1. N CNT,DLG,DNAME,DREP,LEV,PXRMEXOR,STR,TEMP
  1. S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=""
  1. S $P(STR,"-",31)=""
  1. S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J(STR_" REPLACEMENT ITEMS "_STR,79)
  1. S (CNT,LEV)=0,CNT=""
  1. F S CNT=$O(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM,CNT),-1) Q:CNT'>0 D
  1. .S DLG=$O(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM,CNT,"")) Q:DLG=""
  1. .S DNAME=$P($G(^TMP("PXRMEXTMP",$J,"DREPL",DIALNAM,CNT,DLG)),U,1) Q:DNAME=""
  1. .I $D(PXRMEXOR(DNAME)) Q
  1. .S PXRMEXOR(DNAME)=""
  1. .;Check if this component has been replaced
  1. .S LEV=LEV+1
  1. .S DREP=$G(PXRMNMCH(FILENUM,DNAME)) I DREP=DNAME S DREP=""
  1. .;Save line in workfile
  1. .S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=""
  1. .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. .D DLINE(DIALNAM,VIEW,.NLINE,DNAME,LEV,"",DREP)
  1. .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAME)) D DCMP(DIALNAM,VIEW,.NLINE,DNAME,LEV,1)
  1. Q
  1. ;
  1. ;======================================
  1. OTHER(NAME,LIST) ;Check if used by other dialogs
  1. N DDATA,DIEN,DNAME,DTYP,IEN
  1. S IEN=$O(^PXRMD(801.41,"B",NAME,0)) Q:'IEN
  1. ;Check if used by other dialogs
  1. I '$D(^PXRMD(801.41,"AD",IEN)) Q
  1. ;Build list of dialogs using this component
  1. S DIEN=0
  1. F S DIEN=$O(^PXRMD(801.41,"AD",IEN,DIEN)) Q:'DIEN D
  1. .S DDATA=$G(^PXRMD(801.41,DIEN,0)) Q:DDATA=""
  1. .S DNAME=$P(DDATA,U),DTYP=$P(DDATA,U,4) Q:DNAME=""
  1. .;Include only dialogs that are not part of this reminder dialog
  1. .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAME)) Q
  1. .S LIST(DNAME)=DTYP
  1. Q
  1. ;
  1. ;======================================
  1. VIEW1(DNAME,NLINE,NSEL,SEP) ;Build the text view.
  1. N DSUB,DTXT,FILENUM
  1. S DTXT=$G(^TMP("PXRMEXTMP",$J,"DTXT",DNAME))
  1. I (DTXT'=""),(DTXT'=DNAME) D
  1. . S NLINE=NLINE+1
  1. . S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_$E(DTXT,1,50)
  1. . S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. S DSUB=0,FILENUM=8927.1
  1. F S DSUB=$O(^TMP("PXRMEXTMP",$J,"DTXT",DNAME,DSUB)) Q:'DSUB D
  1. .S DTXT=$G(^TMP("PXRMEXTMP",$J,"DTXT",DNAME,DSUB)),NLINE=NLINE+1
  1. .S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_$E(DTXT,1,50)
  1. .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. ;TIU template changes
  1. I $D(PXRMNMCH(FILENUM)),$D(^TMP("PXRMEXTMP",$J,"DTIU",DNAME)) D
  1. .N LINE,TNAM,TNNAM
  1. .S TNAM=""
  1. .F S TNAM=$O(^TMP("PXRMEXTMP",$J,"DTIU",DNAME,TNAM)) Q:TNAM="" D
  1. ..S TNNAM=$G(PXRMNMCH(FILENUM,TNAM)) Q:TNNAM=""
  1. ..S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
  1. ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. ..S LINE=$J("",12+$L(SEP))_"(TIU template "_TNAM_" copied to "_TNNAM_")"
  1. ..S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=LINE
  1. ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. ..S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=""
  1. ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. Q
  1. ;
  1. ;======================================
  1. VIEW2(DNAME,NLINE,NSEL) ;Build the finding view.
  1. N DSUB,EXISTS,FDATA,FILENUM,FLIT,FLONG,FMTSTR,FNAME,FOUND
  1. N FTAB,FTYP,IND,LINE,NL,OUTPUT,TEMP
  1. S FMTSTR="12R^60L4^1C"
  1. ;Findings and additional findings
  1. S DSUB=0,FOUND=0
  1. F S DSUB=$O(^TMP("PXRMEXTMP",$J,"DFND",DNAME,DSUB)) Q:'DSUB D
  1. .S FNAME=$G(^TMP("PXRMEXTMP",$J,"DFND",DNAME,DSUB)) Q:FNAME=""
  1. .S FDATA=$G(^TMP("PXRMEXFND",$J,FNAME))
  1. .S FILENUM=$P(FDATA,U),FTYP=$P(FDATA,U,2) Q:'FILENUM
  1. .;S EXIST=$$EXISTS^PXRMEXIU(FILENUM,FNAME),FOUND=1
  1. .S EXIST=$$EXISTS^PXRMEXIU(FILENUM,FNAME,"W"),FOUND=1
  1. .I FOUND D
  1. ..S TEMP=U_$S(DSUB>1:"Add. Finding: ",1:"Finding: ")
  1. ..S TEMP=TEMP_FNAME_" ("_FTYP_")"
  1. ..I EXIST S TEMP=TEMP_U_"X"
  1. .D COLFMT^PXRMTEXT(FMTSTR,TEMP," ",.NL,.OUTPUT)
  1. .F IND=1:1:NL D
  1. .. S NLINE=NLINE+1
  1. .. S ^TMP("PXRMEXLD",$J,NLINE,0)=OUTPUT(IND)
  1. .. S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. ;If no findings
  1. I 'FOUND D
  1. .S NLINE=NLINE+1
  1. .S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12)_"Finding: *NONE*"
  1. .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. Q
  1. ;
  1. ;======================================
  1. VIEW4(DNAME,NLINE,NSEL,SEP) ;Build the usage view.
  1. N DOTHER,DTXT,DTYPE,OTHER,TYPE
  1. D OTHER(DNAME,.DOTHER) Q:'$D(DOTHER)
  1. S OTHER=""
  1. F S OTHER=$O(DOTHER(OTHER)) Q:OTHER="" D
  1. .S TYPE=DOTHER(OTHER),NLINE=NLINE+1,DTYPE="REMINDER DIALOG"
  1. .I TYPE="G" S DTYPE="DIALOG GROUP"
  1. .I TYPE="E" S DTYPE="DIALOG ELEMENT"
  1. .S DTXT="USED BY: "_OTHER_" ("_DTYPE_")"
  1. .S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_DTXT
  1. .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
  1. Q
  1. ;