이 기사에서는 DCM 의료 이미지 파일을 구문 분석하고 파일 정보를 추출하는 Java 방법에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 설치
먼저 GitHub로 이동하여 소스 코드를 다운로드 한 다음 로컬 설치를 위해 MVN 설치를 실행하십시오. Maven Central 저장소에는 JAR이 없습니다. . 성공적인 설치 후 다음은 다음과 같습니다.
그런 다음 pom.xml 파일에 JAR 패키지를 소개합니다.
<pectionency> <groupid> org.dcm4che </groupid> <artifactid> dcm4che-core </artifactid> <버전> 3.3.2 </version> </fectionency>
2. 테스트 카테고리
/** * projectName : xxx * filename : displayTag.java * packagename : com.xxxx.xxxx.common.util * 날짜 : 2018-03-26 10:07 * Copyright (c) 2017-2020 xxx company */package com.gz.medicine.common.util; import java.awt.image.raster; java.io.file; import java.io.ioexception; import java.sql.time; import java.util.arrays; import java.util.date; import java.util.logging.level; import java.util.logging.logger; import org.dcm4che3.data.attributes; org.dcm4che3.data.elementdictionary; import org.dcm4che3.data.fragments; import org.dcm4che3.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.data.tag; import org.dcm4che3.data.vr; import org.dcm4che3.io.dicomodeptions; org.dcm4che3.io.dicominputstream; import org.dcm4che3.io.dicomoutputstream; import org.dcm4che3.util.safeclose; import java.awt.image.raster; import java.io.ioexception; import java.util.arrays;/** v1.0 @en * @className : displayTag * @packagename : com.xxxx.xxxx.common.util * @description : 태그 구문 분석 * @data : 2018-03-26 10:07 **/public final class displaytag {private static attributes obj = null, object = null; 개인 정적 Dicominputstream Din; 비공개 정적 이중 resultfactordix; 개인 문자열 result = null; 비공개 이중 결과 2 = null; 개인 문자열 nom = null; 개인 문자열 nounstring = null; 개인 int val2 = 0; 개인 INT Valeurreturn; 개인 문자열 noununit = null; 비공개 정적 이중 resultFacteurdix = 0; Private Double ValuesPatial = null; 개인 문자열 noununitratio = null; 개인 dicominputstream dis; 개인 정적 최종 문자 [] hex_digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; 개인 dicomencodingoptions Encopts = dicomencodingOptions.Default; 개인 정적 요소 dictionary dict = elementDictionary.getStandardElementDictionary (); public displayTag (파일 파일) {try {setObject (loadDicomObject (file)); } catch (ioException ex) {logger.getLogger (displayTag.class.getName ()). log (level.severe, null, ex); }} / ** * DICOM 3.0의 메타 데이터 읽기 * @param f : 입력 파일 * @return 속성 * @throws ioexception * / public static actributes loaddicomobject (file f)는 ioexception {if (f == null) {return null; } else {dicominputStream dis = 새로운 dicominputStream (f); //attr.setspecificcharacterset("gbk "); 반환 dis.readdataset (-1, -1); }} / ** * put attribut * @param obj * / public void setObject (attributes obj) {this.obj = obj; } / ** * 메타 데이터의 속성 제공 * @return * / public static 속성 getObject () {return obj; } / ** * 디스플레이 메타 데이터 * @param 파일 : 파일 inout * @throws ioException * / public string readTagdicom (파일)은 ioexception {din = new dicominputStream (파일); Object = din.readfileMetainFormation (); 문자열 값 = Object.ToString (); Object = Din.ReadDataset (-1, -1); 반환 값; } / ** * Permet d 'Afficher l'Heure d 'une valeur dicom en Standard International yyyy.mm.dd / yyyy.mm.dd * @param tag : valeur du tag / int tag * @param valuebool : si true format yyyy.mm.dd sinon format dd.mm.yyyyyy / iyyyy / iyyyy / iyyyy / ife yyyy.mm.dd else dd.mm.yyyyy * @param valueNoun : "dot" mettre la date en format yyyyy.mm.dd ou dd.mm.yyyyy sinon en format yyyy mm dd ou dd mm yyyyy/ "dot" put yyyy.mm.dd or dd.mm.dd or dd.mm.yyyyy else yyyy mm 또는 dd mm yyyyy * @return afficher le string du selon le 표준 국제/ 반환 문자열 날짜 * @throws ioexception */ public string dicomdate (int tag, boolean valuebool, string valuenoun)는 ioexception {if (getObject (). contatains (tAG) == true) {stiM tagvalue = getObject (true). String tagdayfomat = FormatDate (tagValue, ValueBool, Valuenoun); TAGDAYFOMAT를 반환합니다. } else {return null; }}/ ** * permet d 'afficher l'heure d 'une valeur dicom en Standard International yyyy.mm.dd/ 허가 yyyy.mm.dd * @param 객체 * @param tag : valeur du tag/ value @param bool : si true format yyyy.mm.dd sinon pormat dd.yy. If True Format yyyy.mm.dd else dd.mm.yyyyy * @param valuenoun : "dot"mettre la date en format yyyyy.mm.dd ou dd.mm.yyyy sinon en format yyyy mm dd ou dd mm yyyy/dot "put yyyyy.mm.mm.m.myyy. else yyyy mm 또는 dd mm yyyy * @return afficher le string du selon le 표준 국제/ 반환 문자열 날짜 * @throws ioexception */ public static string dicomdate (attributes 객체, int tag, boolean valuebool, string valuenoun) {string tagvalue = Object.getString =; FormatDate (tagvalue, ValueBool, Valuenoun); @param numero : string date * @param valuebool : else 형식 dd.mm.yyyy * @param valuenoun : "dot"을 작성하십시오. 형식 yyyy mm dd 또는 dd mm yyyyy *@return */public static string formatdate (String numero, boolean valuebool, String valuenoun) {if (numero.matches ( "^[0-9] *$")) {// if la caractère out bbuffer r (new stringbuffer) == true) {// 형식 yyyy.mm.dd for (int i = 0, j = numero.length (); i <j; i ++) {r.append (if (i == 3)) {if (valuenoun = null? ")). r.append ( '.') {r.append ( ''); valuenoun.equals ( "dot") {r.append ( '.'); ) {valuenoun == null? "== null : valuenoun.equals ("dot ") {r.append ( '.'); 배열 인덱스} r.tostring ()} retud vr = da * *를 사용합니다. getheaderdatevalue (String tagnr) {return getheaderdatevalue (tatagint (tagnr)) /** * vr = da * * @param tagnr dcm4che2 * /public date geteaderdatevalue (int tagnr) @see org.dcm4che2.data.tag * @param headernr eg 0008,0010 * @return 0x00080010 as int */ public static int totagint (string headernr) {return as string int headernr (0008,0010 * {string headernr) {retoy as string 0x00080010에 사용되는 헤더 번호 * 예 : 0008,0010의 문자열 표현 integer.parseint (Headernr.replaceall ( ",", "", 16) * vr = da * @param dicomobj * @return * /public getheaderdatevalue (int tagnr) vr = da * @param tagnr : "0000,0010" * @param dicomobj * @return */ public date getheaderdatevalue (dicomobj) {return getheaderdatevalue (tagint (tagnr), dicomobj ** ^ @ @ @ @ @ @ @ @ @rith ^; 정적 문자열 TextDicom (String Num) {num = num.replaceall ( "//^+", "")} * vm! = 1 * @param tag * @return */public string gettringtag (attributes, int tag) 문자열 tatvalue = arrays.aslist (tagvalue2) .toString (); vm! = 1 * @param tag * @param tag * @return */public string gettringtag2 (attributes, int tag). Object.getStrings (tag); // 문자열 to String to thing tagvalue = displayTag.ArrayToString (tagvalue2, "//"); 분리기) {new stringbuffer (a.length> 0) (in int i = 1; expend.append); (0008,0030) (0008,0030) S 시리즈 시간 * (0008,0031)의 S 시리즈 시간 * (0008,0032)에서 s 획득 시간 * (0008,0032)에서 * (0008,0033)에서 s image time * @param tag : tag * @return * @throws ioexception */ public string dicomtime (int tag) ioexception {) {). tagvalue = getstring (tag); (0008,0031) S 시리즈 시간 * (0008,0032)에서 s 획득 시간 * (0008,0032)에서 * (0008,0033)에서 s image time * @param tag : tag * @return * @throws ioexception */ public string dicomtaintotal (int tag) throws ioexception {if (getobject () = string {true) {string). getObject (tagtimefomat) getString (tagvalue); s im system.out.println (tagvaluenotdot); study * (0008,0031)에서 HH.Mm.Ss.s.s.s.s.s.s.s.s.s. (0008,0033) @param 객체 : 메타 데이터 * @param 태그 : value dicom * @throws ioexception * / public string dicomtime3 (int tag) {String tagvalue = object. * dicomheader에서 int 값을 읽습니다. * @param tagnr int * / public int getheaderintegervalue (int tagnr) {return getObject (). getint (tagnr, 0)로 값을 읽습니다. "0008,0102#0054,0220"뷰 코드 시퀀스 후 코딩 체계 지정자를 얻는다. containsheadertag (String tagnr) {return containsheadertag (tatagint (tagnr)) /** * 주어진 태그 * @param tagnr * @rethensheadertag (int tagnr) {return getObject (). */ public static string getheadername (int tagnr) {return dict.keywordof (tagnr)}; 주어진 헤더 필드의 이름을 반환합니다. } / **는 주어진 헤더 필드의 문자열 표현을 반환합니다 static String tolementstring (string dcmele, int tag) {stringbuffer sb = int tag []. tag (); "). Append (dcmele); return sb.toString ();} /** * 두 헤더가 비어 있거나 비어 있는지 확인하십시오 * @return * /public boolean isempty () {if (getObject () == null || getObject (). isempty ())} false;} /** *는 끈을 표현합니다. @see org.dcm4che2.data.tag * @param headernr eg 0008,000 * @return 0x00080010 as int * / public headernr) {return intger.parseint (headernr.replaceall) ( ",", 11); Comma를 @param num * @return */public static string formatnotdot (string num) {num = num.trim (). public static string formattime (String numero) {if ( "^[0-9]*$") {stringBuilder r = new StringBuilder (int i = 0, j = 6; i <j; i ++) {r.append (if 2 =)). r.append ( ':')} r.toString ()} return} * hh.mm.ss.frac * / public static string formattimes {numero.matches ( "^[0-9]) 0, numero.length (); i ++) {r.append (i % 2 == 1) {r.append ( ':'); */public double floor (double a, int n) {double p = math.pow (10.0, n); resultFactOdix = math.pow (result3, factor) / ** * getFactorpower * / public static getCoppower () {reture resultfactordix} * @param dcmobj * @return * / public static int [] lattricepixeldata (attributes) dcmobj.getints (tag.pixeldata)} * @Throws IoExcept * /public int [] int [] data = getObject (tag.pixeldata); @Throws ioException */ public byte [] lattricepixeldatabytes (속성 dcmobj)는 ioexception을 던졌습니다. lattricepixeldatabytes2 ()는 ioexception {byte [] data = getBytes (tag.pixeldata) * @PixelData * @PixelData * / private int [] [] intraster (raster) raster.getheight.out.out.printf (W = %d %n ", writaberaster = getmyimage (); = raster.getSample (X, y, 0)}}} * getPixelData (int [] [] data2) {int w = int [y y y y y a y. x <w; in index = y * w+x; *FileInputStream (FileInputStream); patient_additional_tags) {string [] value = int int i = 0; } // system.out.print (value [0]+"/n"); // system.out.print (value [1])}; displaytag (inputfile). vr = sq * @param inputfile : @param tagsq : tag vr = sq * @param tag : sq * @return */ public string tagitem (파일 inputfile, int tagsq, int tag) {string valuestring = new DisplayTag; dcm.getObject (). attributes attributes attributes (0); PhysicalUnitsxDirection * - PhysicalUnitsxDirection * -PixelComponentPhysicalUnits * * * * @param result : value String */public void init (int tag, string result) {if (tag == tag.regionspatialformat) {val2 = integer.valueof (result) .intvalue (); SetNounUnit ( "그래픽"; this.setNounUnit ( "2d (조직 또는 흐름"); break; case 0 : setNounUnit ( "없거나 해당되지 않음"); break; break;}} else if (tag == tag.regionDatatype) {val2 = integer.valueof (resat) .intvalue (); 생리 학적 (진폭과 시간); break; 사례 11 : setNounUnit ( "d (area)/dt"); break; case 10 : setNounUnit ( "영역 트레이스"); break; 사례 9 : setNounUnit ( "d (볼륨)/dt trace"); break; setnounit ( "Volume Trace"); SetNounit ( "nounout ("); BREAK : "도플러 모드 트레이스"; this this. this.setNounUnit("Phonocardiogram Trace"); break; case "D": this.setNounUnit("Gray bar"); break; case "E": this.setNounUnit("Color bar"); break; case "F": this.setNounUnit("Integrated Backscatter"); break; default: return; } }else if (TAG == Tag.PhysicalUnitsXDirection || TAG = physicalUnitsxDirection || case 7: setNounUnit("cm*pixel/sec"); break; case 6: this.setNounUnit("dB*pixel/seconds"); break; case 5: this.setNounUnit("hertz/pixel"); break; case 4: setNounUnit("seconds/pixel"); break; case 3: this.setNounUnit("cm/pixel"); break; case 2 : "DB/Pixel"; 이. setNounUnit("Computed Border"); break; case 8: setNounUnit("Integrated Backscatter"); br eak; case 7: setNounUnit("Color bar"); break; case 6: this.setNounUnit("Gray bar"); break; case 5: this.setNounUnit("Color Flow Intensity"); break; case 4: setNounUnit("Color Flow Variance"); break; case 3: this.setNounUnit("Color Flow Velocity"); break; case 2: this.setNounUnit("Spectral doppler"); break; case 1: this.setNounUnit("Tissue"); break; case 0: this.setNounUnit("None or not applicable"); break; default: break; } if("A".equals(result)){ this.setNounUnit("Tissue 분류 ");}} else {this.setNounUnit ("없음 또는 없거나 적용 가능 ");}}} / ** * enregistre l 'inité des items / put item of initiet * @param noununit * @return this.noununit = noununit * / public setnoununit (string noununit) {return this.noununit = nounout; l 'unité des items./giving Unity of Items * @return le nom de l'unité */ public string getNoununit () {return noununit}/ ** * 특수 비율 공간 유닛 sont en mm/ mm * @param 태그주는 태그 비율 -pixelcomponentphysicalUnits * * @param 결과 : prend l 'unite */ public void unitratiospatial (int tag, string result) {if (tag == tag.physicalunitsxdirection || tag == tag.physicalUnitsyDipection || tag == tag.pixelcomponentphysicalUnits) {val2 = pixelcomponentphysicalUnits) integer.valueof (result) .intvalue (); // convertie en int switch (val2) {case 9 : double valuespatial1 = getValeurtagitemDoubleratio (settActeurpuissance (10,1); setnoununitratio (mm*mm.pixel/sec); SetNounUtratio (MM*Pixel/SEC); the 기본값; recents "a": getvaleurtagitemdoubleratio (10,2); valueurtagitemdoubleratio ()*settagitemdoubleratio (valuespatial4); /** * Prend La Valeur D 'UN 비율 공간/퍼트 값 비율 공간 * @param valuespatial */public double settagitemdoubleratio (double values -spatial) {valuespatial = valuepatial} * Donne la Valeur du/Diving Value 비율 */proval */proval */retopial; getValeurtagitemdoubleratio () {return valuepatial; } / ** * 혹독한 la valeur de puissance / giving value power * @return * / public static double getFacteurpuissance () {return resultFacteurdix} / ** * engity unite initement / put Unity items * @return this.noununit * / public string setnounununuTio (string nounUtratio) 이 .noununitratio = noununitratio} /*** des items./giving Unity 아이템 * @return le nom de l 'unité */ public string getNounUnitratio () {return nounUnitratio; }/ ** * Prend La Valeur Interne D 'Un 태그 항목/ PUT 태그 항목 * @param result * @return */ public String settagitem (String result) {return this.result = result; }/** * Donne la Valeur du 태그 Rachercher/Tag uping a value a value a vueving * @return le string de la valeur rachercher du tag dans un item */public string getvaleurtagitem () {return result; }/ ** * Prend La Valeur Interne D 'Un 태그 항목/ 값 태그 항목을 넣습니다. * @return */ public double settagitemdouble (double result2) {return this.result2 = result2; }/** * Donne la Valeur du 태그 Rachercher/가치 태그 제공 * @return le d } / ** * 태그 dicom (dcm4che2)에서 문자열 값을 읽습니다. elem = getObject (); elem.setspecificcharacterset ( "GB18030"); 문자열 val = elem.getString (tagnr); if (val == null) {val = ""; } return val; } catch (예외 e) {return ""; }} / ** * 태그 dicom (dcm4che2)에서 문자열 값을 읽습니다. {System.out.println (222); 속성 elem = getObject (); elem.setspecificcharacterset ( "GB18030"); 문자열 [] val = elem.getStrings (tagnr); 반환 val; } catch (예외 e) {return null; }} / ** * dicomheader에서 문자열 값을 읽습니다. * @param tagnr 읽기로 표시되는 태그 * @param dcmelement * @return value as string * / public string getheaderstringvalue (attributes dcmelement, int tagnr) {try {system.out.println (333); /* dcmelement.setspecificcharacterset ( "iso_ir 100"); */ dcmelement.setspecificcharacterset ( "GB18030"); 문자열 val = dcmelement.getString (tagnr); if (val == null) {val = ""; } return val; } catch (예외 e) {return ""; }} / ** * 태그 (그룹, 요소) * @param headernr, 예 : 슬라이스 두께를 얻기 위해 "0018,0050"<br> * @return string * / public String getheaderstringValue (String headernr) {headernr = headernr = headernr.replaceall ( "xx", "00"). return getheaderstringvalue (Totagint (headernr)); } / ** * 태그를주는 태그 제공 } / ** * 태그주는 태그 * @param tagnr * @return time * / public time getheadertimevalue (int tagnr) {String time = getheaderstringValue (tagnr); if (time.length ()! = 6) {return null; } try {int hour = integer.parseint (time.substring (0,2)); int min = integer.parseint (time.substring (2,4)); int sec = integer.parseint (time.substring (4,6)); 새로운 시간 (시간, 최소, 초); } catch (예외 e) {} return null; } /** * anotehr tag * 또는 "0008,0102, 0054,0220"내부에있는 특정 headertag를 검색하여 뷰 코드 시퀀스 * @return String * * @param taghierarchy; eg {tag.uid, tag.sopinstanceuid, tag.codemeaning} * @return */ public string getheadervalueinsidetag (int [] taghierarchy) {try {for (int i = 0; i <taghierarchy.length-1; i ++) {return getObject (). getString [i]); }} catch (예외 e) {문자열 tags = ""; for (int i = 0; i <taghierarchy.length; i ++) {tags += totagstring (taghierarchy [i]) +""; } 반품 ""; } return null; } / ** * 헤더 번호 * eg 0x00080010의 int 표현을 해당 문자열로 변환합니다. } public static String shorttoHex (int val) {char [] ch = new char [4]; ShorttoHex (Val, CH, 0); 새 문자열 (ch)을 반환합니다. } public static stringbuffer shorttohex (int val, stringbuffer sb) {sb.append (hex_digits [(val >> 12) & 0xf]); sb.append (hex_digits [(val >> 8) & 0xf]); sb.append (hex_digits [(val >> 4) & 0xf]); sb.append (hex_digits [val & 0xf]); 반환 SB; } public static void shorttoHex (int val, char [] ch, int off) {ch [off] = hex_digits [(val >> 12) & 0xf]; ch [off+1] = hex_digits [(val >> 8) & 0xf]; ch [off+2] = hex_digits [(val >> 4) & 0xf]; ch [off+3] = hex_digits [val & 0xf]; } / ** * 파일 출력 DICOM 생성 * @Param 파일 아웃 Put : 파일 출력 * @Throws IOException * * * 예 : * * * * * * / public void writeTo (파일 파일 아웃, 속성 FMI, 속성 객체) IoException {dicomoutputStream dos = new DicomOutStream (file +")); dos.setencodingoptions (Encopts); dos.writedataset (fmi, object); dos.finish (); dos.flush (); } / ** * 쓰기 * @param fileoutput * @param h * @param h * @param w * @throws ioexception * / public void writeToSegment (파일 파일 아웃 Put, int h, int w)는 ioException {dicomoutputStream doS = new dicomoutputStream (fileoutput +"); dos.setencodingoptions (Encopts); } / ** * pixelData에서 오버레이 생성 * @Param Object * / public void OverlayCreate (Attributes Object) {int position = object.getInt (tag.overLayBitPosition, 0); if (position == 0) {return; } int bit = 1 << 위치; int [] pixels = object.getints (tag.pixeldata); int count = 0; for (int pix : pixels) {int overay = pix & bit; 픽셀 [count ++] = pix- 오버레이; } object.setInt (tag.pixelData, vr.ow, 픽셀); } /*** dicom.setString (tag.performingphysicianname, vr.pn, "Jean"); dicom.setString (tag.admittingdiagnosesdescription, vr.lo, "chu"); 서열 seq = dicom.newectence (tag.anatomicregion equence, 0); 속성 dicom2 = new 속성 (); * @param dicom */ public void setitem (속성 dicom, int tag equenceName) {시퀀스 seq = dicom.newectence (tag equenceName, 0); dicom.setString (tag.codingschemedesignator, vr.sh, "srt"); dicom.setString (tag.codevalue, vr.sh, "t-aa000"); dicom.setString (tag.codemeaning, vr.lo, "눈"); seq.add (dicom); } public static void main (String [] args)은 예외를 {file file = new File ( "C : // users // fendo // documents // wechat files // fen_do // files // 1234.dcm"); displayTag d = 새로운 displayTag (파일); @SuppressWarnings ( "static-Access") 속성 attrs = d.loaddicomobject (file); // 모든 속성 정보 system.out.println ( "모든 정보 :" + attrs); // 행을 얻습니다 int row = attrs.getInt (tag.rows, 1); // 열 int columns = atts.getInt (tag.columns, 1); // 창 폭 float win_width = atts.getfloat (tag.windowwidth, 1); System.out.println("" + "row=" + row + ",columns=" + row + ",row*columns = " + row * columns); String patientName = attrs.getString(Tag.PatientName, ""); System.out.println("Name:" + patientName); //Birthday String patientBirthDate = attrs.getString(Tag.PatientBirthDate, ""); System.out.println("Birthday: " + patientBirthDate); //Institution String institution = attrs.getString(Tag.InstitutionName, ""); System.out.println("Institution: " + institution); //Site String station = attrs.getString(Tag.StationName, ""); System.out.println("Site: " + station); //Manufacturer String Manufacturer = attrs.getString(Tag.Manufacturer, ""); System.out.println("Manufacturer: " + Manufacturer); //Manufacturer Model String ManufacturerModelName = attrs.getString(Tag.ManufacturerModelName, ""); System.out.println("ManufacturerModelName: " + ManufacturerModelName); //Description--Atrial String description = attrs.getString(Tag.StudyDescription, ""); System.out.println("Description--Atrial: " + Description); //Description--Specific String SeriesDescription = attrs.getString(Tag.SeriesDescription, ""); System.out.println("Description--Specific: " + SeriesDescription); //Description time String studyData = attrs.getString(Tag.StudyDate, ""); System.out.println("Description time: " + studyData); byte[] bytename = attrs.getBytes(Tag.PatientName); System.out.println("Name: " + new String(bytename,"gb18030")); byte[] bytesex = attrs.getBytes(Tag.PatientSex); System.out.println("Gender: " + new String(bytesex,"gb18030")); }}输出如下:
所有信息: (0008,0005) CS [ISO_IR 100] SpecificCharacterSet
(0008,0008) CS [ORIGINAL/PRIMARY] ImageType
(0008,0016) UI [1.2.840.10008.5.1.4.1.1.1.1] SOPClassUID
(0008,0018) UI [1.2.840.113619.2.203.4.2147483647.1486521160.448521] SOPInstan
(0008,0020) DA [20170208] StudyDate
(0008,0021) DA [20170208] SeriesDate
(0008,0022) DA [20170208] AcquisitionDate
(0008,0023) DA [20170208] ContentDate
(0008,002A) DT [20170208103237.000000] AcquisitionDateTime
(0008,0030) TM [103154.000] StudyTime
(0008,0031) TM [103158.000] SeriesTime
(0008,0032) TM [103237.000] AcquisitionTime
(0008,0033) TM [103240.000] ContentTime
(0008,0050) SH [T77792] AccessionNumber
(0008,0060) CS [DX] Modality
(0008,0068) CS [FOR PRESENTATION] PresentationIntentType
(0008,0070) LO ["GE Healthcare"] Manufacturer
(0008,0080) LO [HeFei RICH] InstitutionName
(0008,0081) ST [Not Initialized
Not Initialized
HeFei
AnHui
Not Initialize(0008,0090) PN [] ReferringPhysicianName
(0008,1010) SH [082407110134] StationName
(0008,1030) LO [ACHEST] StudyDescription
(0008,103E) LO [Chest] SeriesDescription
(0008,1040) LO [Not Initialized] InstitutionalDepartmentName
(0008,1050) PN [] PerformingPhysicianName
(0008,1090) LO ["Definium 6000"] ManufacturerModelName
(0008,1110) SQ [] ReferencedStudySequence
(0008,1120) SQ [] ReferencedPatientSequence
(0008,2112) SQ [1 Items] SourceImageSequence
>Item #1
>(0008,1150) UI [1.2.840.10008.5.1.4.1.1.1.1.1] ReferencedSOPClassUID
>(0008,1155) UI [1.2.840.113619.2.203.4.2147483647.1486521157.927189] Referenc
(0008,2218) SQ [1 Items] AnatomicRegionSequence
>Item #1
>(0008,0100) SH [T-D3000] CodeValue
>(0008,0102) SH [SNM3] CodingSchemeDesignator
>(0008,0104) LO [Chest] CodeMeaning
(0010,0010) PN [zhang^xiao di] PatientName
(0010,0020) LO [T77792] PatientID
(0010,0030) DA [19860618] PatientBirthDate
(0010,0032) TM [] PatientBirthTime
(0010,0040) CS [F] PatientSex
(0010,1010) AS [030Y] PatientAge
(0010,1030) DS [] PatientWeight
(0011,0010) LO [GEMS_GDXE_FALCON_04]
(0011,1003) UI [1.2.840.113619.2.203.4.2147483647.1486521118.562807]
(0011,1004) CS [SE]
(0011,1005) UI [1.2.840.113619.2.203.4.2147483647.1486521152.970120]
(0011,1006) DS [0.083936]
(0011,1009) SL [0]
...
row=2021,columns=2021,row*columns = 4084441
姓名:zhang^xiao di
生日:19860618
机构:HeFei RICH
站点:082407110134
制造商:"GE Healthcare"
制造商模型:"Definium 6000"
描述--心房:ACHEST
描述--具体:Chest
描述时间:20170208
姓名: zhang^xiao di
성별 : f
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.