notebookvb

This commit is contained in:
Vladimir Buzalka
2026-05-14 07:06:05 +02:00
parent d33c0da218
commit e6b7fdb8cd
+109
View File
@@ -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 |