2017-03-12 2 views
0

J'essaye de créer un client dstu2 à partir de clojure en utilisant hapi fhir. En tant que modèle j'utilise https://github.com/jamesagnew/hapi-fhir/blob/master/examples/src/main/java/example/GenericClientExample.javaLa méthode ne peut pas être trouvée mais clojure.reflector montre le contraire

Mais je ne suis pas en mesure d'exécuter

ctx.setPerformanceOptions(PerformanceOptionsEnum.DEFERRED_MODEL_SCANNING); 
in clojure 

Ce que je fais est la suivante:

(def fhir-context (. FhirContext forDstu2)) 
=> #'emrspp.fhir-resources/fhir-context 
(def opts PerformanceOptionsEnum/DEFERRED_MODEL_SCANNING) 
=> #'emrspp.fhir-resources/opts 

Mais le followint échoue:

(.setPerformanceOptions fhir-context opts) 
=> 
CompilerException java.lang.IllegalArgumentException: No matching method found: setPerformanceOptions for class ca.uhn.fhir.context.FhirContext 

reflet de clojure donne ce qui suit:

(pprint (filter #(= "setPerformanceOptions" (str (:name %))) (:members (r/reflect fhir-context)))) 

=> 
~ 
({:name setPerformanceOptions, 
    :return-type void, 
    :declaring-class ca.uhn.fhir.context.FhirContext, 
    :parameter-types [ca.uhn.fhir.context.PerformanceOptionsEnum<>], 
    :exception-types [], 
    :flags #{:varargs :public}} 
{:name setPerformanceOptions, 
    :return-type void, 
    :declaring-class ca.uhn.fhir.context.FhirContext, 
    :parameter-types [java.util.Collection], 
    :exception-types [], 
    :flags #{:public}}) 
nil 

La section importations est:

(:import [org.hl7.fhir.instance.model.api IBaseOperationOutcome IBaseResource ] 
    7   [ca.uhn.fhir.context FhirContext PerformanceOptionsEnum] 
    8   [ca.uhn.fhir.model.base.resource BaseOperationOutcome ] 
    9   [ca.uhn.fhir.model.dstu2.resource Bundle 
10            Conformance Observation 
11            OperationOutcome 
12            Organization Parameters 
13            Patient Provenance] 
14   [ca.uhn.fhir.model.dstu2.valueset AdministrativeGenderEnum IssueSeverityEnum] 
15    [ca.uhn.fhir.model.primitive DateDt IdDt InstantDt] 
16   [ca.uhn.fhir.rest.api MethodOutcome SummaryEnum ] 
17   [ca.uhn.fhir.rest.client IGenericClient ServerValidationModeEnum interceptor.LoggingInterceptor ] 
18   [ca.uhn.fhir.rest.method.SearchStyleEnum ] 
19   [ca.uhn.fhir.rest.param.DateRangeParam ] 
20   [ca.uhn.fhir.rest.server.exceptions.PreconditionFailedException ] 
21   ) 

sans: nécessite sauf pprint et de réflexion

Tous les hits de ce qui se passe en ce qui concerne la méthode setPerformanceOptions qui semble être là, mais être exécuté ??? ?

Répondre

1

Je l'ai compris après les heures. Je regarde de plus près l'espace de noms: http://hapifhir.io/apidocs/ca/uhn/fhir/context/FhirContext.html révèle que l'argument qui passe doit être une collection java et donc

(.setPerformanceOptions fhir-context opts) 

doit être modifié pour

(.setPerformanceOptions fhir-context (java.util.ArrayList. [opts])) 

ou simplier

(.setPerformanceOptions fhir-context [opts])