Hi all, lately I’ve been working on releasing Atomik, a new website and docs. Finally the new Atomik website is online https://atomik.app
Please let me know what you think about the site and what would you like to see there. Note I’m still working on the docs, but will be completed soon.
One thing I added to Atomik, that wasn’t in it’s open source sibling EHRServer, is support for the demographic model. To support this I needed to design a REST API for the demographic model to commit and retrieve those resources. This is what I have so far (I’ll make a more formal documentation in OpenAPI and propose it for review to the SEC ASAP):
POST /demographic/actor
Creates any type of ACTOR (PERSON, ORGANISATION, GROUP, AGENT) from a non empty payload.
Design note: I have considered ROLE as a weak entity and should always be inside an ACTOR when you need to create an instance. So this endpoint also creates the ROLEs if any is provided. I also consider CONTACT and PARTY_IDENTITY to be weak entities, so they will always be created when the container ACTOR is created.
PUT /demographic/actor/$versioned_uid
Modifies an existing ACTOR. Needs an If-Match header with the version.uid of the current last version of the versioned object, which UID comes in the URL as $versioned_uid.
GET /demographic/actor/version_uid
Retrieves an ACTOR by version UID.
POST /demographic/relationship
Creates a PARTY_RELATIONSHIP between two existing ACTORs. The server should check both source and target references exist.
PUT /demographic/relationship/$versioned_uid
Modifies an existing PARTY_RELATIONSHIP. Needs an If-Match header with the version.uid of the current last version of the versioned object, which UID comes in the URL as $versioned_uid.
GET /demographic/relationship/version_uid
Retrieves the PARTY_RELATIONSHIP by version UID.
I didn’t implement the get xxx at time, but follows the same logical design.
Design note: you can see both ACTOR and PARTY_RELATIONSHIP are strong entities (top-level versionable), the rest just depend on ACTOR.