MPR · 3 Eksen
Kesit Pozisyonu
Z
Y
X
Pencere
C 300
W 2000
Araçlar  R·A·S·P·T·H
Ölçümler 0
Dosya yükledikten sonra
ölçüm yapabilirsiniz.
🦷
DICOM Yükle
ZIP sürükle veya DICOM dosyalarını toplu seç
Uzantısız slice'lar, klasör içi dosyalar desteklenir
ZIP · DCM · Uzantısız DICOM · Toplu Seçim
0%
Yükleniyor...
Aksiyel · Z
Koronal · Y
Sagital · X
Scout
Konum: HU: ZIP veya DICOM dosyası sürükleyin W:2000 C:300
📥 Slice İndirme Seçenekleri
🎯
Ölçüm Yapılan Kesitler Sadece işaretleme/ölçüm içeren sliceları PNG olarak indirir.
Her slice ayrı dosya, ölçümler üzerinde görünür.
📦
Tüm Aksiyel Kesitler (ZIP) Tüm sliceları işaretli PNG olarak ZIP'e paketler.
Ölçüm yoksa sade görüntü, varsa işaretli olarak kaydedilir.
🔢
Belirli Z Aralığı (ZIP) Seçtiğiniz Z aralığındaki sliceları indirir.
Hazırlanıyor...

⚠️ Klinik Kullanım Uyarısı

ImProWiseAI MPR Ölçüm Aracı — Araştırma Prototipi

🔬 Araştırma amaçlıdır. Bu yazılım TRL 2–4 düzeyinde bir prototiptir. CE/MDR veya FDA onayı bulunmamaktadır. Klinik karar için tek başına kullanılamaz.
📏 Ölçüm doğruluğu doğrulanmamıştır. Pixel spacing DICOM metadata'sından okunur ancak sistematik validasyon yapılmamıştır. Kritik ölçümler referans yazılım ile karşılaştırılmalıdır.
👨‍⚕️ Tüm klinik kararlar hekime aittir. Bu araç yalnızca görüntüleme ve matematiksel ölçüm sağlar. İmplant planlaması, cerrahi karar ve tedavi sorumluluğu tamamen klinisyene aittir.
🔒 Hasta verisi cihazdan çıkmaz. Tüm işlem tarayıcıda gerçekleşir. Hiçbir veri sunucuya gönderilmez.

🏷 DICOM Tag Görüntüleyici

📊 ROI HU Histogramı

Min HU
Max HU
Ortalama HU
Std Sapma
Misch D1–D4 sınıflaması referans değerlere dayalıdır. Klinik validasyon gerektirir.
kapanışından önce ekle // ═══════════════════════════════════════════════════════════ // Ana uygulamadan kullanıcı bilgisi al window.addEventListener('message', (e) => { if (e.data?.type === 'SET_USER') { const { watermark, userId, role } = e.data; // Watermark'ı viewer state'ine kaydet window._userWatermark = watermark; window._userId = userId; window._userRole = role; console.log('ImProWiseAI Viewer: Kullanıcı ayarlandı —', watermark); } }); // Ana uygulamaya log gönder function sendLog(event, metadata = {}) { window.parent.postMessage({ type: 'LOG_EVENT', event, metadata }, '*'); } // ── Orijinal handleFiles fonksiyonunu wrap et ────────────── const _origHandleFiles = handleFiles; window.handleFiles = async function(files) { const fileNames = Array.from(files).map(f => f.name).join(', ').slice(0, 100); await _origHandleFiles(files); if (V.loaded) { sendLog('load_dicom', { filename: fileNames, slice_count: V.nz, dims: `${V.nx}×${V.ny}×${V.nz}`, }); } }; // ── Ölçüm kaydını log'a ekle ────────────────────────────── const _origUpdateMeasList = updateMeasList; window.updateMeasList = function() { _origUpdateMeasList(); // Son eklenen ölçümü logla if (V.measurements.length > 0) { const last = V.measurements[V.measurements.length - 1]; sendLog('measurement', { measurement_type: last.type, clinical_tag: last.clinicalTag || null, value_mm: last.value ? parseFloat(last.value.toFixed(2)) : null, panel: last.vp, }); } }; // ── Export log'la ───────────────────────────────────────── const _origExportClinical = exportClinical; window.exportClinical = function() { sendLog('export', { type: 'clinical_report', measurement_count: V.measurements.length, implant_count: V.implants.length, }); _origExportClinical(); }; const _origExportAll = exportAll; window.exportAll = function() { sendLog('export', { type: '4panel_png' }); _origExportAll(); }; // ── İmplant log ─────────────────────────────────────────── const _origUpdateImplantList = updateImplantList; window.updateImplantList = function() { _origUpdateImplantList(); if (V.implants.length > 0) { const last = V.implants[V.implants.length - 1]; sendLog('implant', { implant_count: V.implants.length, diam: last.diam, len: last.len, tiltMD: last.tiltMD, tiltBL: last.tiltBL, }); } }; // ── Watermark'ı rapor ve ekrana ekle ───────────────────── // exportClinical zaten watermark'ı kullanıyor ama // viewer içi watermark için V state'e ekle Object.defineProperty(window, '_viewerWatermark', { get: () => window._userWatermark || '', }); // HUD'a kullanıcı watermark'ı ekle (render sonrası) const _origRenderScout = renderScout; window.renderScout = function() { _origRenderScout(); if (window._userWatermark) { const cv = document.getElementById('cvScout'); if (!cv?.width) return; const ctx = cv.getContext('2d'); ctx.save(); ctx.globalAlpha = 0.18; ctx.fillStyle = '#ffffff'; ctx.font = 'bold 11px monospace'; ctx.textAlign = 'right'; ctx.fillText(window._userWatermark, cv.width - 8, cv.height - 8); ctx.restore(); } }; // Klinik rapor export'una watermark ekle const _origExportClinical2 = exportClinical; window.exportClinical = function() { // exportClinical içindeki watermark satırını güncelle window._exportWatermark = window._userWatermark; _origExportClinical2(); };