notebookvb
This commit is contained in:
@@ -100,6 +100,115 @@ patient {
|
||||
|-----------|-----------|----------|
|
||||
| `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)
|
||||
|
||||
| Operation | Variables | Response |
|
||||
|
||||
Reference in New Issue
Block a user