| 1 | MDRPCOO ; HOIFO/DP - Object RPCs (TMDOutput) ; [03-24-2003 15:44] | 
|---|
| 2 | ;;1.0;CLINICAL PROCEDURES;;Apr 01, 2004 | 
|---|
| 3 | ; Integration Agreements: | 
|---|
| 4 | ; IA# 2263 [Supported] Kernel Parameter APIs. | 
|---|
| 5 | ; IA# 2541 [Supported] API to get some Kernel System Parameter fields. | 
|---|
| 6 | ; IA# 2320 [Supported] %ZISH entry points. | 
|---|
| 7 | ; | 
|---|
| 8 | ANALYZE ; [Procedure] Analyze an insturment interface | 
|---|
| 9 | ; Checks the CP instrument file for completeness of an entry. | 
|---|
| 10 | ; Special Note, variable RTN actually contains the IEN of the | 
|---|
| 11 | ; entry. | 
|---|
| 12 | ; | 
|---|
| 13 | ; Variables: | 
|---|
| 14 | ;  MDTMP: [Private] Scratch | 
|---|
| 15 | ; | 
|---|
| 16 | ; New private variables | 
|---|
| 17 | NEW MDTMP | 
|---|
| 18 | D INST^MDHL7U2(RTN,.MDTMP) | 
|---|
| 19 | S @RESULTS@(0)=MDTMP_U_MDTMP(0) | 
|---|
| 20 | F X=0:0 S X=$O(MDTMP(X)) Q:X=""  D | 
|---|
| 21 | .S @RESULTS@(X)=MDTMP(X) | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | DIQ(DD,IENS) ; [Procedure] Gather data about an entry | 
|---|
| 25 | ; Input parameters | 
|---|
| 26 | ;  1. DD [Literal/Required] DDNumber | 
|---|
| 27 | ;  2. IENS [Literal/Required] IENS of entry to retrieve | 
|---|
| 28 | ; | 
|---|
| 29 | K ^TMP($J) | 
|---|
| 30 | D GETS^DIQ(DD,IENS,"*","",$NA(^TMP($J))) | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | EXECUTE ; [Procedure] Execute the output | 
|---|
| 34 | D INIT | 
|---|
| 35 | D HFSOPEN("TMDOUTPUT") | 
|---|
| 36 | I POP S @RESULTS@(0)="-1^Unable to open HFS Device" Q | 
|---|
| 37 | U IO D @RTN | 
|---|
| 38 | D HFSCLOSE("TMDOUTPUT") | 
|---|
| 39 | D EXIT | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | EXIT ; [Procedure] Cleanup | 
|---|
| 43 | K ^TMP("DILIST",$J),^TMP($J) | 
|---|
| 44 | Q | 
|---|
| 45 | ; | 
|---|
| 46 | HFSCLOSE(HANDLE) ; [Procedure] | 
|---|
| 47 | ; Input parameters | 
|---|
| 48 | ;  1. HANDLE [Literal/Required] File Handle | 
|---|
| 49 | ; | 
|---|
| 50 | ; Variables: | 
|---|
| 51 | ;  MDDEL: [Private] Deletion array for Kernel | 
|---|
| 52 | ;  MDDIR: [Private] Holds VistA scratch directory | 
|---|
| 53 | ;  MDFILE: [Private] Unique filename | 
|---|
| 54 | ; | 
|---|
| 55 | ; New private variables | 
|---|
| 56 | NEW MDDEL,MDDIR,MDFILE | 
|---|
| 57 | D CLOSE^%ZISH(HANDLE) | 
|---|
| 58 | K @RESULTS | 
|---|
| 59 | S MDDIR=$$GET^XPAR("DIV","MD HFS SCRATCH") | 
|---|
| 60 | S MDFILE="MD"_DUZ_".DAT",MDDEL(MDFILE)="" | 
|---|
| 61 | S X=$$FTG^%ZISH(MDDIR,MDFILE,$NAME(@RESULTS@(1)),3) | 
|---|
| 62 | S Y=$O(@RESULTS@(""),-1)+1,@RESULTS@(Y)="[End of Report]" | 
|---|
| 63 | S X=$$DEL^%ZISH(MDDIR,$NA(MDDEL)) | 
|---|
| 64 | Q | 
|---|
| 65 | ; | 
|---|
| 66 | HFSOPEN(HANDLE) ; [Procedure] Open Host File for output | 
|---|
| 67 | ; Input parameters | 
|---|
| 68 | ;  1. HANDLE [Literal/Required] File Handle | 
|---|
| 69 | ; | 
|---|
| 70 | ; Variables: | 
|---|
| 71 | ;  MDDIR: [Private] VistA scratch directory | 
|---|
| 72 | ;  MDFILE: [Private] Unique file name | 
|---|
| 73 | ; | 
|---|
| 74 | ; New private variables | 
|---|
| 75 | NEW MDDIR,MDFILE | 
|---|
| 76 | S MDDIR=$$GET^XPAR("DIV","MD HFS SCRATCH") | 
|---|
| 77 | S MDFILE="MD"_DUZ_".DAT" | 
|---|
| 78 | D OPEN^%ZISH(HANDLE,MDDIR,MDFILE,"W") Q:POP | 
|---|
| 79 | Q | 
|---|
| 80 | ; | 
|---|
| 81 | INIT ; [Procedure] Cleanup environment before starting | 
|---|
| 82 | K ^TMP("DILIST",$J),^TMP($J) | 
|---|
| 83 | Q | 
|---|
| 84 | ; | 
|---|
| 85 | INST(IEN) ; [Procedure] Display Instrument | 
|---|
| 86 | ; Input parameters | 
|---|
| 87 | ;  1. IEN [Literal/Required] Instrument IEN or * for all | 
|---|
| 88 | ; | 
|---|
| 89 | ; Variables: | 
|---|
| 90 | ;  MDDX: [Private] Scratch counter | 
|---|
| 91 | ; | 
|---|
| 92 | ; New private variables | 
|---|
| 93 | NEW MDDX | 
|---|
| 94 | I $G(IEN,"*")="*" D  Q | 
|---|
| 95 | .W "NAME",?20,"PRINT NAME",?40,"SERIAL #",?50,"M RTN",?60,"PKG",?72,"ACTIVE" | 
|---|
| 96 | .D LIST^DIC(702.09,"","@;.01;.06;.08;.11;.12;.09","P") | 
|---|
| 97 | .F X=0:0 S X=$O(^TMP("DILIST",$J,X)) Q:'X  S MDDX=$G(^(X,0)) D | 
|---|
| 98 | ..W !,$$EXT($P(MDDX,U,2),18),?20,$E($P(MDDX,U,3),1,18),?40,$P(MDDX,U,4),?50,$P(MDDX,U,5),?60,$P(MDDX,U,6),?72,$P(MDDX,U,7) | 
|---|
| 99 | D DIQ(702.09,IEN_",") | 
|---|
| 100 | W $$LINE(702.09,IEN_",",.01,0,1),!! | 
|---|
| 101 | S X=.01 F  S X=$O(^TMP($J,702.09,IEN_",",X)) Q:'X  D | 
|---|
| 102 | .W !,$$LINE(702.09,IEN_",",X,30,1) | 
|---|
| 103 | Q | 
|---|
| 104 | ; | 
|---|
| 105 | LINE(DD,IENS,FIELD,COL,TITLE) ; [Procedure] Display a default line of a field loaded from DIQ above | 
|---|
| 106 | ; Input parameters | 
|---|
| 107 | ;  1. DD [Literal/Required] DD Number | 
|---|
| 108 | ;  2. IENS [Literal/Required] Record IENS | 
|---|
| 109 | ;  3. FIELD [Literal/Required] Field number | 
|---|
| 110 | ;  4. COL [Literal/Required] Column for data | 
|---|
| 111 | ;  5. TITLE [Literal/Required] Use FileMan TITLE:1 or LABEL:0 | 
|---|
| 112 | ; | 
|---|
| 113 | Q:'$$VFIELD^DILFD(DD,FIELD) "" | 
|---|
| 114 | W:$X>1 ! | 
|---|
| 115 | W $S($G(TITLE):$$GET1^DID(DD,FIELD,"","TITLE"),1:$$GET1^DID(DD,FIELD,"","LABEL")) | 
|---|
| 116 | W ": ",?($G(COL,0)),$S(^TMP($J,DD,IENS,FIELD)]"":^(FIELD),1:"<Blank>") | 
|---|
| 117 | Q "" | 
|---|
| 118 | ; | 
|---|
| 119 | PAR ; [Procedure] Display System Parameters | 
|---|
| 120 | ; Variables: | 
|---|
| 121 | ;  MD: [Private] Scratch | 
|---|
| 122 | ;  MDLST: [Private] Scratch | 
|---|
| 123 | ;  MDMULT: [Private] Scratch | 
|---|
| 124 | ;  MDPAR: [Private] Scratch | 
|---|
| 125 | ;  MDWP: [Private] Scratch | 
|---|
| 126 | ; | 
|---|
| 127 | ; New private variables | 
|---|
| 128 | NEW MD,MDLST,MDMULT,MDPAR,MDWP | 
|---|
| 129 | W "System Parameters For: ",$$KSP^XUPARAM("WHERE") | 
|---|
| 130 | D RPC^MDRPCOV(.X,"PARLST","SYS") | 
|---|
| 131 | F MD=0:0 S MD=$O(^TMP($J,MD)) Q:'MD  D | 
|---|
| 132 | .S MDPAR=$P(^TMP($J,MD),U,2) | 
|---|
| 133 | .S MDMULT=($P(^TMP($J,MD),U,5)="Yes") | 
|---|
| 134 | .S MDWP=($P(^TMP($J,MD),U,4)="word processing") | 
|---|
| 135 | .W !!,"Parameter:   ",MDPAR | 
|---|
| 136 | .W ?55,"Type:     ",$P(^TMP($J,MD),U,4) | 
|---|
| 137 | .W !,"Description: ",$P(^TMP($J,MD),U,3) | 
|---|
| 138 | .W ?55,"Multiple: ",$P(^TMP($J,MD),U,5) | 
|---|
| 139 | .D:'MDMULT  ; Not Multiple | 
|---|
| 140 | ..I 'MDWP W !,"      Value: ",$$GET^XPAR("SYS",MDPAR,,"E") Q | 
|---|
| 141 | ..K MDWP D GETWP^XPAR(.MDWP,"SYS",MDPAR,1) D | 
|---|
| 142 | ...W !,"WP-Text:" | 
|---|
| 143 | ...F X=0:0 S X=$O(MDWP(X)) Q:'X  W !?2,MDWP(X,0) | 
|---|
| 144 | .D:MDMULT  ; Multiple Instances | 
|---|
| 145 | ..D:'MDWP | 
|---|
| 146 | ...W !,?2,"Values:" | 
|---|
| 147 | ...D GETLST^XPAR(.MDLST,"SYS",MDPAR,"E") | 
|---|
| 148 | ...F X=0:0 S X=$O(MDLST(X)) Q:'X  D | 
|---|
| 149 | ....W !?2,$P(MDLST(X),"^",1) | 
|---|
| 150 | ....W ?30,"= ",$P(MDLST(X),U,2) | 
|---|
| 151 | ....;W !!," Instance: ",$P(MDLST(X),"^",1) | 
|---|
| 152 | ....;W !,"    Value: ",$P(MDLST(X),U,2) | 
|---|
| 153 | K ^TMP($J) | 
|---|
| 154 | Q | 
|---|
| 155 | ; | 
|---|
| 156 | PROC(IEN) ; [Procedure] Display a procedure | 
|---|
| 157 | ; Input parameters | 
|---|
| 158 | ;  1. IEN [Literal/Required] Procedure IEN or * for all | 
|---|
| 159 | ; | 
|---|
| 160 | I $G(IEN,"*")="*" D  Q | 
|---|
| 161 | .W "NAME",?32,"TREATING SPECIALTY",?54,"TIU NOTE",?76,"LOCATION",?98,"ACTIVE",?108,"EXT DATA" | 
|---|
| 162 | .D LIST^DIC(702.01,"","@;.01;.02;.04;.05;.09;.03","P") | 
|---|
| 163 | .F X=0:0 S X=$O(^TMP("DILIST",$J,X)) Q:'X  D | 
|---|
| 164 | ..; Naked refs below are from ^TMP("DILIST",$J,X) | 
|---|
| 165 | ..W !,$$EXT($P(^(X,0),U,2),30) | 
|---|
| 166 | ..W ?32,$$EXT($P(^(0),U,3),20) | 
|---|
| 167 | ..W ?54,$$EXT($P(^(0),U,4),20) | 
|---|
| 168 | ..W ?76,$$EXT($P(^(0),U,5),20) | 
|---|
| 169 | ..W ?98,$P(^(0),U,6) | 
|---|
| 170 | ..W ?108,$P(^(0),U,7) | 
|---|
| 171 | D DIQ(702.01,IEN_",") | 
|---|
| 172 | W $$LINE(702.01,IEN_",",.01,0,1),! | 
|---|
| 173 | S X=.01 F  S X=$O(^TMP($J,702.01,IEN_",",X)) Q:'X  D | 
|---|
| 174 | .W !,$$LINE(702.01,IEN_",",X,32,1) | 
|---|
| 175 | K ^TMP("DILIST",$J),^TMP($J) | 
|---|
| 176 | W !!,"Associated Instruments",!,$TR($J("",30)," ","-"),! | 
|---|
| 177 | D LIST^DIC(702.011,","_IEN_",",.01,"P") | 
|---|
| 178 | I '$O(^TMP("DILIST",$J,0)) W ?5,"<None>" | 
|---|
| 179 | E  F X=0:0 S X=$O(^TMP("DILIST",$J,X)) Q:'X  W $P(^(X,0),U,2),! | 
|---|
| 180 | K ^TMP("DILIST",$J) | 
|---|
| 181 | Q | 
|---|
| 182 | ; | 
|---|
| 183 | RPC(RESULTS,OPTION,RTN) ; [Procedure] Main RPC for TMD_Output Object | 
|---|
| 184 | ; RPC: [MD TMDOUTPUT] | 
|---|
| 185 | ; | 
|---|
| 186 | ; Input parameters | 
|---|
| 187 | ;  1. RESULTS [Literal/Required] RPC Return Array | 
|---|
| 188 | ;  2. OPTION [Literal/Required] Option to execute | 
|---|
| 189 | ;  3. RTN [Literal/Required] Routine to execute | 
|---|
| 190 | ; | 
|---|
| 191 | S RESULTS=$NA(^TMP("MD",$J)) K @RESULTS | 
|---|
| 192 | I $T(@OPTION)]"" D @OPTION | 
|---|
| 193 | D:'$D(@RESULTS) BADRPC^MDRPCU("MD TMDOUTPUT","MDRPCOO",OPTION) | 
|---|
| 194 | D CLEAN^DILF | 
|---|
| 195 | Q | 
|---|
| 196 | ; | 
|---|
| 197 | EXT(VALUE,LENGTH) ; [Function] $Extract with ... trailer | 
|---|
| 198 | ; Input parameters | 
|---|
| 199 | ;  1. VALUE [Literal/Required] Value to truncate | 
|---|
| 200 | ;  2. LENGTH [Literal/Required] Result length | 
|---|
| 201 | ; | 
|---|
| 202 | I $L(VALUE)>LENGTH S VALUE=$E(VALUE,1,LENGTH-3)_"..." | 
|---|
| 203 | Q VALUE | 
|---|
| 204 | ; | 
|---|