Hey All,
I am having problems working on a VA project that will interface VistA to a Java process.
The VistA will be standard VA setup, meaning Cache' on Windows, and the Java process will be on a separate box. I'm not sure whether the host OS for the Java box will be Linux or Windows. The Java process will take data from Mumps (in an XML flat file), run analysis on it, and then return results in XML format.
To have the two process talk to each other, I have been planning on using a common host file system and then passing messages in the form of files stored in predefined locations. However, as per this thread:
https://groups.google.com/forum/?fromgroups#!topic/Hardhats/z2gUU3ikZiE I am having permission issues whereby the server mumps code can't access the shared network drive. And even if I can fiddle with permissions on my development environment, I worry how this issue will play out when implemented in a VA setting. I.e. will I be able to get the permissions altered by IT/IRM departments?
So this has got me wondering if my approach of using the file system as a messaging channel is a "proper" way for computers to communicate. And if not, what would be a better way? These are the ways I can think for the computers to talk to each other:
1. A TCP/IP connection
2. HL-7 messaging
3. E-mail messaging
4. Some sort of formal Windows RPC technology.
5. Common file system, with permission issues worked out.
6. Some sort of Web technology interface
7. Something else I haven't thought of...
Here are my thoughts on these approaches:
1. A TCP/IP connection
This seems the most direct approach. I know that GT.M has Linux pipe technology that could establish the connection on the mumps side. I assume that Cache' would have something equivalent? On the Java side, I would have to create a TCP/IP listener. I have never done this, but assume there would be some sample code on the internet. Would I have to worry about security / authentication of incoming signals? Or would it be like the RPC listener from mumps -- i.e. the network administrators job to ensure that the port is not exposed to the internet etc?
2. HL-7 messaging
If I did this, then the mumps side would already be set up. But on the Java side, I would have to somehow implement an HL-7 listener, and that seems to me to be a difficult solution for a relatively simple goal.
3. E-mail messaging
Again, mailman should be able to send out messages. But I don't know how this would be handled on the Java end. And e-mail is typically assumed to be a low-priority technology. I.e. who cares how fast email messages are delivered. So I don't see this as a great option.
4. Some sort of formal Windows RPC technology.
Here is a link that discusses this
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373935%28v=vs.85%29.aspx. I think this would be for programs running in the windows environment, i.e. an API call. Even if my mumps code is running in Cache' on Windows, I don't think I would have access to such an API. So I don't see that this would help.
5. Common file system, with permission issues worked out.
I think the issue is that the VistA server process on Cache', when it runs has to be logged in with credentials. And based on those credentials, it may or not have permissions to access a network resource. I assume that IT would be able to adjust such permissions, but I don't know how VA policy will apply to this. Would they be willing to do this? And for that matter, will I have to get IT permission for communication between two computers regardless of how the channel is set up?
6. Something else I haven't thought of...
Anyway, I am curious to input as to whether one of these methods is a better way than another? I am a bit discouraged to hit this unexpected snag, and am looking for a straight-forward solution. All I have to do is pass some text files back and forth and I hate to have to implement entire communication technologies just to do this simple task.
Thanks
Kevin