इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए एक स्कैन चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

DICOM व्यूअर — .dcm स्कैन ब्राउज़र में खोलिए

CT, MRI, एक्स-रे और अल्ट्रासाउंड, विंडो, हेडर और नाप के साथ।

भाषा: हिन्दी
कोड देखें
यह टूल स्कैन कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

स्कैन को खोलना और डीकोड करना, यह सब आपका अपना ब्राउज़र करता है। हेडर, पिक्सल, विंडो, नाप, सब कुछ। इस पेज के दूसरी तरफ़ कोई सर्वर है ही नहीं जिसे मरीज़ की जानकारी भेजी जा सके, चाहे यहाँ की कोई चीज़ भेजना भी चाहे। और इस फ़ाइल के बारे में कुछ भी किसी को नहीं बताया जाता, न मरीज़ का नाम, न जाँच, न फ़ाइल का नाम।

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात पर यकीन मत कीजिए। डेवलपर टूल्स खोलिए, नेटवर्क टैब देखिए, और एक स्कैन खोलिए। एक भी रिक्वेस्ट में न कोई इमेज जाती है, न टैग, न फ़ाइल का नाम। या फिर इंटरनेट बंद कर दीजिए और तब भी खोलकर देखिए।

स्कैन चुनिए

पूरा फ़ोल्डर एक साथ खींचकर डालिए, और फ़ाइलें अपनी-अपनी सीरीज़ में वापस बँधकर सही क्रम में लग जाएँगी। कुछ भी अपलोड नहीं होता, और आपकी फ़ाइलों में कुछ दोबारा लिखा भी नहीं जाता।

Markdown के रूप में देखें

DICOM फ़ाइल कैसे खोलें

  1. फ़ाइलें चुनिए। एक .dcm फ़ाइल, या डिस्क का पूरा फ़ोल्डर। CT या MRI में हर स्लाइस की अलग फ़ाइल होती है, इसलिए सबको एक साथ खींचकर डालना ही सीरीज़ को दोबारा जोड़ता है। फ़ाइलें ब्राउज़र सीधे आपकी डिस्क से पढ़ता है, और इस दौरान कुछ भी कहीं नहीं भेजा जाता।
  2. सीरीज़ चुनिए। एक जाँच में आम तौर पर कई होती हैं, पहले स्काउट और फिर हर अलग शॉट। हर सीरीज़ उसी क्रम में लगती है जिसमें मशीन ने उसे लिया था, और वह क्रम नंबरों से नहीं बल्कि इससे निकलता है कि हर स्लाइस शरीर में कहाँ पड़ती है। नंबर हमेशा एक ही दिशा में नहीं चलते।
  3. विंडो सेट कीजिए। यही वह चीज़ है जो स्कैन को पढ़ने लायक बनाती है, और यही इमेज एडिटर में नहीं होती। तस्वीर पर आड़ा खींचिए तो विंडो चौड़ी होती है और ऊपर-नीचे खींचिए तो उसका केंद्र सरकता है। CT पर आप नाम वाली विंडो भी चुन सकते हैं, जैसे फेफड़ा, हड्डी, दिमाग, नरम ऊतक, क्योंकि CT की इकाइयाँ दुनिया की हर मशीन पर एक जैसी होती हैं।
  4. स्लाइस पलटिए। तस्वीर के नीचे वाला स्लाइडर स्लाइस बदलता है, और तस्वीर पर एक बार क्लिक कर देने के बाद तीर की कुंजियाँ भी यही करती हैं। कई फ़्रेम वाली फ़ाइल, जैसे अल्ट्रासाउंड लूप या एंजियोग्राम, बगल के बटन से चलती है।
  5. कुछ नापिए। नाप पर जाइए और एक रेखा खींचिए। जहाँ फ़ाइल बताती है कि उसके पिक्सल कितनी दूर हैं, वहाँ जवाब मिलीमीटर में आता है और उन पिक्सलों का भी ध्यान रखा जाता है जो वर्गाकार नहीं हैं। जहाँ फ़ाइल यह नहीं बताती, वहाँ जवाब पिक्सल में आता है और साफ़ कह भी दिया जाता है, कोई पैमाना गढ़ा नहीं जाता।
  6. हेडर पढ़िए। फ़ाइल का हर एलिमेंट, उसके नंबर के साथ, स्टैंडर्ड जिस नाम से उसे बुलाता है उसके साथ, और उसमें जो है उसके साथ, और यह सब खोजा जा सकता है। उसके ऊपर वह सूची है कि इसी फ़ाइल में मरीज़ की पहचान क्या-क्या कराता है, जो नाम से कहीं ज़्यादा है।
  7. जो चाहिए वह ले जाइए। स्क्रीन पर दिख रही तस्वीर PNG के रूप में, आपकी सेट की हुई विंडो के साथ और उस पर कुछ भी छपा हुए बिना, या फिर पूरा हेडर सादे टेक्स्ट में। दोनों इसी पेज में उसी से बनते हैं जो पहले से यहाँ मौजूद है।

विस्तार से

DICOM फ़ाइल कैसे खोलें, और उसमें क्या होता है अस्पताल की डिस्क में क्या होता है, फ़ाइलों पर एक्सटेंशन क्यों नहीं होता, .dcm स्कैन ब्राउज़र में कैसे खोलें, विंडो और लेवल असल में क्या करता है, और स्कैन तस्वीर के अलावा मरीज़ के बारे में क्या-क्या लिए चलता है।

सवाल

क्या मेरा स्कैन कहीं अपलोड होता है?

नहीं। फ़ाइल को पढ़ना, डीकोड करना और बनाना, यह सब आपका अपना ब्राउज़र आपके अपने हार्डवेयर पर करता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की Content-Security-Policy में हर वह पता लिखा है जिससे वह बात कर सकता है। उनमें से एक भी इस साइट का नहीं है। नेटवर्क का तार खींच दीजिए, फिर भी स्कैन खुलते रहेंगे।

यह बात यहाँ इस साइट के किसी भी दूसरे पेज से ज़्यादा मायने रखती है। DICOM फ़ाइल अपने हेडर में मरीज़ का नाम, जन्म तारीख और अस्पताल का नंबर लिए चलती है, इसलिए उसे किसी व्यूअर पर चढ़ाने का मतलब है किसी अजनबी को तस्वीर नहीं, मेडिकल रिकॉर्ड सौंप देना।

यह कौन-सी DICOM फ़ाइलें खोल सकता है?

तीनों बुनियादी transfer syntax में बिना कंप्रेस की फ़ाइलें, यानी implicit और explicit little endian, और वह big endian जो अब हटा दी गई है। इनके अलावा deflated, RLE Lossless, baseline JPEG और JPEG Lossless भी, और अस्पताल की डिस्क पर मौजूद ज़्यादातर CT और MRI जाँचें इसी आखिरी तरीके से कंप्रेस होती हैं।

यह JPEG 2000, JPEG-LS, और वीडियो में इस्तेमाल होने वाली MPEG व HEVC सिंटैक्स डीकोड नहीं कर सकता। उनके लिए ऐसे कोडेक चाहिए जो कई मेगाबाइट की कंपाइल की हुई लाइब्रेरी होते हैं, और जो पेज ज़रूरत पड़ने पर उन्हें मँगाता वह ऑफ़लाइन चलने वाला पेज न रह जाता। ऐसी किसी फ़ाइल के साथ भी काम चलता है। पूरा हेडर पढ़कर दिखा दिया जाता है, और तस्वीर की जगह एक लाइन आती है जो कोडेक का नाम बताती है, न कि टूटी इमेज का वह निशान जो कुछ नहीं बताता।

‘विंडो और लेवल’ क्या है, और यह क्यों चाहिए?

एक CT स्लाइस में करीब चार हज़ार अलग-अलग मान होते हैं और आपकी स्क्रीन दो सौ छप्पन धूसर रंग दिखाती है। किसी को तय करना पड़ता है कि उन चार हज़ार में से कौन-सा हिस्सा उन सभी दो सौ छप्पन को पाएगा, और वही चुनाव विंडो है। उससे नीचे सब काला, उससे ऊपर सब सफ़ेद, और बीच का हिस्सा धूसर रंगों में फैला हुआ।

इसीलिए वही फ़ाइल दो सेटिंग में दो अलग स्कैन जैसी दिखती है, और इसीलिए फेफड़ा और हड्डी एक साथ नहीं देखे जा सकते। CT पर ये संख्याएँ हाउंसफ़ील्ड इकाई हैं, जो पूरी तरह तय हैं। पानी 0 है और हवा −1000, हर CT मशीन पर। इसलिए इस पेज की नाम वाली विंडो वही संख्याएँ हैं जो कोई रेडियोलॉजिस्ट अपने वर्कस्टेशन पर इस्तेमाल करता है। MRI या अल्ट्रासाउंड पर ऐसा कोई पैमाना नहीं होता, और जो विंडो खुलती है वह वही है जो फ़ाइल खुद माँगती है।

यह मेरी नाप को पिक्सल में क्यों बता रहा है?

क्योंकि वह फ़ाइल यह नहीं बताती कि एक पिक्सल कितना बड़ा है। यह बात Pixel Spacing (0028,0030) में मिलीमीटर में लिखी होती है, और बहुत सारी अल्ट्रासाउंड इमेज, स्कैन किए हुए कागज़ और secondary capture में वह होती ही नहीं।

जहाँ वह होती है, वहाँ नाप मिलीमीटर में आती है और हर अक्ष अपनी दूरी से नापा जाता है, जो उन तस्वीरों में मायने रखता है जिनके पिक्सल वर्गाकार नहीं होते। जहाँ वह नहीं होती, वहाँ ईमानदार जवाब पिक्सल की गिनती है, और यह उसे कहता भी है, न कि कोई पैमाना चुनकर नतीजे को लंबाई की तरह पेश करता है।

इसने मेरे फ़ोल्डर को कई सीरीज़ में खोल दिया। ऐसा क्यों?

क्योंकि उसमें यही है। एक जाँच सीरीज़ से बनती है, पहले स्काउट व्यू और फिर हर शॉट या रीकंस्ट्रक्शन, और हर फ़ाइल Series Instance UID (0020,000E) में बताती है कि वह किसकी है। सूची फ़ोल्डर से नहीं, इसी से बनती है, क्योंकि फ़ोल्डर में तो आम तौर पर सब कुछ नामों की एक ही लिस्ट में मिला-जुला पड़ा होता है।

सीरीज़ के भीतर स्लाइस इस हिसाब से क्रम में लगती हैं कि हर एक शरीर में कहाँ है, जो Image Position और Image Orientation से निकलता है। Instance Number सीधी-सी कुंजी है, लेकिन वह पहली पसंद नहीं बल्कि आखिरी सहारा है, क्योंकि उसे वही चीज़ देती है जिसने फ़ाइलें लिखीं और ज़रूरी नहीं कि वह मरीज़ की दिशा में चले।

‘मरीज़ की पहचान क्या कराता है’ वाली सूची का क्या मतलब है?

यह आपकी फ़ाइल का हर वह फ़ील्ड है जो स्कैन वाले इंसान का नाम लेता है, या यह छाँटता है कि वह कौन हो सकता है, और यह सब आपकी मशीन पर इसी फ़ाइल से पढ़ा गया है। सूची DICOM स्टैंडर्ड के PS3.15 से आती है, यानी उस हिस्से से जो बताता है कि किसी डेटासेट को de-identified कहने से पहले उसमें से क्या-क्या जाना चाहिए।

यह इसलिए है कि लोग जहाँ गलती करते हैं वह यह नहीं है कि स्कैन में नाम होता है। गलती इस बारे में होती है कि उसमें और कितना कुछ होता है। जन्म तारीख, रेफ़रेंस नंबर, रेफ़र करने वाला डॉक्टर, संस्थान, मशीन का सीरियल नंबर, और जाँच के UID, जो उस आर्काइव तक लौटने की एकदम सटीक कुंजी हैं जिसने यह फ़ाइल बनाई। जिस स्कैन से सिर्फ़ नाम मिटा दिया गया हो वह गुमनाम नहीं होता।

यह टूल सिर्फ़ दिखाता है। यह कुछ लिखता नहीं और कुछ बदलता नहीं, इसलिए इसमें से कुछ निकाल भी नहीं सकता।

क्या यह स्कैन को गुमनाम कर सकता है?

नहीं, और यह जान-बूझकर ऐसा होने का दिखावा भी नहीं करता। यह पेज पढ़ता है। इसमें ऐसा कोई कोड नहीं है जो DICOM फ़ाइल लिखे। यह जो करता है वह यह बताना है कि आपकी फ़ाइल में ठीक-ठीक क्या है, और यही वह हिस्सा है जो पता करना मुश्किल है और जिसके बारे में लोग गलत होते हैं।

पहचान बताने वाले फ़ील्ड निकालने वाला टूल एक अलग काम है जिसका पैमाना कहीं ऊँचा है। उसे पिक्सल छुए बिना फ़ाइल दोबारा लिखनी होगी, पूरी जाँच में UID एक-से ढंग से बदलने होंगे, और उन प्राइवेट एलिमेंट के बारे में सही होना होगा जिनमें कुछ मशीनें नाम की दूसरी कॉपी छिपा देती हैं। वह इस साइट के रोडमैप पर है, किसी व्यूअर के साथ चिपकाने की चीज़ नहीं।

क्या यह बिना .dcm एक्सटेंशन वाली या टूटी हुई फ़ाइल खोल सकता है?

दोनों के लिए हाँ। एक्सटेंशन देखा ही नहीं जाता, जाँच खुद फ़ाइल की होती है। जो डेटासेट आम 128 बाइट की भूमिका के बिना लिखा गया हो, और सीधे नेटवर्क से आया स्कैन ऐसा ही दिखता है, उसे उसके पहले एलिमेंट से एन्कोडिंग निकालकर पढ़ा जाता है, और पेज बता भी देता है कि उसने यही किया।

जो फ़ाइल बीच में ही खत्म हो जाती है वह जहाँ तक जाती है वहाँ तक पढ़ी जाती है। खराबी से पहले का सब कुछ दिखाया जाता है, साथ में यह नोट कि वह किस बाइट पर रुकी। व्यूअर की सबसे ज़्यादा ज़रूरत ऐसे ही मौकों पर पड़ती है, इसलिए आखिरी बारह बाइट के लिए पूरी फ़ाइल फेंक देना गलत बर्ताव होता।

क्या यह डायग्नोस्टिक व्यूअर है?

नहीं। यह मेडिकल डिवाइस नहीं है, यह किसी नियामक जाँच से नहीं गुज़रा है, और यहाँ की किसी भी चीज़ से कोई क्लिनिकल फ़ैसला नहीं लिया जाना चाहिए। आपकी स्क्रीन कैलिब्रेट नहीं है, ब्राउज़र कोई प्रमाणित रेंडरिंग चेन नहीं है, और इनमें से कोई भी बात किसी वेब पेज के भीतर से ठीक नहीं की जा सकती।

बाकी हर उस काम के लिए यह अच्छा है जिसके लिए लोग स्कैन खोलते हैं। डिस्क में क्या है यह देखना, किसी लेक्चर या पर्चे के लिए एक स्लाइस निकालना, हेडर पढ़ना, यह पता करना कि कोई दूसरा प्रोग्राम इस फ़ाइल को क्यों मना कर रहा है, और यह देखना कि स्कैन उस इंसान के बारे में क्या-क्या लिए चल रहा है।

क्या यह मेरी फ़ाइल बदलता है?

नहीं। यह टूल सिर्फ़ पढ़ता है। न कोई आउटपुट फ़ाइल है, न दोबारा एन्कोडिंग, और न यहाँ कोई बटन है जो DICOM लिखे। आप जो डाउनलोड कर सकते हैं वह है स्क्रीन पर दिख रही तस्वीर की PNG और हेडर की सादे टेक्स्ट वाली कॉपी। आपकी असली फ़ाइल आपकी डिस्क पर ज्यों की त्यों रहती है।

क्या यह मुफ़्त है, और क्या अकाउंट चाहिए?

यह मुफ़्त है, और न अकाउंट है, न साइन-इन, न कोई ट्रायल। फ़ाइल के साइज़ पर या कितनी फ़ाइलें खोलें इस पर कोई सीमा नहीं है, सिवाय आपकी अपनी मशीन की मेमोरी के। साइट पर विज्ञापन चलते हैं और उन्हीं से इसका खर्च निकलता है, और विज्ञापनों को आपकी फ़ाइल के बारे में कुछ नहीं दिया जाता।

क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट बंद कर दीजिए और यह चलता रहेगा। यह साबित करने का सबसे आसान तरीका भी यही है कि कुछ अपलोड नहीं हो रहा, क्योंकि जो टूल आपका स्कैन कहीं भेजकर बनवाता होता वह तार खींचते ही रुक जाता।