Att söka i TUSS-procedurer med vanliga nyckelord är en särskild sorts frustration. En person skriver ”consultation”, en annan skriver ”consulta”, och plötsligt sitter du med 40 ”tillräckligt nära”-träffar och är fortfarande inte säker på att du valt rätt kod.
Dataingenjörer fastnar i att strukturera och ladda om tabeller. Analytiker inom health ops hamnar i manuella ”ser det här rimligt ut?”-kontroller. Produktteam som bygger verktyg för ersättningsanspråk eller auktorisering känner av det också. Den här TUSS-sökautomationen gör om procedurtext till vektorer, så att din sökning matchar betydelse, inte stavning.
Nedan ser du vad arbetsflödet gör, vad du får ut av det och hur du kör det säkert i n8n utan att förvandla din databas till ett vetenskapligt experiment.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Oracle till PostgreSQL, smartare sökning i TUSS-procedurer
flowchart LR
subgraph sg0["VECTORIZE TUSS TABLE Flow"]
direction LR
n0@{ icon: "mdi:cube-outline", form: "rounded", label: "Postgres PGVector Store2", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Token Splitter", pos: "b", h: 48 }
n2@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Google Gemini", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "VECTORIZE TUSS TABLE", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "ORACLE DATABASE CONNECTION", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>COLLECTION OF MEDICAL PROCED.."]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "FOR - MEDICAL PROCEDURES", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Data Loader", pos: "b", h: 48 }
n7 -.-> n0
n1 -.-> n7
n3 --> n4
n2 -.-> n0
n6 --> n0
n0 --> n6
n4 --> n5
n5 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3 trigger
class n1,n7 ai
class n0 ai
class n2 ai
class n4 database
class n5 code
classDef customIcon fill:none,stroke:none
class n5 customIcon
Problemet: nyckelordsökning i TUSS skapar felaktiga matchningar
TUSS-procedurbeskrivningar är stökiga i verkligheten. De kommer med förkortningar, synonymer, accenter, inkonsekvent formulering och ”nästan samma” procedurer som absolut inte är utbytbara. Traditionell nyckelordsökning kan inte skilja på en riktig träff och en textmässig slump, så du missar antingen rätt kod eller väljer fel och får betala för det senare. Sedan börjar det manuella efterarbetet: någon exporterar resultat, filtrerar i ett kalkylblad, frågar en domänexpert och lappar applogiken med fler regler. Det är långsamt. Och ärligt talat tar det aldrig riktigt slut.
Friktionen byggs på. Här är var det faller isär.
- Folk söker med annan terminologi än tabellen använder, så bästa träffen begravs eller dyker aldrig upp.
- Små textvariationer (”consulta”, ”consultation”, ”avaliação”) blir stora träffsäkerhetsproblem när volymen ökar.
- Team lägger till engångsregler för nyckelord, vilket gör systemet svårare att underhålla för varje månad.
- När en felaktig procedurkod slinker igenom tappar du tid på omarbete och obekvämt bollande fram och tillbaka.
Lösningen: vektorisera TUSS från Oracle till pgvector med Gemini
Det här arbetsflödet hämtar dina TUSS-procedurrader från Oracle, rensar och förbereder beskrivningstexten och skickar sedan texten till Google Gemini för att generera vektor-embeddings. De här embeddings är numeriska representationer av betydelse, som du kan lagra i PostgreSQL med tillägget pgvector. När de väl ligger i pgvector kan din app (eller ett analysflöde) köra semantiska likhetssökningar: i stället för ”innehåller detta ordet jag skrev?” får du ”betyder det här samma sak?”. Resultatet blir en procedursökning som känns betydligt mer förlåtande, även när frågan är kort, felstavad eller formulerad annorlunda än den officiella beskrivningen.
Arbetsflödet startar med en manuell körning, frågar sedan Oracle efter de TUSS-fält du bryr dig om (vanligen kod och beskrivning). Det bygger ihop rader till dokument, delar text vid behov, genererar embeddings med Gemini och infogar allt i en pgvector-backad tabell i PostgreSQL så att det är redo för semantisk sökning.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att din TUSS-tabell har 20 000 procedurer och att teamet gör cirka 50 ”hitta rätt kod”-uppslag per dag. Om varje uppslag tar kanske 5 minuter av sökande, dubbelkoll och tvekan, blir det ungefär 4 timmar per dag i total insats för teamet. Med det här arbetsflödet är vektorisering ett engångsjobb (eller ett schemalagt jobb): du kör importen, embeddings genereras i batchar och din apps sökning blir ”skriv en fras, få de närmaste matchningarna” på några sekunder. Den dagliga insatsen blir snabb granskning, inte detektivarbete.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Oracle Database som källa för TUSS-tabellen.
- PostgreSQL + pgvector för att lagra och söka embeddings.
- Google Gemini API-nyckel (hämta den från Google AI Studio / ditt Google Cloud-projekt).
Kunskapsnivå: Medel. Du bör vara bekväm med att lägga in credentials i n8n och köra ett par databaskontroller (till exempel bekräfta att pgvector är installerat).
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell körning startar. Du startar arbetsflödet när du är redo (perfekt för initiala laddningar eller kontrollerad omindexering efter uppdateringar).
Oracle-data hämtas och formas. n8n frågar din Oracle TUSS-källa, och sedan bygger ett litet kodsteg ihop varje rad till en konsekvent struktur (oftast kod + beskrivning, ibland extra kontextfält).
Texten förbereds för embedding. Dokumentladdaren och den token-baserade splittern rensar upp och chunkar längre beskrivningar så att embedding-modellen får korrekt formaterad, tillförlitlig input.
Gemini genererar vektorer, sedan lagrar pgvector dem. Varje dokument blir en embedding via Google Gemini, och arbetsflödet infogar den i PostgreSQLs vector store så att semantisk sökning är redo när din app frågar efter den.
Du kan enkelt justera förbearbetningsreglerna så att de passar ditt språk och dina namnkonventioner, eller ändra mål-tabellens layout så att den matchar ditt befintliga schema. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: Konfigurera den manuella triggern
Konfigurera arbetsflödet så att det startar vid behov och hämta sedan data från Oracle som första åtgärd.
- Lägg till noden Manual Run Trigger som trigger.
- Anslut Manual Run Trigger till Oracle DB Query så att flödet matchar: Manual Run Trigger → Oracle DB Query.
- I Oracle DB Query ställer ni in Query till
SELECT CD_ITEM, DS_ITEM FROM {sua tabela aqui }. - Inloggningsuppgifter krävs: Anslut era oracleCredentials-inloggningsuppgifter i Oracle DB Query.
⚠️ Vanlig fallgrop: Ersätt {sua tabela aqui } med ert faktiska Oracle-tabellnamn, annars misslyckas frågan.
Steg 2: Anslut Oracle-resultat till batchning
Omvandla Oracle-resultaten till rader och förbered dem för batchning.
- Lägg till Assemble Procedure Rows och anslut den efter Oracle DB Query.
- I Assemble Procedure Rows ställer ni in JavaScript Code till
return $input.first().json.rows;. - Lägg till Iterate Procedure Batches och anslut Assemble Procedure Rows → Iterate Procedure Batches.
Steg 3: Sätt upp pipeline för dokument och embeddings
Förbered varje rad som ett dokument, dela upp den i chunkar och generera embeddings för vektorlagring.
- Lägg till Document Prep Loader och anslut den som en AI-dokumentkälla till PGVector Storage Insert.
- I Document Prep Loader ställer ni in JSON Data till
=Medical procedure code: {{ $json.cd_item }} Medical procedure description: {{ $json.ds_item }}och JSON Mode till expressionData. - I Document Prep Loader-metadata ställer ni in cd_item till
={{ $json.cd_item }}och procedureName till={{ $json.ds_item }}. - Lägg till Token Chunk Divider och anslut den som textdelare till Document Prep Loader; ställ in Chunk Size till
100. - Lägg till Gemini Embedding Generator och anslut den som embedding-modell till PGVector Storage Insert.
- Inloggningsuppgifter krävs: Anslut era googlePalmApi-inloggningsuppgifter i Gemini Embedding Generator.
Tips: Gemini Embedding Generator är AI-modellen för vektorisering – säkerställ att dess inloggningsuppgifter är satta direkt på den noden.
Steg 4: Konfigurera utdata till vektorlager
Infoga embeddings i PGVector och loopa över batcher tills alla rader är indexerade.
- Lägg till PGVector Storage Insert och ställ in Mode till
insert. - Ställ in Table Name till
{your_table_name_here}. - Inloggningsuppgifter krävs: Anslut era postgres-inloggningsuppgifter i PGVector Storage Insert.
- Anslut Iterate Procedure Batches till PGVector Storage Insert och säkerställ att PGVector Storage Insert skickar utdata tillbaka till Iterate Procedure Batches för att fortsätta bearbeta batcher.
⚠️ Vanlig fallgrop: Ersätt {your_table_name_here} med det faktiska PGVector-tabellnamnet, annars misslyckas infogningarna.
Steg 5: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta att embeddings genereras och lagras, och aktivera sedan för regelbunden användning.
- Klicka på Execute Workflow på Manual Run Trigger för att testa hela körningen.
- Verifiera att Oracle DB Query returnerar rader med
CD_ITEMochDS_ITEMoch att Assemble Procedure Rows matar ut en array med rader. - Bekräfta att PGVector Storage Insert infogar poster och att loopen i Iterate Procedure Batches slutförs.
- När det fungerar växlar ni arbetsflödet till Active för produktionsanvändning.
Vanliga fallgropar
- Oracle Database-credentials kan löpa ut eller kräva extra behörigheter för TUSS-schemat. Om det skapar fel, kontrollera posten i n8n Credentials och bekräfta att användaren i frågan kan läsa tabellen/vyn du konfigurerat.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du att redigera output för alltid.
Vanliga frågor
Cirka 60–90 minuter om dina credentials för Oracle, Postgres och Gemini är klara.
Ingen kodning krävs för att köra det. Du kan vilja göra mindre justeringar i förbearbetningskoden om dina TUSS-fält eller formatering skiljer sig.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med kostnader för användning av Google Gemini API, som beror på hur många procedurrader du skapar embeddings för.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverdrift.
Ja, och det bör du. Enklast är textförbearbetningen i kodsteget ”Assemble Procedure Rows”, där du kan normalisera accenter, expandera förkortningar eller lägga till hjälpsamma kontextfält. Du kan också justera chunkning i token-splittern om beskrivningar är för korta eller för långa. Om du senare byter modell kan du ersätta Gemini-embeddingsgeneratorn med en OpenAI-embedding-nod utan att ändra resten av flödet särskilt mycket.
Oftast är det ett credential- eller nätverksproblem: Oracle-användaren kommer inte åt TUSS-tabellen/vyn, service name/host är fel eller så blockerar dina brandväggs-/VPC-regler anslutningen. Skapa om eller spara om Oracle-credentials i n8n och testa sedan frågan med en liten LIMIT innan du kör batchar. Om det fungerar i en SQL-klient men misslyckas i n8n, kontrollera TLS-inställningar och de exakta fälten i anslutningssträngen. Rate limiting är mindre vanligt här; behörigheter är den vanliga orsaken.
Tiotusentals rader är normalt för den här typen av arbetsflöde, och split-in-batches håller det stabilt. I n8n Cloud beror dina månatliga körningsgränser på din plan. Om du self-hostar finns ingen hård körningsgräns, men genomströmningen beror på din server och hur snabbt Gemini returnerar embeddings.
För vektorarbetsflöden som detta, ja. n8n passar helt enkelt bättre för batchning, databasskrivningar och mer komplex förgrening utan att fakturan blir en obehaglig överraskning. Zapier och Make kan fungera för lättare integrationer, men embedding + pgvector-lagring är inte deras starka sida. Om du redan kör Postgres och Oracle i produktion kommer du att uppskatta att hålla logiken nära dina data. Prata med en automationsexpert om du vill ha hjälp att välja den enklaste setupen för din miljö.
När dina TUSS-procedurer är vektoriserade slutar sökningen att vara en gissningslek. Sätt upp det, kör om det när tabellen förändras och gå vidare till arbete som faktiskt behöver din uppmärksamhet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.