Phân trang
Danh sách nào cũng trả từng trang một. Mỗi API dùng một trong hai kiểu:
| Kiểu | API dùng và khi nào dừng |
|---|---|
| Con trỏlimit, cursor | /patients /appointments /receipts /therapy-plansDừng khi nextCursor là null. |
| Số trangpageSize, page | /encountersDừng khi đã nhận đủ total, hoặc gặp một trang rỗng. |
Con trỏ: bệnh nhân, lịch hẹn, hóa đơn, liệu trình
- Gọi lần đầu, chỉ cần
limit(1–500, mặc định 200). - Phản hồi có
nextCursor. Nếu khácnulllà còn trang sau: gọi lại và thêmcursor=cùng giá trị đó. - Lặp lại tới khi
nextCursorlànull.
- Giữ nguyên
limitvàupdatedSince(nếu có) ở mọi trang. - Lấy
nextCursornguyên văn, đừng tự dựng hay đọc nó.cursorsai trả400 INVALID_CURSOR. - Kết quả xếp theo
(updatedAt, id)tăng dần. Bản ghi được thêm hay sửa giữa hai lần gọi không làm lệch trang sau: bản ghi chưa đổi không bị bỏ sót hay lặp lại, còn bản ghi vừa đổi sẽ hiện lại một lần ở vị trí mới.
Số trang: /encounters
Dùng page (từ 0) và pageSize (1–500, mặc định 200). Tăng page cho tới khi đã nhận đủ total lượt khám, hoặc gặp một trang rỗng.
Kết quả xếp mới nhất trước. Nếu có lượt khám mới được tạo trong lúc bạn đang duyệt, các trang có thể dịch chuyển — vì vậy hãy khử trùng theo encounterUuid khi gộp kết quả.
from là vài ngày gần nhất là đủ cho việc đối chiếu lịch hẹn.
-
Lần đầu, chưa có
cursorGửi
GET /patients?limit=2Nhận2 bản ghi,
nextCursordjF8cGF0… -
Dán
nextCursorvừa nhận vàocursorGửi
GET /patients?limit=2&cursor=djF8cGF0…Nhận2 bản ghi,
nextCursordjF8Z2h5… -
Lặp lại cho tới khi
nextCursorlànullGửi
GET /patients?limit=2&cursor=djF8Z2h5…Nhận1 bản ghi,
nextCursornullhết, dừng
# lần đầu chưa có cursor: bỏ tham số này
cursor = null
lặp:
page = GET /patients?limit=500&cursor=CURSOR
xử lý từng bản ghi trong page.patients
cursor = page.nextCursor
nếu cursor là null: dừng
-
Trang đầu:
page=0Gửi
GET /encounters?…&pageSize=200&page=0Nhận
total340, 200 lượt khám -
Tăng
pagelên 1Gửi
GET /encounters?…&pageSize=200&page=1Nhận
total340, 140 lượt khám. 200 + 140 = 340 đủ, dừng
… là from và to, giữ nguyên ở mọi trang.