| [613] | 1 | RORTSK11 ;HCIOFO/SG - REPORT CREATION UTILITIES ; 11/14/06 1:16pm | 
|---|
|  | 2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | Q | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ;***** ADDS THE ATTRIBUTE TO THE ELEMENT | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | ; TASK          Task number | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ; ELMTIEN       IEN of the element | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | ; NAME          Attribute name | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ; VALUE         Value of the attribute | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | ; Return Values: | 
|---|
|  | 17 | ;       <0  Error code | 
|---|
|  | 18 | ;        0  Invalid attribute name | 
|---|
|  | 19 | ;       >0  Attribute IEN | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | ADDATTR(TASK,ELMTIEN,NAME,VALUE) ; | 
|---|
|  | 22 | I $G(ELMTIEN)<0  Q:$QUIT 0  Q | 
|---|
|  | 23 | N IENS,RC,RORFDA,RORIEN,RORMSG | 
|---|
|  | 24 | I $D(^RORDATA(798.8,+TASK,"RI",+ELMTIEN))<10  Q:$QUIT 0  Q | 
|---|
|  | 25 | S IENS="?+1,"_(+ELMTIEN)_","_(+TASK)_"," | 
|---|
|  | 26 | S (RORIEN(1),RORFDA(798.872,IENS,.01))=$$XEC(NAME) | 
|---|
|  | 27 | I RORIEN(1)'>0  Q:$QUIT 0  Q | 
|---|
|  | 28 | S RORFDA(798.872,IENS,1)=VALUE | 
|---|
|  | 29 | D UPDATE^DIE(,"RORFDA","RORIEN","RORMSG") | 
|---|
|  | 30 | I $G(DIERR)  D  Q:$QUIT RC  Q | 
|---|
|  | 31 | . S RC=$$DBS^RORERR("RORMSG",-9,,,798.872,IENS) | 
|---|
|  | 32 | Q:$QUIT +$G(RORIEN(1))  Q | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | ;***** ADDS THE TEXT ELEMENT TO THE REPORT | 
|---|
|  | 35 | ; | 
|---|
|  | 36 | ; TASK          Task number | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | ; NAME          Element name | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | ; [.]ROR8TXT    Either a closed root or a reference to an array | 
|---|
|  | 41 | ;               that contains the text in word processing format. | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | ; [PARENT]      IEN of the parent element | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | ; The text should be properly encoded beforehand (use the | 
|---|
|  | 46 | ; $$XMLENC^RORUTL03 function). | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ; Return Values: | 
|---|
|  | 49 | ;       <0  Error code | 
|---|
|  | 50 | ;        0  Invalid element name | 
|---|
|  | 51 | ;       >0  IEN of the report element | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | ADDTEXT(TASK,NAME,ROR8TXT,PARENT) ; | 
|---|
|  | 54 | I $G(PARENT)<0  Q:$QUIT 0  Q | 
|---|
|  | 55 | N IENS,RC,RORFDA,RORIEN,RORMSG,TMP | 
|---|
|  | 56 | S IENS="+1,"_(+TASK)_"," | 
|---|
|  | 57 | S (RORFDA(798.87,IENS,.01),TMP)=$$XEC(NAME) | 
|---|
|  | 58 | I TMP'>0  Q:$QUIT 0  Q | 
|---|
|  | 59 | S RORFDA(798.87,IENS,.02)=+$G(PARENT) | 
|---|
|  | 60 | S RORFDA(798.87,IENS,3)=$S($D(ROR8TXT)>1:"ROR8TXT",1:ROR8TXT) | 
|---|
|  | 61 | D UPDATE^DIE(,"RORFDA","RORIEN","RORMSG") | 
|---|
|  | 62 | I $G(DIERR)  D  Q:$QUIT RC  Q | 
|---|
|  | 63 | . S RC=$$DBS^RORERR("RORMSG",-9,,,798.87,IENS) | 
|---|
|  | 64 | Q:$QUIT +$G(RORIEN(1))  Q | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | ;***** ADDS THE SINGLE-LINE ELEMENT TO THE REPORT | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | ; TASK          Task number | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | ; NAME          Element name | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | ; [VALUE]       Value of the element | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | ; [PARENT]      IEN of the parent element | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | ; [SORTBY]      Parent element is sorted by the value of the element | 
|---|
|  | 77 | ;               that is being added: | 
|---|
|  | 78 | ;                 1  Sort "as is" | 
|---|
|  | 79 | ;                 2  Sort as strings | 
|---|
|  | 80 | ;                 3  Sort as numbers | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | ; Return Values: | 
|---|
|  | 83 | ;       <0  Error code | 
|---|
|  | 84 | ;        0  Invalid element name | 
|---|
|  | 85 | ;       >0  IEN of the report element | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | ADDVAL(TASK,NAME,VALUE,PARENT,SORTBY,ID) ; | 
|---|
|  | 88 | I $G(PARENT)<0  Q:$QUIT 0  Q | 
|---|
|  | 89 | N IENS,RC,RORFDA,RORIEN,RORMSG,TMP | 
|---|
|  | 90 | S IENS="+1,"_(+TASK)_"," | 
|---|
|  | 91 | S (RORFDA(798.87,IENS,.01),TMP)=$$XEC(NAME) | 
|---|
|  | 92 | I TMP'>0  Q:$QUIT 0  Q | 
|---|
|  | 93 | S RORFDA(798.87,IENS,.02)=+$G(PARENT) | 
|---|
|  | 94 | S:$G(SORTBY) RORFDA(798.87,IENS,.03)=SORTBY | 
|---|
|  | 95 | S:$G(VALUE)'="" RORFDA(798.87,IENS,1)=VALUE | 
|---|
|  | 96 | D:$G(ID)'="" | 
|---|
|  | 97 | . S TMP="+2,"_IENS | 
|---|
|  | 98 | . S (RORIEN(2),RORFDA(798.872,TMP,.01))=$$XEC("ID") | 
|---|
|  | 99 | . S RORFDA(798.872,TMP,1)=ID | 
|---|
|  | 100 | D UPDATE^DIE(,"RORFDA","RORIEN","RORMSG") | 
|---|
|  | 101 | I $G(DIERR)  D  Q:$QUIT RC  Q | 
|---|
|  | 102 | . S RC=$$DBS^RORERR("RORMSG",-9,,,798.87,IENS) | 
|---|
|  | 103 | Q:$QUIT +$G(RORIEN(1))  Q | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | ;***** CHECKS IF THE ELEMENT HAS "CHILDREN" | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | ; TASK          Task number | 
|---|
|  | 108 | ; | 
|---|
|  | 109 | ; ELMTIEN       IEN of the element | 
|---|
|  | 110 | ; | 
|---|
|  | 111 | ; Return Values: | 
|---|
|  | 112 | ;        0  Leaf element | 
|---|
|  | 113 | ;       >0  Has children | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | HASCHLD(TASK,ELMTIEN) ; | 
|---|
|  | 116 | Q:ELMTIEN<0 0 | 
|---|
|  | 117 | Q $D(^RORDATA(798.8,+TASK,"RI","APSV",+ELMTIEN))>1 | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | ;***** UPDATES VALUE OF THE ELEMENT | 
|---|
|  | 120 | ; | 
|---|
|  | 121 | ; TASK          Task number | 
|---|
|  | 122 | ; | 
|---|
|  | 123 | ; ELMTIEN       IEN of the element | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | ; [VALUE]       Value of the element | 
|---|
|  | 126 | ; | 
|---|
|  | 127 | ; [SORTBY]      Parent element is sorted by the value of the element | 
|---|
|  | 128 | ;               that is being added: | 
|---|
|  | 129 | ;                 1  Sort "as is" | 
|---|
|  | 130 | ;                 2  Sort as strings | 
|---|
|  | 131 | ;                 3  Sort as numbers | 
|---|
|  | 132 | ; | 
|---|
|  | 133 | ; [IGNORE]      Do not render this element into the resulting XML | 
|---|
|  | 134 | ;               document. | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | ; Return Values: | 
|---|
|  | 137 | ;       <0  Error code | 
|---|
|  | 138 | ;       >0  IEN of the report element | 
|---|
|  | 139 | ; | 
|---|
|  | 140 | UPDVAL(TASK,ELMTIEN,VALUE,SORTBY,IGNORE) ; | 
|---|
|  | 141 | I $G(ELMTIEN)<0  Q:$QUIT 0  Q | 
|---|
|  | 142 | N IENS,RORFDA,RORIEN,RORMSG,TMP | 
|---|
|  | 143 | I $D(^RORDATA(798.8,+TASK,"RI",+ELMTIEN))<10  Q:$QUIT 0  Q | 
|---|
|  | 144 | S IENS=(+ELMTIEN)_","_(+TASK)_"," | 
|---|
|  | 145 | S:$G(SORTBY) RORFDA(798.87,IENS,.03)=SORTBY | 
|---|
|  | 146 | S RORFDA(798.87,IENS,.04)=$S($G(IGNORE):1,1:"") | 
|---|
|  | 147 | S RORFDA(798.87,IENS,1)=$G(VALUE) | 
|---|
|  | 148 | D FILE^DIE(,"RORFDA","RORMSG") | 
|---|
|  | 149 | I $G(DIERR)  D  Q:$QUIT RC  Q | 
|---|
|  | 150 | . S RC=$$DBS^RORERR("RORMSG",-9,,,798.87,IENS) | 
|---|
|  | 151 | Q:$QUIT +$G(RORIEN(1))  Q | 
|---|
|  | 152 | ; | 
|---|
|  | 153 | ;***** DUMPS THE VARIABLE | 
|---|
|  | 154 | ; | 
|---|
|  | 155 | ; TASK          Task number | 
|---|
|  | 156 | ; | 
|---|
|  | 157 | ; ROOT          Closed root of the variable | 
|---|
|  | 158 | ; | 
|---|
|  | 159 | ; [PARENT]      IEN of the parent element (0, by default) | 
|---|
|  | 160 | ; | 
|---|
|  | 161 | ; [NAME]        Element name ("VARDUMP", by default) | 
|---|
|  | 162 | ; | 
|---|
|  | 163 | ; Return Values: | 
|---|
|  | 164 | ;       <0  Error code | 
|---|
|  | 165 | ;       >0  IEN of the element | 
|---|
|  | 166 | ; | 
|---|
|  | 167 | VARDUMP(TASK,ROOT,PARENT,NAME) ; | 
|---|
|  | 168 | N DUMP,FLT,LFLT,PI | 
|---|
|  | 169 | S:$G(NAME)="" NAME="VARDUMP" | 
|---|
|  | 170 | S:$G(PARENT)'>0 PARENT=0 | 
|---|
|  | 171 | ;--- | 
|---|
|  | 172 | S LFLT=$L(ROOT) | 
|---|
|  | 173 | S:$E(ROOT,LFLT)=")" LFLT=LFLT-1 | 
|---|
|  | 174 | S FLT=$E(ROOT,1,LFLT) | 
|---|
|  | 175 | ;--- | 
|---|
|  | 176 | S DUMP=$$ADDVAL^RORTSK11(TASK,NAME,,PARENT) | 
|---|
|  | 177 | I DUMP<0  Q:$QUIT DUMP  Q | 
|---|
|  | 178 | S PI=ROOT | 
|---|
|  | 179 | F  S PI=$Q(@PI)  Q:$E(PI,1,LFLT)'=FLT  D | 
|---|
|  | 180 | . D ADDVAL^RORTSK11(TASK,"ITEM",PI_"="_@PI,DUMP) | 
|---|
|  | 181 | Q:$QUIT DUMP  Q | 
|---|
|  | 182 | ; | 
|---|
|  | 183 | ;***** RETURNS TYPE (CODE) OF THE ELEMENT | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | ; NAME          Element name | 
|---|
|  | 186 | ; | 
|---|
|  | 187 | XEC(NAME) ; | 
|---|
|  | 188 | S:'$D(RORCACHE("XMLENT",NAME)) RORCACHE("XMLENT",NAME)=+$O(^ROR(799.31,"B",$E(NAME,1,30),0)) | 
|---|
|  | 189 | Q RORCACHE("XMLENT",NAME) | 
|---|