create FHIR resources and use conditional create (If-None-Exist) to avoid duplicates
domain: fhir · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
To create unconditionally, POST the resource JSON to {base}/{ResourceType} and capture the server-assigned id from the Location header or the returned resource.
For a conditional create, add the header If-None-Exist with a search query string (e.g. identifier=system|value); the server creates the resource only if no match is found, otherwise returns the existing resource with 200.
For a conditional update (upsert), send a PUT to {base}/{ResourceType}?identifier=system|value; the server creates if absent or updates if exactly one match exists.
Include a resource.identifier with a system URI and value that is stable and externally meaningful so future conditional operations can find the same record.
Check the HTTP response code: 201 means created, 200 means matched and returned (or updated), 412 means multiple matches were found and the operation was rejected.
Wrap multiple related creates in a FHIR transaction Bundle (Bundle.type=transaction) so they succeed or fail atomically.
Known gotchas
A 412 Precondition Failed on conditional create means your search matched more than one resource; you must resolve the ambiguity before retrying.
Not all servers support conditional operations; check the CapabilityStatement rest[].resource[].conditionalCreate flag before depending on this pattern.
Server-assigned ids are not portable across systems; always carry your own business identifier and use conditional logic rather than assuming a known id.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?