| [613] | 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 |  ;
 | 
|---|