- Log in to post comments
Dynamic and results-driven Integration Interface Specialist with over two decades of success leading a wide range of corporate IT initiatives. Proven track record in designing and implementing integrated solutions that align with and support strategic business objectives. Adept at bridging the gap between technical systems and operational needs to create robust, scalable environments.
Core Specialties:
- Design and development of Microsoft and Oracle SQL databases
- HL7 ancillary systems integration
- Intersystems Ensemble and IRIS solutions
- Legacy systems expertise including eGate, DART, JDBC, and custom interface components
Professional Highlights:
- Deep expertise in Intersystems technologies, particularly Ensemble and Cache ObjectScript, developed through hands-on problem-solving and active engagement with the Intersystems Developer Community.
- Known for a self-driven learning style—asking the right questions, exploring solutions independently, and collaborating effectively when needed.
- Strong background in legacy integration platforms, with years of experience developing and maintaining systems and handling non-standard integration challenges.
In my experience, I have never used nvarchar within SQL, I have always just used varchar.
for your data class...
Property observationtext As %String(MAXLEN = "");
MAXLEN cannot be set to "", please see.. https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_appx_limits#RCOS_appx_limits_string_length
- Log in to post comments
I have many of examples of handling this using JDBC connection to Microsoft SQL Server. Either you can build an all-encompassing Custom Business Operation or use the EnsLib.SQL.Operation.ProcOperation. When inserting data into a table depending on how busy your Process is, I would suggest using Stored Procedures to insert the data.
Using a Dynamic SQL statement can cause some overhead because the Query is not Cached, so you are building it on your machine, then having to build it again when it is sent to the external connection. With a Patient Demographic (ADT) HL7 interface that extra overhead could cause everything to slow down.
The Begining of my Custom Business Operation looks like this...
Include (EnsSQLTypes, %occODBC)
Class osuwmc.Visit.VisitDBWriteOperation Extends Ens.BusinessOperation [ ClassType = "", ProcedureBlock ]
{
Parameter ADAPTER = "EnsLib.SQL.OutboundAdapter";
Parameter INVOCATION = "Queue";
Property InitDSN As %String;
Method OnInit() As %Status
{
Set ..InitDSN = ..Adapter.DSN
//Set ..Adapter.ConnectAttrs = "QueryTimeout:45" ; try this too just in case...
Kill $$$EnsRuntimeAppData(..%ConfigName)
Quit $$$OK
}
Then for each stored procedure I call I have a different Method that uses its own Data Message Class Structure, the Message Map takes the incoming Data Message Class, and it knows which Method to call.
Method InsertCaseScheduleSp(pRequest As osuwmc.Visit.DataStructures.InsertCaseSchedule, Output pResponse As Ens.Response) As %Status
{
set SPQuery = "{ ?= call dbo.usp_Interfaces_Insert_CaseSchedule_Ens(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}"
set par = 15
set par(1) = pRequest.CSN
set par(2) = pRequest.MRN
set par(3) = pRequest.CaseNum
set par(4) = pRequest.SchedDate
set par(5) = pRequest.OrderNum
set par(6) = pRequest.LocationDescription
set par(7) = pRequest.Duration
set par(8) = pRequest.DurationUnits
set par(9) = pRequest.CreationDate
set par(10) = pRequest.CreationUser
set par(11) = pRequest.ArrivalUser
set par(12) = pRequest.EditingUser
set par(13) = pRequest.NoShowUser
set par(14) = pRequest.CancelUser
set par(15) = pRequest.Status
set tSC = ..Adapter.ExecuteProcedureParmArray(.caseschedinsert,.outputs,SPQuery,"oiiiiiiiiiiiiiii",.par)
kill caseschedinsert
kill SPQuery
kill par
Quit tSC
}
Data MessageMap
{
<MapItems>
<MapItem MessageType="osuwmc.Visit.DataStructures.InsertCaseSchedule">
<Method>InsertCaseScheduleSp</Method>
</MapItem>
</MapItems>
}
- Log in to post comments
While this shows how to send the report to a Stream Object, how are you able to call the InterSystems (Logi) Report within the CSP page to render?