2017-04-05 148 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);