Sha256: 00eaef6f2b4e4d0593686650226bbf84d3efca185e58fec1f607de638d552c12

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

module Lifen
  class CommunicationRequest < Base

    attribute :uuid, String
    attribute :number_communications, Integer

    attribute :sender, Lifen::User
    attribute :recipients, [Lifen::User]

    attribute :category, Lifen::Category, default: Lifen::Category.new
    attribute :medium, [Lifen::Medium]
    attribute :patient, Lifen::Patient
    attribute :attachment, Lifen::Attachment
    attribute :binary, Lifen::Binary
    attribute :content_string, Lifen::ContentString

    def send
      json = application_client.post("fhir/CommunicationRequest", fhir_payload)

      self.uuid = json["id"]
      self.number_communications = Array(json["issue"]).length

      self
    end

  private

    def fhir_payload

      payload = {
        resourceType: "CommunicationRequest",
        sender: [ sender.fhir_payload ],
        recipient: recipients.map(&:fhir_payload),
        contained: [],
        medium: medium.map(&:fhir_payload) ,
        category: [ category.fhir_payload],
        payload: [ document_content ]
      }

      if patient
        payload[:contained] << patient.fhir_payload
        payload[:subject] = [
          {reference: "patient"}
        ]
      end

      if content_string
        payload[:payload] << content_string.fhir_payload
      end

      payload
    end

    def document_content
      if !attachment.nil?
        attachment.fhir_payload
      else
        binary.fhir_payload
      end
    end

    def application_client
      @application_client ||= AppAuthenticatedClient.new
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lifen-2.4.0 lib/lifen/communication_request.rb