| [613] | 1 | TIUPS137 ; SLC/MAM - After installing TIU*1*137;6/26/03
 | 
|---|
 | 2 |  ;;1.0;Text Integration Utilities;**137**;Jun 20, 1997
 | 
|---|
 | 3 |  ; Run this after installing patch 137.
 | 
|---|
 | 4 |  ;Use option: TIU137 DDEFS & RULES, ANATPATH
 | 
|---|
 | 5 |  ; External References
 | 
|---|
 | 6 |  ;   DBIA 10140  XREF^XQORM
 | 
|---|
 | 7 |  ;   DBIA 4119  MAIN^USRPS23
 | 
|---|
 | 8 | BEGIN ; Create DDEFS
 | 
|---|
 | 9 |  W !!,"This option creates Document Definitions, a User Class, and"
 | 
|---|
 | 10 |  W !,"Business Rules for Laboratory Reports."
 | 
|---|
 | 11 |  W ! K IOP S %ZIS="Q" D ^%ZIS I POP K POP Q
 | 
|---|
 | 12 |  I $D(IO("Q")) K IO("Q") D  Q
 | 
|---|
 | 13 |  .S ZTRTN="MAIN^TIUPS137"
 | 
|---|
 | 14 |  .S ZTDESC="Create DDefs, User Class, Rules for Laboratory Reports - TIU*1*137"
 | 
|---|
 | 15 |  .D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Canceled!")
 | 
|---|
 | 16 |  .K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
 | 
|---|
 | 17 |  .D HOME^%ZIS
 | 
|---|
 | 18 |  U IO D MAIN,^%ZISC
 | 
|---|
 | 19 |  Q
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | MAIN ; Create DDEFS for Laboratory Reports
 | 
|---|
 | 22 |  ; -- Check for dups created after the install but before this option:
 | 
|---|
 | 23 |  K ^XTMP("TIU137","DUPS"),^TMP("TIU137",$J)
 | 
|---|
 | 24 |  D SETXTMP^TIUEN137
 | 
|---|
 | 25 |  N TIUDUPS,TMPCNT,SILENT S TMPCNT=0
 | 
|---|
 | 26 |  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)=""
 | 
|---|
 | 27 |  S TMPCNT=1,^TMP("TIU137",$J,TMPCNT)="         ***** Document Definitions for LABORATORY REPORTS *****"
 | 
|---|
 | 28 |  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)=""
 | 
|---|
 | 29 |  S SILENT=1
 | 
|---|
 | 30 |  D TIUDUPS^TIUEN137(.TIUDUPS,SILENT)
 | 
|---|
 | 31 |  ; -- If potential duplicates exist, quit:
 | 
|---|
 | 32 |  I $G(TIUDUPS) D  G MAINX
 | 
|---|
 | 33 |  . S ^XTMP("TIU137","DUPS")=1
 | 
|---|
 | 34 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="Duplicate problem.  See description for patch TIU*1*137,"
 | 
|---|
 | 35 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="in the National Patch Module."
 | 
|---|
 | 36 |  ; -- Set file data, other data for DDEFS: 
 | 
|---|
 | 37 |  D SETDATA^TIU137D
 | 
|---|
 | 38 |  N NUM S NUM=0
 | 
|---|
 | 39 |  F  S NUM=$O(^XTMP("TIU137","BASICS",NUM)) Q:'NUM  D
 | 
|---|
 | 40 |  . N IEN,YDDEF,TIUDA
 | 
|---|
 | 41 |  . ; -- If DDEF was previously created by this patch,
 | 
|---|
 | 42 |  . ;    say so and quit:
 | 
|---|
 | 43 |  . S IEN=+$G(^XTMP("TIU137","BASICS",NUM,"DONE"))
 | 
|---|
 | 44 |  . I IEN D  Q
 | 
|---|
 | 45 |  . . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)=^XTMP("TIU137","FILEDATA",NUM,.04)_" "_^XTMP("TIU137","BASICS",NUM,"NAME")
 | 
|---|
 | 46 |  . . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="    was already created in a previous install."
 | 
|---|
 | 47 |  . . K ^XTMP("TIU137","FILEDATA",NUM)
 | 
|---|
 | 48 |  . . K ^XTMP("TIU137","DATA",NUM)
 | 
|---|
 | 49 |  . ; -- If not, create new DDEF:
 | 
|---|
 | 50 |  . S YDDEF=$$CREATE(NUM)
 | 
|---|
 | 51 |  . I +YDDEF'>0!($P(YDDEF,U,3)'=1) D  Q
 | 
|---|
 | 52 |  . . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="Couldn't create a "_^XTMP("TIU137","FILEDATA",NUM,.04)_" named "_^XTMP("TIU137","BASICS",NUM,"NAME")_".",TMPCNT=TMPCNT+1
 | 
|---|
 | 53 |  . . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="    Please contact National VistA Support for help."
 | 
|---|
 | 54 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)=^XTMP("TIU137","FILEDATA",NUM,.04)_" named "_^XTMP("TIU137","BASICS",NUM,"NAME")
 | 
|---|
 | 55 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="    created successfully."
 | 
|---|
 | 56 |  . S TIUDA=+YDDEF
 | 
|---|
 | 57 |  . ; -- File field data:
 | 
|---|
 | 58 |  . D FILE(NUM,TIUDA,.TMPCNT)
 | 
|---|
 | 59 |  . K ^XTMP("TIU137","FILEDATA",NUM)
 | 
|---|
 | 60 |  . ; -- Add item to parent:
 | 
|---|
 | 61 |  . D ADDITEM(NUM,TIUDA,.TMPCNT)
 | 
|---|
 | 62 |  . K ^XTMP("TIU137","DATA",NUM)
 | 
|---|
 | 63 | MAINX ;Exit
 | 
|---|
 | 64 |  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)=""
 | 
|---|
 | 65 |  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="                           *************"
 | 
|---|
 | 66 |  I '$G(^XTMP("TIU137","DUPS")) D MAIN^USRPS23
 | 
|---|
 | 67 |  D PRINT
 | 
|---|
 | 68 |  K ^TMP("TIU137",$J),^TMP("USR23",$J)
 | 
|---|
 | 69 |  Q
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 | PRINT ; Print out results
 | 
|---|
 | 72 |  N TIUCNT,TIUCONT
 | 
|---|
 | 73 |  I $D(ZTQUEUED) S ZTREQ="@" ; Tell TaskMan to delete Task log entry
 | 
|---|
 | 74 |  I $E(IOST)="C" W @IOF,!
 | 
|---|
 | 75 |  S TIUCNT="",TIUCONT=1
 | 
|---|
 | 76 |  F  S TIUCNT=$O(^TMP("TIU137",$J,TIUCNT)) Q:TIUCNT=""  D  Q:'TIUCONT
 | 
|---|
 | 77 |  . S TIUCONT=$$SETCONT Q:'TIUCONT
 | 
|---|
 | 78 |  . W ^TMP("TIU137",$J,TIUCNT),!
 | 
|---|
 | 79 |  Q:'TIUCONT
 | 
|---|
 | 80 |  S TIUCNT=""
 | 
|---|
 | 81 |  F  S TIUCNT=$O(^TMP("USR23",$J,TIUCNT)) Q:TIUCNT=""  D  Q:'TIUCONT
 | 
|---|
 | 82 |  . S TIUCONT=$$SETCONT Q:'TIUCONT
 | 
|---|
 | 83 |  . W ^TMP("USR23",$J,TIUCNT),!
 | 
|---|
 | 84 | PRINTX Q
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 | STOP() ;on screen paging check
 | 
|---|
 | 87 |  ; quits TIUCONT=1 if cont. ELSE quits TIUCONT=0
 | 
|---|
 | 88 |  N DIR,Y,TIUCONT
 | 
|---|
 | 89 |  S DIR(0)="E" D ^DIR
 | 
|---|
 | 90 |  S TIUCONT=Y
 | 
|---|
 | 91 |  I TIUCONT W @IOF,!
 | 
|---|
 | 92 |  Q TIUCONT
 | 
|---|
 | 93 |  ;
 | 
|---|
 | 94 | SETCONT() ; D form feed, Set TIUCONT
 | 
|---|
 | 95 |  N TIUCONT
 | 
|---|
 | 96 |  S TIUCONT=1
 | 
|---|
 | 97 |  I $E(IOST)="C" G SETX:$Y+5<IOSL
 | 
|---|
 | 98 |  I $E(IOST)="C" S TIUCONT=$$STOP G SETX
 | 
|---|
 | 99 |  G:$Y+8<IOSL SETX
 | 
|---|
 | 100 |  W @IOF
 | 
|---|
 | 101 | SETX Q TIUCONT
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 | SERIAL ; Serialize Menu Items of Class Clinical Documents
 | 
|---|
 | 104 |  ;since it has a new item under it
 | 
|---|
 | 105 |  N DA,DIE,DR,X,Y,D,D0,DI,DQ
 | 
|---|
 | 106 |  ; -- Reset Sequence, Mnemonic for items of Clinical Docs:
 | 
|---|
 | 107 |  N TIUI,TIUFPRIV
 | 
|---|
 | 108 |  S (DA,TIUI)=0,DA(1)=38,TIUFPRIV=1
 | 
|---|
 | 109 |  S DIE="^TIU(8925.1,DA(1),10,"
 | 
|---|
 | 110 |  F  S DA=$O(^TIU(8925.1,38,10,DA)) Q:+DA'>0  D
 | 
|---|
 | 111 |  . S TIUI=TIUI+1,DR="2////^S X=TIUI;3////^S X=TIUI" D ^DIE
 | 
|---|
 | 112 |  ; -- Re-compile menu for Select CLINICAL DOCUMENTS Type(s),
 | 
|---|
 | 113 |  ;    under Multiple Patient Documents/Integrated Document Management.
 | 
|---|
 | 114 |  ;    Updates ^TIU(8925.1,38,99), which triggers ^XUTL update.
 | 
|---|
 | 115 |  N XQORM,X,Y,ORULT
 | 
|---|
 | 116 |  S XQORM="38;TIU(8925.1,"
 | 
|---|
 | 117 |  D XREF^XQORM
 | 
|---|
 | 118 |  Q
 | 
|---|
 | 119 |  ;
 | 
|---|
 | 120 | PARENT(NUM) ; Return IEN of parent new DDEF should be added to
 | 
|---|
 | 121 |  N PIEN,PNUM
 | 
|---|
 | 122 |  ; Parent node has form:
 | 
|---|
 | 123 |  ; -- PIEN node = IEN of parent if known, or if not,
 | 
|---|
 | 124 |  ;    PNUM node = DDEF# of parent
 | 
|---|
 | 125 |  ;^XTMP("TIU137","DATA",1,"PIEN")=38
 | 
|---|
 | 126 |  S PIEN=$G(^XTMP("TIU137","DATA",NUM,"PIEN"))
 | 
|---|
 | 127 |  ; -- If parent IEN is known, we're done:
 | 
|---|
 | 128 |  I +PIEN G PARENTX
 | 
|---|
 | 129 |  ; -- If not, get DDEF# of parent
 | 
|---|
 | 130 |  S PNUM=$G(^XTMP("TIU137","DATA",NUM,"PNUM"))
 | 
|---|
 | 131 |  I 'PNUM Q 0
 | 
|---|
 | 132 |  ; -- Get Parent IEN from "DONE" node, which was set
 | 
|---|
 | 133 |  ;    when parent was created:
 | 
|---|
 | 134 |  S PIEN=+$G(^XTMP("TIU137","BASICS",PNUM,"DONE"))
 | 
|---|
 | 135 | PARENTX Q PIEN
 | 
|---|
 | 136 |  ;
 | 
|---|
 | 137 | ADDITEM(NUM,TIUDA,TMPCNT)  ; Add DDEF to Parent; Set item fields
 | 
|---|
 | 138 |  N PIEN,MENUTXT,TIUFPRIV,TIUFISCR
 | 
|---|
 | 139 |  N DIE,DR
 | 
|---|
 | 140 |  S TIUFPRIV=1
 | 
|---|
 | 141 |  S PIEN=$$PARENT(NUM)
 | 
|---|
 | 142 |  I 'PIEN!'$D(^TIU(8925.1,PIEN,0))!'$D(^TIU(8925.1,TIUDA,0)) K PIEN G ADDX
 | 
|---|
 | 143 |  N DA,DIC,DLAYGO,X,Y
 | 
|---|
 | 144 |  N I,DIY
 | 
|---|
 | 145 |  S DA(1)=PIEN
 | 
|---|
 | 146 |  S DIC="^TIU(8925.1,"_DA(1)_",10,",DIC(0)="LX"
 | 
|---|
 | 147 |  S DLAYGO=8925.14
 | 
|---|
 | 148 |  ;S X="`"_TIUDA
 | 
|---|
 | 149 |  ; -- If TIUDA is say, x, and Parent has x as IFN in Item subfile,
 | 
|---|
 | 150 |  ;    code finds item x under parent instead of creating a new item,
 | 
|---|
 | 151 |  ;    so don't use "`"_TIUDA:
 | 
|---|
 | 152 |  S X=^XTMP("TIU137","BASICS",NUM,"NAME")
 | 
|---|
 | 153 |  ; -- Make sure the DDEF it adds is TIUDA and not another w same name:
 | 
|---|
 | 154 |  S TIUFISCR=TIUDA ; activates screen on fld 10, Subfld .01 in DD
 | 
|---|
 | 155 |  D ^DIC I Y'>0!($P(Y,U,3)'=1) K PIEN G ADDX
 | 
|---|
 | 156 |  ; -- Set Menu Text:
 | 
|---|
 | 157 |  S MENUTXT=$G(^XTMP("TIU137","DATA",NUM,"MENUTXT"))
 | 
|---|
 | 158 |  I $L(MENUTXT) D
 | 
|---|
 | 159 |  . N DA,DIE,DR
 | 
|---|
 | 160 |  . N D,D0,DI,DQ
 | 
|---|
 | 161 |  . S DA(1)=PIEN
 | 
|---|
 | 162 |  . S DA=+Y,DIE=DIC
 | 
|---|
 | 163 |  . S DR="4////^S X=MENUTXT"
 | 
|---|
 | 164 |  . D ^DIE
 | 
|---|
 | 165 | ADDX ; -- Tell user about adding to parent:
 | 
|---|
 | 166 |  I '$G(PIEN) D
 | 
|---|
 | 167 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="  Couldn't add entry to parent.  Please contact National VistA Support"
 | 
|---|
 | 168 |  . S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="    for help."
 | 
|---|
 | 169 |  E  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="  Entry added to parent."
 | 
|---|
 | 170 |  ; -- If just added Class LR LABORATORY REPORTS to CLINICAL
 | 
|---|
 | 171 |  ;    DOCUMENTS, serialize menu items of CLIN DOC:
 | 
|---|
 | 172 |  I NUM=1 D SERIAL
 | 
|---|
 | 173 |  Q
 | 
|---|
 | 174 |  ;
 | 
|---|
 | 175 | FILE(NUM,TIUDA,TMPCNT) ; File fields for new entry TIUDA
 | 
|---|
 | 176 |  ; Files ALL FIELDS set in "FILEDATA" nodes of ^XTMP:
 | 
|---|
 | 177 |  ;   ^XTMP("TIU137","FILEDATA",NUM,Field#)
 | 
|---|
 | 178 |  N TIUFPRIV,FDA,TIUERR
 | 
|---|
 | 179 |  S TIUFPRIV=1
 | 
|---|
 | 180 |  M FDA(8925.1,TIUDA_",")=^XTMP("TIU137","FILEDATA",NUM)
 | 
|---|
 | 181 |  D FILE^DIE("TE","FDA","TIUERR")
 | 
|---|
 | 182 |  I $D(TIUERR) S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="  Problem filing data for entry. Please contact National VistA Support."
 | 
|---|
 | 183 |  E  S TMPCNT=TMPCNT+1,^TMP("TIU137",$J,TMPCNT)="  Data for entry filed successfully."
 | 
|---|
 | 184 |  Q
 | 
|---|
 | 185 |  ;
 | 
|---|
 | 186 | CREATE(NUM) ; Create new DDEF entry
 | 
|---|
 | 187 |  N DIC,DLAYGO,DA,X,Y,TIUFPRIV
 | 
|---|
 | 188 |  S TIUFPRIV=1
 | 
|---|
 | 189 |  ;S (DIC,DLAYGO)="^TIU(8925.1,"
 | 
|---|
 | 190 |  ;-- CACHE won't take global root for DLAYGO; use file number:
 | 
|---|
 | 191 |  S DIC="^TIU(8925.1,",DLAYGO=8925.1
 | 
|---|
 | 192 |  S DIC(0)="LX",X=^XTMP("TIU137","BASICS",NUM,"NAME")
 | 
|---|
 | 193 |  S DIC("S")="I $P(^(0),U,4)="_""""_^XTMP("TIU137","BASICS",NUM,"INTTYPE")_""""
 | 
|---|
 | 194 |  D ^DIC
 | 
|---|
 | 195 |  ; -- If DDEF was just created, set "DONE" node = IEN
 | 
|---|
 | 196 |  I $P(Y,U,3)=1 S ^XTMP("TIU137","BASICS",NUM,"DONE")=+$G(Y)
 | 
|---|
 | 197 |  Q $G(Y)
 | 
|---|