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