Sha256: 778db76e2d9337a5e72d357e8cbe8eeca751e281e7d1252539f34a05b686027b

Contents?: true

Size: 1.37 KB

Versions: 5

Compression:

Stored size: 1.37 KB

Contents

module Lifen
  module Communication
    class Request < Lifen::Base

      attribute :uuid, String

      attribute :sender, Lifen::User
      attribute :recipient, Lifen::User

      attribute :channel, Lifen::Communication::Channel
      attribute :patient, Lifen::Communication::Patient
      attribute :attachment, Lifen::Communication::Attachment

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

        self.uuid = json["id"]

        self
      end

    private

      def fhir_payload
        payload = {
          resourceType: "CommunicationRequest",
          sender: [ sender.fhir_payload ],
          recipient: [ recipient.fhir_payload ],
          contained: [ channel.fhir_payload(recipient) ],
          category: [ default_category],
          payload: [ attachment.fhir_payload ],
        }

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

        payload
      end

      def default_category
        {
          coding: [
             {
                system: "http://honestica.com/fhir/communication/category",
                code: "MEDICAL_REPORT"
             }
          ]
        }
      end

      def application_client
        @application_client ||= AppAuthenticatedClient.new
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lifen-1.6.8 lib/lifen/communication/request.rb
lifen-1.6.7 lib/lifen/communication/request.rb
lifen-1.6.6 lib/lifen/communication/request.rb
lifen-1.6.5 lib/lifen/communication/request.rb
lifen-1.6.4 lib/lifen/communication/request.rb