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