Class: OpenehrRails::OpenehrApi::CompositionsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- OpenehrRails::OpenehrApi::CompositionsController
- Defined in:
- app/controllers/openehr_rails/openehr_api/compositions_controller.rb
Overview
openEHR REST API COMPOSITION resource
(base URL:
Defined Under Namespace
Classes: PreconditionFailed
Instance Method Summary collapse
-
#create ⇒ Object
POST /v1/ehr/:ehr_id/composition.
-
#destroy ⇒ Object
DELETE /v1/ehr/:ehr_id/composition/:uid (logical delete: appends a LIFECYCLE_DELETED version).
- #openehr_access_scope ⇒ Object
-
#show ⇒ Object
GET /v1/ehr/:ehr_id/composition/:uid (versioned "uid::system::n" or bare uid; either resolves the head).
-
#update ⇒ Object
PUT /v1/ehr/:ehr_id/composition/:uid (requires If-Match: "
").
Instance Method Details
#create ⇒ Object
POST /v1/ehr/:ehr_id/composition
28 29 30 31 32 33 34 35 36 |
# File 'app/controllers/openehr_rails/openehr_api/compositions_controller.rb', line 28 def create ehr = find_ehr! canonical = parsed_body uid = canonical.dig('uid', 'value').presence || SecureRandom.uuid canonical['uid'] = { '_type' => 'HIER_OBJECT_ID', 'value' => uid } composition = OpenehrRails::Rm::CompositionCommitter.commit(canonical, uid: uid, ehr: ehr) render_composition(composition, status: :created) end |
#destroy ⇒ Object
DELETE /v1/ehr/:ehr_id/composition/:uid (logical delete: appends a LIFECYCLE_DELETED version)
58 59 60 61 62 63 64 65 66 67 |
# File 'app/controllers/openehr_rails/openehr_api/compositions_controller.rb', line 58 def destroy ehr = find_ehr! head_composition = find_composition! check_if_match!(head_composition) if request.headers['If-Match'].present? composition = OpenehrRails::Rm::CompositionCommitter.commit(head_composition.to_canonical_hash, uid: head_composition.uid, ehr: ehr) composition.version.update!(lifecycle_state_code: OpenehrRails::Rm::Version::LIFECYCLE_DELETED) head :no_content end |
#openehr_access_scope ⇒ Object
23 24 25 |
# File 'app/controllers/openehr_rails/openehr_api/compositions_controller.rb', line 23 def openehr_access_scope :rest_api end |
#show ⇒ Object
GET /v1/ehr/:ehr_id/composition/:uid (versioned "uid::system::n" or bare uid; either resolves the head)
39 40 41 42 43 |
# File 'app/controllers/openehr_rails/openehr_api/compositions_controller.rb', line 39 def show find_ehr! composition = find_composition! render json: composition.to_canonical_hash end |
#update ⇒ Object
PUT /v1/ehr/:ehr_id/composition/:uid (requires If-Match: "
46 47 48 49 50 51 52 53 54 55 |
# File 'app/controllers/openehr_rails/openehr_api/compositions_controller.rb', line 46 def update ehr = find_ehr! head_composition = find_composition! check_if_match!(head_composition) canonical = parsed_body canonical['uid'] = { '_type' => 'HIER_OBJECT_ID', 'value' => head_composition.uid } composition = OpenehrRails::Rm::CompositionCommitter.commit(canonical, uid: head_composition.uid, ehr: ehr) render_composition(composition) end |