| 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 |  ;
 | 
|---|