2017-04-05 9 views
1

나는 HAPI FHIR을 처음 사용합니다. 웹 UI를 포함하여 모든 것이 올바르게 진행됩니다. 나는 mysql 데이터베이스에 스키마를 생성하도록 구성하는 것조차 성공했다. 그러나 마지막 단계에서 뭔가 오류가 발생하여 해결하기가 어렵습니다. HAPI FHIR 리소스 DAO를 구현하는 방법은 무엇입니까?

내 서블릿이다 : 나는 웹 UI에 가서 환자를 검색 할 때

 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> 

이며, 오류가 보여줍니다

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

어떤 문제를 해결할 수 있을까요? 그리고 BTW, 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); 

교체