If you are not afraid of using basic COS functionality:
your reload method raises a LOCK ^myRELOAD  
and drops it with completion LOCK -^myRELOAD

Your check utility does the same but with a timeout LOCK ^myRELOAD:0
if it fails - signaled by $TEST=0  you loop and hang around and retry
for success $TEST=1 you go on but release your successful LOCK immediately
not to block anyone else.
 

According to your JSON model, I would assume this to start:
(sory had no chance to test myself)

Class Test.GEOMETRIEPOINT Extends (%SerialObject, %JSON.Adaptor, %XML.Adaptor) 
{

Property "GEO_TAB_COORDONNES" As list Of %Float;
}

Class Test.GEOMETRIELINE Extends (%SerialObject, %JSON.Adaptor, %XML.Adaptor)
{

Property "GEOMETRIE_LINE" As list Of GEOMETRIEPOINT;
}

Class Test.POLYGON Extends (%Persistent,%JSON.Adaptor, %XML.Adaptor)
{

Property "GEOMETRIE_POLYGON" As list Of GEOMETRIELINE;
{

it's an interesting line:

patient0 = Patient.parse_obj(patients_resources.search(family='familyname',given='givenname1').first().serialize())

I miss some checks if the search was successful.
Because NONE indicates a missing content.
If search(family='familyname',given='givenname1')
fails you receive NONE and this can't be serialized.  
COS would just return NullString """
 

Fully agree:
Package was used for the chapter of OEX from day zero!.
Instead of semantic discussions, it would be much more important to take care of 
quality and completeness and easy-to-evaluate examples for the community.
Every member of the community is a customer. To my understanding this is major
point of being different do other code exchange and discussion platforms.
I have checked almost all packages (except the commercials) and most contributors 
seem to share this understanding. Though I have to admit that there are also less
service-minded contributors that just don care about issues and PRs.
A community of white sheep only is an illusion.
I've seen too much to have such dreams 

You are correct module.xml indicates IPM/ZPM usage and that's OK.
But "Packages" is much wider since it also includes those parts that do not contain installable code or data to load but (if well prepared) a bunch of additional information like (hopefully) user guides, installation guides, description of the purpose of the packages, as well as screenshots, examples, ..... 
All this is not part of the IPM module. for good reasons.
I would feel "module" as a downgrade of the excellent work the contributors provided to the community.

in iris.script for NSP %SYS add

set par("AutheEnabled")=64
set tSC=##class(Security.Applications).Modify("/csp/sys",.par)

the disadvantage:
You are UnknowUser and might need to add the required Roles as well.

set role="%All"
set tSC=##class(Security.Users).AddRoles("UnknownUser",.role,1)

----------------------
my personal approach is to have a fixed port for SMP
and save my   _SYSTEM / SYS in browser with autofill.