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}))
)