179 lines
7.9 KiB
JSON
179 lines
7.9 KiB
JSON
{
|
|
"POST /patient": [
|
|
{
|
|
"case": "valid_create",
|
|
"body": {
|
|
"name": "Jane Doe",
|
|
"medical_record_number": "MRN-20260001",
|
|
"phone_number": "+628123456789",
|
|
"gender": "F",
|
|
"birth_date": "1990-05-20T00:00:00Z",
|
|
"address": "Jl. Merdeka 1",
|
|
"parent": 0,
|
|
"active": true,
|
|
"fk_sd_provinsi_id": 1,
|
|
"fk_sd_kabupaten_kota_id": 10,
|
|
"fk_sd_kecamatan_id": 100,
|
|
"fk_sd_kelurahan_id": 1000,
|
|
"ds_sd_provinsi": "Provinsi X",
|
|
"ds_sd_kabupaten_kota": "Kota Y",
|
|
"ds_sd_kecamatan": "Kecamatan Z",
|
|
"ds_sd_kelurahan": "Kelurahan A"
|
|
}
|
|
},
|
|
{
|
|
"case": "missing_medical_record_number",
|
|
"body": {
|
|
"name": "No MRN",
|
|
"phone_number": "08123456789",
|
|
"gender": "M"
|
|
}
|
|
},
|
|
{
|
|
"case": "duplicate_medical_record_number",
|
|
"body": {
|
|
"name": "Copy MRN",
|
|
"medical_record_number": "MRN-20260001",
|
|
"phone_number": "081000000",
|
|
"gender": "F"
|
|
}
|
|
},
|
|
{
|
|
"case": "very_long_name",
|
|
"body": {
|
|
"name": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
"medical_record_number": "MRN-LONG-1",
|
|
"phone_number": "08123456789",
|
|
"gender": "F"
|
|
}
|
|
},
|
|
{
|
|
"case": "invalid_types_fixed",
|
|
"body": {
|
|
"name": "Valid User",
|
|
"medical_record_number": "MRN-20260002",
|
|
"phone_number": "+628111111111",
|
|
"gender": "M"
|
|
}
|
|
}
|
|
],
|
|
|
|
"PUT /patient/{medical_record_number}": [
|
|
{
|
|
"case": "valid_update",
|
|
"body": {
|
|
"name": "Jane Doe Updated",
|
|
"phone_number": "+628987654321",
|
|
"address": "Jl. Baru 2",
|
|
"active": false,
|
|
"birth_date": "1990-05-20T00:00:00Z"
|
|
}
|
|
},
|
|
{
|
|
"case": "update_change_mrn_to_existing",
|
|
"body": {
|
|
"medical_record_number": "MRN-20260001"
|
|
}
|
|
},
|
|
{
|
|
"case": "invalid_field",
|
|
"body": {
|
|
"unknown_field": "value"
|
|
}
|
|
}
|
|
],
|
|
|
|
"GET /patient": [
|
|
{ "case": "basic_list", "query": "?limit=10&offset=0" },
|
|
{ "case": "search_and_active", "query": "?search=Jane&active=true&include_summary=true" },
|
|
{ "case": "bad_limit", "query": "?limit=1000" }
|
|
],
|
|
|
|
"POST /patient/detail (demographics)": [
|
|
{ "case": "valid_demographics", "body": { "name": "Jane Doe", "phone_number": "+628123456789", "gender": "F" } },
|
|
{ "case": "missing_fields", "body": { "name": "", "phone_number": "", "gender": "" } }
|
|
],
|
|
|
|
"POST /patient/scan": [
|
|
{ "case": "valid_visit_code", "body": { "visit_code": 26011500013 } },
|
|
{ "case": "invalid_visit_code_type", "body": { "visit_code": 26011500014 } }
|
|
],
|
|
|
|
"POST /patient/check-phone": [
|
|
{ "case": "registered_phone", "body": { "phone_number": "+628123456789" } },
|
|
{ "case": "unregistered_phone", "body": { "phone_number": "+620000000000" } },
|
|
{ "case": "invalid_format", "body": { "phone_number": "abcdef" } }
|
|
],
|
|
|
|
"POST /patient/verify-otp": [
|
|
{ "case": "valid_dummy_otp", "body": { "phone_number": "+628123456789", "otp": "123456" } },
|
|
{ "case": "invalid_otp", "body": { "phone_number": "+628123456789", "otp": "000000" } }
|
|
],
|
|
|
|
"POST /patient/payment-types": [
|
|
{ "case": "valid_add_payments_by_medrec", "body": { "medical_record_number": "MRN-20260001", "payments": [ { "name": "BPJS", "number": "1234567890", "active": true, "fk_ref_payment_type": 2 }, { "name": "Umum", "number": "", "active": true, "fk_ref_payment_type": 1 } ] } },
|
|
{ "case": "missing_patient_identifier", "body": { "payments": [] } }
|
|
],
|
|
|
|
"POST /patient/identifiers": [
|
|
{ "case": "valid_identifiers_and_attachments", "body": { "medical_record_number": "MRN-20260001", "identifiers": [ { "identifier_type": "KTP", "number": "3210987654321001", "active": true }, { "identifier_type": "KK", "number": "KK-0001", "active": true } ], "attachments": [ { "name": "KTP Scan", "file_name": "ktp.jpg", "directory": "/uploads/ktp", "active": true } ] } },
|
|
{ "case": "duplicate_identifier_in_batch", "body": { "medical_record_number": "MRN-20260001", "identifiers": [ { "identifier_type": "KTP", "number": "3210987654321001", "active": true }, { "identifier_type": "KTP", "number": "3210987654321001", "active": true } ] } }
|
|
],
|
|
|
|
"PUT /patient/payment-types": [
|
|
{ "case": "update_existing_payments_by_id", "body": { "patient_id": 123, "payment_types": [ { "id": 10, "name": "BPJS Updated", "number": "999999", "active": true } ] } }
|
|
],
|
|
|
|
"PUT /patient/identifiers": [
|
|
{ "case": "update_identifier_and_attachment", "body": { "medical_record_number": "MRN-20260001", "identifiers": [ { "id": 5, "identifier_type": "KTP", "number": "3210987654321001", "active": true } ], "attachments": [ { "id": 3, "name": "Updated KTP", "file_name": "ktp_v2.jpg", "directory": "/uploads/ktp" } ] } }
|
|
],
|
|
|
|
"DELETE /patient/{id}": [
|
|
{ "case": "soft_delete_patient_all_children", "body": { "visit_ids": [], "attachment_ids": [], "payment_type_ids": [], "identifier_ids": [] } },
|
|
{ "case": "delete_specific_children", "body": { "visit_ids": [200,201], "attachment_ids": [50], "payment_type_ids": [12], "identifier_ids": [5] } }
|
|
],
|
|
|
|
"GET /visit": [
|
|
{ "case": "list_visits", "query": "?limit=20&offset=0" },
|
|
{ "case": "search_visit_code", "query": "?search=26011500013" }
|
|
],
|
|
|
|
"GET /visit/{id}": [ { "case": "get_visit_by_id", "query": "" } ],
|
|
|
|
"POST /visit/code": [
|
|
{ "case": "valid_visit_code_post", "body": { "visit_code": 26011500013 } },
|
|
{ "case": "invalid_visit_code_string", "body": { "visit_code": 26011500014 } }
|
|
],
|
|
|
|
"GET /visit/stats": [ { "case": "default_stats", "query": "" }, { "case": "range_stats", "query": "?from=2026-01-01&to=2026-01-31&service_code=KL1" } ],
|
|
|
|
"GET /visit/queue-status": [ { "case": "by_klinik_id_today", "query": "?klinik_id=1" }, { "case": "with_date_and_filters", "query": "?klinik_id=1&date=2026-02-11&loket_id=2&sub_healthcare_service_id=5" } ],
|
|
|
|
"POST /visit/loket": [
|
|
{ "case": "create_loket_ticket_minimal", "body": { "patient_id": 345, "service_date": "2026-02-11", "healthcare_service_id": 10, "payment_type_id": 2, "visit_status_id": [1], "visit_type_id": 1, "registration_counter_id": 3, "healthcare_type_id": 1, "service_type_id": 1 } },
|
|
{ "case": "missing_visit_or_patient", "body": { "patient_id": 0, "service_date": "2026-02-11", "healthcare_service_id": 10, "payment_type_id": 2, "visit_status_id": [1], "visit_type_id": 1, "healthcare_type_id": 1, "service_type_id": 1 } }
|
|
],
|
|
|
|
"POST /visit/ticket/klinik": [
|
|
{ "case": "create_klinik_ticket", "body": { "visit_code": 26011500013, "healthcare_service_id": 10, "sub_healthcare_service_id": 5, "payment_type_id": 2, "visit_status_id": [2], "visit_type_id": 1, "healthcare_type_id": 1, "service_type_id": 1 } },
|
|
{ "case": "duplicate_klinik_ticket_attempt", "body": { "visit_code": 26011500013, "healthcare_service_id": 10, "sub_healthcare_service_id": 5, "payment_type_id": 2, "visit_status_id": [2], "visit_type_id": 1, "healthcare_type_id": 1, "service_type_id": 1 } }
|
|
],
|
|
|
|
"POST /visit/ticket/checkin": [
|
|
{ "case": "checkin_by_ticket", "body": { "ticket": "L10-00012", "visit_status_id": [3] } },
|
|
{ "case": "checkin_by_visit_code", "body": { "visit_code": 26011500013, "visit_status_id": [3] } }
|
|
],
|
|
|
|
"GET /visit/quota-status": [ { "case": "quota_for_service_today", "query": "?healthcare_service_id=10" }, { "case": "quota_for_subservice_date", "query": "?healthcare_service_id=10&sub_healthcare_service_id=5&date=2026-02-11" } ],
|
|
|
|
"POST /visit/status": [
|
|
{ "case": "add_visit_status_by_hs_id", "body": { "patient_visit_healthcare_service_id": 9001, "visit_status_id": [4] } },
|
|
{ "case": "add_visit_status_by_code", "body": { "visit_code": 26011500013, "visit_status_id": [4,5] } }
|
|
],
|
|
|
|
"POST /visit/status/finish": [
|
|
{ "case": "finish_visit_by_hs_id", "body": { "patient_visit_healthcare_service_id": 9001, "visit_status_id": [6] } },
|
|
{ "case": "finish_visit_by_code", "body": { "visit_code": 26011500013, "visit_status_id": [6] } }
|
|
]
|
|
}
|