diff --git a/src/clj_hl7_fhir/core.clj b/src/clj_hl7_fhir/core.clj index 5b07130..e08ccf6 100644 --- a/src/clj_hl7_fhir/core.clj +++ b/src/clj_hl7_fhir/core.clj @@ -56,7 +56,7 @@ (str (:namespace value) "|" (format-search-value (:value value))) (instance? Date value) - (->iso-date value) + (->iso-timestamp value) :else (-> value str escape-parameter))) @@ -187,3 +187,23 @@ (merge (search-params->query-map where) (apply hash-map params))))) + +;(def server-url "http://fhir.healthintersections.com.au/open") +;(def server-url "http://spark.furore.com/fhir") +(def server-url "http://uhnvesb01d.uhn.on.ca:25180/hapi-fhir-jpaserver/base") + +;(get-resource server-url :patient 1) + +;(get-resource server-url :patient 181) + +;(search server-url :patient [(lt :birthdate "1984-12-13")]) + +;(search server-url :patient [(eq :birthdate "1985-01-01")]) + +;(search server-url :patient [(eq :birthdate "1925-08-27T00:00:00")]) +;(search server-url :patient [(eq :birthdate (new Date 25 7 27))]) +;(search server-url :patient [(eq :birthdate (new Date 90 0 1))]) + +;(search server-url :patient [(eq :name "king") (eq :age 1337)]) + +;(search-params->query-kvs [(eq :name "king") (eq :age 1337)]) diff --git a/src/clj_hl7_fhir/util.clj b/src/clj_hl7_fhir/util.clj index 256e5c0..1150ae3 100644 --- a/src/clj_hl7_fhir/util.clj +++ b/src/clj_hl7_fhir/util.clj @@ -7,17 +7,25 @@ [cheshire.core :as json])) (def tz (TimeZone/getDefault)) -(def iso8601 "yyyy-MM-dd'T'HH:mm:ssZZ") +(def iso8601-timestamp "yyyy-MM-dd'T'HH:mm:ss") +(def iso8601-date "yyyy-MM-dd") -(defn ->iso-date - "returns an ISO8601 formatted date/time string for the given date. this is the format - which FHIR expects all date/times to be in" - [^Date date] +(defn format-date [^Date date ^String format] (if date - (let [df (SimpleDateFormat. iso8601)] + (let [df (SimpleDateFormat. format)] (.setTimeZone df tz) (.format df date)))) +(defn ->iso-timestamp + "returns an ISO8601 formatted date/time string for the given date object" + [^Date date] + (format-date date iso8601-timestamp)) + +(defn ->iso-date + "returns an ISO8601 formatted date string for the given date object" + [^Date date] + (format-date date iso8601-date)) + (defn map->query-string [m] (->> m (reduce