vistalink tester

62 views
Skip to first unread message

Solomon Blaz

unread,
Oct 16, 2011, 5:37:16 PM10/16/11
to vista-emer...@googlegroups.com
Hello,

I've commited a copy of a command line VistALink tester jar into source control which you can grab with:


or follow the link in a browser and save it where you like.

The simplest way to use it is to run:

java -jar vistalink-tester-0.1.one-jar.jar

and fill out all the prompts.

I like to use the RPC that returns vitals for the CPRS coversheet:

ORQQVI VITALS in the OR CPRS GUI CHART context

When you're using it over and over its nice to use the command line options, for example:

java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-context="OR CPRS GUI CHART" -rpc-name="ORQQVI VITALS"

then fill in the access/verify code pair of the VistALink application proxy user and when it prompts you for RPC Params, the first param should be the DFN of patient you'd like to fetch vitals for.  I've been using patient with DFN=229 in the demo accounts.

Sure enough, this fails with an undefined variable on the M side:
A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF; nested exception is gov.va.med.vistalink.adapter.record.VistaLinkFaultException: 
Fault Code: 'Server'; Fault String: 'System Error'; Fault Actor: ''; 
Code: '181001'; Type: 'system'; Message: 'A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF'

If we can get some M and/or GTM experts to get this RPC to return vital signs successfully, then the rest of the RPCs over VistALink should also work.  :)

You can get a little mini help message by running:

java -jar vistalink-tester-0.1.one-jar.jar --help

The source for this program is here:

If you wish, you can build it yourself (with maven installed) using:

mvn package

Let me know what happens and/or if you have questions,
Solomon

skip ormsby

unread,
Oct 16, 2011, 6:45:22 PM10/16/11
to vista-emer...@googlegroups.com
You didn't tell the RPC which patient you wanted:
NAME: ORQQVI VITALS                     TAG: FASTVIT
  ROUTINE: ORQQVI                       RETURN VALUE TYPE: ARRAY
  AVAILABILITY: RESTRICTED
 DESCRIPTION:
 Array of patient most recent vitals within start and stop date/times.  If
 no start and stop dates are indicated, the most recent are returned.

 If no start date is passed then the start date is 1 (i.e. before any
 dates).

 If no stop date is passed then the start date is also the stop date and if
 there is not start date then 9999999 is used as the stop date.
INPUT PARAMETER: PATIENT ID =DFN            PARAMETER TYPE: LITERAL
  MAXIMUM DATA LENGTH: 16               REQUIRED: YES
 DESCRIPTION:
 Patient id (DFN) from Patient File (#2).
INPUT PARAMETER: START DATE/TIME        PARAMETER TYPE: LITERAL
  MAXIMUM DATA LENGTH: 16
 DESCRIPTION:
 Start date/time for vital retrieval in Fileman format.
 If none is passed then the start date is 1 (i.e. before any dates).
INPUT PARAMETER: STOP DATE/TIME         PARAMETER TYPE: LITERAL
  MAXIMUM DATA LENGTH: 16
 DESCRIPTION:
 Stop date/time for vital retrieval in Fileman format.
 If none is passed then the Start date is also the stop date and if there
 is not start date then 9999999 is used as the stop date
 RETURN PARAMETER DESCRIPTION:
 Array of patient most recent vitals within start and stop date/times.
 If no start and stop dates are indicated, the most recent are returned.
 Vitals are returned in the format:
 vital ien^vital type^rate/value^date/time taken


--
You received this message because you are subscribed to the Google Groups "VistA Emergency Room" group.
To post to this group, send email to vista-emer...@googlegroups.com.
To unsubscribe from this group, send email to vista-emergency-...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/vista-emergency-room?hl=en.

skip ormsby

unread,
Oct 16, 2011, 7:04:21 PM10/16/11
to vista-emer...@googlegroups.com
In another words here is what I think (remember I DO NOT have a clue about Java) the line should look like:

old:

java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-context="OR CPRS GUI CHART" -rpc-name="ORQQVI VITALS"

new:
java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -DFN=229 -rpc-context="OR CPRS GUI CHART" -rpc-name="ORQQVI VITALS"

Nancy Anthracite

unread,
Oct 16, 2011, 7:09:12 PM10/16/11
to vista-emer...@googlegroups.com, Solomon Blaz
Solomon, I am clueless. Can you call me and show me how to make this
all work and then maybe Skip and I can work together to see what the
problem is.

240-246-0123
240-793-7436

--
Nancy Anthracite

Nancy Anthracite

unread,
Oct 16, 2011, 9:04:29 PM10/16/11
to vista-emer...@googlegroups.com, Solomon Blaz
Well, I got a clue about how to run it and tried a few things,
including adding provider permissions and keys to the EDIS user so he
would not get rejected getting clinical information but that did not
seem to matter. The swingtester had quit working so I edited the
XINETD entry. WHat I think may be significant is that the log for
going in through Wally's routine is logging this error, so I think
maybe we need to start the VistALink listener instead:

Sun Oct 16 20:46:02 EDT 2011
%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

So if you could do that solomon, and I will disable that xinetd
entry, maybe that would help. Can you set the port of the VistALink
listener, etc?

On Sunday, October 16, 2011, Nancy Anthracite wrote:
> Solomon, I am clueless. Can you call me and show me how to make
this
> all work and then maybe Skip and I can work together to see what
the
> problem is.
>
> 240-246-0123
> 240-793-7436
>


--
Nancy Anthracite

Nancy Anthracite

unread,
Oct 16, 2011, 11:10:03 PM10/16/11
to vista-emer...@googlegroups.com, Solomon Blaz
Attached is the tcpdump capture of what is going in and out of the
9314 port on 66.206.177.44 and the capture as seen in the roll and
scroll on the sending machine.
EDIS-Capture-10-16-2011-command-line-RPC.doc
TerminalOutput-10-16-2011.txt

Nancy Anthracite

unread,
Oct 16, 2011, 11:35:14 PM10/16/11
to vista-emer...@googlegroups.com, Solomon Blaz
I should have sent this out before I sent out that last email. In
short, XINETD is still running

Well, I see in the documentation that XINETD is used on Linux
machines even by Cache, and the protocol is tcp, so I changed it all
back and tried it with no luck

Now I noticed there is a user configured for VistALink, and that is
not the same user as for the CONNECTOR proxy. Should it be? The
Person Class is APPLICATION PROXY for VistALink and CONNECTOR Proxy
for EDIS. Is that right also? You will see I added a lot of doctor
stuff and more to the EDIS user to see if that would help and it did
nothing. I will take it out.

Select OPTION: 5 INQUIRE TO FILE ENTRIES

OUTPUT FROM WHAT FILE: NEW PERSON//
Select NEW PERSON NAME: `14 CONNECTOR,EDIS
ANOTHER ONE: `10000000058 XOBVTESTER,APPLICATION PROXY
ANOTHER ONE:
STANDARD CAPTIONED OUTPUT? Yes// (Yes)
Include COMPUTED fields: (N/Y/R/B): NO// BOTH Computed Fields and
Record Number
(IEN)
DISPLAY AUDIT TRAIL? No// YES

NUMBER: 14 NAME: CONNECTOR,EDIS
ACCESS CODE: <Hidden> DISUSER: NO
VERIFY CODE never expires: Yes
DATE VERIFY CODE LAST CHANGED: APR 10,2005
VERIFY CODE: <Hidden>
Created on Sep 25, 2011@18:37:12 by User #10000000020 (XOBU SITE
SETUP MENU
Option) (XOBV LISTENER CONNECTOR PROXY Protocol)
DATE ENTERED: SEP 25, 2011 CREATOR: ANTHRACITE,NANCY
LAST SIGN-ON DATE/TIME: OCT 16, 2011@22:27:52
XUS Logon Attempt Count: 0 XUS Active User: Yes
Entry Last Edit Date: OCT 16, 2011 NAME COMPONENTS: 200
SIGNATURE BLOCK PRINTED NAME: EDIS CONNECTOR
KEY: XUPROG GIVEN BY: ANTHRACITE,NANCY
DATE GIVEN: OCT 16, 2011
KEY: XUMGR GIVEN BY: ANTHRACITE,NANCY
DATE GIVEN: OCT 16, 2011
KEY: XUPROGMODE GIVEN BY: ANTHRACITE,NANCY
DATE GIVEN: OCT 16, 2011
KEY: DG SENSITIVITY GIVEN BY: ANTHRACITE,NANCY
DATE GIVEN: OCT 16, 2011
KEY: PROVIDER GIVEN BY: ANTHRACITE,NANCY
DATE GIVEN: OCT 16, 2011
KEY: ORES GIVEN BY: ANTHRACITE,NANCY

Enter RETURN to continue or '^' to exit:
DATE GIVEN: OCT 16, 2011
RESTRICT PATIENT SELECTION: NO MULTIPLE SIGN-ON: ALLOWED
SECONDARY MENU OPTIONS: OR CPRS GUI CHART
SECONDARY MENU OPTIONS: XOBV VISTALINK TESTER
SECONDARY MENU OPTIONS: XOBV LISTENER STARTUP
SECONDARY MENU OPTIONS: XOBU SITE SETUP MENU
TIMESTAMP: 62380,73923
CPRS TAB: COR EFFECTIVE DATE: OCT 16, 2011
CPRS TAB: RPT EFFECTIVE DATE: OCT 16, 2011
Person Class: Physicians (M.D. and D.O.)
Effective Date: OCT 16, 2011
User Class: CONNECTOR PROXY ISPRIMARY: Yes
DATE ACCESS CODE LAST CHANGED (c): SEP 25,2011
PROVIDER KEY (c): 1

NUMBER: 10000000058 NAME: XOBVTESTER,APPLICATION
PROXY
ACCESS CODE: <Hidden>
DATE VERIFY CODE LAST CHANGED: APR 10,2005
VERIFY CODE: <Hidden>
Created on Oct 16, 2011@21:23:05 by User #10000000020
DATE ENTERED: SEP 22, 2006 CREATOR: ANTHRACITE,NANCY
LAST SIGN-ON DATE/TIME: OCT 16, 2011@21:27:39
XUS Logon Attempt Count: 0 XUS Active User: Yes
Entry Last Edit Date: OCT 16, 2011
SECONDARY MENU OPTIONS: XOBV VISTALINK TESTER
TIMESTAMP: 60530,28811
User Class: APPLICATION PROXY ISPRIMARY: Yes
DATE ACCESS CODE LAST CHANGED (c): OCT 16,2011
PROVIDER KEY (c): 0


And I see that the same error comes up whether I use the VISTA LINK
user or the EDIS user in the log for the connection through XINETD
that captures Linux errors. I am just not sure if this is happening
when it is forcefully disconnected or before that.

vademo4-09@gtm:~/EHR$ cat VistALinkConnect.log
Sun Oct 16 21:46:56 EDT 2011
Sun Oct 16 21:52:54 EDT 2011


%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

Sun Oct 16 21:57:23 EDT 2011


%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

Sun Oct 16 21:59:44 EDT 2011


%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

Sun Oct 16 22:05:50 EDT 2011


%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

Sun Oct 16 22:19:05 EDT 2011


%GTM-E-SOCKWRITE, Write to a TCP/IP socket failed
%GTM-I-TEXT, Broken pipe

Sun Oct 16 22:25:42 EDT 2011
Sun Oct 16 22:27:48 EDT 2011

Here is the discription of the RPC

NUMBER: 171 NAME: ORQQVI VITALS


TAG: FASTVIT ROUTINE: ORQQVI
RETURN VALUE TYPE: ARRAY AVAILABILITY: RESTRICTED
DESCRIPTION:
Array of patient most recent vitals within start and stop
date/times. If
no start and stop dates are indicated, the most recent are returned.

If no start date is passed then the start date is 1 (i.e. before any
dates).

If no stop date is passed then the start date is also the stop date
and if
there is not start date then 9999999 is used as the stop date.

INPUT PARAMETER: PATIENT ID PARAMETER TYPE: LITERAL


MAXIMUM DATA LENGTH: 16 REQUIRED: YES
DESCRIPTION:
Patient id (DFN) from Patient File (#2).
INPUT PARAMETER: START DATE/TIME PARAMETER TYPE: LITERAL
MAXIMUM DATA LENGTH: 16
DESCRIPTION:
Start date/time for vital retrieval in Fileman format.
If none is passed then the start date is 1 (i.e. before any dates).
INPUT PARAMETER: STOP DATE/TIME PARAMETER TYPE: LITERAL
MAXIMUM DATA LENGTH: 16
DESCRIPTION:
Stop date/time for vital retrieval in Fileman format.
If none is passed then the Start date is also the stop date and if
there
is not start date then 9999999 is used as the stop date

Enter RETURN to continue or '^' to exit:

RETURN PARAMETER DESCRIPTION:
Array of patient most recent vitals within start and stop
date/times.
If no start and stop dates are indicated, the most recent are
returned.
Vitals are returned in the format:
vital ien^vital type^rate/value^date/time taken

Solomon Blaz

unread,
Oct 17, 2011, 1:51:08 AM10/17/11
to nanth...@earthlink.net, vista-emer...@googlegroups.com
Hi guys,

Sorry I've been away from the computer.  I seem to be continuously "up against it".  I'm traveling next week so trying to squeeze in all the things I have to finish before I head out Friday.

Skip, sorry I wasn't clear, I passed in the DFN (=229) during the prompts that the tester gives you when you run it.  But the fact that it is undefined by the time it gets to the routine over VistALink is what I think is the root cause of our issues.  Nancy's tcpdump looks like it confirms the 229 is getting passed over the wire (at the end of this bytestring)

.07XOB RPC05000031.5000031.5000030.000013ORQQVI VITALS00019.Q3t@"3ZtFnRt@\63T/00001000003duz0000350000016notauthenticated000111000000002000001100006string00001100003229.

Here's a transcript of the whole exchange (some log messages edited out):
java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-context="OR CPRS GUI CHART" -rpc-name="ORQQVI VITALS"
Access: EDISUSER1
Verify: VISTAIS#1
Enter RPC Parameters (^ when finished)
RPC Param 1: 229
RPC Param 2: ^
Executing vlink://5...@66.206.177.84:9314/OR CPRS GUI CHART/ORQQVI VITALS?[1]=229
7139 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1627
8634 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1478
9835 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1192
9841 [main] INFO gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection - gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection[]66.206.177.84[]9314[]1[]J2EE[fdi]1[mdi]1 M $JOB=5108
getConnection(...) processing time = 1
10038 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 190
11400 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1353
A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF; nested exception is gov.va.med.vistalink.adapter.record.VistaLinkFaultException: 
Fault Code: 'Server'; Fault String: 'System Error'; Fault Actor: ''; 
Code: '181001'; Type: 'system'; Message: 'A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF'

Here's another data point, when we call an RPC that takes no arguments (such as "XUS INTRO MSG"), it works fine:
java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-name="XUS INTRO MSG"
Access: EDISUSER1
Verify: VISTAIS#1
RPC Context: 
Enter RPC Parameters (^ when finished)
RPC Param 1: ^
Executing vlink://5...@66.206.177.84:9314//XUS INTRO MSG
5158 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1499
6384 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1210
7822 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1426
7826 [main] INFO gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection - gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection[]66.206.177.84[]9314[]1[]J2EE[fdi]1[mdi]1 M $JOB=5470
getConnection(...) processing time = 1
8005 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 174
9267 [main] INFO gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer (milli-secs): 1257
   ************************************************************************* 
    WELCOME TO THE DEPARTMENT OF VETERANS AFFAIRS DEMO OF CPRS AND VISTA 
       KINDLY PROVIDED FOR USE OUTSIDE OF THE VA. SPECIAL THANKS TO 
     JOSEPH TASTROM FOR PREPARING THIS DEMO FOR THE VA. IT IS SLIGTLY 
            MODIFIED FROM THE VERSION THAT CAN BE SEE AT 
 
                     http://www.va.gov/vista 
 
 
 
 
                 This Demo Uses CPRS Version 1.0.27.83 
 
                        You may sign in with 
 
                        ACCESS CODE: VISTAIS#1 
                        VERIFY CODE: #1ISVISTA 
                  Electronic Signature:  VISTAIS#1 
 
               **AMA Copyright Notice** **AMA Copyright Notice* CPT copyright
AMA 2010 American Medical Association.  All rights reserved.  rights
reserved.  
 
Fee schedules, relative value units, conversion factors and/or related 
components are not assigned by the AMA, are not part of CPT, and the AMA is 
not recommending their use.  The AMA does not directly or indirectly practice 
medicine or dispense medical services. The AMA assumes no liability for data 
contained or not contained herein.  
 
CPT is a registered trademark of the American Medical Association. 

So, it seems to me that VistALink on GTM is only partially working.  RPCs with no args: success.  RPCs with args: M errors (undefined variables).  Its like it stops processing the bytes coming over the wire too early or something.

Nancy, I'm out of my area of expertise with VistALink setup - it was developed by another team.  When we used it back in the day, though it was pretty big pain in some ways, this part of it "just worked".  It was never dropping arguments of the RPC.  I certainly don't know what is the same or different between Caché and/or GTM and its relationship to xinetd.  Could it be something to do with the TCP device definition in VistA?  Is there even one of those?  Did I just make that up?  I think it has some administration menus off of EVE or something, but I'm afraid I don't have them at the forefront of my memory.  I'd probably dig out the install guide and see what I could learn.  :)   (This is where we need an M expert)  ;) 

I don't think there is anything wrong with the application user, otherwise we wouldn't be able to connect at all, so I think permissions for that user and the like is probably a red herring.

How that log is filling up with socket write failures and broken pipe messages is where I think we should have the experts dig in.  ;)

Your guess is as good as mine,
Solomon

skip ormsby

unread,
Oct 17, 2011, 7:19:11 AM10/17/11
to vista-emer...@googlegroups.com, nanth...@earthlink.net
Wonder if it is possible on GT.M to run the listener instead of xinetd?

Nancy Anthracite

unread,
Oct 17, 2011, 10:28:10 AM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
I have two interesting documents attached, one with the EDIS capture
and one with the Swing Tester capture displayed in Hex so it is
easier to compare the RPCs as they are clearly set out beginning with
07XOB RPC

Solomon, could you make a jar with the RPC XOBV TEST STRING with your
tester so we could compare apples to apples?

> > java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -
P=9314
> > -station-num=500 -DUZ=10000000020 -rpc-context="OR CPRS GUI
CHART"
> > -rpc-name="ORQQVI VITALS"


--
Nancy Anthracite

Hex-EDIS-Cap.txt
Hex-SwingTesterCapture.txt

George Lilly

unread,
Oct 17, 2011, 10:57:06 AM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
the RPC at VITALS^ORQQVI requires 3 paramaters; the DFN, the Start
Date, and the End Date. If you leave out the dates, it throws an
error:

GTM>D VITALS^ORQQVI(.G,229)
%GTM-E-UNDEF, Undefined local variable: ORSDT

GTM>D VITALS^ORQQVI(.G,229,"T-900","T")

GTM>ZWR G
G(1)="^No vitals found."

On Mon, Oct 17, 2011 at 10:28 AM, Nancy Anthracite

Solomon Blaz

unread,
Oct 17, 2011, 1:05:48 PM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
Sure, the vistalink-tester lets you call any RPC.  To call XOBV TEST STRING, use:

java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-name="XOBV TEST STRING"

and then hit return when it prompts you for "RPC Context" (assuming you want to call it with no context)

Does XOBV TEST STRING take arguments?

Cheers,
Solomon

Solomon Blaz

unread,
Oct 17, 2011, 1:10:31 PM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
I tried calling ORQQVI VITALS with 3 arguments and got the same thing (undefined DFN)

java -jar vistalink-tester-0.1.one-jar.jar -S=66.206.177.84 -P=9314 -station-num=500 -DUZ=10000000020 -rpc-context="OR CPRS GUI CHART" -rpc-name="ORQQVI VITALS"
Access: 
Verify: 
Enter RPC Parameters (^ when finished)
RPC Param 1: 229
RPC Param 2: 300
RPC Param 3: 311
RPC Param 4: ^
Executing vlink://5...@66.206.177.84:9314/OR CPRS GUI CHART/ORQQVI VITALS?[1]=229&[2]=300&[3]=311
A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF; nested exception is gov.va.med.vistalink.adapter.record.VistaLinkFaultException: 
Fault Code: 'Server'; Fault String: 'System Error'; Fault Actor: ''; 
Code: '181001'; Type: 'system'; Message: 'A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF'


There has to be some piece of code somewhere (I can only assume its in VistALink's M code) that read bytes off the network socket and sets up the arguments to call the RPC's routine with.  I don't know enough about VistA/GTM device IO to track this down...

Cheers,
S

George Lilly

unread,
Oct 17, 2011, 1:13:01 PM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
XOBV TEST STRING requires a string as an arguement:

GTM>D STRRP^XOBVLT(.G3,"TEST STRING")

GTM>ZWR G3
G3="Returned Input Value: TEST STRING"

George Lilly

unread,
Oct 17, 2011, 1:17:55 PM10/17/11
to vista-emer...@googlegroups.com, skip ormsby
skip pointed out that I was calling the wrong code for that RPC...
Here's what the right code does:

If the patient has no vitals, the return variable is not set. If the
patient has vitals, and you pass in the start and end date, Vitals are
returned..

Patient 2 has vitals. Patient 229 does not. At least in the system I'm using.

gpl

GTM>D FASTVIT^ORQQVI(.G4,229)

GTM>ZWR G4
%GTM-E-UNDEF, Undefined local variable: G4

GTM>D FASTVIT^ORQQVI(.G4,229,"T-900","T")

GTM>ZWR G4
%GTM-E-UNDEF, Undefined local variable: G4

GTM>D FASTVIT^ORQQVI(.G4,2,"T-900","T")

GTM>ZWR G4
G4(1)="22^T^99^3050719.1558^99 F^(37.2 C)^"
G4(2)="24^P^32^3050719.1558^32^^"
G4(3)="23^R^23^3050719.1558^23^^"
G4(4)="21^BP^220/89^3050719.1558^220/89^^"
G4(5)="25^HT^72^3050719.1558^72 in^(182.9 cm)^"
G4(6)="26^WT^200^3050719.1558^200 lb^(90.7 kg)^"
G4(7)="27^PN^5^3050719.1558^5^^"
G4(8)="-1^BMI^27.18^3050719.1558^27.18^^"

skip ormsby

unread,
Oct 17, 2011, 2:41:57 PM10/17/11
to George Lilly, vista-emer...@googlegroups.com
George the problem is when you enter 229 for the patient IEN/DFN at the java prompt, you get this M error:

A system error occurred in M: FASTVIT+16^ORQQVI, Undefined local variable: DFN,150373850,-%GTM-E-UNDEF; nested exception is gov.va.med.vistalink.adapter.record.

and if I look at the error in the error trap and search all of the text for 229, there is no 229 anywhere.  So that tells me the value is not being passed in.  And from Solomon showed above if the call is read only it works as advertised, which I now suspect is why the swing tester works, because there is no parameter passing.

skip ormsby

unread,
Oct 17, 2011, 3:06:41 PM10/17/11
to George Lilly, vista-emer...@googlegroups.com
Thought I found something in the attached developer guide, but no such luck.  Here is the section I was looking at:
4.1.2. RPCs for Use by Application Proxy Users

Most of this guide is all Dr. Suse to me.
vistalink_1.5_developer_guide.pdf

Nancy Anthracite

unread,
Oct 17, 2011, 5:37:30 PM10/17/11
to vista-emer...@googlegroups.com, skip ormsby, George Lilly
I tried to test this here at work and can't do it with a capture correctly
because it times out. My connection is too slow, but it still gives an error
as if the parameters are not passed when run on the local machine.

nancy@gtm:~$ java -jar vistalink-tester-0.1.one-jar.jar -S=127.0.0.1 -P=9314 -
station-num=500 -DUZ=10000000020 -rpc-name="XOBV TEST STRING"
Access:
Verify:
RPC Context:
57 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnectionFactory - Creating
managed connection factory, VistALink adapter version 1.5.0.026.
62 [main] WARN
gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnectionFactory -
gov.va.med.environment.servertype is not defined for this JVM. For J2EE
systems only -- check this -D JVM arg; MBeans required for the VistaLink
console will not be loaded.


Enter RPC Parameters (^ when finished)

RPC Param 1: "Hello WORLD!"
RPC Param 2: ^
Executing vlink://5...@127.0.0.1:9314//XOBV TEST STRING?[1]="Hello WORLD!"
41964 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer
(milli-secs): 1022
43092 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer
(milli-secs): 1101
44190 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer
(milli-secs): 1082
44203 [main] INFO gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection
-
gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnection[]127.0.0.1[]9314[]1[]J2EE[fdi]1[mdi]1
M $JOB=26668
getConnection(...) processing time = 3
44291 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer
(milli-secs): 70
45352 [main] INFO
gov.va.med.vistalink.adapter.spi.VistaSocketConnection.AuditLog - Socket xfer
(milli-secs): 1037
A system error occurred in M: STRRP+1^XOBVLT, Undefined local variable:
XOBSTR,150373850,-%GTM-E-UNDEF; nested exception is

gov.va.med.vistalink.adapter.record.VistaLinkFaultException:
Fault Code: 'Server'; Fault String: 'System Error'; Fault
Actor: '';
Code: '181001'; Type: 'system'; Message: 'A system error

occurred in M: STRRP+1^XOBVLT, Undefined local variable:
XOBSTR,150373850,-%GTM-E-UNDEF'
nancy@gtm:~$ sudo su
gtm:/home/nancy# tcpdump -vvvv port 9314 -w EDIS-10-17-2011-2.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535
bytes
^C50 packets captured
50 packets received by filter
0 packets dropped by kernel


--
Nancy Anthracite

skip ormsby

unread,
Oct 17, 2011, 6:12:36 PM10/17/11
to nanth...@earthlink.net, vista-emer...@googlegroups.com, George Lilly
I think the answer is in sections 4.2.2 & 4.2.3 both sections talk about parameter passing.  It's all Greek to me.  How I stumbled upon this is in
Routine:XOBVRPC  ;; mjk/alb - VistaLInk RPC Server Listener Code
Line:
SET METHSIG=TAG_"^"_ROU_"(.XOBR"_$GET(XOBDATA("XOB RPC","PARAMS"))_")"
Reply all
Reply to author
Forward
0 new messages