| 1 | PXRMDBL1 ; SLC/PJH - Reminder Dialog Generation. ;04/19/2000
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Build Reminder Dialog
 | 
|---|
| 5 |  ;---------------------
 | 
|---|
| 6 | BUILD(REM,NAME,ARRAY) ;
 | 
|---|
| 7 |  ;Lock the entire file
 | 
|---|
| 8 |  L +^PXRMD(801.41):30
 | 
|---|
| 9 |  E  W !!,?5,"Another user is editing this file, try later" H 4 Q
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  N ACNT,ASUB,ATXT,CNT,DATA,DIEN,DNAME,DNODE,FGLOB,FITEM,FNODE,FSUB,FTYP
 | 
|---|
| 12 |  N INAME,MIEN,MSUB,PNAME,RESN,RNAME,RNODE,RPRE,RREQ,RSHORT,RSUB,RSUF
 | 
|---|
| 13 |  N TDMOD,TDPAR,TDX,TITEM,TPMOD,TPPAR,TPR,TSEQ,TSUB,TTYP
 | 
|---|
| 14 |  N TDHTXT,TDTXT,TPHTXT,TPTXT
 | 
|---|
| 15 |  N WPTXT,DSET,DSHORT
 | 
|---|
| 16 |  W !!,"Building dialog  - "_NAME
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ;Upper and lower case transforms
 | 
|---|
| 19 |  N LOWER,UPPER
 | 
|---|
| 20 |  S LOWER="abcdefghijklmnopqrstuvwxyz"
 | 
|---|
| 21 |  S UPPER="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;Build index of finding type to globals
 | 
|---|
| 24 |  N DEF,DEF1,DEF2 D DEF^PXRMRUTL("811.902",.DEF,.DEF1,.DEF2)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;Save name for use in building SET
 | 
|---|
| 27 |  S DSET(1)=NAME
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;Get findings for this reminder
 | 
|---|
| 30 |  S FSUB=0,CNT=0
 | 
|---|
| 31 |  F  S FSUB=$O(^PXD(811.9,REM,20,FSUB)) Q:'FSUB  D
 | 
|---|
| 32 |  .S DATA=$G(^PXD(811.9,REM,20,FSUB,0)) Q:DATA=""
 | 
|---|
| 33 |  .;Single finding
 | 
|---|
| 34 |  .S RESN=$P(DATA,U)
 | 
|---|
| 35 |  .I $P(RESN,";",2)'="PXRMD(811.5," D FIND^PXRMDBL2(DATA) Q
 | 
|---|
| 36 |  .;Terms - 1st check finding item dialog file
 | 
|---|
| 37 |  .I $D(^PXRMD(801.43,"AC",RESN)) D  Q:DIEN
 | 
|---|
| 38 |  ..S DIEN=$$OK(RESN) Q:'DIEN
 | 
|---|
| 39 |  ..;Create array used to build reminder dialog
 | 
|---|
| 40 |  ..S CNT=CNT+1,ARRAY(CNT)=801.43_U_DIEN
 | 
|---|
| 41 |  ..W !!,CNT,?5,"Finding item dialog "_$$FNAM(RESN)
 | 
|---|
| 42 |  .;Else process all the term findings
 | 
|---|
| 43 |  .S MIEN=$P($P(DATA,U),";") Q:'MIEN
 | 
|---|
| 44 |  .S MSUB=0
 | 
|---|
| 45 |  .F  S MSUB=$O(^PXRMD(811.5,MIEN,20,MSUB)) Q:'MSUB  D
 | 
|---|
| 46 |  ..S DATA=$G(^PXRMD(811.5,MIEN,20,MSUB,0)) Q:DATA=""
 | 
|---|
| 47 |  ..D FIND^PXRMDBL2(DATA)
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;Update dialog file from FDA
 | 
|---|
| 50 |  D ^PXRMDBL3
 | 
|---|
| 51 |  ;Unlock the file
 | 
|---|
| 52 |  L -^PXRMD(801.41)
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  ;Get Finding Item name
 | 
|---|
| 56 |  ;---------------------
 | 
|---|
| 57 | FNAM(FIND) ;
 | 
|---|
| 58 |  N DATA,GLOB,NAME,NODE
 | 
|---|
| 59 |  S NAME="Unknown"
 | 
|---|
| 60 |  S NODE=$O(^PXRMD(801.43,"AC",FIND,"")) Q:'NODE NAME
 | 
|---|
| 61 |  S DATA=$G(^PXRMD(801.43,NODE,0)) Q:DATA="" NAME
 | 
|---|
| 62 |  I $P(DATA,U)'="" S NAME=$P(DATA,U)
 | 
|---|
| 63 |  S GLOB=$P($P(FIND,U),";",2) S:GLOB]"" NAME=$G(DEF1(GLOB))_" - "_NAME
 | 
|---|
| 64 |  Q NAME
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ;Checks if an enabled finding item dialog exists
 | 
|---|
| 67 |  ;-----------------------------------------------
 | 
|---|
| 68 | OK(FIND) ;
 | 
|---|
| 69 |  N DATA,DIEN,DTYP,NODE
 | 
|---|
| 70 |  S NODE=$O(^PXRMD(801.43,"AC",FIND,"")) Q:'NODE 0
 | 
|---|
| 71 |  S DATA=$G(^PXRMD(801.43,NODE,0)) Q:DATA="" 0
 | 
|---|
| 72 |  ;Ignore disabled entries
 | 
|---|
| 73 |  I $P(DATA,U,3) Q 0
 | 
|---|
| 74 |  ;Ignore finding item dialogs no longer valid
 | 
|---|
| 75 |  S DIEN=$P(DATA,U,4) Q:DIEN="" 0
 | 
|---|
| 76 |  S DATA=$G(^PXRMD(801.41,DIEN,0)) Q:DATA="" 0
 | 
|---|
| 77 |  ;Ignore disabled dialogs
 | 
|---|
| 78 |  I $P(DATA,U,3)=1 Q 0
 | 
|---|
| 79 |  ;Return dialog ien
 | 
|---|
| 80 |  Q DIEN
 | 
|---|