Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/CLINICAL_REMINDERS-PXRM/PXRMEXLC.m

    r613 r623  
    1 PXRMEXLC        ; SLC/PKR/PJH - Routines to display repository entry components. ;08/03/2007
    2         ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
    3         ;======================================================
    4 BLDLIST(FORCE)  ;Build a list of all repository entries.
    5         ;If FORCE is true then force rebuilding of the list.
    6         I FORCE K ^TMP("PXRMEXLR",$J)
    7         I $D(^TMP("PXRMEXLR",$J,"VALMCNT")) S VALMCNT=^TMP("PXRMEXLR",$J,"VALMCNT")
    8         E  D
    9         . D REXL^PXRMLIST("PXRMEXLR")
    10         . S VALMCNT=^TMP("PXRMEXLR",$J,"VALMCNT")
    11         Q
    12         ;
    13         ;======================================================
    14 CDISP(IEN)      ;Format component list for display.
    15         N CAT,CMPNT,END,EOKTI,EXISTS,FILENUM,FOKTI,IND,INDEX,JND,JNDS,KND
    16         N MSG,NCMPNT,NDLINE,NDSEL,NITEMS,NLINE,NSEL,PT01,START,TEMP,TEMP0,TYPE
    17         K ^TMP("PXRMEXLC",$J),^TMP("PXRMEXLD",$J)
    18         S (NDLINE,NLINE)=0
    19         S (NDSEL,NSEL)=1
    20         ;Load the description.
    21         F IND=1:1:$P(^PXD(811.8,IEN,110,0),U,4) D
    22         . S NLINE=NLINE+1
    23         . S ^TMP("PXRMEXLC",$J,NLINE,0)=^PXD(811.8,IEN,110,IND,0)
    24         . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
    25         S NLINE=NLINE+1
    26         S ^TMP("PXRMEXLC",$J,NLINE,0)=" "
    27         S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
    28         S NCMPNT=^PXD(811.8,IEN,119)
    29         ;Load the text for display.
    30         F IND=1:1:NCMPNT D
    31         . S NLINE=NLINE+1
    32         . S TEMP=^PXD(811.8,IEN,120,IND,0)
    33         . S ^TMP("PXRMEXLC",$J,NLINE,0)=$P(TEMP,U,1)
    34         . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
    35         . S FILENUM=$P(TEMP,U,2)
    36         . S FOKTI=$$FOKTI^PXRMEXFI(FILENUM)
    37         . S NITEMS=$P(TEMP,U,3)
    38         . I $P(TEMP,U,1)="REMINDER DIALOG" D
    39         ..;Save details of the dialog in ^TMP("PXRMEXTMP")
    40         .. S JNDS=NITEMS D DBUILD^PXRMEXLB(IND,NITEMS,FILENUM)
    41         . E  S JNDS=1
    42         . F JND=JNDS:1:NITEMS D
    43         .. S TEMP=^PXD(811.8,IEN,120,IND,1,JND,0)
    44         .. S EOKTI=FOKTI
    45         .. S PT01=$P(TEMP,U,1)
    46         .. S EXISTS=$S(FILENUM=0:$$EXISTS^PXRMEXCF(PT01),1:$$EXISTS^PXRMEXIU(FILENUM,PT01,"W"))
    47         ..;If this is an education topic and it starts with VA- it
    48         ..;cannot be transported because of PCE's screen.
    49         .. ;I (FILENUM=9999999.09)&(PT01["VA-") S EOKTI=0
    50         ..;If this is a health factor see if it is a category.
    51         .. S CAT=""
    52         .. I (FILENUM=9999999.64) D
    53         ... S TYPE=""
    54         ... S START=$P(TEMP,U,2)
    55         ... S END=$P(TEMP,U,3)
    56         ... F KND=START:1:END D
    57         .... S TEMP0=$P(^PXD(811.8,IEN,100,KND,0),";",3)
    58         .... I $P(TEMP0,"~",1)=.1 S TYPE=$P(TEMP0,"~",2)
    59         ... I TYPE="CATEGORY" S CAT="X"
    60         .. S NLINE=NLINE+1
    61         .. I IND=1,JND=1 S NSEL=1,INDEX=$S(EOKTI:NSEL,1:"")
    62         .. E  D
    63         ...;If entries in this file are ok to install add them to the
    64         ...;selectable list. Make sure the first selectable entry exists
    65         ...;before incrementing NSEL.
    66         ... I EOKTI S NSEL=$S($D(^TMP("PXRMEXLC",$J,"SEL",1)):NSEL+1,1:NSEL),INDEX=NSEL
    67         ... E  S INDEX=""
    68         .. S ^TMP("PXRMEXLC",$J,NLINE,0)=$$FMTDATA(INDEX,PT01,CAT,EXISTS)
    69         .. S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
    70         ..;Store the file number, node 120 indexes and the ien if it exists.
    71         .. I INDEX=NSEL S ^TMP("PXRMEXLC",$J,"SEL",NSEL)=FILENUM_U_IND_U_JND_U_EXISTS
    72         . S NLINE=NLINE+1
    73         . S ^TMP("PXRMEXLC",$J,NLINE,0)=""
    74         . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
    75         Q
    76         ;
    77         ;======================================================
    78 FMTDATA(NSEL,PT01,CAT,EXISTS)   ;Format items for display.
    79         N NSTI,TEMP
    80         S TEMP=$$RJ^XLFSTR(NSEL,4," ")_"  "_$E(PT01,1,54)
    81         I CAT="X" D
    82         . S NSTI=63-$L(TEMP)
    83         . S TEMP=TEMP_$$INSCHR(NSTI," ")_"X"
    84         I EXISTS D
    85         . S NSTI=75-$L(TEMP)
    86         . S TEMP=TEMP_$$INSCHR(NSTI," ")_"X"
    87         Q TEMP
    88         ;
    89         ;======================================================
    90 INSCHR(NUM,CHR) ;Return a string of NUM characters (CHR).
    91         N IND,TEMP
    92         S TEMP=""
    93         I NUM<1 Q TEMP
    94         F IND=1:1:NUM S TEMP=TEMP_CHR
    95         Q TEMP
    96         ;
    97         ;======================================================
    98 ORDER(STRING,ORDER)     ;Rebuild string in ascending or descending order.
    99         N ARRAY,ITEM,CNT
    100         F CNT=1:1 S ITEM=$P(STRING,",",CNT) Q:'ITEM  S ARRAY(ITEM)=""
    101         K STRING
    102         F CNT=1:1 S ITEM=$O(ARRAY(ITEM),ORDER) Q:'ITEM  D
    103         .S $P(STRING,",",CNT)=ITEM
    104         Q
    105         ;
     1PXRMEXLC ; SLC/PKR/PJH - Routines to display repository entry components. ;06/22/2004
     2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
     3 ;======================================================
     4BLDLIST(FORCE) ;Build a list of all repository entries.
     5 ;If FORCE is true then force rebuilding of the list.
     6 I FORCE K ^TMP("PXRMEXLR",$J)
     7 I $D(^TMP("PXRMEXLR",$J,"VALMCNT")) S VALMCNT=^TMP("PXRMEXLR",$J,"VALMCNT")
     8 E  D
     9 . N IEN,RELIST
     10 . D RE^PXRMLIST(.RELIST,.IEN)
     11 . M ^TMP("PXRMEXLR",$J)=RELIST
     12 . S VALMCNT=RELIST("VALMCNT")
     13 . F IND=1:1:VALMCNT S ^TMP("PXRMEXLR",$J,"IDX",IND,IND)=IEN(IND)
     14 Q
     15 ;
     16 ;======================================================
     17CDISP(IEN) ;Format component list for display.
     18 N CAT,CMPNT,END,EOKTI,EXISTS,FILENUM,FOKTI,IND,INDEX,JND,JNDS,KND
     19 N MSG,NCMPNT,NDLINE,NDSEL,NITEMS,NLINE,NSEL,PT01,START,TEMP,TEMP0,TYPE
     20 K ^TMP("PXRMEXLC",$J),^TMP("PXRMEXLD",$J)
     21 S (NDLINE,NLINE)=0
     22 S (NDSEL,NSEL)=1
     23 ;Load the description.
     24 F IND=1:1:$P(^PXD(811.8,IEN,110,0),U,4) D
     25 . S NLINE=NLINE+1
     26 . S ^TMP("PXRMEXLC",$J,NLINE,0)=^PXD(811.8,IEN,110,IND,0)
     27 . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
     28 S NLINE=NLINE+1
     29 S ^TMP("PXRMEXLC",$J,NLINE,0)=" "
     30 S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
     31 S NCMPNT=^PXD(811.8,IEN,119)
     32 ;Load the text for display.
     33 F IND=1:1:NCMPNT D
     34 . S NLINE=NLINE+1
     35 . S TEMP=^PXD(811.8,IEN,120,IND,0)
     36 . S ^TMP("PXRMEXLC",$J,NLINE,0)=$P(TEMP,U,1)
     37 . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
     38 . S FILENUM=$P(TEMP,U,2)
     39 . S FOKTI=$$FOKTI^PXRMEXFI(FILENUM)
     40 . S NITEMS=$P(TEMP,U,3)
     41 . I $P(TEMP,U,1)="REMINDER DIALOG" D
     42 ..;Save details of the dialog in ^TMP("PXRMEXTMP")
     43 .. S JNDS=NITEMS D DBUILD^PXRMEXLB(IND,NITEMS,FILENUM)
     44 . E  S JNDS=1
     45 . F JND=JNDS:1:NITEMS D
     46 .. S TEMP=^PXD(811.8,IEN,120,IND,1,JND,0)
     47 .. S EOKTI=FOKTI
     48 .. S PT01=$P(TEMP,U,1)
     49 .. S EXISTS=$S(FILENUM=0:$$EXISTS^PXRMEXCF(PT01),1:$$EXISTS^PXRMEXIU(FILENUM,PT01,"W"))
     50 ..;If this is an education topic and it starts with VA- it
     51 ..;cannot be transported because of PCE's screen.
     52 .. ;I (FILENUM=9999999.09)&(PT01["VA-") S EOKTI=0
     53 ..;If this is a health factor see if it is a category.
     54 .. S CAT=""
     55 .. I (FILENUM=9999999.64) D
     56 ... S TYPE=""
     57 ... S START=$P(TEMP,U,2)
     58 ... S END=$P(TEMP,U,3)
     59 ... F KND=START:1:END D
     60 .... S TEMP0=$P(^PXD(811.8,IEN,100,KND,0),";",3)
     61 .... I $P(TEMP0,"~",1)=.1 S TYPE=$P(TEMP0,"~",2)
     62 ... I TYPE="CATEGORY" S CAT="X"
     63 .. S NLINE=NLINE+1
     64 .. I IND=1,JND=1 S NSEL=1,INDEX=$S(EOKTI:NSEL,1:"")
     65 .. E  D
     66 ...;If entries in this file are ok to install add them to the
     67 ...;selectable list. Make sure the first selectable entry exists
     68 ...;before incrementing NSEL.
     69 ... I EOKTI S NSEL=$S($D(^TMP("PXRMEXLC",$J,"SEL",1)):NSEL+1,1:NSEL),INDEX=NSEL
     70 ... E  S INDEX=""
     71 .. S ^TMP("PXRMEXLC",$J,NLINE,0)=$$FMTDATA(INDEX,PT01,CAT,EXISTS)
     72 .. S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
     73 ..;Store the file number, node 120 indexes and the ien if it exists.
     74 .. I INDEX=NSEL S ^TMP("PXRMEXLC",$J,"SEL",NSEL)=FILENUM_U_IND_U_JND_U_EXISTS
     75 . S NLINE=NLINE+1
     76 . S ^TMP("PXRMEXLC",$J,NLINE,0)=""
     77 . S ^TMP("PXRMEXLC",$J,"IDX",NLINE,NSEL)=""
     78 Q
     79 ;
     80 ;======================================================
     81DDISP(IND,NITEMS,FILENUM) ;Setup dialog display list.
     82 N JND,NLINE,NSEL,TEMP
     83 S (NLINE,NSEL)=0
     84 F JND=1:1:NITEMS D
     85 . S TEMP=^PXD(811.8,IEN,120,IND,1,JND,0)
     86 . S PT01=$P(TEMP,U,1)
     87 . S EXISTS=$$EXISTS^PXRMEXIU(FILENUM,PT01,"W")
     88 . S NLINE=NLINE+1
     89 . S NSEL=NSEL+1
     90 . S ^TMP("PXRMEXLD",$J,NLINE,0)=$$FMTDATA(NSEL,PT01,CAT,EXISTS)
     91 . S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     92 .;Store the file number, start and stop line in the repository.
     93 . S ^TMP("PXRMEXLD",$J,"SEL",NSEL)=FILENUM_U_$P(TEMP,U,2,3)
     94 Q
     95 ;
     96 ;======================================================
     97FMTDATA(NSEL,PT01,CAT,EXISTS) ;Format items for display.
     98 N NSTI,TEMP
     99 S TEMP=$$RJ^XLFSTR(NSEL,4," ")_"  "_$E(PT01,1,54)
     100 I CAT="X" D
     101 . S NSTI=63-$L(TEMP)
     102 . S TEMP=TEMP_$$INSCHR(NSTI," ")_"X"
     103 I EXISTS D
     104 . S NSTI=75-$L(TEMP)
     105 . S TEMP=TEMP_$$INSCHR(NSTI," ")_"X"
     106 Q TEMP
     107 ;
     108 ;======================================================
     109HISTLIST(LIST,VALMCNT) ;Build a list of install histories in
     110 ;^TMP("PXRMEXIH",$J).
     111 N DATE,DC,ENTRY,IHIND,IND,INDONE,NLINE,NSEL,RIEN,SOURCE,TEMP,USER
     112 K ^TMP("PXRMEXIH",$J)
     113 S (NLINE,NSEL)=0
     114 S IND=""
     115 F  S IND=$O(LIST(IND)) Q:IND=""  D
     116 . S RIEN=^TMP("PXRMEXLR",$J,"IDX",IND,IND)
     117 . I $D(^PXD(811.8,RIEN,130)) S INDONE=1
     118 . E  S INDONE=0
     119 . S TEMP=^PXD(811.8,RIEN,0)
     120 . S ENTRY=$P(TEMP,U,1)
     121 . S SOURCE=$P(TEMP,U,2)
     122 . S DATE=$P(TEMP,U,3)
     123 . S NLINE=NLINE+1
     124 . I INDONE S NSEL=NSEL+1
     125 . S ^TMP("PXRMEXIH",$J,NLINE,0)=$$FRE^PXRMLIST(" ",ENTRY,SOURCE,DATE)
     126 . I INDONE S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
     127 . S NLINE=NLINE+1
     128 . S ^TMP("PXRMEXIH",$J,NLINE,0)="     Installation Date       Installed By"
     129 . I INDONE S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
     130 . S NLINE=NLINE+1
     131 . S ^TMP("PXRMEXIH",$J,NLINE,0)="     -----------------       ------------"
     132 . I INDONE S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
     133 . I 'INDONE D  Q
     134 .. S NLINE=NLINE+1
     135 .. S ^TMP("PXRMEXIH",$J,NLINE,0)="      none"
     136 .. S NLINE=NLINE+1
     137 .. S ^TMP("PXRMEXIH",$J,NLINE,0)=" "
     138 . S DATE="",DC=0
     139 . F  S DATE=$O(^PXD(811.8,RIEN,130,"B",DATE)) Q:DATE=""  D
     140 .. S NLINE=NLINE+1
     141 .. S DC=DC+1
     142 .. I DC>1 S NSEL=NSEL+1
     143 .. S IHIND=$O(^PXD(811.8,RIEN,130,"B",DATE,""))
     144 .. S TEMP=^PXD(811.8,RIEN,130,IHIND,0)
     145 .. S ^TMP("PXRMEXIH",$J,NLINE,0)=$$RJ^XLFSTR(NSEL,4," ")_" "_$$FMTE^XLFDT($P(TEMP,U,1),"5Z")_"   "_$P(TEMP,U,2)
     146 .. S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
     147 .. S ^TMP("PXRMEXIH",$J,"SEL",NSEL)=RIEN_U_IHIND
     148 . S NLINE=NLINE+1
     149 . S ^TMP("PXRMEXIH",$J,NLINE,0)=" "
     150 . S ^TMP("PXRMEXIH",$J,"IDX",NLINE,NSEL)=""
     151 S VALMCNT=NLINE
     152 Q
     153 ;
     154 ;======================================================
     155INSCHR(NUM,CHR) ;Return a string of NUM characters (CHR).
     156 N IND,TEMP
     157 S TEMP=""
     158 I NUM<1 Q TEMP
     159 F IND=1:1:NUM S TEMP=TEMP_CHR
     160 Q TEMP
     161 ;
     162 ;======================================================
     163DREPL ;
     164 N STR,I
     165 K PXRMEXOR
     166 S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     167 S STR="" F I=1:1:30 S STR=STR_"-"
     168 S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J(STR_" REPLACEMENT ITEMS "_STR,79)
     169DREPL1 ;
     170 M ^TMP($J,"PXRMEXREP")=PXRMEXRP
     171 K PXRMEXRP
     172 ;S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)="
     173 N CNT,DLG,DDATA,DDLG,DEND,DNAM,DREP,DSTRT,IND,JND,LEV,TEMP
     174 ;S LEV="" F  S LEV=$O(^TMP($J,"PXRMEXREP",LEV)) Q:LEV=""  D
     175 S LEV=0
     176 S DLG="" F  S DLG=$O(^TMP($J,"PXRMEXREP",DLG)) Q:DLG=""  D
     177 .S DDATA=$G(^TMP("PXRMEXTMP",$J,"DREPL",DLG)) Q:DDATA=""
     178 .S DNAM=$P(DDATA,U),DSTRT=$P(DDATA,U,2),DEND=$P(DDATA,U,3) Q:DNAM=""
     179 .I $D(PXRMEXOR(DNAM))>0 Q
     180 .S PXRMEXOR(DNAM)=""
     181 .S IND=$P(DDATA,U,4),JND=$P(DDATA,U,5)
     182 .;Check if this component has been replaced
     183 .S LEV=LEV+1
     184 .S DREP=$G(PXRMNMCH(FILENUM,DNAM)) I DREP=DNAM S DREP=""
     185 .;Save line in workfile
     186 .S NLINE=NLINE+1,^TMP("PXRMEXLD",$J,NLINE,0)=$J("",79)
     187 .S ^TMP("PXRMEXLD",$J,"IDX",NLINE,NSEL)=""
     188 .D DLINE^PXRMEXLD(DNAM,LEV,"")
     189 .I $D(^TMP("PXRMEXTMP",$J,"DMAP",DNAM)) D DCMP^PXRMEXLD(DNAM,LEV)
     190 K ^TMP($J,"PXRMEXREP")
     191 I $D(PXRMEXRP)>0 D DREPL1
     192 Q
Note: See TracChangeset for help on using the changeset viewer.