This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
aips2sqlite is a Java ETL application that downloads pharmaceutical data from Swiss health authorities (AIPS/swissmedicinfo.ch, Swissmedic, BAG, Refdata, EPha) and generates SQLite databases, XML files, and various reports. Licensed under GPL v3.
make aips2sqlite # Build fat JAR (output: build/libs/aips2sqlite.jar)
make clean # Clean build folder
./gradlew jar # Direct Gradle buildjava -jar build/libs/aips2sqlite.jar --lang=de --verbose --reports
java -jar -Xmx2048m build/libs/aips2sqlite.jar --lang=de --verbose # increased heapKey flags: --lang=<de|fr|it|en>, --nodown (skip downloads), --verbose, --quiet, --xml, --zip, --reports, --inter (drug interactions), --pinfo (patient info instead of Fachinfo), --fhir (use BAG FHIR NDJSON instead of BAG Preparations XML).
Environment variable: REFDATA_API_KEY must be set for Refdata Partner downloads (register at developer.refdata.ch).
Pipeline: Download → Parse → Transform → Output
Aips2Sqlite.java— Main entry point. Parses CLI options via Commons CLI, orchestrates the full pipeline.AllDown.java— Downloads data files from Swiss sources (AIPS XML, Swissmedic XLS/XLSX, BAG XML, Refdata XML, EPha CSV, GLN XLSX, Swiss DRG).RealExpertInfo.java/RealPatientInfo.java— Parse AIPS Fachinfo and Patinfo respectively. Core business logic for extracting medication data from XML/HTML.SqlDatabase.java— SQLite database operations. Createsamiko_db_full_idx_<lang>.dbwith tables:amikodb(medications),productdb(articles),android_metadata.Interactions.java— Drug interaction processing from EPha data, generates interaction SQLite DB and CSV.
Data models: Medication (id, title, auth, atccode, content HTML, pack_info), Article (ean_code, pharma_code, pricing, stock), Product (shopping cart data).
Partner-specific generators: ShoppingCartIbsa, ShoppingCartDesitin, ShoppingCartRose, TakedaParse — each produces encrypted/specialized output for specific pharmacy partners.
FHIR support: BagFhirParser.java — Parses BAG FHIR NDJSON file (alternative to Preparations XML). Downloads from epl.bag.admin.ch, extracts prices, SL flags, GTIN, Swissmedic numbers from FHIR Bundle resources (MedicinalProductDefinition, RegulatedAuthorization, PackagedProductDefinition).
Supporting classes: Constants.java (all file paths), CmlOptions.java (global config flags), HtmlUtils.java (HTML sanitization), FileOps.java (I/O + AES encryption), ExcelOps.java (POI-based Excel parsing), BaseDataParser.java (XML/Excel parsing base).
src/com/maxl/java/aips2sqlite/— All application code (~43 classes)src/com/maxl/java/aips2sqlite/refdata/— Generated JAXB classes for Refdata XML bindingsrc/com/maxl/java/shared/— Shared utilities
See README.md "Download Domains" section for the full list of domains the application and build system connect to.
- Java 21+, Gradle 8.12 (via wrapper), fat JAR with all dependencies
- Uses JAXB for XML parsing, Apache POI for Excel, jsoup (forked) for HTML, Jackson for JSON
- SQLite via
org.xerial:sqlite-jdbc - Input files downloaded to
downloads/, outputs written tooutput/ - Custom input configs in
input/ - Tests use JUnit 4