Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundle contents and data model #25

Open
bwalsh opened this issue Jul 11, 2024 · 0 comments
Open

Bundle contents and data model #25

bwalsh opened this issue Jul 11, 2024 · 0 comments

Comments

@bwalsh
Copy link
Collaborator

bwalsh commented Jul 11, 2024

Use Case

As an ACED data submitter, when I've submitted data (see #9), I need to know the details of the Bundle contents and how the bundle will be processed.

Bundle object implementation notes

  • GET Bundle/[id] is NOT implemented at this time, should processing time become an issue we may return a 201 from the POST to allow the client to query for completion via GET

  • Rule: The only methods support for each entry.request.methods is PUT (upsert) and DELETE

  • Rule: For collections of type transaction or batch, all entries must contain request elements, and resources if the entry.request.methods is PUT, POST or PATCH

  • The only type supported is transaction, transaction-response

  • The ACED data model is a subset of the FHIR model, the server MUST reject the transaction if an unsupported resource is included. e.g. A Claim resource is included.

  • The client MUST interrogate the bundle response for individual entry response.status for standard result codes

role-based access control (RBAC)

  • The server MUST reject all requests without a Authorization header
  • The bundle MUST have an Identifier system=https://aced-idp.org/project_id value=$PROGRAM-$PROJECT
  • The server MUST interrogate Arborist to validate submission rights see existing fhir_import job

Bundle processing

  • check authz
  • create Bundle file
  • delegate: launch fhir import, modified to support Bundle
    • for DELETE transactions - remove from fhir_store, flat store, etc.
    • for all others - create .ndjson - process as usual as is

image

issues

  • Semantics of fullUrl: only ids of form urn:uuid:XXXXX will be supported
  • Each entry request should include the url [type]?identifier=$system|$value e.g. Patient?identifier=http:/example.org/fhir/ids|456456
  • All resources should include an identifier - that identifier MUST not include PHI
  • In order to prevent "schema explosion" 🤯, the openapi component/schema/ definitions are minimal representations of [Bundle, Bundle_Entry, Bundle_Request, Bundle_Response]. iceberg_tools will validate using complete R5

valid resource types

  • ResearchStudy
  • Patient
  • ResearchSubject
  • Substance
  • Specimen
  • Observation
  • Condition
  • Medication
  • MedicationAdministration
  • DocumentReference
  • Task
  • FamilyMemberHistory

examples

THIS IS STILL A DRAFT

  • example openapi : see docs/openapi.yaml

  • example bundle

---
resourceType: Bundle
id: bundle-transaction
type: transaction
entry:
- fullUrl: urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a
  resource:
    resourceType: Patient
    active: true
    name:
    - use: official
      family: Chalmers
      given:
      - Peter
      - James
    gender: male
    birthDate: '1974-12-25'
  request:
    method: POST
    url: Patient
- fullUrl: http://example.org/fhir/Patient/123
  resource:
    resourceType: Patient
    id: '123'
    active: true
    name:
    - use: official
      family: Chalmers
      given:
      - Peter
      - James
    gender: male
    birthDate: '1974-12-25'
  request:
    method: PUT
- fullUrl: urn:uuid:74891afc-ed52-42a2-bcd7-f13d9b60f096
  resource:
    resourceType: Patient
    identifier:
    - system: http:/example.org/fhir/ids
      value: '456456'
    active: true
    name:
    - use: official
      family: Chalmers
      given:
      - Peter
      - James
    gender: male
    birthDate: '1974-12-25'
  request:
    method: PUT
    url: Patient?identifier=http:/example.org/fhir/ids|456456
- fullUrl: http://example.org/fhir/Patient/123a
  resource:
    resourceType: Patient
    id: 123a
    text:
      status: generated
      div: <div xmlns="http://www.w3.org/1999/xhtml">Some narrative</div>
    active: true
    name:
    - use: official
      family: Chalmers
      given:
      - Peter
      - James
    gender: male
    birthDate: '1974-12-25'
  request:
    method: PUT
    url: Patient/123a
    ifMatch: W/"2"
- request:
    method: DELETE
    url: Patient/234
- request:
    method: DELETE
    url: Patient?identifier=123456
@bwalsh bwalsh changed the title Bundle Processing Bundle contents and processing Jul 11, 2024
@bwalsh bwalsh changed the title Bundle contents and processing Bundle contents and data model Jul 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant