Forum Replies Created
-
AuthorReplies
-
Update – reinvestigating this as we got sidetracked.
Current status:
Syndromic data passing to state endpoint via outbound java/ws-rawclient thread. Two conduits defined on thread – 1) to state hl7 api svc & 2) to state api token service
Two RawConsumers defined on thread: 1) POST_API & 2) TOKEN_REQ
Thread outbound tab, pre-write Proc: tclproc to send GET request to TOKEN_REQ consumer.
On TPSinboundReply: separate tclproc to evaluate https reponse, pull token out of response headers, evaluate token expiration
Here’s where I’m stuck.
Unable to take token and put in in header for subsequent POST request to POST_API consumer and endpoint
The message data does not seem available at that point. Just have the response data; response data just sending token, no message data.
Would like to avoid using two outbound threads if possible.
Thinking I may need to store token in local file and modify GET tclproc to check the token value first, then building conditional logic to branch to GET or POST request.
Open to other suggestions. Feel I’m missing something
Update:
I’m able to send the GET request to the TOKEN endpoint, pull the token out of the https reply and evaluate token expiration time but stuck at this point.
Need to put the token in the header for subsequent POST request.
Not sure how to: 1) put the token I’ve isolated into the header ; 2) generate the POST msg once the token has been received from the response to the original GET token request
Config setup of thread is attached
As always, thanks for any feedback
Attachments:
You must be logged in to view attached files.USERDATA was keyed list; was able to get the token by “drilling” down through the nested list, per @don-martinsanfordhealth-org suggestion. I had been trying to access token directly from the USERDATA keyed list
“So, to get the token in your ib reply, you would first get the USERDATA keyed list, then get the httpResponseHeaders keyed list, then get the token. You can’t use keylget to directly get token without first working your way into the nested list.”
… then I decoded the token so that I can check the expiration time (“exp” from below):
DecodedToken = DECODE {“alg”:”RS256″}{“iss”:”DPV601″,”exp”:1662054993.705,”atomicrole_module”:”443/HHS/API/../../..”,”client_id”:”….”}
Thanks … more to follow!
Think we got this working!
Had to set the webClientFactoryKey
keylset uData webClientFactory $webClientFactoryName
msgmetaset $mh USERDATA $uDataHave two Raw_Consumers on outbound java/ws-rawclient protocol config.
One pointing to update url; other pointing to discharge url
webClientFactory key passes name of Raw_Consumer , based on logic in tclproc
Appears to be working; throwing one warning error in log that I’m checking and tclprocs need lots of cleanup … but very encouraging at this point
Added raw_consumer to java/ws-rawclient thread protocol properties
1 – for updates, 2 – for discharges
Sent webClientFactory name in USERDATA
msgUserData : {webClientFactory AngelEyeUpdateLGH} {httpRequestInfo {requestURL https://lowellgeneral-test.angeleyecameras.com/api/v1/adt/update}}
Got below error:
[java:java:WARN/1:AngelEye_JavaRaw2_0:05/19/2022 08:21:51] com.infor.cloverleaf.gjdws.validation.MessageValidation printWarnings:WARNING: Unknown key in overrides ‘webClientFactory’, it will be ignored. Valid keys at this level are [dispatch, httpRequestHeaders, httpRequestInfo, trxid]
Switched to sending ‘dispatch’ in USERDATA:
msgUserData : {dispatch AngelEyeUpdateLGH} {httpRequestInfo {requestURL https://lowellgeneral-test.angeleyecameras.com/api/v1/adt/update}}
Then got this error:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.infor.cloverleaf.gjdws.utils.WebClientFactory’ available: expected single matching bean but found 2: AngelEyeUpdateLGH,AngelEyeDischargeLGH<hr />
So, guessing I’m either:
1) sending the keys incorrectly (Infor support seems to indicate I need to send webClientFactory and not dispatch)or
2) webClientFactory needs to be defined as an allowable key – possibly in a java config file
or
3) something not quite right with the Raw_Consumer setup
************************************************************
Anyone know how to correctly pass the webClientFactory key?
Attached file has netconfig of thread and latest logfile errors
Attachments:
You must be logged in to view attached files.Getting feedback from Infor support that USERDATA can’t be passed as “dispatch” for this and must be passed as “webClientFactory” (if I understood them correctly)
Does anyone know the syntax for passing webClientFactory NAME(s) for a java/ws-rawclient outbound thread?
I’m not sure if these are passed in the USERDATA as an override or if it’s a combination of setting up multiple Raw_Consumers and then passing the USERDATA
CAA-WS guide is confusing on this
Hi Charlie
Took the “catch” statements out, got more detail on error in log:
[java:java:WARN/1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.validation.MessageValidation printWarnings:WARNING: Message validation has detected 1 warning
[java:java:WARN/1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.validation.MessageValidation printWarnings:WARNING: The key ‘httpRequestInfo’ is expected to be a map, but it is not. Cast exception is: java.lang.String incompatible with java.util.Map
[java:java:ERR /1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.WSRawClient processMessageFromCloverleaf:SEVERE: Caught exception trying to process message from Cloverleaf
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] Catch Execption:From Log:
[pd :thrd:DBUG/3:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Nothing happened during the pre-write process, using the original message
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msg: 0xefff6d28
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgType : DATA
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgClass : PROTOCOL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgState : OB post-SMS (11)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgPriority : 5120
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecoveryDbState: Log:update (3)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgFlags : 0x8206
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgMid : [0.0.422162]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMid : [0.0.422160]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMidGroup : midNULL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgHostId : 3747252104
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgXlateThread :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSkipXlate : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSepChars :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgNumRetries : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgGroupId : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDriverControl : {_TRXID_ _HCI_static_route_}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecordFormat :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRoutes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgUserData : {httpRequestInfo {requestURL https://general-test.cameras.com/api/v1/adt/update}}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgStaticIsDirty : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgVariableIsDirty: 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRetryTimes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartIb : 1652723349.354
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartOb : 1652723349.365
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeCurQueStart: 0.000
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeTotalQue : 0.003
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeRecovery : 1652723349.358
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgEoConfig : 0x0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgData (BO) : 0xefff6e30
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] message : ‘{“first”:”KEVIN”,”middle”:””,”last”:”GRAND CENTRAL”,”mrn”:”202979″,”dob”:”01/23/1974″,”bed_id”:”LED-D31-D31″,”encounter_id”:”2002273077″}’
[msg :Msg :DBUG/0:_JavaRaw:05/16/2022 13:49:09] msgFree 0xefff7028 refCnt 1
[pd :pdtd:INFO/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Writing message to Protocol Driver java
[pd :pdtd:INFO/1:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Writing message PARTIALLY complete
[pd :pdtd:INFO/1:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Setup callback function for writing partial message
[pti :sche:INFO/1:_JavaRaw:05/16/2022 13:49:09] Thread has 0 ready events left.
[pti :sche:INFO/2:_JavaRaw:05/16/2022 13:49:09] Performing apply callback for thread 3
[msi :msi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] msiExportStats: export for thread: _JavaRaw
[java:java:WARN/1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.validation.MessageValidation createWarningsList:WARNING: Message Validation is enabled. This should generally only be used in DEVELOPMENT/TEST systems for performance reasons, although it may be acceptable in production systems with low throughput requirements. NOTE: this warning will only be printed on the first message.
[java:java:WARN/1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.validation.MessageValidation printWarnings:WARNING: Message validation has detected 1 warning
[java:java:WARN/1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.validation.MessageValidation printWarnings:WARNING: The key ‘httpRequestInfo’ is expected to be a map, but it is not. Cast exception is: java.lang.String incompatible with java.util.Map
[java:java:ERR /1:_JavaRaw_0:05/16/2022 13:49:09] com.infor.cloverleaf.gjdws.WSRawClient processMessageFromCloverleaf:SEVERE: Caught exception trying to process message from Cloverleaf
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] Catch Execption:
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] java.lang.ClassCastException: java.lang.String incompatible with java.util.Map
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] at com.infor.cloverleaf.gjdws.WSRawClient.processMessageFromCloverleaf(WSRawClient.java:132)
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] at com.lawson.cloverleaf.driver.FromCloverleafLink.doMsg(FromCloverleafLink.java:46)
[java:wrte:ERR /0:_JavaRaw_0:05/16/2022 13:49:09] Call to “doMsg” returned error string “BADDATA caught exception trying to processMessageFromCloverleaf: caught exception trying to process message from Cloverleaf”. Returning bad send to engine.
[pti :sche:DBUG/2:_JavaRaw:05/16/2022 13:49:09] Thread 3 has been enabled
[pti :sche:INFO/1:_JavaRaw:05/16/2022 13:49:09] Thread has 1 ready events.
[pti :even:DBUG/0:_JavaRaw:05/16/2022 13:49:09] Processing SOCKET (Java protocol thread Eng Event) event 0x35deda98
[pti :even:DBUG/1:_JavaRaw:05/16/2022 13:49:09] Calling cb 0x300d5054
[pd :pdtd:INFO/1:_JavaRaw:05/16/2022 13:49:09] Executing callback function for writing partial message
[pd :pdtd:INFO/1:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Writing message completed
[pd :pdtd:INFO/0:_JavaRaw:05/16/2022 13:49:09] NOW AWAITING A REPLY!
[pd :pdtd:INFO/3:_JavaRaw:05/16/2022 13:49:09] Thread(1_x_sandbox_ADT) will expect incoming reply
[diag:leak:DBUG/0:_JavaRaw:05/16/2022 13:49:09] diag ev alloc 0x343141f8
[diag:leak:DBUG/0:_JavaRaw:05/16/2022 13:49:09] diag dqe alloc 0x3489cde8
[pti :even:DBUG/0:_JavaRaw:05/16/2022 13:49:09] tiRegistering TIMER (<no description>) event 0x343141f8 for tid 3
[pti :even:DBUG/0:_JavaRaw:05/16/2022 13:49:09] evRegistering TIMER (<no description>) event 0x343141f8 for tid 3
[dbi :rlog:DBUG/3:_JavaRaw:05/16/2022 13:49:09] [0.0.422163] Looking for mid in recovery db
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘cl_keyfindlock: About to do d_keylock’
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (1000) ‘cl_keyfindlock: About to do d_keyfind, keyval:’
[msg :Mid :DBUG/3:_JavaRaw:05/16/2022 13:49:09] Assigned mid [0.0.422163] to msg efff7028
[msg :Msg :DBUG/0:_JavaRaw:05/16/2022 13:49:09] msg_Alloc new message 0xefff7028
[msg :Msg :DBUG/0:_JavaRaw:05/16/2022 13:49:09] msgCopy from 0xefff6d28 [0.0.422162] to 0xefff7028 [0.0.422163]
[pd :thrd:INFO/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Saving to error database(BADDATA)
[dbi :rlog:INFO/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Transitioning msg to error db w/state 419
[dbi :rlog:INFO/1:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Update msg in recovery db to state OB post-SMS
[dbi :log :DBUG/2:_JavaRaw:05/16/2022 13:49:09] log context: type 1, dbn 1, msgRec 10001, mdRec 10002, bodyRec 10003
[dbi :log :DBUG/2:_JavaRaw:05/16/2022 13:49:09] state 11, mode 1
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘cl_lock: Trying to lock database ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘type=w, rec=10001
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (1) ‘type=w, rec=10002
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (2) ‘type=w, rec=10003
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘cl_lock: Succeeded in locking database ‘
[dbi :log :DBUG/2:_JavaRaw:05/16/2022 13:49:09] update var MD, upd 1, dirty 0
[dbi :elog:INFO/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Write message to error database, edbState 419 rdbState 11
[dbi :elog:INFO/1:_JavaRaw:05/16/2022 13:49:09] Creating prepared statements for insert in /hci/cis19.1/integrator/sandbox_t/exec/databases/elog.elogdb
[dbi :elog:DBUG/1:_JavaRaw:05/16/2022 13:49:09] sizeof qry = 1024, len=545, qry:INSERT INTO elog_msgs (MessageContent, DataLen, DestConn, OrigDestConn, DataFmt, SepChars, DriverCtl, UserData, MidDomain, MidHub, MidNum, SrcMidDomain, SrcMidHub, SrcMidNum, Type, SourceConn, OrigSourceConn, Priority, Class, Flags, EdbState, GroupMidDomain, GroupMidHub, GroupMidNum, XltThread, OwnerThread, Retries, MidsAreNull, SkipXlt, GroupID, TimeIn, TimeXlt, TimeOut, TimeQCur, TimeQTot, TimeRec, ErrorString, RdbState) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?)
[dbi :elog:DBUG/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Insert message successful
[dbi :rlog:INFO/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] Delete message from recovery database
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘cl_lock: Trying to lock database ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘type=w, rec=10001
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (1) ‘type=w, rec=10002
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (2) ‘type=w, rec=10003
[dbi :dbi :DBUG/1:_JavaRaw:–/–/—- –:–:–] ‘
[dbi :dbi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] (0) ‘cl_lock: Succeeded in locking database ‘
[pd :pdtd:DBUG/0:_JavaRaw:05/16/2022 13:49:09] [0.0.422162] check reserved OBmsg 0xefff6d28/0xefff6d28
[msg :Msg :DBUG/0:_JavaRaw:05/16/2022 13:49:09] msgFree 0xefff6d28 refCnt 1
[pd :pdtd:INFO/0:_JavaRaw:05/16/2022 13:49:09] Shutting down await reply mode
[pd :pdtd:DBUG/0:_JavaRaw:05/16/2022 13:49:09] Reply mode clean-up.
[msg :Msg :DBUG/0:_JavaRaw:05/16/2022 13:49:09] msgFree 0xefff7028 refCnt 1
[pti :even:DBUG/0:_JavaRaw:05/16/2022 13:49:09] tiUnregistering TIMER (<no description>) event 0x343141f8 for tid 3
[pti :even:DBUG/0:_JavaRaw:05/16/2022 13:49:09] evUnregister TIMER (<no description>) event 0x343141f8 for tid 3
[diag:leak:DBUG/0:_JavaRaw:05/16/2022 13:49:09] diag dqe free 0x3489cde8
[diag:leak:DBUG/0:_JavaRaw:05/16/2022 13:49:09] diag ev free 0x343141f8
[pti :sche:INFO/1:_JavaRaw:05/16/2022 13:49:09] Thread has 0 ready events left.
[pti :sche:INFO/2:_JavaRaw:05/16/2022 13:49:09] Performing apply callback for thread 3
[msi :msi :DBUG/1:_JavaRaw:05/16/2022 13:49:09] msiExportStats: export for thread: _JavaRawMay 13, 2022 at 3:12 pm in reply to: Trying to send dynamic address to a FHIR connection using ws-rawclient protocol #119734Hi Marla
Running into the same issue
Would it be possible to share the tpsFhirSetServerUrl proc?
Was this on your Cloverleaf server(s) or did Infor have to provide it?
We’re on v19.1
Thanks
Hi
I was monitoring that thread, implemented some code but getting the BADDATA error
1st tclproc on route – formats data to JSON format, sets USERData to value that will be appended to url
2nd tclproc – on tps Outbound tab of WS-JavaRaw Client thread; pulls USERData, sets url with appended value, resets UserData
Looks to be setting this correctly but get error for the BADDATA in logfile:
Logfile:
[pd :thrd:INFO/0:_JavaRaw:05/13/2022 12:30:52] Processing OB-Data message queue
[msg :Msg :DBUG/0:_JavaRaw:05/13/2022 12:30:52] msg_Alloc new message 0xefff7028
[msg :Msg :DBUG/0:_JavaRaw:05/13/2022 12:30:52] msgCopy from 0xefff6d28 [0.0.422112] to 0xefff7028 midNULL
[pd :thrd:DBUG/3:_JavaRaw:05/13/2022 12:30:52] [0.0.422112] OB message in encoding conversion
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msg: 0xefff7028
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgType : DATA
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgClass : PROTOCOL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgState : OB in prewrite (17)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgPriority : 5120
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecoveryDbState: Log:off (1)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgFlags : 0x8206
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgMid : [0.0.422112]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMid : [0.0.422110]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMidGroup : midNULL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgHostId : 3747252104
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgXlateThread :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSkipXlate : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSepChars :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgNumRetries : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgGroupId : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDriverControl : {_TRXID_ _HCI_static_route_}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecordFormat :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRoutes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgUserData : {httpRequestInfo {requestURL https://general-test.cameras.com/api/v1/adt/update}}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgStaticIsDirty : 1
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgVariableIsDirty: 1
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRetryTimes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartIb : 1652459452.850
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartOb : 1652459452.858
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeCurQueStart: 0.000
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeTotalQue : 0.002
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeRecovery : 1652459452.862
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgEoConfig : 0x0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgData (BO) : 0xefff7130
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] message : ‘{“first”:”KEVIN”,”middle”:””,”last”:”GRAND CENTRAL”,”mrn”:”202979″,”dob”:”01/23/1974″,”bed_id”:”LED-D31-D31″,”encounter_id”:”2002273077″}’
[pd :thrd:DBUG/3:_JavaRaw:05/13/2022 12:30:52] [0.0.422112] Nothing happened during the pre-write process, using the original message
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msg: 0xefff6d28
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgType : DATA
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgClass : PROTOCOL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgState : OB post-SMS (11)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgPriority : 5120
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecoveryDbState: Log:update (3)
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgFlags : 0x8206
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgMid : [0.0.422112]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMid : [0.0.422110]
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcMidGroup : midNULL
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgHostId : 3747252104
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgOrigDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSrcThread : 1_x_sandbox_ADT
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDestThread : _JavaRaw
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgXlateThread :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSkipXlate : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgSepChars :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgNumRetries : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgGroupId : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgDriverControl : {_TRXID_ _HCI_static_route_}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRecordFormat :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRoutes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgUserData : {httpRequestInfo {requestURL https://general-test.cameras.com/api/v1/adt/update}}
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgStaticIsDirty : 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgVariableIsDirty: 0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgRetryTimes :
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartIb : 1652459452.850
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeStartOb : 1652459452.858
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeCurQueStart: 0.000
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeTotalQue : 0.002
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgTimeRecovery : 1652459452.853
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgEoConfig : 0x0
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] msgData (BO) : 0xefff6e30
[pd :thrd:DBUG/3:_JavaRaw:–/–/—- –:–:–] message : ‘{“first”:”KEVIN”,”middle”:””,”last”:”GRAND CENTRAL”,”mrn”:”202979″,”dob”:”01/23/1974″,”bed_id”:”LED-D31-D31″,”encounter_id”:”2002273077″}’
[msg :Msg :DBUG/0:_JavaRaw:05/13/2022 12:30:52] msgFree 0xefff7028 refCnt 1
[pd :pdtd:INFO/0:_JavaRaw:05/13/2022 12:30:52] [0.0.422112] Writing message to Protocol Driver java
[pd :pdtd:INFO/1:_JavaRaw:05/13/2022 12:30:52] [0.0.422112] Writing message PARTIALLY complete
[pd :pdtd:INFO/1:_JavaRaw:05/13/2022 12:30:52] [0.0.422112] Setup callback function for writing partial message
[pti :sche:INFO/1:_JavaRaw:05/13/2022 12:30:52] Thread has 0 ready events left.
[pti :sche:INFO/2:_JavaRaw:05/13/2022 12:30:52] Performing apply callback for thread 3
[msi :msi :DBUG/1:_JavaRaw:05/13/2022 12:30:52] msiExportStats: export for thread: _JavaRaw
[java:java:ERR /1:_JavaRaw_0:05/13/2022 12:30:53] com.infor.cloverleaf.gjdws.WSRawClient processMessageFromCloverleaf:SEVERE: Caught exception trying to process message from Cloverleaf
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] Catch Execption:
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] java.lang.ClassCastException: java.lang.String incompatible with java.util.Map
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] at com.infor.cloverleaf.gjdws.WSRawClient.processMessageFromCloverleaf(WSRawClient.java:132)
[java:java:ERR /1:_JavaRaw_0:–/–/—- –:–:–] at com.lawson.cloverleaf.driver.FromCloverleafLink.doMsg(FromCloverleafLink.java:46)
[java:wrte:ERR /0:_JavaRaw_0:05/13/2022 12:30:53] Call to “doMsg” returned error string “BADDATA caught exception trying to processMessageFromCloverleaf: caught exception trying to process message from Cloverleaf”. Returning bad send to engine.
[pti :sche:DBUG/2:_JavaRaw:05/13/2022 12:30:53] Thread 3 has been enabled
[pti :sche:INFO/1:_JavaRaw:05/13/2022 12:30:53] Thread has 1 ready events.
[pti :even:DBUG/0:_JavaRaw:05/13/2022 12:30:53] Processing SOCKET (Java protocol thread Eng Event) event 0x35de83d8
[pti :even:DBUG/1:_JavaRaw:05/13/2022 12:30:53] Calling cb 0x300d5054
[pd :pdtd:INFO/1:_JavaRaw:05/13/2022 12:30:53] Executing callback function for writing partial message
[pd :pdtd:INFO/1:_JavaRaw:05/13/2022 12:30:53] [0.0.422112] Writing message completed
[pd :pdtd:INFO/0:_JavaRaw:05/13/2022 12:30:53] NOW AWAITING A REPLY!
[pd :pdtd:INFO/3:_JavaRaw:05/13/2022 12:30:53] Thread(1_x_sandbox_ADT) will expect incoming reply
[diag:leak:DBUG/0:_JavaRaw:05/13/2022 12:30:53] diag ev alloc 0x34314228
[diag:leak:DBUG/0:_JavaRaw:05/13/2022 12:30:53] diag dqe alloc 0x34ee8228
[pti :even:DBUG/0:_JavaRaw:05/13/2022 12:30:53] tiRegistering TIMER (<no description>) event 0x34314228 for tid 3
[pti :even:DBUG/0:_JavaRaw:05/13/2022 12:30:53] evRegistering TIMER (<no description>) event 0x34314228 for tid 3
[dbi :rlog:DBUG/3:_JavaRaw:05/13/2022 12:30:53] [0.0.422113] Looking for mid in recovery db
[dbi :dbi :DBUG/1:_JavaRaw:05/13/2022 12:30:53] (0) ‘cl_keyfindlock: About to do d_keylock’
[dbi :dbi :DBUG/1:_JavaRaw:05/13/2022 12:30:53] (1000) ‘cl_keyfindlock: About to do d_keyfind, keyval:’
[msg :Mid :DBUG/3:_JavaRaw:05/13/2022 12:30:53] Assigned mid [0.0.422113] to msg efff7028
[msg :Msg :DBUG/0:_JavaRaw:05/13/2022 12:30:53] msg_Alloc new message 0xefff7028
[msg :Msg :DBUG/0:_JavaRaw:05/13/2022 12:30:53] msgCopy from 0xefff6d28 [0.0.422112] to 0xefff7028 [0.0.422113]
[pd :thrd:INFO/0:_JavaRaw:05/13/2022 12:30:53] [0.0.422112] Saving to error database(BADDATA)Tclproc (to set dynamic url):
proc DynamicURL { args } {
global HciSite
set processing_id [gvgetvar PROCESSING_ID]keylget args MODE mode ;# Fetch mod
# Initialize variables
set userData “”# Variables for setting url
set url “”
set urlBase “”
set urlBaseTest “https://general-test.cameras.com/api/v1/adt/”
set urlBaseProd “https://general.cameras.com/api/v1/adt/”
set urlExtension “”set dispList {} ;# Nothing to return
switch -exact — $mode {
start {
# Perform special init functions
# N.B.: there may or may not be a MSGID key in args
}run {
# ‘run’ mode always has a MSGID; fetch and process it
keylget args MSGID mh
keylget args CONTEXT contextset msg [msgget $mh]
catch [set userData [msgmetaget $mh USERDATA]] ;# set in previous script on route that formats msg, valued to either “update” or “discharge”
if {$processing_id eq “P”} {
catch [set urlBase $urlBaseProd]
} else {
if {$processing_id eq “T”} {
catch [set urlBase $urlBaseTest]
}
}catch [set urlExtension $userData]
}
}catch [set url [concat $urlBase$urlExtension]]
catch [set userData “{httpRequestInfo {requestURL $url}}”]
msgmetaset $mh USERDATA $userData
lappend dispList “CONTINUE $mh”
}
}
time {
# Timer-based processing
# N.B.: there may or may not be a MSGID key in args
}shutdown {
# Doing some clean-up work
}default {
error “Unknown mode ‘$mode’ in tpsDynamicURL”
}
}return $dispList
}Message logging enabled worked – let me see output, etc. Thanks for that tip .. wasn’t aware of that feature
Got this working, worked through some auth then payload issues w vendor.
Now I need to figure out how to make the url dynamic – update vs discharge based on specific HL7 functions
example:
https://test.com/api/v1/adt/update vs https://test.com/api/v1/adt/discharge
LogOutput:
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] ID: 1
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Address: https://test.com/api/v1/adt/update
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Http-Method: PUT
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Content-Type: application/json
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Headers: {Authorization=[********], Content-Type=[application/json], Accept=[*/*], Connection=[Keep-Alive]}
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Payload: {“first”:”KEVIN”,”middle”:””,”last”:”GRAND CENTRAL”,”mrn”:”202979″,”dob”:”01/23/1974″,”bed_id”:”LED-D31-D31″,”encounter_id”:”2002273077″}
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] ————————————–
[java:java:INFO/1:_JavaRaw_0:05/12/2022 16:23:30] org.apache.cxf.interceptor.LoggingInInterceptor:INFO: Inbound Message
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] —————————-
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] ID: 1
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Response-Code: 200
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Encoding: ISO-8859-1
[java:java:INFO/1:_JavaRaw_0:–/–/—- –:–:–] Content-Type: application/jsonNot seeing output in msgdump , just message.
Tclproc code:
catch [set newMsg $JSONmsg]]
msgset $mh $newMsg#### —————————————————————
keylget args MSGID mh
keylget args CONTEXT contextecho “message id: $mh”
set INmsg [msgget $mh]echo “message body: $INmsg”
echo \n\n$context Dump:msgdump $mh
echo \n\n### ——————————————————————–
lappend dispList “CONTINUE $mh”
*****************************************************************************
****************************************************************************
Output in Log:
[tcl :out :INFO/0: websrv_xlate:05/11/2022 11:14:34] JSONmsg update?%20{first_name=KEVIN&middle=&last=GRAND%20CENTRAL&mrn=202979&dob=01/23/1974&bed_id=LED-D31-D31&encounter_id=2002273077}
[tcl :out :INFO/0: websrv_xlate:05/11/2022 11:14:34] “message id: message0”
[tcl :out :INFO/0: websrv_xlate:05/11/2022 11:14:34] “message body: update?%20{first_name=KEVIN&middle=&last=GRAND%20CENTRAL&mrn=202979&dob=01/23/1974&bed_id=LED-D31-D31&encounter_id=2002273077}”
[tcl :out :INFO/0: websrv_xlate:05/11/2022 11:14:34]
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–]
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] xlt_raw Dump:
[tcl :out :INFO/0: websrv_xlate:05/11/2022 11:14:34] msg: 0xefff6d28
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgType : DATA
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgClass : ENGINE
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgState : Unknown: 0 (0)
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgPriority : 5120
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgRecoveryDbState: Log:new (2)
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgFlags : 0x8202
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgMid : [0.0.421889]
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgSrcMid : [0.0.421887]
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgSrcMidGroup : midNULL
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgHostId : 3747252104
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgOrigSrcThread : 1_x_sandbox_ADT
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgOrigDestThread : AngelEye_JavaRaw
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgSrcThread : 1_x_sandbox_ADT
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgDestThread : AngelEye_JavaRaw
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgXlateThread :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgSkipXlate : 0
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgSepChars :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgNumRetries : 0
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgGroupId : 0
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgDriverControl : {_TRXID_ _HCI_static_route_}
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgRecordFormat :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgRoutes :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgUserData :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgStaticIsDirty : 1
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgVariableIsDirty: 1
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgRetryTimes :
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgTimeStartIb : 1652282074.093
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgTimeStartOb : 1652282074.093
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgTimeCurQueStart: 0.000
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgTimeTotalQue : 0.007
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgTimeRecovery : 1652282074.102
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgEoConfig : 0x0
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] msgData (BO) : 0xefff6e30
[tcl :out :INFO/0: websrv_xlate:–/–/—- –:–:–] message : ‘update?%20{first_name=KEVIN&middle=&last=GRAND%20CENTRAL&mrn=202979&dob=01/23/1974&bed_id=LED-D31-D31&encounter_id=2002273077}’Update: we’ve got this working
We use the java/ws-rawclient to send/recv query (QBP) and response (RSP) immunization data to the Massachusetts Dept of Public Health MIIS registry.
on the thread, in the raw-consumer we had to add some values to the header override
Outbound tab of thread: TPS Outbound Data: custom tcl to build soap envelope and embed QBP HL7 msg
Outbound tab of thread: TPS Inbound Reply: custom tcl to evaluate the httpResponseCode from USERDATA. 200 success – continue MH, otherwise error mh
Route Replies Tab: tcl to pull HL7 RSP msg from response; route to destination thread that will feed back to source application
Process: Uncheck ‘route replies to original source only’
Process: Java Driver; add following:
$ROOTPATH/lib/java/JavaDriver.jar
$ROOTPATH/CAA/ws/lib/GJDWS.jar
<hr />
We hope to start testing this configuration shortly after the new year.
Thanks to everyone who had input and suggestions
Never mind — displaying in the email response, just not in Clovertech
I’ve tried multiple variations of those encoding characters; still no luck
Internal brainstorming session in 20 min; maybe will have update after that
Thanks again
Hi Levy
Can’t makeout the replacement characters:
CR should be replaced by
NL should be replaced by
Not familiar with XML encoding within the tclproc.
Any suggestions on how I could accomplish this?
Thanks
Bill
Tried switching this thread to java/ws-rawclient
Added below tclprocs on Outbound tab, TPS Outbound Data elementI think the current problem is the CDATA section is treating the carriage-return or linefeed characters as text
If I manually remove them [and hit ENTER key] in the SoapUI utility the message transmits successfullyExample- current message being sent (no PHI – Test data):
<soap:Envelope xmlns:soap=”http://www.w3.org/2003/05/soap-envelope” xmlns:urn=”urn:cdc:iisb:2011″><soap:Header/><soap:Body><urn:submitSingleMessage><urn:username>uid</urn:username><urn:password>pw</urn:password><urn:facilityID>facility</urn:facilityID><urn:hl7Message><![CDATA[MSH|^~\&|Cerner RX|11206|MIIS|99990|20201029125213-04||QBP^Q11^QBP_Q11|Z44_17G6H1LC|P|2.5.1|||ER|AL|||||Z44^CDCPHINVS\x0d\x0aQPD|Z44^Request Evaluated History and Forecast^CDCPHINVS|Z44_17G6H1LC|3036431^^^NIST-MPI-1^MR|TEST^CHICAGO^^^^^L||20051031|M|800 WASHINGTON STREET^^BOSTON^MA^02111^^L|^PRN^PH^^1^617^5551111|N||\x0d\x0aRCP|I|1^RD&Records&HL70126|R^real-time^HL70394||||\x0d\x0a]]></urn:hl7Message></urn:submitSingleMessage></soap:Body></soap:Envelope>Below are the tclprocs currently being utilized:
**************************************************************************************************************
TCLPROC#1 — minor edits to MSH segment, rebuild HL7 messageMSH {set splitsegment [split $segment |]
catch [set splitsegment [lreplace $splitsegment 2 2 $ApplID]]
…# Put the pipe back in the list
catch [set splitsegment [join $splitsegment |]]
lappend newMsgList $splitsegment
}default {
# Send all other segments
lappend newMsgList $segment
}# Put the carriage return back in
set newMsg [join $newMsgList \r\n][e.d. note – have tried \n , \r etc – same result, delimiter showing as data in hl7 msg in payload sent]
msgset $mh $newMsg
lappend dispList “CONTINUE $mh”
_________________________________________________________________________________________________________TCLPROC#2 — build soap envelope, embeds HL7 msg (passed from TCLPROC#1) into envelope
# Set Soap Envelope and embed HL7 message
set soapEnv1 “<soap:Envelope xmlns:soap=\”http://www.w3.org/2003/05/soap-envelope\” xmlns:urn=\”urn:cdc:iisb:2011\”>”
set soapEnv2 “<soap:Header/><soap:Body><urn:submitSingleMessage><urn:username>uid</urn:username>”
set soapEnv3 “<urn:password>pw</urn:password><urn:facilityID>facility</urn:facilityID>”
set soapEnv4 “<urn:hl7Message><!\[CDATA\[$msg\]\]></urn:hl7Message></urn:submitSingleMessage>”
set soapEnv5 “</soap:Body></soap:Envelope>”set soapEnv [concat $soapEnv1$soapEnv2$soapEnv3$soapEnv4$soapEnv5]
Have also tried below for CDATA section:
##set soapEnv4 “<urn:hl7Message><data>$msg</data></urn:hl7Message></urn:submitSingleMessage>” -
AuthorReplies