Sure, not.

When you read particular patient, your URL is something like (where 1234 is ID of this patient):

/fhir/Patient/1234

But to create new patient, you should use

/fhir/Patient

and method POST 

Full URL, with ID, need when you want to update particular patient, and use method PUT.

This is how it should be by standard FHIR.  But I have not worked with FHIR in HealtShare, and maybe there is some differences.

I got the same error, with %SQLQuery and embedded SQL (&sql), and in 2017.2 too.

Looks like some error, and you should say about it to the WRC.

  SQLCODE=-3 : Closing quote (') missing
 SELECT TOP 3 JSON_OBJECT('lit':'Employee from','t':%TABLENAME,'name':Name,'num':SSN) FROM Sample.Employee

While it works perfectly with %SQL.Statement, and through Management Portal

Or just from the documentation page, here.

Look at the documentation

csession instname "[label[+offset]]^routine"

Specifies the name of a COS program to run in user mode.

In addition to the specified formats, you can pass parameter lists consisting of string and/or numeric literals, as well as omitted (void) parameters, as follows:

where, for example, parameter-list is specified in the form "string literal",,-+-000123.45600E+07, and omitted parameters are passed to the target as $Data(parameter)=0.

Whitespace and shell meta characters must be quoted in an operating-system dependent form.

So, you can just call your code in routine or class with csession.

If you need another way, you can create any text file, with a list of commands, like if you would use them in csession manually. Where the last command should be HALT. While it is a code for csession, you can't use any multi line blocks and spaces at the beginning of the line.  And run it:

csession CACHE -UUSER < somecode.txt

If you need authorization in csession before executing code, just put login and password as a plain text in first two rows.

To keep your logging data even if transaction rolled back, you should have this changes journaled. Because transaction rollback works by the journal. If it happened to be journaled, it will be rolled back anyway.

And you should remember even you disabled journaling for some database, while system journaling working well. Every change which was made during a transaction will be journaled anyway.

So, how to switch off journaling, for this particular data. 

  • CACHETEMP - you can map this data to database CACHETEMP. This database not journaled even if data changed in a transaction. But the problem is, that data here will be available until server will be stopped.
  • Switch journaling temporary off, just only when logging information should be saved. You can do it with command before save, should be placed in %OnBeforeSave method
    DO DISABLE^%NOJRN 
    and return journaling back after saving in method %OnAfterSave
    DO ENABLE^%NOJRN

This possibility is not alone, it is also possible to have more than one or two databases for one namespace.

There is also mapping, for globals class packages and routines.

One of the reasons to use it is to split different parts of applications. For instance:

  • Let's say, you are a software developing company. Mostly it is enough to deliver to your customer only your compiled code, and it is easy to do it with CACHE.DAT, while a customer has database only with data. So, an update should be quite easy in this case, replace cache.dat, call some update code if needed.
  • Or, you have one application, but should have different data, by some reasons. You can use one database with code, in multiple namespaces. But each namespace will have different databases for Data.

With mapping, you have more flexibilities, like split your code in different databases. If you deliver your code to the customer but gave permission to extend some functionality. In this case, you can put customer's code to another database. Or you can split data to get better performance. If you would have so much count of writing to your database, you can split this data and place this database files to different hardware discs, you may get better writing speed. Or even some part of data in a namespace can be stored on another server and connected through ECP.

So, I can say that even could be more reasons to split data in databases. And always it depends on a project and needs.

You should read this article in the documentation about mapping to get more information about it.

Every event where I was last time, Global Summit, German Symposium, Evegeny used to promote Developer Community very well. And not only DC but also advertised some open-source projects which are developed on Caché with some support from InterSystems.

I have one more idea, how about to highlight people who made so much for Developer Community, by overall rating or by just last year, no matter. And everybody may see that those people could be useful to answer some questions. Or just for making personal contacts. I know that some of the leaders of DC, already know each other in person, but DC community is growing so fast, and more people joined with their own very useful knowledge. 

What do you think?