You got this error because you tried to use ODBC connection, but you say that you have JDBC connection. You should understand that it is different, with different ways to connect.

If you really use JDBC, you can create the new connection to the Oracle database, with a help from this article in the documentation. And with a code something like this, you can retrieve needed data from that server.

 #dim %JDBCGateway As %Net.Remote.Java.JDBCGateway
  set conn=$system.SQLGateway.GetJDBCConnection("cache2samples")
  if conn'="" {
    set cmd = "SELECT top 10 id,ssn,name,age,dob FROM Sample.Person"
    set st = %JDBCGateway.prepareStatement(conn,cmd)
    set %JDBCGateway.StatementCache(conn) = st
    set query = %JDBCGateway.execQuery(st)
    set columns=%JDBCGateway.getColumnCount(st)
    write !
    set pos=0
    for i=1:1:columns {
      set name=%JDBCGateway.getColumnName(st,i)
      set size=%JDBCGateway.getColumnDisplaySize(st,i)
      set pos(i)=pos
      set pos=pos+size+1
      write name,?pos
    }
    while %JDBCGateway.next(st) {
      write !
      for i=1:1:columns {
        write ?pos(i),%JDBCGateway.getString(st,i) 
      }
    }
  }

Mostly disagree with your opinion. Docker is a good way for microservices, and docker it is not just one container, in most cases, you should use a bunch of them, each as a different service. And in this case, good way to control all this service is docker-compose. You can split your application into some different parts, database, frontend, and some other services.

And I don't see any problems, in such way, when InterSystems inside one container, with application's database. And the power of docker is you can run multiple copies of the container, at once, when it will be needed. I see only one problem here, is separated global buffer, it means that it used not efficiently. Can you give an example different way with the different database server? I've tried some of the databases, in a container, and they work in the same way.

Each container with InterSystems inside, and one our service inside. And I don't see any troubles here, even in security. Your way it is a bad way, it is like add a new layer with docker, like container (Application) inside another container (Caché), too complicated.

In password security most valuable is entropy.

And a bit of humor about it.

It means, that even if you have a quite hard pattern for the password, but some password will not be strong enough.

On the internet, you can find some online calculators, for the password, when you can check how different symbols change difficulty. For example http://www.passwordmeter.com/

As I see you have multiple tasks. At first, you should parse this file. But I don't see any code from you, how you tried to do this task. So, I'm not going to do it instead of you. Just give you some advices. Looks like format for this file is fixed, you can use %Stream.FileCharacter class to read file line by line, with method ReadLine. Then for each read line of text you can use regular expression to extract needed data. 

But I don't know what to say about second part of your question because I have not worked yet with HL7.

in this mode, you should have access to call ^SECURITY tool, where you can what you want.

%SYS>d ^SECURITY


1) User setup
2) Role setup
3) Service setup
4) Resource setup
5) Application setup
6) Auditing setup
7) Domain setup
8) SSL configuration setup
9) Mobile phone service provider setup
10) OpenAM Identity Services setup
11) Encryption key setup
12) System parameter setup
13) X509 User setup
14) Exit

Option? 1

1) Create user
2) Edit user
3) List users
4) Detailed list users
5) Delete user
6) Export users
7) Import users
8) Exit

Everything that you should do, to support https, is to configure your web server. As you use Apache, you should configure it, by any of tutorials, which you can find in the internet. Nothing should be done from Caché side, it is should work in any case.

You should check settings for you Apache server, to be sure that nothing wrong there, and it works well, you can also check it with some static files, like html.

ccontrol works on windows systems, but not in this way as expected on Unix systems.

Anyway, rename instance possible, but it would be a very difficult to get working system after that. Just because does not enough just rename it. You should find all mentions of this name inside of Cache and rename it too. So, I would recommend to install new system near and move your configuration from old one.

How do you expect to get the response in your command?

If you read documentation carefully, you will find:

classmethod DirectoryExists(filename As %String) as %Boolean

Tests if filename is a directory. returns 1 if it is a directory, otherwise, returns 0.

So, you should set the result of this function to some value.

set result=##class(%File).DirectoryExists("/ensemble/")
SAMPLES>do $system.OBJ.ExportPackage("Sample","samples.xml")

Exporting class: Sample.Address
Exporting class: Sample.Company
Exporting class: Sample.CustomResultSet
Exporting class: Sample.Customer
Exporting class: Sample.Employee
Exporting class: Sample.Installer
Exporting class: Sample.ListOfPersonIdentification
Exporting class: Sample.MyException
Exporting class: Sample.Person
Exporting class: Sample.PersonIdentification
Exporting class: Sample.ResultSets
Exporting class: Sample.Task
Exporting class: Sample.TaskExample1
Exporting class: Sample.TaskExample2
Exporting class: Sample.TaskExample3
Exporting class: Sample.USZipCode
Exporting class: Sample.Utils
Exporting class: Sample.Vendor

It is not so simple. Before decoding, you should strip any special characters, like line endings. Then you should read input stream in fixed size devisable by 4, and decode this value.

set stream1=##class(%Stream.GlobalBinary).%New()
set stream2=##class(%Stream.GlobalBinary).%New()

while 'base64.AtEnd {
    set temp=base64.Read()
    set temp=$translate(temp, $c(13,10))

    do stream1.Write(temp)
}

do stream1.Rewind()
while 'stream1.AtEnd {
    set temp=stream.Read(4000)
    set temp=$system.Encryption.Base64Decode(temp)

    do stream2.Write(temp)
}