들어오는 연결 요청 중 "DICOM"특정 개체 태그를 읽으려고 시도하고 있습니다 (제 3 자 로컬 db에 저장).onCStoreRQ 연결 요청에 대한 PDVInputStream dicomObject 정보 읽기
연관 요청을 수락하고 로컬로 내 dicom 파일을 저장하는 데 dcmrcv() 도구의 수정 된 버전을 사용했습니다. 나는 데이터 스트림을 읽어들이는 방법 느릅 나무를 가로 챌 곳이 코드 사이 싶습니다 로컬 데이터베이스에 특정 태그를 구문 분석하고 저장합니다
@Override
protected void onCStoreRQ(Association association, int pcid, DicomObject dcmReqObj,
PDVInputStream dataStream, String transferSyntaxUID,
DicomObject dcmRspObj)
throws DicomServiceException, IOException {
final String classUID = dcmReqObj.getString(Tag.AffectedSOPClassUID);
final String instanceUID = dcmReqObj.getString(Tag.AffectedSOPInstanceUID);
config = new GlobalConfig();
final File associationDir = config.getAssocDirFile();
final String prefixedFileName = instanceUID;
final String dicomFileBaseName = prefixedFileName + DICOM_FILE_EXTENSION;
File dicomFile = new File(associationDir, dicomFileBaseName);
assert !dicomFile.exists();
final BasicDicomObject fileMetaDcmObj = new BasicDicomObject();
fileMetaDcmObj.initFileMetaInformation(classUID, instanceUID, transferSyntaxUID);
final DicomOutputStream outStream = new DicomOutputStream(new BufferedOutputStream(new FileOutputStream(dicomFile), 600000));
//i would like somewhere here to extract some TAGS from incoming dicom object. By trying to do it using dataStream my dicom files
//are getting corrupted!
//System.out.println("StudyInstanceUID: " + dataStream.readDataset().getString(Tag.StudyInstanceUID));
try {
outStream.writeFileMetaInformation(fileMetaDcmObj);
dataStream.copyTo(outStream);
} finally {
outStream.close();
}
dicomFile.renameTo(new File(associationDir, dicomFileBaseName));
System.out.println("DICOM file name: " + dicomFile.getName());
}
@Override
public void associationAccepted(final AssociationAcceptEvent associationAcceptEvent) {
....
@Override
public void associationClosed(final AssociationCloseEvent associationCloseEvent) {
...
}
:처럼 더 구체적으로 내가 onCStoreRQ 오버라이드 (override) 한 방법.
그러나 어디서나 (단지 시작 읽기) dataStream을 조작하려고하는 코드 조각을 넣으려고하면 내 dicom 파일이 손상됩니다! 난 그냥 넣어하려고해도
PDVInputStream는 ....
을 java.io.InputStream를 구현한다 :
에서 System.out.println ("StudyInstanceUID를 :"+ dataStream.readDataset(). getString (Tag.StudyInstanceUID));
outStream에 데이터 스트림을 복사하기 전에 ... 다음 내 DICOM 파일은
어떻게 내가 몇 가지 정보를 추출하기 위해 CStoreRQ 협회의 요청에 데이터 스트림을 사용 하죠 ... (크기의 1킬로바이트) 손상 얻고있다? 내 질문은 분명하다 희망...