mine is Windows.

I just tried it with the Symposium (Docker, UBUNTU)  ==> Community Version + Key

License Capacity  InterSystems IRIS Community license
Customer Name  InterSystems IRIS Community
Order Number  54702
Expiration Date  10/30/2021
Authorization Key

8116600000500000500008000084345EF8F2473A5F13003
Product=Server
License Type=Concurrent User
Server=Single
Platform=IRIS Community
License Units=5
Licensed Cores=8
Authorized Cores=8
Extended Features=3A5F1300

. . . 

. . . 

Atelier required a restart but then it worked.

WELL: default in Ubuntu / Docker : firewall off
I fear Red Hat is different. But my last Red Hat is 15 yrs back :-(

My personal decision was to move to Docker because it is really easy after 1/2 day playing with basics.

$system.UpgradeAll("",.ERRLOG may give you a hint on problems.

Studio sticks with dictionary version. If there is a mismatch Studio refuses. And Mgmt Portal only shows Class documentation.

I'm not so familiar with Healthshare: Is there eventually some Read/Only DB involved that blocks Update ?
I think of class... EXTENDS (read/only class), ENSLIB ???

In addition to Nigel's answer.:

A central list of all routines doesn't seem to exist.

But: Search the Documentation for CHUI and you will be surprised.
(CHUI stands for CHaracter based Utility Interface) 
Special findings: 

you use %session.AppTimeout which has a default of 900 (sec).

but SetCookie asks for a Time !
method SetCookie(name As %String, value As %String, expires As %String = "", path As %String = "", domain As %String = "", secure As %Boolean = 0, httpOnlyFlag As %Boolean = 0) 

I see from https://stackoverflow.com/questions/13154552/javascript-set-cookie-with-expire-time
what string this might be.

'Mon, 18 Nov 2019 08:50:17 GMT';

My assumption - your 900 was just not recognized and the default (=session) was set