Question
· Dec 1, 2017

Using customized SDA3 container in HealthShare

Does anyone in the developer community have experience implementing a customized SDA3 container within HealthShare? There is a course on the learning site (ISC1086) that discusses how to do this, but it's currently listed as "coming soon" and I'm hoping to find some documentation.

I've followed the documentation for customizing the SDA3 container, and my container class with its custom streamlets is working as expected. The new streamlets are getting attached to the container along with Patient, Encounter, etc. before being sent to ECR / MPI update managers, and the custom streamlets are being saved properly on the Edge Gateway with the correct aggregation keys and infotype. When I perform a search from the Access Gateway, the returned SDA container also contains my custom streamlets, so the storing and retrieving of my custom data appears to be following the expected workflow.

However, I'm not sure how to get the custom streamlet data into an ERP chart in the Clinical Viewer. I've created a new chart and customized the columns, etc., but I'm not sure how to map data to the table. In the past, I've extracted streamlet data after it's been loaded in memory (^CacheTemp.HS.ViewerStreamlet), and I could do this for each column using transformations, but I want to know if there's a better approach for populating the table. Also, after selecting a patient who I know has some of my custom data, I'm not seeing its InfoType loaded into the viewer cache even though I know it was present in the SDA container that was returned from the EPR Fetch.

Is there some documentation available that discusses the final steps in implementing customized SDA structure in HealthShare?

Discussion (2)0
Log in or sign up to continue

There are a couple of API method that can be helpful here, in class HS.SDA3.Container:

1. ListStreamletIds - this can return a list of streamlet IDs (in the aggregation cache) corresponding to a patient in the viewer.

2. LoadSDAObject - this takes a streamlet ID and returns an instantiated SDA object.

These can be called from custom code within the viewer to populate UI elements on the fly.

Alternatively, in the access gateway production, HS.Gateway.Access.Manager has a NotificationOperation that gets called during key events as data gets loaded into the viewer cache.  The events are Initialize, Abort, WaitTimeout, FetchNotification, and FetchComplete.

There are no standard supported ways of loading data into a chart, however.

Thanks, I appreciate the response! 

I hadn't thought to use the ListStreamletIds method, and that may be easier than the way I'm getting streamlets from the viewer cache. My problem originally was that even though the fetch request was returning the full SDA with my custom streamlets intact, the custom streamlets weren't even making it into the viewer cache so I had no idea how to get them into the Clinical Viewer.

I was able to make some progress, however. The web.SDA3.Loader's AddStreamlet method called by the Gateway Access Manager had no idea what to do with my streamlets because I hadn't made a corresponding web.SDA3.{streamletClassName} class with an Insert( ) implementation. Since none of the existing chart profiles fit my custom data type except questionnaire (for which I've also found very little documentation--there's a brief description in the documentation for CustomObjects, but my data is more complex that key/value pairs), I decided to implement a fairly straight-forward Insert( ) method just to get the streamlets into the viewer cache, and I'll just render and populate the viewer tables "by hand" in an empty EPR chart. I'm not sure if this is the best way to do it, but it gives me a working prototype to experiment with and refine.