add helper function for checking if a resource has been deleted or not

This commit is contained in:
Gered 2014-08-05 15:28:29 -04:00
parent 8e790e2b21
commit 28f2cef6dd
2 changed files with 31 additions and 0 deletions

View file

@ -426,6 +426,11 @@ resource to be deleted. The return value will typically be `nil` on success, tho
some servers may return an OperationOutcome resource that includes more details about some servers may return an OperationOutcome resource that includes more details about
the successful deletion. the successful deletion.
You can use the helper function `deleted?` to determine if a resource has been deleted
or not, since `get-resource` returns nil for both deleted resources and resources
which do not exist at all (an important distinction, as in FHIR a deleted resource
technically still exists under previous version numbers).
##### Examples ##### Examples
```clojure ```clojure
@ -440,6 +445,14 @@ the successful deletion.
; try to delete a non-existant patient ; try to delete a non-existant patient
(delete server-url :patient 9001) (delete server-url :patient 9001)
=> ExceptionInfo FHIR request failed: HTTP 404 => ExceptionInfo FHIR request failed: HTTP 404
; testing if a resource has been deleted or not
(deleted? server-url :patient 1654)
=> true
; testing if a non-existant resource has been deleted
(deleted? server-url :patient 9001)
=> false
``` ```
### Error Handling ### Error Handling

View file

@ -365,6 +365,24 @@
base-url base-url
(apply join-paths uri-components)))) (apply join-paths uri-components))))
(defn deleted?
[base-url type id]
(let [resource-name (->fhir-resource-name type)
url-components ["/" resource-name id]
relative-url (apply join-paths url-components)]
(try
(fhir-request :get
base-url
relative-url)
; not deleted
false
(catch ExceptionInfo ex
(let [http-status (:status (ex-data ex))]
(cond
(= http-status 410) true
(= http-status 404) false
:else (throw ex)))))))
;(def server-url "http://fhir.healthintersections.com.au/open") ;(def server-url "http://fhir.healthintersections.com.au/open")
;(def server-url "http://spark.furore.com/fhir") ;(def server-url "http://spark.furore.com/fhir")
;(def server-url "http://fhirtest.uhn.ca/base") ;(def server-url "http://fhirtest.uhn.ca/base")