PHINMS 2.8.02 Sender and Rhapsody 5.5.4

216 views
Skip to first unread message

ChristinaC

unread,
Jan 27, 2015, 5:28:28 PM1/27/15
to phi...@googlegroups.com
Has anyone successfully been able to configure Rhapsody 5.5.4 to use Rhapsody Web Services to send a file to the PHINMS 2.8.02 hsqldb TransportQ_Out database table so PHINMS can send the file to CDC?
I can't find any documentation on this.  The CDC PHINMS just mentions a short PDF about it but not much else.  I have to check Orion Health's documentation web site.  I have not contacted them yet.  My contact with the PHINMS Tech team is asking around his team also.
 
We have our Rhapsody 3.4 to use a comm point to write to an Oracle 10g database table.  (We use Rhapsody 5.5.4 for other uses and have not upgraded our Case Notification yet as it called for a PHINMS upgrade also.)  We currently use Windows Server 2003 with PHINMS 2.7.0 with Oracle 10g to allow PHINMS to poll the database table and send the file to CDC for Case Notification.  We are going to a Windows Server 2012 R2 64 bit with PHINMS 2.8.02.  We are also upgrading to our Case Notification to Rhapsody 5.5.4 with our other routes.  We were going to use SQL Server 2012 as the Oracle 10g database has the HL7 conversion tables.  It was decided to just use the PHINMS 2.8.02 internal hsqldb for the sender and use file polling.  Our Rhapsody 5.5.4 Case Notification route would be changed from database com point to a directory comm point.  We would also be changing the Oracle 10g HL7 conversion tables to use Rhapsody's own lookup tables.  We originally got the Case Notification Rhapsody routes from CDC and we modified them for our use.
 
Any help will be greatful.
 
Thank you.

Lowe, Phillip (DOH)

unread,
Jan 27, 2015, 8:06:53 PM1/27/15
to phi...@googlegroups.com

Do you need to use the web services?  PHINMS’s internal sender core is built around the transport_out database and Rhapsody is good at talking to databases.  I have not tried to talk to the HSQLDB, but we are talking to multiple SQL Server 2008-R2 servers with very little effort.   Theory says that if you have a JDBC driver for HSQLDB that it should be straight forward.

 

We are just finalizing an upgrade to our routes using Rhapsody 5.4.0.  We have PHINMS 2.8.02 running with a SQL 2008-R2 database.  The amended route is using a database filter to write directly to the PHINMS TransportQ_Out table.  We have a couple of variations on this theme, one sends PHLIP data to the FL-GA RNR hub and the other sends data to a phony RouteID so that it will automatically fail when PHINMS tries to send it to the TB program.  Once a day, a SQL job takes the most recent failed TB job and corrects it and deletes the other TB messages (if they exist).  This allows us time for human intervention if the CDC TB HL7 verification finds and reports an error (after the HL7 is already written to the database).

 

If you are talking about Case Notification_v2 as distributed by the CDC (back in Rhapsody v2.4 days), I was able to move it forward to 5.4 by rewriting the PHINMS interface and by rewriting the email notification interface.  In both cases, the original components were custom DLL’s that no longer work with later versions of Rhapsody. I was able to replace them with configured versions of the database filter and e-mail client respectively.  I’d be happy to share screen shots of those.

 

Phill

--

---
You received this message because you are subscribed to the Google Groups "PHINMS User Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to phinms+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Preacher Man

unread,
Jan 28, 2015, 9:11:53 AM1/28/15
to phi...@googlegroups.com
Had a client a few years back that also wanted to use the Rhapsody Web Service. Since I didn't have a current license I couldn't get any kind of support  to help them.  At that time Orion did not provide any technical information or manuals on their web site either.  The best I could determine was that they offered a pre-configured package of some sort for connection to CDC's receivers, but no real details.

If the Rhapsody team can't help, you may be out of luck.  A pity.

The architectures I have seen all show Rhapsody using a local PHINMS server for transport and the file system, database queues, or JMX (java messaging) to hook the two up.

For an ELR hub like I administrate the 40+ "comm points" needed was just not going to fit well with the Rhapsody model.  Integrating a custom data broker (servlet) with PHINMS turned out to scale up just fine and didn't require any additional servers or systems.  Unfortunately it isn't pointy and clicky (:-).

Tom


Date: Tue, 27 Jan 2015 14:28:27 -0800
From: ccrawf...@gmail.com

To: phi...@googlegroups.com
Subject: PHINMS 2.8.02 Sender and Rhapsody 5.5.4

ChristinaC

unread,
Jan 28, 2015, 9:46:16 AM1/28/15
to phi...@googlegroups.com
I know that we could in Rhapsody just use a directory comm point to write the output file to a directory.  Then we could setup PHINMS to do folder polling to look for the output file and then send to CDC as a sender. 
 
We curently have Rhaspdoy web services enabled and was wandering if there was a way to use it to send the file directly into the PHINMS HSQLDB transportq_out database table. Right now our current Rhapsody writes the output file to an Oracle Transportq_out database table.  PHINMS then polls that database table and then sends the file to CDC using its Transport Queue settings.  Would it may be better to have Rhapsody write to the PHINMS HSQLDB Transportq_out database table.  Then PHINMS could poll this database using its Transport Queue settings and send to CDC?
 
Also, for other research I am trying to get my local computer PHINMS 2.8.02 to connect to my local SQL Server 2012 Transportq_out database table.  I have imported the SQL Server 2008 JAR files from FTP site.  I can connect to the database via SQL Server 2012 management studio just fine.  I can't get PHINMS to connect with the same username and password.

ChristinaC

unread,
Jan 28, 2015, 10:16:55 AM1/28/15
to phi...@googlegroups.com
There is a document on the CDC PHINMS web site about Rhapsody/PHINMS interoperability.  It talks about using an ebXML filter.  Any clues on how this works?  There is no informaiton on how to do it in that document.
 
Thanks.

Lowe, Phillip (DOH)

unread,
Jan 28, 2015, 1:06:59 PM1/28/15
to phi...@googlegroups.com

This is the PHINMS sender comm point in Rhapsody.  Rhapsody can emulate PHINMS to send to another PHINMS receiver.

 

Phill Lowe    360 236-4261

Systems Development Office, Department of Health, Washington State

Working to improve the health of the people of Washington State

ChristinaC

unread,
Jan 28, 2015, 1:19:08 PM1/28/15
to phi...@googlegroups.com
I looked at the Rhapsody IDE 5.5.4 and don't see the PHINMS sender comm point.  Can you give me some more information or an example?
 
Thanks.

Preacher Man

unread,
Jan 28, 2015, 2:32:14 PM1/28/15
to phi...@googlegroups.com
Phil,

So have you or anyone you know actually used this "ebXML" comm point?  If so can you share details/hints/etc?  My frustration with this mirrors Cristina's.  We have found plenty saying "sure, it does that" but no clue as to how.  Is this information somehow proprietary? Orion wouldn't share when I last checked, but that was a couple years back.

I suspect there would be a lot of folk who might be interested in a public "how to" document.

Thanks

Tom


From: Philli...@DOH.WA.GOV
To: phi...@googlegroups.com
Subject: RE: PHINMS 2.8.02 Sender and Rhapsody 5.5.4
Date: Wed, 28 Jan 2015 18:06:52 +0000

ChristinaC

unread,
Jan 28, 2015, 2:38:53 PM1/28/15
to phi...@googlegroups.com
I googled 'Rhapsody PHINMS sender communication point' and found that University of Iowa Hygienic laboratory did it in 2007.  They even have pictures in it.  It looks like there is a PHINMS sender comm point but no more details.  Here is the link:
 
 
Thanks.

Badgett, Allen A.

unread,
Jan 28, 2015, 2:46:45 PM1/28/15
to phi...@googlegroups.com

In Oklahoma I have been using Rhapsody for several years to send the Case Notification to CDC. We are using SQL 2008 database rather than the default database. The surveillance people create a Case notification file once a week and drop it into a folder monitored by a Rhapsody route. The Rhapsody route inserts it into a transport out table we have created in SQL2008. It inserts the message contend into the text field and also configures the rest of the necessary information; like service action pairs and urls etc. It works fine using a database comm point. I have heard of people talking about using a PHINMS comm point but don’t know of anyone that does. What I heard about using a PHINMS comm point is that managing digital certificates is even harder using Rhapsody than it is using PHINMS directly.

 

Allen

405 623 6905

Lowe, Phillip (DOH)

unread,
Jan 28, 2015, 2:47:30 PM1/28/15
to phi...@googlegroups.com

No, I don’t actually know anyone who has done it.  I am supposed to be blocking out time to do the on-line expert class so I may be learning how to do it.  With my background in PHINMS, I’d probably be the best person to sort it out and write up a “How To” document.

 

Since we have multiple PHINMS instances anyway, I’ve been taking the simple approach and just writing to the TransportQ_out table. 

 

Phill Lowe    360 236-4261

Systems Development Office, Department of Health, Washington State

Working to improve the health of the people of Washington State

 

ChristinaC

unread,
Feb 26, 2015, 3:53:39 PM2/26/15
to phi...@googlegroups.com
I guess my original posting was confusing. 
 
1.  To make it simple, has anyone gotten a 3rd party software to write directly to the PHINMS HSQLDB transportq_out internal database table?  If so, how?  I am especially interested in using Orion Health Rhapsody.
 
2.  Has anyone gotten a 3rd party software, like Orion Health Rhapsody, to send data directly to PHINMS Sender or PHINMS Receiver?
 
Thank you,
Christina

Preacher Man

unread,
Feb 26, 2015, 4:45:12 PM2/26/15
to phi...@googlegroups.com
I routinely use the open source "Squirrel" GUI SQL client to monitor and update PHINMS HSQL queues including receiver, sender transport, and RNR queues.  I've also written several applications that can do the same.

However, keep in mind HSQL is a native Java application, so the typical API is the JDBC.  There may be other interfaces, but I haven't looked into those.

As for Rhapsody, I have no experience.  But if it is a Java based application then adding a JDBC connection should be fairly simple.  That is certainly the case with Mirth for example.

Good luck.

Tom


Date: Thu, 26 Feb 2015 12:53:39 -0800
From: ccrawf...@gmail.com
To: phi...@googlegroups.com

Subject: Re: PHINMS 2.8.02 Sender and Rhapsody 5.5.4

Loyall, David

unread,
Feb 26, 2015, 4:58:08 PM2/26/15
to phi...@googlegroups.com

Number 1 can be done.

 

Find sender.xml in your PHINMS installation directory.  Locate the transportDatabasePool tag.  Here’s mine:

 

    <transportDatabasePool>

        <transportDatabase

                databasePasswd="SENDER_TransportDatabasePassword25"

                databaseUser="SENDER_TransportDatabaseUser26"

                databaseUrl="jdbc:hsqldb:hsql://localhost:6287/phinms_core"

                jdbcDriver="org.hsqldb.jdbcDriver"

                type="hsqldb"

                id="default">

            <transportQueue

                retentionPeriod="60"

                startDeletionTime="2007-01-01:12:00"

                deletionInterval="1"

                deleteRecords="false"

                outgoing="C:\20150225PHINMS2802/shared/outgoing/"

                enabled="true"

                responseToDb="true"

                maxThreads="3"

                multiThreading="true"

                id="default"

                tableName="TransportQ_out"/>

       </transportDatabase>

    </transportDatabasePool>

 

The databaseUrl is a JDBC connection string.  You can use it in the configuration for a Rhapsody Comm point or DB Lookup filter.

 

Note that by default, the HSQLDB server that ships with PHINMS only listens on localhost.  You can change that, but for now I’ll assume that your Rhapsody engine and your PHINMS installation are on the same machine.  (Never expose that old version of HSQLDB to an untrusted network traffic!)

 

You’ll need to decode the databasePasswd and databaseUser variables.  This can be accomplished with the PBE.bat tool that ships with PHINMS.  (If you’ve never reconfigured these values, you can use the defaults that I’ll email you off-list.)

 

The variable jdbcDriver specifies the JDBC Driver Class to that you want Rhapsody to load.

 

In Rhapsody, you’ll need to set your comm point or DB Lookup Filter to use “Manual setting” for Database type.  Then, you can use the database configuration file editor to provide the JDBC connection information harvested from PHINMS’s sender.xml.

 

Finally, you’ll need a SQL Insert statement that writes records to transportQ_out tables!  Here’s mine:

 

INSERT INTO [dbo].[TransportQ_out]

           ([messageId]

           ,[payloadFile]

           ,[payloadContent]

           ,[destinationFilename]

           ,[routeInfo]

          ,[service]

           ,[action]

           ,[arguments]

           ,[messageRecipient]

           ,[messageCreationTime]

           ,[encryption]

           ,[signature]

           ,[publicKeyLdapAddress]

           ,[publicKeyLdapBaseDN]

           ,[publicKeyLdapDN]

           ,[certificateURL]

           ,[processingStatus]

           ,[transportStatus]

           ,[transportErrorCode]

           ,[applicationStatus]

           ,[applicationErrorCode]

           ,[applicationResponse]

           ,[messageSentTime]

           ,[messageReceivedTime]

           ,[responseMessageId]

           ,[responseArguments]

           ,[responseLocalFile]

           ,[responseFilename]

           ,[responseContent]

           ,[responseMessageOrigin]

           ,[responseMessageSignature]

           ,[priority])

     VALUES

           ($messageId

                                                ,$payloadFile

                                                ,$payloadContent

                                                ,$destinationFilename

                                                ,$routeInfo

                                                ,$service

                                                ,$action

                                                ,$arguments

                                                ,$messageRecipient

                                                ,$messageCreationTime

                                                ,$encryption

                                                ,$signature

                                                ,$publicKeyLdapAddress

                                                ,$publicKeyLdapBaseDN

                                                ,$publicKeyLdapDN

                                                ,$certificateURL

                                                ,$processingStatus

                                                ,$transportStatus

                                                ,$transportErrorCode

                                                ,$applicationStatus

                                                ,$applicationErrorCode

                                                ,$applicationResponse

                                                ,$messageSentTime

                                                ,$messageReceivedTime

                                                ,$responseMessageId

                                                ,$responseArguments

                                                ,$responseLocalFile

                                                ,$responseFilename

                                                ,$responseContent

                                                ,$responseMessageOrigin

                                                ,$responseMessageSignature

                                                ,$priority)

 

I use this javascript filter to set all those $variables.

 

var next = output.append(input[0]);

next.setProperty("payloadContent", next.getProperty("inPhinMsPayloadTextContent"));

next.setProperty("routeInfo", "MyRouteName");

next.setProperty("service", "Router");

next.setProperty("action", "send");

next.setProperty("arguments", "[Service:NE-NE][Action:send]");

next.setProperty("messageRecipient", "APHL-NE_DOH");

next.setProperty("encryption", "yes");

next.setProperty("signature", "no");

next.setProperty("publicKeyLdapAddress", "directory.verisign.com:389");

next.setProperty("publicKeyLdapBaseDN", "O = Centers for Disease Control and Prevention");

next.setProperty("publicKeyLdapDN", "cn=David Loyall");

next.setProperty("processingStatus", "queued");

next.setProperty("priority", "0");

 

(Well, as you can see, I leave some of them null.)

 

You’ll probably need to add hsqldb.jar to Rhapsody’s classpath.  C:\<phinms installation directory>\appserver\webapps\receiver\WEB-INF\lib is a good place to find this jar (the correct version for the old HSQLDB that PHINMS uses).

 

What a long email!  I am sure that it is full of omissions and errors.  Please let me know. :)

 

Cheers,

 

--Dave

 

From: phi...@googlegroups.com [mailto:phi...@googlegroups.com] On Behalf Of ChristinaC
Sent: Thursday, February 26, 2015 2:54 PM
To: phi...@googlegroups.com
Subject: Re: PHINMS 2.8.02 Sender and Rhapsody 5.5.4

 

I guess my original posting was confusing. 

--

Preacher Man

unread,
Feb 26, 2015, 5:02:43 PM2/26/15
to phi...@googlegroups.com

Nice David!  Well done!!

Tom


From: david....@nebraska.gov
To: phi...@googlegroups.com
Subject: RE: PHINMS 2.8.02 Sender and Rhapsody 5.5.4
Date: Thu, 26 Feb 2015 21:57:52 +0000
Reply all
Reply to author
Forward
0 new messages