Rhinobase Next - Legacy SQLite Importer
=======================================

Bu paket, legacy Delphi Rhinobase SQLite verisini yeni Rhinobase Next PostgreSQL'e aktarmak için ilk dry-run/apply aracıdır.

ÖNEMLİ
------
- Query, appointment, photos/photolists bu örnekte aktarılmıyor. Kullanıcının belirttiği gibi bu tablolar migration kapsamı dışında bırakıldı.
- Legacy klinik form alanları yeniden adlandırılmıyor; JSONB içine eski fieldname ile aktarılıyor.
- Boş string/NULL alanlar JSONB'ye yazılmıyor. Numeric 0 korunuyor.
- rhinexam + points + calc aynı ID_NO + Date ile birleştirilip drawing tablosuna yazılıyor.
- rhinoperation + rhinope2 + rhinoper aynı ID_NO + Date ile birleştirilip operation tablosuna yazılıyor.
- Import edilen JSONB kayıtlarına _legacy.import_tag = rhinobase_sqlite_v1 ekleniyor.
- Aynı import tekrar çalıştırılırsa önce sadece bu import_tag ile işaretli eski visit kayıtları silinir, sonra yeniden eklenir.
- Patient demografisi legacy_key='legacy:'||ID_NO ile upsert edilir.

Örnek dosya inceleme sonucu
---------------------------
Gönderilen örnekte:
- rhinodat: 29 hasta
- rhinplan: 29 operative plan
- rhinexam + points + calc: 29 drawing/analysis kaydı
- rhinoperation: 20 operation kaydı
- rhinopla: 2 clinical history kaydı
- genexam, rhifollo, rhinseptum, randevu, photos, photolists: 0 kayıt

Sunucuda kurulum
----------------
Ubuntu üzerinde Python PostgreSQL sürücüsü gerekebilir:

sudo apt update
sudo apt install -y python3-psycopg2

Dosyayı sunucuya örnek olarak /root/rhinobase-fazil_20250813.db şeklinde koy.
Scripti /opt/rhinobase/tools altına koyabilirsin:

sudo mkdir -p /opt/rhinobase/tools
sudo cp import_legacy_sqlite.py /opt/rhinobase/tools/
cd /opt/rhinobase

Sadece SQLite inceleme:

python3 tools/import_legacy_sqlite.py --sqlite /root/rhinobase-fazil_20250813.db --inspect-only

PostgreSQL bağlantılı dry-run, veri yazmaz:

python3 tools/import_legacy_sqlite.py --sqlite /root/rhinobase-fazil_20250813.db --owner-username SURGEON_USERNAME

Gerçek import:

python3 tools/import_legacy_sqlite.py --sqlite /root/rhinobase-fazil_20250813.db --owner-username SURGEON_USERNAME --apply

Canlı importtan önce önerilen backup
------------------------------------
/opt/rhinobase dizininde DATABASE_URL .env içindeyse:

source .env
pg_dump "$DATABASE_URL" > /root/rhinobase_before_legacy_import_$(date +%Y%m%d_%H%M%S).sql

Kontrol
-------
Import sonrası web uygulamada boş arama yaptığında hastalar, status ve last_data_updated_at hesaplanmış olarak görünmelidir.
