Would someone explain me the difference between CRUD and REST API operations in the workflow and architecture of FHIR?

I will appreciate if someone guides me.

REST involves leveraging the http protocol to perform CRUD operations - C=POST, R=GET, U=PUT, D=DELETE. FHIR also introduces some specific variations:

  • PUT can also be used for creates, if a server allows the client to assign the identifier
  • HTTP PATCH can be used to update a resource sending only changes
  • POST and GET can be used to invoke custom operations (and POST custom operations can cause changes to data)
  • POST can be used to submit batches and transactions that trigger multiple operations at once
  • GET can be used to retrieve individual records, search for records, retrieve history of a single record, retrieve a list of changes, or retrieve a specific version of a record, depending on the URL used.
1 Like


One other tiny point about ReST itself is that you are not allowed to conceive any CRUD operation you undertake in ReST as requiring state. Your operation, be it to Create a new resource (or multiple resources), Read back a resource, Update a resource, Delete a resource, etc. is not expected to (and must not) involve a “mode” in which you exchange (HTTP messages) assuming some interconnecting state (between the different messages or a group of messages, etc.).

1 Like