Sessions normally are available closer to the date of the Summit. You should receive a notice when they are available to be Scheduled.
- Log in to post comments
Sessions normally are available closer to the date of the Summit. You should receive a notice when they are available to be Scheduled.
I noticed that this is now included in 2024.1, and there is documentation Production Validator | HealthShare Health Connect 2024.1 (intersystems.com)
While I was able to help test the code, the code version I have is probably an older version. The Documentation mentions loading the code for the Production Validator and compiling it in the system.
For me and others where can that updated Production Validator code be found? @James Bourette
I am being told the OAuth certificate has no chain behind it. it is a Self Signed Certificate/Key Pair. I changed the ownership of the files to irisusr:irisusr but I am still getting the same error message...
"error reported 'error:0200100D:system library:fopen:Permission denied, error:20074002:BIO routines:file_ctrl:system lib, error:140DC002:SSL routines:use_certificate_chain_file:system lib' *"
I am still thinking it is something wrong with the Cert/Private Key that was provided to me from the Application, am I wrong?
My real concern is... "error:0200100D:system library:fopen:Permission denied, error:20074002:BIO routines:file_ctrl:system lib, error:140DC002:SSL routines:use_certificate_chain_file:system lib",,,,,,,$lb(,"%SYS",$lb("e^Send+313^%Net.HttpRequest.1^1","e^Post+1^%Net.HttpRequest.1^1","e^GetAccessTokenJWT+44^%SYS.OAuth2.Authorization.1^1"
is there an issue with my Certs?
ConvertDateTime works well...
when you call it within a DTL you can specify the incoming and outgoing formats like ..."%d/%m/%Y", "%Y%m%d"
Still investigating...
I was able to get past the iam-setup.sh but now when I run podman-compose up -d I am getting the follwing error...
:>sudo podman-compose up -d
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.6.1
** excluding: set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=scripts', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
podman volume inspect scripts_pgdata14 || podman volume create scripts_pgdata14
['podman', 'volume', 'inspect', 'scripts_pgdata14']
['podman', 'network', 'exists', 'scripts_default']
podman run --name=scripts_db_1 -d --label io.podman.compose.config-hash=0b8c4491a1820337de3b759d5b1067ea78426dafeaec513283d14bd1ac5c3e8b --label io.podman.compose.project=scripts --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@scripts.service --label com.docker.compose.project=scripts --label com.docker.compose.project.working_dir=/ensemble/tmp/IAM/scripts --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=db -e POSTGRES_DB=iam -e POSTGRES_PASSWORD=iam -e POSTGRES_USER=iam -v scripts_pgdata14:/var/lib/postgresql/data --net scripts_default --network-alias db -i --restart on-failure --healthcheck-command /bin/sh -c pg_isready' '-U' 'iam --healthcheck-interval 30s --healthcheck-timeout 30s --healthcheck-retries 3 postgres:14.5
7db3dff8488e4115cd7d65d4ea61be9de185e68dfdbcf1744ec913b02314645c
exit code: 0
['podman', 'network', 'exists', 'scripts_default']
podman run --name=scripts_iam-migrations_1 -d --requires=scripts_db_1 --label io.podman.compose.config-hash=0b8c4491a1820337de3b759d5b1067ea78426dafeaec513283d14bd1ac5c3e8b --label io.podman.compose.project=scripts --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@scripts.service --label com.docker.compose.project=scripts --label com.docker.compose.project.working_dir=/ensemble/tmp/IAM/scripts --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=iam-migrations -e KONG_DATABASE=postgres -e KONG_PG_DATABASE=iam -e KONG_PG_HOST=db -e KONG_PG_PASSWORD=iam -e KONG_PG_USER=iam -e KONG_CASSANDRA_CONTACT_POINTS=db -e ISC_IRIS_URL= -e ISC_CA_CERT= --net scripts_default --network-alias iam-migrations --restart on-failure bash -c kong migrations bootstrap; kong migrations up; kong migrations finish
Error: repository name must have at least one component
exit code: 125
podman start scripts_iam-migrations_1
Error: no container with name or ID "scripts_iam-migrations_1" found: no such container
exit code: 125
['podman', 'network', 'exists', 'scripts_default']
podman run --name=scripts_iam_1 -d --requires=scripts_db_1 --label io.podman.compose.config-hash=0b8c4491a1820337de3b759d5b1067ea78426dafeaec513283d14bd1ac5c3e8b --label io.podman.compose.project=scripts --label io.podman.compose.version=1.0.6 --label PODMAN_SYSTEMD_UNIT=podman-compose@scripts.service --label com.docker.compose.project=scripts --label com.docker.compose.project.working_dir=/ensemble/tmp/IAM/scripts --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=iam -e KONG_ADMIN_ACCESS_LOG=/dev/stdout -e KONG_ADMIN_ERROR_LOG=/dev/stderr -e KONG_ADMIN_LISTEN=0.0.0.0:8001 -e KONG_ANONYMOUS_REPORTS=off -e KONG_CASSANDRA_CONTACT_POINTS=db -e KONG_DATABASE=postgres -e KONG_PG_DATABASE=iam -e KONG_PG_HOST=db -e KONG_PG_PASSWORD=iam -e KONG_PG_USER=iam -e KONG_PROXY_ACCESS_LOG=/dev/stdout -e KONG_PROXY_ERROR_LOG=/dev/stderr -e KONG_PORTAL=on -e KONG_PORTAL_GUI_PROTOCOL=http -e KONG_PORTAL_GUI_HOST=127.0.0.1:8003 -e KONG_ADMIN_GUI_URL=http://localhost:8002 -e ISC_IRIS_URL= -e ISC_CA_CERT= --net scripts_default --network-alias iam -p 8000:8000 -p 8001:8001 -p 8002:8002 -p 8003:8003 -p 8004:8004 -p 8443:8443 -p 8444:8444 -p 8445:8445 --restart on-failure
Error: repository name must have at least one component
exit code: 125
podman start scripts_iam_1
Error: no container with name or ID "scripts_iam_1" found: no such container
exit code: 125
my httpd.conf is setup to send / to CSP.#
### BEGIN-ApacheCSP-SECTION ####
LoadModule csp_module_sa "/opt/webgateway/bin/CSPa24.so"
CSPModulePath "/opt/webgateway/bin/"
CSPConfigPath "/opt/webgateway/bin/"
CSPFileTypes csp cls zen cxw
Alias /csp/ /opt/webgateway/bin/
<Location />
CSP On
</Location>
<Location "/csp/">
CSP On
</Location>
<Location "/api/">
CSP On
</Location>
<Location "/oauth2/">
CSP On
</Location>
<Location "/isc/">
CSP On
</Location>
<Location "/ui/">
CSP On
</Location>
<Directory "/opt/webgateway/bin/">
AllowOverride None
Options MultiViews FollowSymLinks ExecCGI
Require all granted
<FilesMatch "\.(log|ini|pid|exe)$">
Require all denied
</FilesMatch>
</Directory>I played around with the iam-setup.sh script, and found when I ran the script without a CA and port it was able to connect to the IRIS instance. Next step is that the docker will not start, I need to dig into that more.
We just went through a same dilemma. it was recommended from an IT audit perspective that we look into securing the access and hardening what access was given.
We had been using Delegated authentication that performed the necessary lookup against LDAP, but the way in which we did it was not ideal according to the Audit. So, we moved to using the internal LDAP functionality inside IRIS, and through a painful process I was able to get a TLS certificate signed by the Active Directory Services.
By knowing how to obtain a Certificate signed by the CA that is used across the Medical Center, it allowed us to configure Apache and a Local instance of the Web Gateway to encrypt the connection to the management portal instead of using HTTP with port 52773. VS Code was not affected either as we switched our VS Code connections to use https and port 443.
We also took steps in hardening access by limiting resources, and web applications by those resources as well.
That was just how we addressed it, Configuring a local firewall, or network access based on ports is painful but it can be done. As applications are moved to a segregated network we have had to start having tickets put in to allow traffic across ports. So we are updating the network as we go through new applications. Eventually we will need to do this for all ports as the Powers that be would like us to move to the Cloud evenutally.
I verified that /api/iam is enabled, but using CURL or POSTMAN, I keep getting a 404 - Not Found error. I thought it might be because the script is looking for /api/iam/license so I shorted it to /api/iam to see if I could get a response but still getting the 404 error.
I even tried unauthenticated on /api/iam
Thanks, I did receive an email, downloaded the new kit, and upgraded our DEV environment yesterday to start evaluating.
The scenario was for a Backload that may or may not happen. The Backloaded data does not include a field that was recently added to the interface. I think if need be since it is a one-time backload, I might just use a Data Lookup table to get the missing information into the backloaded data.
I have many integrations using JDBC stored procedure calls against MS SQL.
Class osuwmc.CPD.DataStructures.CheckProviderSpecialty Extends (%Library.Persistent, %XML.Adaptor) [ Not ProcedureBlock, SqlRowIdPrivate ]
{
Property DoctorNumber As%String(MAXLEN = 6);
Storage Default
{
<Data name="CheckProviderSpecialtyDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>DoctorNumber</Value>
</Value>
</Data>
<DataLocation>^osuwmc.CPD59D.CheckProvideAF3D</DataLocation>
<DefaultData>CheckProviderSpecialtyDefaultData</DefaultData>
<IdLocation>^osuwmc.CPD59D.CheckProvideAF3D</IdLocation>
<IndexLocation>^osuwmc.CPD59D.CheckProvideAF3I</IndexLocation>
<StreamLocation>^osuwmc.CPD59D.CheckProvideAF3S</StreamLocation>
<Type>%Storage.Persistent</Type>
}Include (EnsSQLTypes, %occODBC)
Class osuwmc.Epic.MFN.EpicMFNToCPDDBWriteDEV 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
Kill$$$EnsRuntimeAppData(..%ConfigName)
//Set ..Adapter.ConnectAttrs = "QueryTimeout:45" ; try this too just in case...
Quit$$$OK
}Method CheckDoesProviderExists(pRequest As osuwmc.CPD.DataStructures.CheckDoesDoctorNumberExist, Output pResponse As EnsLib.SQL.Snapshot) As%Status
{
set SPQuery = "{ ?= call InterfaceCheckDoctorNumber(?) }"
set parm = 2
set parm(1,"SqlType")=$$$SQLVARCHAR
set parm(1,"IOTypes")=$$$SQLPARAMOUTPUT
set parm(2)=pRequest.DoctorNumber
set parm(2,"SqlType")=$$$SQLVARCHAR
set parm(2,"IOTypes")=$$$SQLPARAMINPUT
set tSC = ..Adapter.ExecuteProcedureParmArray(.CheckDoctor,.outputs,SPQuery,"oi",.parm)
if tSC = 1
{
set pResponse = CheckDoctor.GetAt(1)
}
quit tSC
}Let me know if you need additional help, but this should give you a good start.
I am not seeing HealthShare Health Connect 2024.1 listed under the HealthShare Full Kits. Am I missing something?
.png)
tar(1) - Linux manual page (man7.org)
It is suggested that using tar, you use the -cZf
tar -cZf <filename>.zip files......png)
May 2023 we moved from AIX to RHEL, that was a sad day as we are finding a lot of quirks when it comes to our RHEL environment. We went from Physical Hardware to VM, and found that the VM environment wasn't as thought out like we wanted.
Our VM Hosts were not organized, and we have had 3 unexpected downtimes since because of resource contention.
May want to look at other Linux OS's outside of RHEL if you can, as the updates/patches aren't as dynamic as they were in our old environment meaning we didn't have to reboot too often. If we had the choice, we would of went with Ubuntu or SUSE as at least the updates/patches don't require reboots as often.
Now we get notified at the drop of a hat when there is a patch, that security needs us to reboot. You just can't take it down at a moment's notice.
Just thoughts, and pain points. Each environment is different and hopefully you don't run into as many issues as we have.
It all depends on your learning style.
For me I rather learn as I am building so it was trial by fire as we were migrating from SeeBeyond eGate to InterSystems Ensemble (2014.1) at the time by a certain deadline. I learned a lot on the fly by reading the Developer Community posts, reaching out as needed, and just playing around with the code as I was building it. I also had my company by Cache Objectscript and MUMPS, at least so I can search for a Reference when figuring out syntax.
The Learning site as a lot of good and informational courses you can take as well.
If I remember correctly, I had to make HSLIB read/write and then I was able to update %SYS when we used ZAUTHENTICATE.mac. We have since moved to using LDAP.
This has been documented with WRC, and there is a development ticket pending DP-415930. But I also recently created an Idea to make the Interface Maps Utility more of an On Demand option so Maps that don't involve many layers of Business Process (BPL) to run.
I have used HANG in a code block before to put in a pause between messages when we have two Business Processes sending MFN messages to Epic to update the same Provider record.
I suppose you could write a Custom Ens.Function to do the same within a Rule if you want, or you could route the messages through a Business Process to put the pause in.
IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1.4 (Build 812_0_22913U) Thu Dec 7 2023 17:06:30 EST [HealthConnect:3.5.0-1.m1] [HealthConnect:3.5.0-1.m1]
Another question about using %ZSTART, while I have the process that works if I stop and start IRIS, I just performed an upgrade and noticed after the upgrade when IRIS came back up it did not start like it should.
If I stopped and started, IRIS afterwords it did start like it should. Anyone know why %ZSTART would not start after an Upgrade?
If using JDBC you can use a JDBC SQL Software like DBeaver or Squirrel SQL.
DBeaver officially supports InterSystems IRIS | InterSystems Developer
How to create a database connection in DBeaver - DBeaver
With some help we created a function to loop through a repeating field and verify values against a single string, and a variation against a Lookup Table...
ClassMethod DoesSingleValueExistRepeatingSegmentFields(pHL7Msg As EnsLib.HL7.Message, pSegment As%String, pField As%String, pSubField As%String, pInputValue As%String) As%Boolean
{
#dim tSeg as EnsLib.HL7.Segment
set tSegCount = pHL7Msg.SegCountGet()
set i = 1setj = 1Set tFound = 0//get new valuesset tval=""while ((i <= tSegCount) && (tval="")) {
set tSeg = pHL7Msg.GetSegmentAt(i)
if (tSeg.Name = pSegment) {
set pField2 = pField_"(*)"set tRepCount = tSeg.GetValueAt(pField2)
while ((j <= tRepCount) && (tval="")) {
set tID = tSeg.GetValueAt(pField_"("_j_")"_"."_pSubField)
if (pInputValue = tID) {
set tval = 1
}
setj = j + 1
}
}
set i = i + 1
}
if (tval '= "")
{
Q1
}
quit0
}I just ran through several scenarios of testing the change to Ens.Configuration("Queues","KeepInQueues")=1, but when IRIS was restarted the messages were placed back in the Ens.Suspended queue.
How do I configure Apache/Web Gateway to allow this connection to happen?
I am wondering if the Query against LDAP is taking too long and timing out in a response, even though he is getting an Invalid Username/password error returned but this happens when he tries to sign in from VS Code using /api/atelier. I tried increasing the timeout, but it doesn't seem to make a difference. I tried adjusting the Base DN search, and the Nested Group search to no avail.
John, if we have multiple authentication methods turned on for /api/Atelier could this also cause Unauthenticated tries against /api/Atelier?
trying to track down login issues and I am seeing this...
.png)
No doubt I will do a full backup prior to the changes. But thanks just wanted to confirm. I know not all the settings are mirrored, which I have asked for some of the settings to be so we can keep the servers in sync.