Attention!

The list of companies from enlyft.com is totally wrong.
Even if you just look at Electronic Health Record  you miss important countries like whole Scandinavia, Italy, Germany, China, ...
and beyond that whole middle and eastern Europe and especially Russia. Where is Japan ?

Just as a signal how massively wrong these figures are:
My small Austria has more companies using Intersystems products than this 26 counting for India.

I'd suggest you contact Intesystems Marketing for REAL figures.
Your source is just faked information.

the issue is here:

Method RtnReceive(RtnName As %String, 
  RtnLines As %ListOfDataTypes(ELEMENTTYPE="%String",
  XMLITEMNAME="RtnLinesItem",XMLNAME="RtnLines")) As %String [ Final, ProcedureBlock = 1, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{

use instead ELEMENTTYPE="%VarString",

 %VarString inherits from %String all except pre-define MAXLEN=50

A few recommendations to improve performance:

#1) %TimeStamp  is a nice thing for display tough rather inefficient for indexing as it is mostly close to a unique index.
If you just check for Date as you describe you better use an index on a calculate property of type %Date
instead of a string, your date values in index are just integers !!! 
that makes your index slim and fast.

#2)
check for = is the easiest one, therefore, the fastest
check for > is the slowest as you have no stop condition
between is somewhat better as you have to check > and <  but you have a start / stop delimited range.

And integer compare is by dimensions faster than any string compares with any available processor chip.
And you do lots of them!

in reality, better check the number of Global references and lines you execute.
That's the truth.  Costs are good guesswork based on generic parameters out of tune table but rather for the dimension.

map  your MS SQL Table to a class using SQL gateway

in Studio create a new CSP page

<html>
<head> <!-- Put your page Title here -->
<title> Cache Server Page </title> </head> <body>
<!-- Put your page code here -->
My page body
</body>
</html>

use Tool / Templates  / WebForm Assistant
select your Class and the Properties you need
compile  it
use it

just tried your line:

My docker is slightly older. 

Checked it on Ubuntu server

rcemper@TEST:~$ sudo bash
[sudo] password for rcemper:
root@TEST:~#

root@TEST:~# docker --version
#Docker version 19.03.4, build 9013bf583a

And this one runs on WIN10
>docker --version
Docker version 19.03.4, build 9013bf5

Same result for both of them:

>docker container run -it -p 51773:51773 -p 52773:52773 -p 5001:5001 -p 5000:5000 --name rcc2 --rm store/intersystems/iris-community:2019.3.0.309.0
[WARNING] No init process detected!  This container may accumulate zombie processes if run for a long time.  Consider using "docker create --init ..." or equivalent.
[INFO] Starting InterSystems IRIS instance IRIS...
[INFO] This copy of InterSystems IRIS has been licensed for use exclusively by:
InterSystems IRIS Community
Copyright (c) 1986-2019 by InterSystems Corporation
Any other use is a violation of your license agreement
Starting IRIS

12/01/19-22:24:43:883 (397) 0 [Generic.Event] Automatically configuring buffers
12/01/19-22:24:43:959 (397) 0 [Generic.Event] Allocated 421MB shared memory: 249MB global buffers, 35MB routine buffers
12/01/19-22:24:43:961 (397) 0 [Crypto.IntelSandyBridgeAESNI] Intel Sandy Bridge AES-NI instructions detected.
12/01/19-22:24:43:975 (397) 0 [WriteDaemon.UsingWIJFile] Using WIJ file: /usr/irissys/mgr/IRIS.WIJ
12/01/19-22:24:43:976 (397) 0 [WriteDaemon.CreatingNewWIJ] Creating a new WIJ file
12/01/19-22:24:45:445 (397) 0 [WriteDaemon.CreatedNewWIJ] New WIJ file created
- - - - 

Hi  

We used this @ german symposium: 

>docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
store/intersystems/iris-community   2019.3.0.309.0      ccc1f07e75b6        2 months ago        1.33GB

>docker run -it -p 51773:51773 -p 52773:52773 -p 5001:5001 -p 5000:5000 -v c:\DockerData\:/data --name rcc2 --rm ccc1f07e75b6
[WARNING] No init process detected!  This container may accumulate zombie processes if run for a long time.  Consider using "docker create --init ..." or equivalent.
[INFO] Starting InterSystems IRIS instance IRIS...
[INFO] This copy of InterSystems IRIS has been licensed for use exclusively by:
InterSystems IRIS Community
Copyright (c) 1986-2019 by InterSystems Corporation
Any other use is a violation of your license agreement
Starting IRIS

12/01/19-19:13:57:734 (397) 0 [Generic.Event] Automatically configuring buffers
12/01/19-19:13:57:808 (397) 0 [Generic.Event] Allocated 421MB shared memory: 249MB global buffers, 35MB routine buffers
12/01/19-19:13:57:810 (397) 0 [Crypto.IntelSandyBridgeAESNI] Intel Sandy Bridge AES-NI instructions detected.
12/01/19-19:13:57:825 (397) 0 [WriteDaemon.UsingWIJFile] Using WIJ file: /usr/irissys/mgr/IRIS.WIJ
12/01/19-19:13:57:825 (397) 0 [WriteDaemon.CreatingNewWIJ] Creating a new WIJ file
12/01/19-19:13:58:490 (397) 0 [WriteDaemon.CreatedNewWIJ] New WIJ file created
12/01/19-19:13:58:493 (397) 0 [Generic.Event]
Startup of InterSystems IRIS [IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2019.3 (Build 309U) Wed Sep 11 2019 16:20:03 EDT]
        in /usr/irissys/bin/
        with mgr: /usr/irissys/mgr
        with wij: /usr/irissys/mgr/IRIS.WIJ
        from: /usr/irissys/mgr/
  OS=[Linux], version=[#1 SMP Tue Jul 2 22:58:16 UTC 2019], release=[4.9.184-linuxkit], machine=[x86_64]
  nodename=[e3f43e3bfd15].
  numasyncwijbuf: 0, swdwrtmax: 0, wijdirectio: off, synctype: 3
  System Initialized.
12/01/19-19:13:58:504 (398) 0 [WriteDaemon.Started] Write daemon started.
12/01/19-19:13:59:795 (409) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/ (SFN

and it works as expected .
  But I used no durable feature !!