feat: enhance menu management with three-level hierarchy support, additional metadata fields, and utility scripts for data extraction
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"info": {
|
||||
"name": "SIS Lịch Đặt Khám API (Fixed)",
|
||||
"description": "Collection tự động tạo từ tài liệu hướng dẫn API lịch đặt khám của bệnh viện S.I.S Cần Thơ.",
|
||||
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
||||
},
|
||||
"item": [
|
||||
{
|
||||
"name": "1. Get Token",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
"var jsonData = pm.response.json();",
|
||||
"pm.globals.set(\"access_token\", jsonData.access_token);"
|
||||
],
|
||||
"type": "text/javascript"
|
||||
}
|
||||
}
|
||||
],
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"header": [
|
||||
{
|
||||
"key": "Content-Type",
|
||||
"value": "application/x-www-form-urlencoded"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
}
|
||||
],
|
||||
"body": {
|
||||
"mode": "urlencoded",
|
||||
"urlencoded": [
|
||||
{
|
||||
"key": "grant_type",
|
||||
"value": "client_credentials",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"key": "client_id",
|
||||
"value": "DigitalHealthSolutions_LabConn",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"key": "client_secret",
|
||||
"value": "AcEnBCaphERGOGYMaStATITEnaPETYpR",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"key": "scope",
|
||||
"value": "LabConn",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{base_url}}/connect/token",
|
||||
"host": [
|
||||
"{{base_url}}"
|
||||
],
|
||||
"path": [
|
||||
"connect",
|
||||
"token"
|
||||
]
|
||||
},
|
||||
"description": "Lấy Access Token để chứng thực cho các API khác."
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "2. Danh sách bác sĩ có lịch làm việc",
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "bearer",
|
||||
"bearer": [
|
||||
{
|
||||
"key": "token",
|
||||
"value": "{{access_token}}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [
|
||||
{
|
||||
"key": "__tenant",
|
||||
"value": "3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
}
|
||||
],
|
||||
"url": {
|
||||
"raw": "{{base_url}}/api/app/his/doctors/work-schedules",
|
||||
"host": [
|
||||
"{{base_url}}"
|
||||
],
|
||||
"path": [
|
||||
"api",
|
||||
"app",
|
||||
"his",
|
||||
"doctors",
|
||||
"work-schedules"
|
||||
]
|
||||
},
|
||||
"description": "Lấy danh sách các bác sĩ đang có lịch làm việc."
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "3. Lịch làm việc chi tiết bác sĩ",
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "bearer",
|
||||
"bearer": [
|
||||
{
|
||||
"key": "token",
|
||||
"value": "{{access_token}}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [
|
||||
{
|
||||
"key": "__tenant",
|
||||
"value": "3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
}
|
||||
],
|
||||
"url": {
|
||||
"raw": "{{base_url}}/api/app/his/doctors/:doctorCode/work-schedule-days",
|
||||
"host": [
|
||||
"{{base_url}}"
|
||||
],
|
||||
"path": [
|
||||
"api",
|
||||
"app",
|
||||
"his",
|
||||
"doctors",
|
||||
":doctorCode",
|
||||
"work-schedule-days"
|
||||
],
|
||||
"variable": [
|
||||
{
|
||||
"key": "doctorCode",
|
||||
"value": "00492",
|
||||
"description": "Mã bác sĩ (ví dụ 00492)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "Lấy chi tiết các ngày làm việc của một bác sĩ thông qua mã bác sĩ (DoctorCode)."
|
||||
}
|
||||
}
|
||||
],
|
||||
"variable": [
|
||||
{
|
||||
"key": "base_url",
|
||||
"value": "https://dhs.sisvietnam.vn",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"info": {
|
||||
"_postman_id": "4c495f9e-cbb0-4bcc-9721-2c5cf9120247",
|
||||
"name": "Web",
|
||||
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
||||
"_exporter_id": "6738901"
|
||||
},
|
||||
"item": [
|
||||
{
|
||||
"name": "get token",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
"var jsonData = pm.response.json();\r",
|
||||
"pm.globals.set(\"access_token\", jsonData.access_token);"
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"listen": "prerequest",
|
||||
"script": {
|
||||
"exec": [
|
||||
""
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"header": [
|
||||
{
|
||||
"key": "Content-Type",
|
||||
"value": "application/x-www-form-urlencoded"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
}
|
||||
],
|
||||
"body": {
|
||||
"mode": "urlencoded",
|
||||
"urlencoded": [
|
||||
{
|
||||
"type": "text",
|
||||
"key": "grant_type",
|
||||
"value": "client_credentials"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "client_id",
|
||||
"value": "DigitalHealthSolutions_LabConn"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "client_secret",
|
||||
"value": "AcEnBCaphERGOGYMaStATITEnaPETYpR"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "scope",
|
||||
"value": "LabConn"
|
||||
}
|
||||
]
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{url}}/connect/token",
|
||||
"host": [
|
||||
"{{url}}"
|
||||
],
|
||||
"path": [
|
||||
"connect",
|
||||
"token"
|
||||
]
|
||||
}
|
||||
},
|
||||
"response": []
|
||||
},
|
||||
{
|
||||
"name": "lich lam viec chi tiet bs",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
""
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"protocolProfileBehavior": {
|
||||
"disableBodyPruning": true
|
||||
},
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "bearer",
|
||||
"bearer": [
|
||||
{
|
||||
"key": "token",
|
||||
"value": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGNjFGNTMzMTAyRUI4OTlFQTc2Mjk3MDQ4MUVFQTQ2QTkxODdBMTYiLCJ4NXQiOiJmMkgxTXhBdXVKbnFkaWx3U0I3cVJxa1llaFkiLCJ0eXAiOiJhdCtqd3QifQ.eyJpc3MiOiJodHRwczovL2Rocy5zaXN2aWV0bmFtLnZuLyIsImV4cCI6MTc4NDY5MTk1MSwiaWF0IjoxNzg0NjA1NTUxLCJhdWQiOiJEaWdpdGFsSGVhbHRoU29sdXRpb25zIiwic2NvcGUiOiJMYWJDb25uIiwianRpIjoiNWJkNTlhY2ItZjM5Yy00NGZhLTgyNmMtYTM4NjFkNDNmZGIxIiwib2lfcHJzdCI6IkRpZ2l0YWxIZWFsdGhTb2x1dGlvbnNfTGFiQ29ubiIsImNsaWVudF9pZCI6IkRpZ2l0YWxIZWFsdGhTb2x1dGlvbnNfTGFiQ29ubiIsIm9pX3Rrbl9pZCI6IjNhMjI5NGY0LTg0NGItMjJkZC05ZDNjLTQ4MjU2MmMyNjQxMCJ9.XwlnWLRrvuzr43CZjtOy6x9uIQqQZscjptTojX_ZlKA7uAuin6hn6ftgXyE8salvDmrETuS-1iWBiIkPaG2HAxjnf1rDtjw0MCfZBcqJC8Q1FOcskQhZn7GUUirVtEvv26t7LTHyCfjApwNtHnHmsfeIhYPbMb8A4PUikMABqd6qwgk8MLSA25endvloNmPUdLmov7xrPJIlePtYJorf0O-bi87WTMANDvMg6xRIY2CTPuDlzRTnsA5N4nDKcUzYHc75gwkC7U_5FLMhPulHB4ep8eEzUlU9TpageslzidSytBKwxGL_xM5Ts3UrPWKWt8dm5qCmw0B2Lnl0AvNttw",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [
|
||||
{
|
||||
"key": "__tenant",
|
||||
"value": "3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
},
|
||||
{
|
||||
"key": "Authorization",
|
||||
"value": "Brear",
|
||||
"type": "text",
|
||||
"disabled": true
|
||||
}
|
||||
],
|
||||
"body": {
|
||||
"mode": "raw",
|
||||
"raw": "",
|
||||
"options": {
|
||||
"raw": {
|
||||
"language": "json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{url}}/api/app/his/doctors/:doctorCode/work-schedule-days",
|
||||
"host": [
|
||||
"{{url}}"
|
||||
],
|
||||
"path": [
|
||||
"api",
|
||||
"app",
|
||||
"his",
|
||||
"doctors",
|
||||
":doctorCode",
|
||||
"work-schedule-days"
|
||||
],
|
||||
"variable": [
|
||||
{
|
||||
"key": "doctorCode",
|
||||
"value": "00492"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"response": []
|
||||
},
|
||||
{
|
||||
"name": "get ds ich làm bs",
|
||||
"event": [
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"exec": [
|
||||
""
|
||||
],
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"protocolProfileBehavior": {
|
||||
"disableBodyPruning": true
|
||||
},
|
||||
"request": {
|
||||
"auth": {
|
||||
"type": "noauth"
|
||||
},
|
||||
"method": "GET",
|
||||
"header": [
|
||||
{
|
||||
"key": "__tenant",
|
||||
"value": "3a0f747c-57b6-753b-ba21-3987e8e93b9a"
|
||||
},
|
||||
{
|
||||
"key": "Cookie",
|
||||
"value": ".AspNetCore.Culture=c%3Den%7Cuic%3Den; __tenant=3a0f747c-57b6-753b-ba21-3987e8e93b9a",
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"key": "Authorization",
|
||||
"value": "Bearer {{access_token}}",
|
||||
"type": "text"
|
||||
}
|
||||
],
|
||||
"body": {
|
||||
"mode": "raw",
|
||||
"raw": "",
|
||||
"options": {
|
||||
"raw": {
|
||||
"language": "json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"url": {
|
||||
"raw": "{{url}}/api/app/his/doctors/work-schedules",
|
||||
"host": [
|
||||
"{{url}}"
|
||||
],
|
||||
"path": [
|
||||
"api",
|
||||
"app",
|
||||
"his",
|
||||
"doctors",
|
||||
"work-schedules"
|
||||
]
|
||||
}
|
||||
},
|
||||
"response": []
|
||||
}
|
||||
],
|
||||
"event": [
|
||||
{
|
||||
"listen": "prerequest",
|
||||
"script": {
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {},
|
||||
"exec": [
|
||||
""
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"listen": "test",
|
||||
"script": {
|
||||
"type": "text/javascript",
|
||||
"packages": {},
|
||||
"requests": {},
|
||||
"exec": [
|
||||
""
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"variable": [
|
||||
{
|
||||
"key": "url",
|
||||
"value": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,15 @@
|
||||
import sys
|
||||
from pypdf import PdfReader
|
||||
|
||||
pdf_path = sys.argv[1]
|
||||
output_path = sys.argv[2]
|
||||
|
||||
reader = PdfReader(pdf_path)
|
||||
text = ""
|
||||
for i, page in enumerate(reader.pages):
|
||||
text += f"\n--- Page {i + 1} ---\n"
|
||||
text += page.extract_text()
|
||||
|
||||
with open(output_path, "w", encoding="utf-8") as f:
|
||||
f.write(text)
|
||||
print(f"Extracted {len(reader.pages)} pages to {output_path}")
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
--- Page 1 ---
|
||||
Api l ị ch đ ặ t khám - web
|
||||
1. Get Token
|
||||
Link:
|
||||
Ph ươ ng th ứ c: POST
|
||||
../connect/token
|
||||
Header
|
||||
Body x-www-form-urlencoded
|
||||
Response
|
||||
https://dhs.sisvietnam.vn
|
||||
__tenant 3a0f747c-57b6-753b-ba21-
|
||||
3987e8e93b9a
|
||||
Content-Type application/json
|
||||
Key Values
|
||||
grant_type x client_credentials
|
||||
client_id x DigitalHealthSolutions_LabConn
|
||||
client_secret x AcEnBCaphERGOGYMaStATITEnaP
|
||||
ETYpR
|
||||
scope x LabConn
|
||||
Thu ộ c tính B ắ t bu ộ c value
|
||||
1{2 "access_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjdGNjFGNTMzMTAyRUI4OTlFQTc2Mjk3MDQ4MUVFQTQ2QTkxODdBMTYiLCJ4NXQiOiJmMkgxTXhBdXVKbnFkaWx3U0I3cVJxa1llaFkiLCJ0eXAiOiJhdCtqd3QifQ.eyJpc3MiOiJodHRwczovL2Rocy5zaXN2aWV0bmFtLnZuLyIsImV4cCI6MTc4NDY5MjA1OCwiaWF0IjoxNzg0NjA1NjU4LCJhdWQiOiJEaWdpdGFsSGVhbHRoU29sdXRpb25zIiwic2NvcGUiOiJMYWJDb25uIiwianRpIjoiOWVlZDNhNzItZTcxZC00MWM4LWJhYTgtMzVlMTY5YmEwMzE5Iiwib2lfcHJzdCI6IkRpZ2l0YWxIZWFsdGhTb2x1dGlvbnNfTGFiQ29ubiIsImNsaWVudF9pZCI6IkRpZ2l0YWxIZWFsdGhTb2x1dGlvbnNfTGFiQ29ubiIsIm9pX3Rrbl9pZCI6IjNhMjI5NGY2LTI2NjMtNTQ0OC1iMjU4LWI5Yjk0YzYxYWQ2ZSJ9.R7GQQxWU7MqKnQMhaZPtIMAxwjkTklmPgoFF8aisAZTPq4z7TnMAL36tlKvLeazIKfE0KIVtdfi9AqXeIwXt6co4_-5i9MJ03QJvJVdqul9nGiXaRtuSUagPogclkZ9wZeZU4IHxSFS7WCKuuX-Rv4EjNP2H-Igr5ss5cqfw7mIgQLknIlQ7jQolxqeO9IJgDBH90lxnpaC0S8ZTg3S_6cv2kPG8s8FdqgodOJnFG-d7YFlS4WR9O_z0uRnBS9cIhCRaxoo1GqtzvLVPjeyJecy48DnrNsqYEwsNQx4hWTiHC_9rFlfKCIuWQnv7wKWkkNt-ZsUABkk5PZrtHeZVeg",
|
||||
--- Page 2 ---
|
||||
2. Danh sách bác s ĩ có l ị ch làm vi ệ c
|
||||
Ph ươ ng th ứ c: GET
|
||||
…/api/app/his/doctors/work-schedules
|
||||
Header
|
||||
Response
|
||||
3 "token_type":"Bearer",4 "expires_in":863985}
|
||||
__tenant 3a0f747c-57b6-753b-ba21-3987e8e93b9a
|
||||
Authorization Bearer + Token
|
||||
Key Vaules
|
||||
1{2 "data":{3 "fromDate":"2026-07-15",4 "toDate":"2026-07-29",5 "doctors":[6 {7 "doctorId":"feaf54ac-e8c2-42a5-bb3b-65e9ba7fc2a7",8 "doctorCode":"00001",9 "fullName":"TS. BS. TR Ầ N CHÍ C Ư Ờ NG",10 "birthYear":null,11 "gender":null,12 "practicingCertificate":"001257/BYT-CCHN",13 "title":"TS. BS"14 }15 ]16 },17 "success":true,18 "statusCode":200,19 "timestamp":"2026-07-15T10:14:59.0784+07:00"20}
|
||||
fromDate date Làm vi ệ c t ừ ngày
|
||||
toDate date Làm vi ệ c đ ế n ngày
|
||||
doctorId GUID Id bác s ĩ
|
||||
doctorCode string Mã bác s ĩ
|
||||
fullName string Tên bác s ĩ
|
||||
birthYear string Gi ớ i tính
|
||||
N ộ i dung Ki ể u d ữ li ệ u Mô t ả
|
||||
--- Page 3 ---
|
||||
3. L ị ch làm vi ệ c chi ti ế t bác s ĩ
|
||||
Ph ươ ng th ứ c: GET
|
||||
…/api/app/his/doctors/{DoctorCode}/work-schedule-days
|
||||
Header
|
||||
Response
|
||||
gender string N ă m sinh
|
||||
practicingCertificat
|
||||
e
|
||||
string Ch ứ ng ch ỉ hành ngh ề
|
||||
title string Ch ứ c danh
|
||||
__tenant 3a0f747c-57b6-753b-ba21-3987e8e93b9a
|
||||
Authorization Bearer + Token
|
||||
Key Vaules
|
||||
1{2 "data":{3 "doctorId":"feaf54ac-e8c2-42a5-bb3b-65e9ba7fc2a7",4 "doctorCode":"00001",5 "fromDate":"2026-07-15",6 "toDate":"2026-07-29",7 "days":[8 {9 "date":"2026-07-15",10 "dayOfWeek":411 },12 {13 "date":"2026-07-20",14 "dayOfWeek":215 },16 {17 "date":"2026-07-27",18 "dayOfWeek":219 },20 {21 "date":"2026-07-29",22 "dayOfWeek":423 }24 ]25 },26 "success":true,27 "statusCode":200,28 "timestamp":"2026-07-15T08:59:26.2920087+07:00"29}
|
||||
N ộ i dung Ki ể u d ữ li ệ uMô t ả
|
||||
--- Page 4 ---
|
||||
doctorId GUID ID bác s ĩ
|
||||
doctorCode string Mã bác s ĩ
|
||||
fromDate string Làm vi ệ c t ừ ngày
|
||||
toDate string Làm vi ệ c đ ế n ngày
|
||||
date string Ngày làm vi ệ c
|
||||
dayOfWeek int Th ứ :
|
||||
1: th ứ 2
|
||||
2: th ứ 3
|
||||
3: th ứ 4
|
||||
4: th ứ 5
|
||||
5: th ứ 6
|
||||
Reference in New Issue
Block a user