notebookvb
This commit is contained in:
@@ -100,6 +100,115 @@ patient {
|
|||||||
|-----------|-----------|----------|
|
|-----------|-----------|----------|
|
||||||
| `LegacyClinicPatientListPage_ListClinicPatients` | `clinicSlug`, `criteria {premiumPlanId, tagId}`, `pageInfo {first: 50, offset}` | `count`, `patients`, `clinic` |
|
| `LegacyClinicPatientListPage_ListClinicPatients` | `clinicSlug`, `criteria {premiumPlanId, tagId}`, `pageInfo {first: 50, offset}` | `count`, `patients`, `clinic` |
|
||||||
|
|
||||||
|
#### Fungující dotaz pro stránkovaný seznam pacientů (sync)
|
||||||
|
|
||||||
|
Pozor: `listClinicPatients` nefunguje pro hromadný export. Fungující query je `listPatients`:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query SyncListPatients($clinicSlug: String!, $pageInfo: PageInfo!, $filter: ListPatientFilter!) {
|
||||||
|
patientsList: listPatients(clinicSlug: $clinicSlug, filter: $filter, pageInfo: $pageInfo) {
|
||||||
|
count
|
||||||
|
patients {
|
||||||
|
id
|
||||||
|
identificationNumber
|
||||||
|
name
|
||||||
|
surname
|
||||||
|
sex
|
||||||
|
phone
|
||||||
|
status2
|
||||||
|
isInClinic
|
||||||
|
locale
|
||||||
|
insuranceCompanyObject { id shortName }
|
||||||
|
user { id phone name surname }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Variables:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"clinicSlug": "mudr-buzalkova",
|
||||||
|
"filter": {},
|
||||||
|
"pageInfo": { "first": 50, "offset": 0 }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Stránkování: `offset` se zvyšuje po 50, `count` v odpovědi = celkový počet pacientů.
|
||||||
|
|
||||||
|
#### Dotaz pro detail jednoho pacienta
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetPatientDetail($clinicSlug: String!, $patientId: String!) {
|
||||||
|
patient: getPatientForClinic(clinicSlug: $clinicSlug, patientId: $patientId) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
surname
|
||||||
|
identificationNumber
|
||||||
|
sex
|
||||||
|
dob
|
||||||
|
email
|
||||||
|
phone
|
||||||
|
status
|
||||||
|
isInClinic
|
||||||
|
hasMobileApp
|
||||||
|
anamnesisShared
|
||||||
|
note
|
||||||
|
city
|
||||||
|
street
|
||||||
|
houseNumber
|
||||||
|
createdAt
|
||||||
|
insuranceCompanyObject {
|
||||||
|
code
|
||||||
|
name
|
||||||
|
}
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
email
|
||||||
|
phone
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Variables:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"clinicSlug": "mudr-buzalkova",
|
||||||
|
"patientId": "<UUID>"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sync pacientů do MySQL
|
||||||
|
|
||||||
|
Dvoustupňový proces:
|
||||||
|
1. `listPatients` stránkovaně stáhne seznam všech patient IDs (po 50)
|
||||||
|
2. Pro každého pacienta se zavolá `getPatientForClinic` pro detail
|
||||||
|
3. UPSERT do `medevio.medevio_pacient` (23 sloupců)
|
||||||
|
|
||||||
|
Skript: `Medevio/80 Pacienti/sync_patients_to_mysql.py`
|
||||||
|
Výsledek: 1963 pacientů synchronizováno (květen 2026).
|
||||||
|
|
||||||
|
#### Známé problémy
|
||||||
|
|
||||||
|
- **`hasMobileApp` je nefunkční na úrovni pacienta** — ověřeno na více endpointech:
|
||||||
|
- `getPatientForClinic` → vždy `false` ❌
|
||||||
|
- `ClinicPatientDetailModal_GetData` → `patient.hasMobileApp` vždy `false` ❌
|
||||||
|
- `listPatients` → pole vůbec neexistuje v GraphQL schema ❌
|
||||||
|
|
||||||
|
- **Správná hodnota `hasMobileApp` je na objektu `request`**, nikoli pacienta:
|
||||||
|
- `ClinicRequestDetail_GetPatientRequest2` → `request.hasMobileApp` vrací správně ✅
|
||||||
|
- `request.extendedPatient.hasMobileApp` je stále vždy `false` ❌
|
||||||
|
- UI komponenta `PatientRequest.MessageSend` čte hodnotu z `request.hasMobileApp` a rozhoduje:
|
||||||
|
- `true` → zobrazí "Odeslat do aplikace"
|
||||||
|
- `false` + telefon existuje → zobrazí "Odeslat přes SMS"
|
||||||
|
- `false` + žádný telefon → tlačítko se nezobrazí vůbec
|
||||||
|
|
||||||
|
- **Praktické získání `hasMobileApp` pro pacienty:**
|
||||||
|
- Stáhnout všechny požadavky přes `ClinicLegacyRequestList_ListPatientRequestsForClinic` (aktivní i vyřízené)
|
||||||
|
- Pro každého pacienta vzít nejnovější `hasMobileApp` z jeho požadavků
|
||||||
|
- Nevýhoda: pacienti bez jediného požadavku budou `NULL`; hodnota odráží stav k době posledního požadavku
|
||||||
|
|
||||||
### Requests (Pozadavky)
|
### Requests (Pozadavky)
|
||||||
|
|
||||||
| Operation | Variables | Response |
|
| Operation | Variables | Response |
|
||||||
|
|||||||
Reference in New Issue
Block a user