2017-04-05 151 views
1

我是HAPI FHIR的新手。一切都會好起來的,包括Web UI。我甚至成功配置在mysql數據庫中創建模式。然而,在最後一步,發生了一些錯誤,我很難解決。如何實現HAPI FHIR資源dao?

這是我的servlet:

 super.initialize(); 
    myAppCtx = ContextLoaderListener.getCurrentWebApplicationContext(); 
    FhirVersionEnum fhirVersion = FhirVersionEnum.DSTU2; 
    setFhirContext(new FhirContext(fhirVersion)); 

    // Resource 
    IFhirResourceDao<Patient> patientDAO = myAppCtx.getBean("myPatientDaoDstu2", IFhirResourceDao.class); 
    JpaResourceProviderDstu2<Patient> patientProvider = new JpaResourceProviderDstu2<Patient>(patientDAO); 
    List<IResourceProvider> resourceProviders = new ArrayList<IResourceProvider>(); 
    resourceProviders.add(patientProvider); 
    setResourceProviders(resourceProviders); 

    // System 
    Object systemProvider; 
    systemProvider = myAppCtx.getBean("mySystemProviderDstu2", JpaSystemProviderDstu2.class); 
    setPlainProviders(systemProvider); 


    // Conformance 
    IFhirSystemDao<Bundle, MetaDt> systemDao = myAppCtx.getBean("mySystemDaoDstu2", IFhirSystemDao.class); 
    JpaConformanceProviderDstu2 confProvider = new JpaConformanceProviderDstu2(this, systemDao, 
      myAppCtx.getBean(DaoConfig.class)); 
    confProvider.setImplementationDescription("HBI Solutions"); 
    setServerConformanceProvider(confProvider); 

的web.xml在這裏

<web-app> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
    org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      com.hbisolutions.www.fhir.config.FhirServerConfig 
     </param-value> 
    </context-param> 
    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>com.hbisolutions.www.fhir.config.FhirTesterConfig</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

然而,當我去到Web UI和搜索病人,錯誤顯示,

Error: HTTP 400 : Invalid request: The FHIR endpoint on this server does not know how to handle GET operation[Patient] with parameters [[_pretty]] 

任何想法如何解決這個問題?順便說一句,我是否需要將以往的資源類型添加到resourceProviders

在此先感謝。

回答

0

我終於得到了工作。事實證明,我不需要自己實施每個資源。有一個包含所有資源類型的bean。

嘗試

String resourceProviderBeanName = "myResourceProvidersDstu2"; 
    List<IResourceProvider> beans = myAppCtx.getBean(resourceProviderBeanName, List.class); 
    setResourceProviders(beans); 
更換

IFhirResourceDao<Patient> patientDAO = myAppCtx.getBean("myPatientDaoDstu2", IFhirResourceDao.class); 
JpaResourceProviderDstu2<Patient> patientProvider = new JpaResourceProviderDstu2<Patient>(patientDAO); 
List<IResourceProvider> resourceProviders = new ArrayList<IResourceProvider>(); 
resourceProviders.add(patientProvider); 
setResourceProviders(resourceProviders);