2016-11-01 2 views
4

Я пытаюсь загрузить ресурс в HAPI. Он основан на базовом типе ресурса, и я создал собственный профиль (и расширения) для концепции, которую я пытаюсь захватить. Я загрузил эти StructureDefinitions на сервер, который я использую (размещен на локальном хосте), но я еще не проверяю эту загрузку против него (все еще пытаюсь проверить, что формат, который я использовал для моего xml, является правильным).HAPI не удается вернуть базовый ресурс после успешной загрузки

Я загрузил следующий пакет (есть еще много записей в фактическом расслоении, я только что отредактировал его для ясности):

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<Bundle> 
    <meta> 
    <lastUpdated value="2016-10-28T16:29:43Z"/> 
    </meta> 
    <type value="transaction"/> 
    <entry> 
    <resource> 
     <Basic> 
     <text> 
      <status value="generated"/> 
      <div/> 
     </text> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/DateID"> 
      <valueDate value="2016-11-01"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/SptSolution"> 
      <valueCoding value="SptSolution.CatFurSPTSoln"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/MethodOfFollowUp"> 
      <valueCoding value="FollowUpMethod.ClinicVisit"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/SPTDefinition"> 
      <valueString value="A positive skin prick test result was defined as a mean wheal diameter of 3mm greater than that of the negative control"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/SubjectNo"> 
      <valueString value="4320"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/AIW"> 
      <valueInteger value="58"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/FollowUp"> 
      <valueCoding value="FollowUp.MSAge1Y"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/Subject"> 
      <valueCoding value="Person.StudySubject"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/VariableLabel"> 
      <valueString value="Child sensitised to cat (age 1 spt)"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/SPTDataType"> 
      <valueCoding value="SkinPrickTestData.SPTResult"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/DataSource"> 
      <valueCoding value="DataSource.ClinicalMeasurement"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/ClinicalType"> 
      <valueCoding value="ClinicalMeasurement.SkinPrickTest"/> 
     </extension> 
     <extension url="http://localhost:1080/hapi-fhir-jpaserver-example/baseDstu2/StructureDefinition/DataSPTResult"> 
      <valueCoding value="TestResult.Negative"/> 
     </extension> 
     </Basic> 
    </resource> 
    <request> 
     <method value="POST"/> 
     <url value="Basic"/> 
    </request> 
    </entry> 
</Bundle> 

который, кажется, выгрузил правильно, так как я получаю ответ:

<Bundle xmlns="http://hl7.org/fhir"> 
    <id value="5d8d77ed-762f-4a64-b6b1-7a3aeacac52f"/> 
    <type value="transaction-response"/> 
    <link> 
     <relation value="self"/> 
     <url value="http://localhost:8080/hapi-fhir-jpaserver-example/baseDstu2"/> 
    </link> 
    <entry> 
     <response> 
      <status value="201 Created"/> 
      <location value="Basic/1107/_history/1"/> 
      <etag value="1"/> 
      <lastModified value="2016-11-01T15:09:56.264+00:00"/> 
     </response> 
    </entry> 
</Bundle> 

Однако, когда я пытаюсь получить доступ к этому через URL:

{{URL}}/Basic/1107 

Получать следующую информацию:

{ 
    "resourceType": "OperationOutcome", 
    "text": { 
    "status": "generated", 
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h1>Operation Outcome</h1><table border=\"0\"><tr><td style=\"font-weight: bold;\">error</td><td>[]</td><td><pre>Failed to call access method</pre></td>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t</tr>\n\t\t</table>\n\t</div>" 
    }, 
    "issue": [ 
    { 
     "severity": "error", 
     "code": "processing", 
     "diagnostics": "Failed to call access method" 
    } 
    ] 
} 

Любая идея, что может быть причиной этой проблемы? Он отлично работает, когда я загружаю пациентов и пытаюсь их оттянуть, Но попытка его для базового не работает.

ответ

6

Это действительно ошибка в HAPI. Я собираюсь проверить исправление.

FWIW вы можете обходить его, не включая пустой тег <div/> в своем повествовании (или добавление контента в div).

2

Кажется ошибка, я могу воспроизвести это поведение на нашем сервере, а также:

Вот полный StackTrace:

ca.uhn.fhir.parser.DataFormatException: String does not appear to be valid XML/XHTML (error is "Unexpected character ' ' (code 32) expected '>' 
at [row,col {unknown-source}]: [1,6]"): <div/ xmlns="http://www.w3.org/1999/xhtml"> 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:127) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:41) 
    at ca.uhn.fhir.model.api.BasePrimitive.setValueAsString(BasePrimitive.java:112) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.setValueAsString(XhtmlDt.java:152) 
    at ca.uhn.fhir.parser.ParserState$XhtmlState.attributeValue(ParserState.java:2592) 
    at ca.uhn.fhir.parser.ParserState.attributeValue(ParserState.java:117) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1346) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1271) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1334) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1271) 
    at ca.uhn.fhir.parser.JsonParser.doParseResource(JsonParser.java:226) 
    at ca.uhn.fhir.parser.BaseParser.parseResource(BaseParser.java:641) 
    at ca.uhn.fhir.parser.BaseParser.parseResource(BaseParser.java:689) 
    at ca.uhn.fhir.jpa.dao.BaseHapiFhirDao.toResource(BaseHapiFhirDao.java:1024) 
    at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao.read(BaseHapiFhirResourceDao.java:768) 
    at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
    at com.sun.proxy.$Proxy81.read(Unknown Source) 
    at ca.uhn.fhir.jpa.provider.BaseJpaResourceProvider.read(BaseJpaResourceProvider.java:125) 
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at ca.uhn.fhir.rest.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:271) 
    at ca.uhn.fhir.rest.method.ReadMethodBinding.invokeServer(ReadMethodBinding.java:221) 
    at ca.uhn.fhir.rest.method.ReadMethodBinding.invokeServer(ReadMethodBinding.java:61) 
    at ca.uhn.fhir.rest.method.BaseResourceReturningMethodBinding.doInvokeServer(BaseResourceReturningMethodBinding.java:306) 
    at ca.uhn.fhir.rest.method.BaseResourceReturningMethodBinding.invokeServer(BaseResourceReturningMethodBinding.java:257) 
    at ca.uhn.fhir.rest.server.RestfulServer.handleRequest(RestfulServer.java:659) 
    at ca.uhn.fhir.rest.server.RestfulServer.doGet(RestfulServer.java:1203) 
    at ca.uhn.fhir.rest.server.RestfulServer.service(RestfulServer.java:1179) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at de.gecko.hapi.filter.CorsFilter.doFilter(CorsFilter.java:44) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ' ' (code 32) expected '>' 
at [row,col {unknown-source}]: [1,6] 
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:647) 
    at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:3002) 
    at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2963) 
    at com.ctc.wstx.sr.BasicStreamReader.handleRootElem(BasicStreamReader.java:2100) 
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2080) 
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131) 
    at org.codehaus.stax2.ri.Stax2EventReaderImpl.nextEvent(Stax2EventReaderImpl.java:255) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:114) 
    ... 62 common frames omitted 
2016-11-02 15:03:46.679 [http-bio-8080-exec-26] ERROR c.u.f.r.s.i.ExceptionHandlingInterceptor [ExceptionHandlingInterceptor.java:126] Failure during REST processing 
ca.uhn.fhir.rest.server.exceptions.InternalErrorException: Failed to call access method 
    at ca.uhn.fhir.rest.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:276) 
    at ca.uhn.fhir.rest.method.ReadMethodBinding.invokeServer(ReadMethodBinding.java:221) 
    at ca.uhn.fhir.rest.method.ReadMethodBinding.invokeServer(ReadMethodBinding.java:61) 
    at ca.uhn.fhir.rest.method.BaseResourceReturningMethodBinding.doInvokeServer(BaseResourceReturningMethodBinding.java:306) 
    at ca.uhn.fhir.rest.method.BaseResourceReturningMethodBinding.invokeServer(BaseResourceReturningMethodBinding.java:257) 
    at ca.uhn.fhir.rest.server.RestfulServer.handleRequest(RestfulServer.java:659) 
    at ca.uhn.fhir.rest.server.RestfulServer.doGet(RestfulServer.java:1203) 
    at ca.uhn.fhir.rest.server.RestfulServer.service(RestfulServer.java:1179) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at de.gecko.hapi.filter.CorsFilter.doFilter(CorsFilter.java:44) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.reflect.InvocationTargetException: null 
    at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at ca.uhn.fhir.rest.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:271) 
    ... 31 common frames omitted 
Caused by: ca.uhn.fhir.parser.DataFormatException: Failed to parse database resource[class ca.uhn.fhir.model.dstu2.resource.Basic/1375 (pid 1375, version DSTU2): String does not appear to be valid XML/XHTML (error is "Unexpected character ' ' (code 32) expected '>' 
at [row,col {unknown-source}]: [1,6]"): <div/ xmlns="http://www.w3.org/1999/xhtml"> 
    at ca.uhn.fhir.jpa.dao.BaseHapiFhirDao.toResource(BaseHapiFhirDao.java:1039) 
    at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao.read(BaseHapiFhirResourceDao.java:768) 
    at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
    at com.sun.proxy.$Proxy81.read(Unknown Source) 
    at ca.uhn.fhir.jpa.provider.BaseJpaResourceProvider.read(BaseJpaResourceProvider.java:125) 
    ... 35 common frames omitted 
Caused by: ca.uhn.fhir.parser.DataFormatException: String does not appear to be valid XML/XHTML (error is "Unexpected character ' ' (code 32) expected '>' 
at [row,col {unknown-source}]: [1,6]"): <div/ xmlns="http://www.w3.org/1999/xhtml"> 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:127) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:41) 
    at ca.uhn.fhir.model.api.BasePrimitive.setValueAsString(BasePrimitive.java:112) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.setValueAsString(XhtmlDt.java:152) 
    at ca.uhn.fhir.parser.ParserState$XhtmlState.attributeValue(ParserState.java:2592) 
    at ca.uhn.fhir.parser.ParserState.attributeValue(ParserState.java:117) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1346) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1271) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1334) 
    at ca.uhn.fhir.parser.JsonParser.parseChildren(JsonParser.java:1271) 
    at ca.uhn.fhir.parser.JsonParser.doParseResource(JsonParser.java:226) 
    at ca.uhn.fhir.parser.BaseParser.parseResource(BaseParser.java:641) 
    at ca.uhn.fhir.parser.BaseParser.parseResource(BaseParser.java:689) 
    at ca.uhn.fhir.jpa.dao.BaseHapiFhirDao.toResource(BaseHapiFhirDao.java:1024) 
    ... 49 common frames omitted 
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ' ' (code 32) expected '>' 
at [row,col {unknown-source}]: [1,6] 
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:647) 
    at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:3002) 
    at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2963) 
    at com.ctc.wstx.sr.BasicStreamReader.handleRootElem(BasicStreamReader.java:2100) 
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2080) 
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131) 
    at org.codehaus.stax2.ri.Stax2EventReaderImpl.nextEvent(Stax2EventReaderImpl.java:255) 
    at ca.uhn.fhir.model.primitive.XhtmlDt.parse(XhtmlDt.java:114) 
    ... 62 common frames omitted 

Я отправил эту проблему в FHIR чат: https://chat.fhir.org/#narrow/stream/hapi/subject/Basic.20Resource.20bug

+0

Обнаружили ли вы какую-нибудь работу? Я только начинаю работать с FHIR, поэтому, возможно, я не возвращаю ресурсы в типичной манере, но кажется довольно критически важным, что он не может возвращать ресурсы по id? – Andy

Смежные вопросы