Review & mitigasi risiko perubahan multiframe XA di dicomweb-proxy #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Konteks
Commit
5862bb7(branchrsab) menambah forwarding atribut multiframe + slicing frame tunggal di WADO-RS supaya run angio XA bisa diputar sebagai cine. Ada 2 risiko lintas-modality plus 1 gap keakuratan fps.Temuan
Risiko C-FIND —
src/dimse/tags.tssekarang mengirim keyCineRate(0018,0040) danRecommendedDisplayFrameRate(0008,2144) ke semua peer di level IMAGE. Dua key ini khas XA dan tidak dipakai OHIF untuk cine. SCP tua/non-konforman bisa menolak query -> study list kosong untuk peer tsb.Risiko frame slicing —
src/dimse/wadoRs.tsmenghitung frame pakairows*cols*spp*(bits/8), valid hanya untuk pixel data uncompressed. Untuk multiframe terkompresi (Enhanced CT/MR/US), kalau recompress ke Implicit LE gagal, byte yang dikembalikan salah.compressFilecumalogger.errorlalu lanjut (silent failure).Gap fps (koreksi) — OHIF menentukan frame rate dari
instance.FrameTime(0018,1063):getSopClassHandlerModule.js: FrameRate = instance.FrameTime->1000 / FrameTime.FrameTimetidak masukimageLevelTags, jadi cine angio sekarang diputar di 24 fps default, bukan 15 fps yang benar (FrameTime 66.7 ms).Solusi potensial
A. C-FIND keys
imageLevelTags->00080016,00080018,00280008(NumberOfFrames),00181063(FrameTime). BuangCineRate+RecommendedDisplayFrameRate(tidak dipakai), buangRows/Columns/InstanceNumberyang opsional (cornerstone baca saat load).B. Frame slicing
pixeldataElement.encapsulatedPixelData; kalau encapsulated pakaidataset.readEncapsulatedPixelData(element, frame-1)(basic offset table / walk fragments), bukan slicing mentah.Rekomendasi tindakan
FrameTime— perbaiki fps sekaligus hilangkan risiko key XA.Verifikasi