0
respostas

Erro ao executar o código passado na aula

Olá. Tudo bem? Estou tentando executar esse código

(defn tipo-de-autorizador [pedido]
  (let [paciente (:paciente pedido)
        situacao (:situacao paciente)]
    (cond (= :urgente situacao) :sempre-autorizado
          (contains? paciente :plano) :plano-de-saude
          :else :credito-minimo)))

(defmulti deve-assinar-pre-autorizacao? tipo-de-autorizador)

(defmethod deve-assinar-pre-autorizacao? :sempre-autorizado [pedido]
  false)

(defmethod deve-assinar-pre-autorizacao? :plano-de-saude [pedido]
  (not (some #(= % (:procedimento pedido)) (:plano (:paciente pedido)))))

(let [particular {:id 15, :nome "Guilherme", :nascimento "18/9/1981", :situacao :urgente}
      plano {:id 15, :nome "Guilherme", :nascimento "18/9/1981", :situacao  :urgente [:raio-x, :ultrassom]}]
  (pprint (deve-assinar-pre-autorizacao? {:paciente particular, :valor 1000, :procedimento :coleta-de-sangue}))
  (pprint (deve-assinar-pre-autorizacao? {:paciente plano, :valor 1000, :procedimento :coleta-de-sangue})))

Mas sempre que tento rodar, me volta a informação

Syntax error reading source at (C:\Users\Leticia\Documents\clojure-estudos\curso\src\hospitalNovo\aula5.clj:20:108).
Map literal must contain an even number of forms

Full report at:
C:\Users\Leticia\AppData\Local\Temp\clojure-5913576701253246207.edn

Pelo que eu entendi, ele entende que o map tem mais argumentos do que deveria mas em tese isso não deveria ocorrer com um map certo? Cheguei até a copiar o código do professor mas é o mesmo erro

Rodei dessa forma e o código funcionou, ou seja, o problema é na parte do plano. Não consegui resolver sozinha. Alguém consegue me dar um help?

(let [particular {:id 15, :nome "Guilherme", :nascimento "18/9/1981", :situacao :urgente}
      ;plano {:id 15, :nome "Guilherme", :nascimento "18/9/1981", :situacao  :urgente [:raio-x, :ultrassom]}
      ]
  (pprint (deve-assinar-pre-autorizacao? {:paciente particular, :valor 1000, :procedimento :coleta-de-sangue}))
  ;(pprint (deve-assinar-pre-autorizacao? {:paciente plano, :valor 1000, :procedimento :coleta-de-sangue}))
  )

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software