# Sälma → ELVIS: remissregistrering Skelett-flöde för att registrera remisser från **Sälma** (webbapp i Edge) i **ELVIS SU** (Windows-app). Portat från en tidigare AutoHotkey-prototyp. - **Flöde:** `data/flows/salma-elvis.json` (Main + subgraferna *Uppdatera Sälma* och *Specialhantering*). Ligger i den gitignorerade `data/`-mappen eftersom det refererar riktiga vårdenheter. - **Data:** `data/exports/salma_config.json` (översättningstabell, specialfall, fasta värden, fältordning) och `data/exports/salma_avsandare.json` (avsändarnamn → nummer, byggs på automatiskt av flödet). Regenerera bägge med `config.json` som källa: `python scripts/build_salma_flow.py`. **OBS:** det skriver över `data/flows/salma-elvis.json` – kör bara om när du medvetet vill börja om från skelettet (dina selector-ändringar försvinner då). ## Vad flödet gör 1. **Ärendenummer** ur Edge-adressen (`read_url` + regex). 2. **Grupp / Specialitet** ur Sälma (`extract_text` – selectors är TODO). 3. **Specialfall?** `lookup` i `specialWorkflows`. Träff → subgrafen *Specialhantering* (visar instruktion, OCR:ar personnr/datum, stänger ärendet i Sälma – aldrig in i ELVIS). 4. **Ohanterad grupp?** `lookup` i `unsupportedGroups`. Träff → `stop` med ett tydligt meddelande. 5. **Remiss-PDF:** öppna Filer-fliken, ladda ner PDF:en (`save_attachment`). 6. **OCR** (`ocr_read source=pdf`, winocr + sv-SE): personnummer, remissdatum, läkare, avsändare. Inskannade PDF:er OCR:as sida för sida; PDF:er med textlager läses direkt. 7. **Översättning:** `lookup` i `translationTable` (`{grupp}|{spec}`) → team, orsak, vårdnivå. Fasta värden (typ av vårdbegäran, avvikande avtal, betalarkod) ur `salma_config.json`. 8. **Avsändarnummer:** `lookup` i `salma_avsandare.json`. Ingen träff → `prompt input` frågar efter numret och `merge_json` sparar det till nästa gång. 9. **Granska:** `prompt fields` visar alla värden redigerbara – rätta OCR-fel här. 10. **Fyll ELVIS:** `desktop_connect` + `!nb` + en `{TAB}` + `desktop_press_key` per fält i `fieldOrder` (Ankomstdatum hoppas över, tomma fält bara tabbas förbi). `prompt confirm` innan `Ctrl+S`. 11. **Uppdatera Sälma:** subgrafen *Uppdatera Sälma* (delas med specialflödet) – Redigera → lås upp personnummer → fyll personnr/datum → sätt Status → Spara. ## Måste verifieras mot en riktig session Alla noder med `TODO:` i etiketten. I korthet: | Var | Vad | |---|---| | Main: "läs Grupp/Specialitet" | CSS-selectors i Sälmas huvudvy. Använd **⚙ → Inspektera fönster** eller `python -m rpa.codegen `. | | Main: "öppna Filer-fliken" + "ladda ner remiss-PDF" | Hur Filer-listan ser ut (en fil? flera?) och selectorn till remiss-länken. | | ELVIS-fälten | Att `{TAB}`-ordningen stämmer mot `fieldOrder`, och att dropdowns (Team/Orsak/Typ/Vårdnivå) tar emot inskriven text utan att behöva väljas ur listan. Testa mot en **testremiss**. | | Uppdatera Sälma: penn-ikon | `desktop`-selector eller koordinat för penn-ikonen som låser upp personnummer-fältet. Just nu en `prompt` som ber dig klicka manuellt. | | Uppdatera Sälma: Status | Om Status är en vanlig `