Aidbox/Issues

[BUG] Conversion to FHIR fails

Closed this issue · 6 comments

ir4y commented

Describe the bug
I am using a profile for the questionnaire resource https://github.com/beda-software/fhir-emr/blob/be05ffb79d90c5a39888817a789ea944f03a13b4/zrc/questionnaire-profile.edn#L4

I am using the Questionnaire

url: https://beda.software/fhir-emr-questionnaire
item:
  - stop: 20
    text: Frequency per week
    type: decimal
    start: 1
    linkId: slider
    stopLabel: 20+
    itemControl:
      coding:
        - code: slider
    sliderStepValue: 2
meta:
  profile:
    - https://beda.software/fhir-emr-questionnaire
  lastUpdated: '2022-10-19T07:30:59.610865Z'
  createdAt: '2022-10-19T06:18:58.249997Z'
  versionId: '440'
name: slider
status: draft
id: 4d89d5bd-eddd-471d-8a90-be0c9d165604
resourceType: Questionnaire

When I try to load it in FHIR format I got the following error

GET /fhir/Questionnaire/4d89d5bd-eddd-471d-8a90-be0c9d165604

---

resourceType: OperationOutcome
id: >-
  [exception](http://localhost:8080/ui/console#/rest?req=GET%20/OperationOutcome/exception)
text:
  status: generated
  div: 'Don''t know how to create ISeq from: java.lang.Integer'
issue:
  - severity: fatal
    code: exception
    diagnostics: >
      java.lang.IllegalArgumentException: Don't know how to create ISeq from:
      java.lang.Integer
       at clojure.lang.RT.seqFrom (RT.java:557)
          clojure.lang.RT.seq (RT.java:537)
          clojure.lang.APersistentMap.cons (APersistentMap.java:40)
          clojure.lang.RT.conj (RT.java:677)
          clojure.core$conj__5455.invokeStatic (core.clj:87)
          clojure.core$merge$fn__6027.invoke (core.clj:3066)
          clojure.core$reduce1.invokeStatic (core.clj:946)
          clojure.core$reduce1.invokeStatic (core.clj:936)
          clojure.core$merge.invokeStatic (core.clj:3065)
          clojure.core$merge.doInvoke (core.clj:3058)
          clojure.lang.RestFn.invoke (RestFn.java:421)
          fhir.conv3$export_extension$mk_complex_ext__27489.invoke (conv3.clj:232)
          fhir.conv3$export_extension.invokeStatic (conv3.clj:234)
          fhir.conv3$export_extension.invoke (conv3.clj:208)
          fhir.conv3$_STAR_export.invokeStatic (conv3.clj:508)
          fhir.conv3$_STAR_export.invoke (conv3.clj:461)
          fhir.conv3$_STAR_export$fn__27567.invoke (conv3.clj:497)
          fhir.conv3$_STAR_export.invokeStatic (conv3.clj:495)
          fhir.conv3$_STAR_export.invoke (conv3.clj:461)
          fhir.conv3$export.invokeStatic (conv3.clj:585)
          fhir.conv3$export.doInvoke (conv3.clj:581)
          clojure.lang.RestFn.invoke (RestFn.java:442)
          fhir.conv3$export_BANG_.invokeStatic (conv3.clj:830)
          fhir.conv3$export_BANG_.invoke (conv3.clj:826)
          fhir.core$fn__29760.invokeStatic (core.clj:219)
          fhir.core/fn (core.clj:210)
          clojure.lang.MultiFn.invoke (MultiFn.java:229)
          unifn.core$_STAR_apply_impl$fn__17243.invoke (core.clj:44)
          unifn.core$_STAR_apply_impl.invokeStatic (core.clj:44)
          unifn.core$_STAR_apply_impl.invoke (core.clj:37)
          unifn.core$_STAR_apply.invokeStatic (core.clj:71)
          unifn.core$_STAR_apply.invoke (core.clj:68)
          unifn.core$_STAR_apply.invokeStatic (core.clj:77)
          unifn.core$_STAR_apply.invoke (core.clj:68)
          fhir.core$transformator.invokeStatic (core.clj:234)
          fhir.core$transformator.invoke (core.clj:234)
          fhir.core$fn__29779.invokeStatic (core.clj:248)
          fhir.core/fn (core.clj:248)
          clojure.lang.MultiFn.invoke (MultiFn.java:229)
          unifn.core$_STAR_apply_impl$fn__17243.invoke (core.clj:44)
          unifn.core$_STAR_apply_impl.invokeStatic (core.clj:44)
          unifn.core$_STAR_apply_impl.invoke (core.clj:37)
          unifn.core$_STAR_apply.invokeStatic (core.clj:71)
          unifn.core$_STAR_apply.invoke (core.clj:68)
          proto.box$fn__38304.invokeStatic (box.clj:162)
          proto.box/fn (box.clj:149)
          clojure.lang.MultiFn.invoke (MultiFn.java:229)
          unifn.core$_STAR_apply_impl$fn__17243.invoke (core.clj:44)
          unifn.core$_STAR_apply_impl.invokeStatic (core.clj:44)
          unifn.core$_STAR_apply_impl.invoke (core.clj:37)
          unifn.core$_STAR_apply.invokeStatic (core.clj:71)
          unifn.core$_STAR_apply.invoke (core.clj:68)
          unifn.core$_STAR_apply.invokeStatic (core.clj:77)
          unifn.core$_STAR_apply.invoke (core.clj:68)
          proto.box$handle_to_ctx.invokeStatic (box.clj:258)
          proto.box$handle_to_ctx.invoke (box.clj:203)
          proto.box$start$fn__38481.doInvoke (box.clj:568)
          clojure.lang.RestFn.invoke (RestFn.java:410)
          web.core$mk_handler$fn__36962.invoke (core.clj:92)
          web.core$healthcheck$fn__36950.invoke (core.clj:77)
          ring.middleware.cookies$wrap_cookies$fn__36847.invoke (cookies.clj:214)
          web.core$handle_static.invokeStatic (core.clj:106)
          web.core$handle_static.invoke (core.clj:97)
          web.core$wrap_static$fn__36970.invoke (core.clj:110)
          ring.middleware.content_type$wrap_content_type$fn__36677.invoke (content_type.clj:34)
          ring.middleware.not_modified$wrap_not_modified$fn__36884.invoke (not_modified.clj:61)
          org.httpkit.server.HttpHandler.run (RingHandler.java:123)
          java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:539)
          java.util.concurrent.FutureTask.run (FutureTask.java:264)
          java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1136)
          java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:635)
          java.lang.Thread.run (Thread.java:833)

Severity
Critical

Versions:

  • Aidbox image version:
    devbox:edge
    v:2210.0a981731

@ir4y, hello. Here is correct edn:

 import #{hl7-fhir-uv-sdc.sdc-questionnaire
          hl7-fhir-r4-core.CodeableConcept
          hl7-fhir-r4-core.integer}

 QuestionnaireProfile
 {:zen/tags #{zen.fhir/profile-schema zen/schema}
  :confirms #{hl7-fhir-uv-sdc.sdc-questionnaire/schema}
  :zen.fhir/type "Questionnaire"
  :zen.fhir/profileUri "https://beda.software/fhir-emr-questionnaire"
  :type zen/map
  :zen.fhir/version "0.5.23"
  :keys {:item {:type zen/vector
                :every {:type zen/map
                        :keys {:itemControl {:confirms #{hl7-fhir-r4-core.CodeableConcept/schema}
                                             :fhir/extensionUri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"}
                               :sliderStepValue {:type zen/number
                                                 :fhir/extensionUri "http://hl7.org/fhir/StructureDefinition/questionnaire-sliderStepValue"}
                               :start {:confirms #{hl7-fhir-r4-core.integer/schema}
                                       :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-start"}
                               :stop {:confirms #{hl7-fhir-r4-core.integer/schema}
                                      :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-stop"}
                               :startLabel {:confirms #{hl7-fhir-r4-core.string/schema}
                                            :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-start-label"}
                               :stopLabel {:confirms #{hl7-fhir-r4-core.string/schema}
                                           :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-stop-label"}
                               :helpText {:confirms #{hl7-fhir-r4-core.integer/schema}
                                          :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/help-text"}
                               :adjustLastToRight {:confirms #{hl7-fhir-r4-core.boolean/schema}
                                                   :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/adjust-last-to-left"}}}}}}}

Your questionnaire-profile.edn does not match with zen/fhire documentation paragraph 4: It is important to use FHIR type instead of plain zen type, i.e. use :confirms #{hl7-fhir-r4-core.string/schema} instead of :type zen/string.

ir4y commented

Thank you for your help @NikitaSinc
I think it would be nice to somehow inform users about similar problems.

ir4y commented

@NikitaSinc

I have updated the definition, but still, get the same error
https://github.com/beda-software/fhir-emr/blob/69c76d64a1bc58d83df880d4a97005c119b7128b/zrc/questionnaire-profile.edn

{ns questionnaire-profile
 import #{hl7-fhir-uv-sdc.sdc-questionnaire
          hl7-fhir-r4-core.CodeableConcept
          hl7-fhir-r4-core.integer
          hl7-fhir-r4-core.boolean
          hl7-fhir-r4-core.string}

 QuestionnaireProfile
 {:zen/tags #{zen.fhir/profile-schema zen/schema}
  :confirms #{hl7-fhir-uv-sdc.sdc-questionnaire/schema}
  :zen.fhir/type "Questionnaire"
  :zen.fhir/profileUri "https://beda.software/fhir-emr-questionnaire"
  :type zen/map
  :zen.fhir/version "0.5.23"
  :keys {:item {:type zen/vector
                :every {:type zen/map
                        :keys {:itemControl {:confirms #{hl7-fhir-r4-core.CodeableConcept/schema}
                                             :fhir/extensionUri "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"}
                               :sliderStepValue {:confirms #{hl7-fhir-r4-core.integer/schema}
                                                 :fhir/extensionUri "http://hl7.org/fhir/StructureDefinition/questionnaire-sliderStepValue"}
                               :start {:confirms #{hl7-fhir-r4-core.integer/schema}
                                       :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-start"}
                               :stop {:confirms #{hl7-fhir-r4-core.integer/schema}
                                      :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-stop"}
                               :startLabel {:confirms #{hl7-fhir-r4-core.string/schema}
                                            :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-start-label"}
                               :stopLabel {:confirms #{hl7-fhir-r4-core.string/schema}
                                           :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/slider-stop-label"}
                               :helpText {:confirms #{hl7-fhir-r4-core.string/schema}
                                          :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/help-text"}
                               :adjustLastToRight {:confirms #{hl7-fhir-r4-core.boolean/schema}
                                                   :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/adjust-last-to-right"}
                               :unit {:confirms #{hl7-fhir-r4-core.string/schema}
                                      :fhir/extensionUri "https://beda.software/fhir-emr-questionnaire/unit"}}}}}}}

@ir4y , could you provide your QuestionnaireProfile in edn format from profiles in your aidbox ui? Is there any errors in profiles page?

ir4y commented

I think that I have to restart aidbox or use a newer version of devbox.
The problem is gone. Conversion is working now.

@ir4y, we did some improvements in our documentation. Please check out these paragraph and let us know if it became more accurate.