Ignore:
Timestamp:
Dec 4, 2009, 8:26:01 PM (14 years ago)
Author:
George Lilly
Message:

WorldVistAEHR overlayed on FOIAVistA

Location:
FOIAVistA/tag/r
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMEXLD.m

    r628 r636  
    1 PXRMEXLD ;SLC/PJH - Reminder Dialog Exchange Main Routine. ;08/07/2007
    2  ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
    3  ;
     1PXRMEXLD ;SLC/PJH - Reminder Dialog Exchange Main Routine. ;7/01/2004
     2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
     3 ;
     4 ;=====================================================================
    45START N PXRMBG,PXRMMODE,VALMBCK,VALMBG,VALMCNT,VALMSG,X,XMZ
    56 S X="IORESET"
    67 D EN^VALM("PXRM EX LIST DIALOG")
     8 ;
    79 ;Rebuild Display
    810 D CDISP^PXRMEXLC(PXRMRIEN)
    911 Q
    1012 ;
    11 ENTRY ; Entry point for List Manager
    12  D FIND Q
    13  ;
    14 DETAIL ;Detailed display
    15  S PXRMMODE=0 D DISP(PXRMMODE) Q
    16  ;
    17 FIND ;Display findings
    18  S PXRMMODE=2 D DISP(PXRMMODE) Q
    19  ;
    20 SUM ;Display dialog summary
    21  S PXRMMODE=3 D DISP(PXRMMODE) Q
    22  ;
    23 USE ;Display dialog usage
    24  S PXRMMODE=4 D DISP(PXRMMODE) Q
    25  ;
    26 TEXT ;Display dialog text
    27  S PXRMMODE=1 D DISP(PXRMMODE) Q
    28  ;
    29 EXIT ;
     13ENTRY D FIND Q
     14 ;
     15DETAIL S PXRMMODE=0 D DISP(PXRMMODE) Q
     16 ;
     17 ;Display Findings
     18 ;--------------------------
     19FIND S PXRMMODE=2 D DISP(PXRMMODE) Q
     20 ;
     21 ;Display Dialog Summary
     22 ;----------------------
     23SUM S PXRMMODE=3 D DISP(PXRMMODE) Q
     24 ;
     25 ;Display Dialog Usage
     26 ;--------------------
     27USE S PXRMMODE=4 D DISP(PXRMMODE) Q
     28 ;
     29 ;Display Dialog Text
     30 ;-------------------
     31TEXT S PXRMMODE=1 D DISP(PXRMMODE) Q
     32 ;
     33EXIT K ^TMP("PXRMEXLD",$J) Q
     34 ;
     35PEXIT ;PXRM EXCH DIALOG MENU protocol exit code
     36 S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
     37 ;Reset after page up/down etc
     38 D XQORM
     39 Q
     40 ;
     41HELP N ORU,ORUPRMT,XQORM,PXRMTAG S PXRMTAG="DLG"
     42 D EN^VALM("PXRM EX DIALOG HELP")
     43 Q
     44 ;
     45HDR S VALMHDR(1)="Packed reminder dialog: "
     46 S VALMHDR(1)=VALMHDR(1)_$G(^TMP("PXRMEXTMP",$J,"PXRMDNAM"))
     47 I $D(^TMP("PXRMEXTMP",$J,"PXRMDNAT")) D
     48 .S VALMHDR(1)=VALMHDR(1)_" [NATIONAL DIALOG]"
     49 S VALMHDR("TITLE")=VALMHDR(1)
     50 S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
     51 Q
     52 ;
     53 ;Build list manager workfile from ^TMP("PXRMEXTMP" (see ^PXRMEXLB)
     54DISP(VIEW) ;
     55 N OLEV,ODSEQ
    3056 K ^TMP("PXRMEXLD",$J)
    31  Q
    32  ;
    33 DISP(VIEW) ;Build the requested view and display it.
    34  D BLDDISP^PXRMEXD1(VIEW)
     57 K PXRMEXRP
     58 K ^TMP($J,"PXRMEXREP")
     59 N DDATA,DDLG,DEND,DREP,DSTRT,IND,JND,NLINE,NSEL
     60 S NLINE=0,NSEL=0,VALMBCK="R",VALMCNT=NLINE
     61 S DDLG=$G(^TMP("PXRMEXTMP",$J,"PXRMDNAM")) Q:DDLG=""
     62 ;
     63 ;Save reminder dialog
     64 S DDATA=^TMP("PXRMEXTMP",$J,"DLOC",DDLG)
     65 S DSTRT=$P(DDATA,U,1),DEND=$P(DDATA,U,2)
     66 S IND=$P(DDATA,U,3),JND=$P(DDATA,U,4),DREP=""
     67 D DLINE(DDLG,"","")
     68 S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     69 S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     70 ;Process componentS
     71 D DCMP(DDLG,"")
     72 ;Process replacement elements
     73 ;I $D(^TMP("PXRMEXTMP",$J,"DREPL"))>0 D DREPL^PXRMEXLC
     74 I $D(PXRMEXRP)>0 D DREPL^PXRMEXLC
    3575 ;Change header
    3676 I VIEW=0 D CHGCAP^VALM("HEADER2","Dialog Details")
     
    3979 I VIEW=3 D CHGCAP^VALM("HEADER2","Dialog Summary")
    4080 I VIEW=4 D CHGCAP^VALM("HEADER2","Dialog Usage")
    41  S VALMCNT=^TMP("PXRMEXLD",$J,"VALMCNT"),VALMBG=1,VALMBCK="R"
     81 ;
     82 S VALMCNT=NLINE,^TMP("PXRMEXLD",$J,"VALMCNT")=VALMCNT,VALMBG=1
     83 ;
     84 K ^TMP($J,"PXRMEXREP"),PXRMEXRP
    4285 ;Reset protocol
    4386 D XQORM
    4487 Q
    4588 ;
    46 HELP ;
    47  N ORU,ORUPRMT,XQORM,PXRMTAG
    48  S PXRMTAG="DLG"
    49  D EN^VALM("PXRM EX DIALOG HELP")
    50  Q
    51  ;
    52 HDR ;
    53  S VALMHDR(1)="Packed reminder dialog: "
    54  S VALMHDR(1)=VALMHDR(1)_$G(^TMP("PXRMEXTMP",$J,"PXRMDNAM"))
    55  I $D(^TMP("PXRMEXTMP",$J,"PXRMDNAT")) S VALMHDR(1)=VALMHDR(1)_" [NATIONAL DIALOG]"
    56  S VALMHDR("TITLE")=VALMHDR(1)
    57  S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
    58  Q
    59  ;
    60 PEXIT ;PXRM EXCH DIALOG MENU protocol exit code
    61  S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
    62  ;Reset after page up/down etc
    63  D XQORM
    64  Q
    65  ;
    66 VALID(STRING) ;Validate sequence numbers
     89 ;Update workfile
     90DLINE(DNAM,LEV,DSEQ) ;
     91 ;Check if standard PXRM prompt
     92 N LEVSEQ,TLEV
     93 N DPXRM S DPXRM=$$PXRM^PXRMEXID(DNAM)
     94 ;
     95 ;Ignore PXRM prompts if doing a finding view (DF)
     96 I VIEW>1,DPXRM Q
     97 ;
     98 N DEXIST,DPTX,DTXT,DTYP,EXIST,ITEM,TEMP,SEP
     99 S ITEM=""
     100 I DPXRM=0 S NSEL=NSEL+1,ITEM=NSEL
     101 S NLINE=NLINE+1,SEP=$E(LEV,$L(LEV)),DEXIST=0
     102 S LEVSEQ=LEV_DSEQ
     103 S TEMP=$J(ITEM,3)_$J("",4)_LEV_DSEQ
     104 ;Determine type
     105 S DTYP=$G(^TMP("PXRMEXTMP",$J,"DTYP",DNAM))
     106 ;Dialog component display
     107 I (VIEW'=1) D
     108 .I $L(TEMP)<13 S TEMP=TEMP_$J("",12+$L(SEP)-$L(TEMP))_$E(DNAM,1,50)
     109 .E  S TEMP=TEMP_" "_$E(DNAM,1,50)
     110 I VIEW=1 D
     111 .I DTYP]"" S DTXT=$G(^TMP("PXRMEXTMP",$J,"DTXT",DNAM))
     112 .I DTYP="" S DTXT=DNAM
     113 .I DREP'="" S DTXT=DNAM
     114 .I $L(TEMP)<13 S TEMP=TEMP_$J("",12+$L(SEP)-$L(TEMP))_$E(DTXT,1,50)
     115 .E  S TEMP=TEMP_" "_$E(DTXT,1,50)
     116 ;Check for replacements
     117 I $D(^TMP("PXRMEXTMP",$J,"DREPL",DNAM))>0 D
     118 .S TEMP=TEMP_"*"
     119 .S TLEV=$S($E(LEVSEQ,$L(LEVSEQ))=".":$E(LEVSEQ,1,$L(LEVSEQ)-1),1:LEVSEQ)
     120 .S PXRMEXRP(DNAM)=""
     121 .;S ^TMP($J,"PXRMEXREP",TLEV,DNAM)=""
     122 ;Add Type
     123 S TEMP=TEMP_$J("",65-$L(TEMP))_DTYP
     124 ;Exists flag
     125 I DPXRM=0,$$EXISTS^PXRMEXIU(801.41,DNAM) D
     126 .S TEMP=TEMP_$J("",75-$L(TEMP))_"X",DEXIST=1
     127 S ^TMP("PXRMEXLD",$J,NLINE,0)=TEMP
     128 ;
     129 ;Set up selection index
     130 S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)="" Q:DPXRM=1
     131 ;Store the file number, start and stop line in the exchange file.
     132 S ^TMP("PXRMEXLD",$J,"SEL",NSEL)=FILENUM_U_DSTRT_U_DEND_U_DEXIST_U_IND_U_JND
     133 ;Insert additional text lines
     134 I VIEW=1,DREP="" D
     135 .N DSUB,DTXT,FILENUM
     136 .S DSUB=0,FILENUM=8927.1
     137 .F  S DSUB=$O(^TMP("PXRMEXTMP",$J,"DTXT",DNAM,DSUB)) Q:'DSUB  D
     138 ..S DTXT=$G(^TMP("PXRMEXTMP",$J,"DTXT",DNAM,DSUB)),NLINE=NLINE+1
     139 ..S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_$E(DTXT,1,50)
     140 ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     141 .;TIU template changes
     142 .I $D(PXRMNMCH(FILENUM)),$D(^TMP("PXRMEXTMP",$J,"DTIU",DNAM)) D
     143 ..N TEMP,TNAM,TNNAM
     144 ..S TNAM=""
     145 ..F  S TNAM=$O(^TMP("PXRMEXTMP",$J,"DTIU",DNAM,TNAM)) Q:TNAM=""  D
     146 ...S TNNAM=$G(PXRMNMCH(FILENUM,TNAM)) Q:TNNAM=""
     147 ...S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     148 ...S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     149 ...S TEMP=$J("",12+$L(SEP))_"(TIU template "_TNAM_" copied to "_TNNAM_")"
     150 ...S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=TEMP
     151 ...S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     152 ...S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     153 ...S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     154 ;Insert finding items
     155 I VIEW=2,("element;group"[DTYP),DREP="" D
     156 .N DSUB,FDATA,FILENUM,FLIT,FLONG,FNAME,FOUND,FREP,FTAB,FTYP,TEMP
     157 .;Findings and additional findings
     158 .S DSUB=0,FOUND=0
     159 .F  S DSUB=$O(^TMP("PXRMEXTMP",$J,"DFND",DNAM,DSUB)) Q:'DSUB  D
     160 ..S FNAME=$G(^TMP("PXRMEXTMP",$J,"DFND",DNAM,DSUB)) Q:FNAME=""
     161 ..S FDATA=$G(^TMP("PXRMEXFND",$J,FNAME))
     162 ..S FILENUM=$P(FDATA,U),FTYP=$P(FDATA,U,2) Q:'FILENUM
     163 ..S FREP=$G(PXRMNMCH(FILENUM,FNAME)) I FREP=FNAME S FREP=""
     164 ..S NLINE=NLINE+1,EXIST=$$EXISTS^PXRMEXIU(FILENUM,FNAME),FOUND=1
     165 ..I DSUB=1 S FLIT="Finding: "
     166 ..I DSUB>1 S FLIT="Add. Finding: "
     167 ..S FLONG=0 I $L(FLIT_FNAME_" ("_FTYP_")")>60 S FLONG=1
     168 ..I 'FLONG S FNAME=FLIT_FNAME_" ("_FTYP_")"
     169 ..I FLONG S FNAME=FLIT_FNAME
     170 ..S TEMP=$J("",12+$L(SEP))_$E(FNAME,1,60)_$J("",60-$L(FNAME))
     171 ..I EXIST S TEMP=TEMP_$J("",75-$L(TEMP))_"X"
     172 ..S ^TMP("PXRMEXLD",$J,NLINE,0)=TEMP
     173 ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     174 ..I FLONG D
     175 ...S NLINE=NLINE+1
     176 ...S FTAB=$S(DSUB=1:21,1:26)
     177 ...S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",FTAB)_"("_FTYP_")"
     178 ...S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     179 ..I FREP'="" D
     180 ...S NLINE=NLINE+1
     181 ...S FTAB=$S(DSUB=1:21,1:26)
     182 ...S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",FTAB)_"(Replaced by "_FREP_")"
     183 ...S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     184 .;If no findings
     185 .I 'FOUND D
     186 ..S NLINE=NLINE+1
     187 ..S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_"Finding: *NONE*"
     188 ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     189 ;
     190 ;Usage screen
     191 I VIEW=4,DREP="" D
     192 .N DOTHER,DTXT,DTYPE,OTHER,TYPE
     193 .D OTHER(DNAM,.DOTHER) Q:'$D(DOTHER)
     194 .S OTHER=""
     195 .F  S OTHER=$O(DOTHER(OTHER)) Q:OTHER=""  D
     196 ..S TYPE=DOTHER(OTHER),NLINE=NLINE+1,DTYPE="REMINDER DIALOG"
     197 ..I TYPE="G" S DTYPE="DIALOG GROUP"
     198 ..I TYPE="E" S DTYPE="DIALOG ELEMENT"
     199 ..S DTXT="USED BY: "_OTHER_" ("_DTYPE_")"
     200 ..S ^TMP("PXRMEXLD",$J,NLINE,0)=$J("",12+$L(SEP))_DTXT
     201 ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     202 Q
     203 ;
     204 ;Save details of dialog components for display
     205DCMP(DLG,LEV) ;
     206 N DDATA,DDLG,DEND,DNAM,DSEQ,DSTRT,IND,JND,LAST,LEVSEQ,NUM
     207 S DSEQ=0,LAST=0
     208 F  S DSEQ=$O(^TMP("PXRMEXTMP",$J,"DMAP",DLG,DSEQ)) Q:'DSEQ  D
     209 .S DDATA=^TMP("PXRMEXTMP",$J,"DMAP",DLG,DSEQ)
     210 .S DNAM=$P(DDATA,U),DSTRT=$P(DDATA,U,2),DEND=$P(DDATA,U,3) Q:DNAM=""
     211 .S IND=$P(DDATA,U,4),JND=$P(DDATA,U,5)
     212 .;Check if this component has been replaced
     213 .S DREP=$G(PXRMNMCH(FILENUM,DNAM)) I DREP=DNAM S DREP=""
     214 .;Save line in workfile
     215 .S NUM=DSEQ
     216 .;S NUM=$S($G(REPL)["R":"."_DSEQ,1:DSEQ)
     217 .I +LEV>0,NUM>0,$E(LEV,$L(LEV))'="." S LEV=LEV_"."
     218 .D DLINE(DNAM,LEV,NUM) Q:DREP'=""
     219 .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAM)) D DCMP(DNAM,LEV_DSEQ_".")
     220 .;Extra line feed
     221 .I LEV="" D
     222 ..S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     223 ..S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     224 I $G(REPL)["R" D
     225 .S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     226 .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     227 Q
     228 ;
     229 ;Rebuild string in ascending or descending order
     230ORDER(STRING,ORDER) ;
     231 N ARRAY,ITEM,CNT
     232 F CNT=1:1 S ITEM=$P(STRING,",",CNT) Q:'ITEM  S ARRAY(ITEM)=""
     233 K STRING
     234 F CNT=1:1 S ITEM=$O(ARRAY(ITEM),ORDER) Q:'ITEM  D
     235 .S $P(STRING,",",CNT)=ITEM
     236 Q
     237 ;
     238 ;Check if used by other dialogs
     239OTHER(NAME,LIST) ;
     240 N DDATA,DIEN,DNAME,DTYP,IEN
     241 S IEN=$O(^PXRMD(801.41,"B",NAME,0)) Q:'IEN
     242 ;Check if used by other dialogs
     243 I '$D(^PXRMD(801.41,"AD",IEN)) Q
     244 ;Build list of dialogs using this component
     245 S DIEN=0
     246 F  S DIEN=$O(^PXRMD(801.41,"AD",IEN,DIEN)) Q:'DIEN  D
     247 .S DDATA=$G(^PXRMD(801.41,DIEN,0)) Q:DDATA=""
     248 .S DNAME=$P(DDATA,U),DTYP=$P(DDATA,U,4) Q:DNAME=""
     249 .;Include only dialogs that are not part of this reminder dialog
     250 .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAME)) Q
     251 .S LIST(DNAME)=DTYP
     252 Q
     253 ;
     254 ;Validate sequence numbers
     255VALID(STRING) ;
    67256 N CNT,FOUND,OK
    68257 S FOUND=0,OK=1
     
    86275 ;
    87276 ;Sort the SELECTION into reverse order
    88  D ORDER^PXRMEXLC(.SELECT,-1)
     277 D ORDER(.SELECT,-1)
    89278 ;
    90279 ;Lock the file
     
    99288 D UNLOCK^PXRMEXID
    100289 ;
     290 ;
    101291 ;Rebuild Workfile
    102292 D DISP^PXRMEXLD(PXRMMODE)
Note: See TracChangeset for help on using the changeset viewer.