Files
dicom-iso/raw/mkiso_multiple.php
2026-06-05 08:11:44 +07:00

107 lines
3.1 KiB
PHP

<?php
include_once('class/database.php');
$db = new Database("localhost","root","12Digit","pacsdb_his",3306);
$dbhis = new Database("192.168.2.7","remote","12Digit","rsabt201107",3306);
$list_accession_number = trim($_GET["accession_number"]);
$as = explode(",",$list_accession_number);
$list_accession_number = implode("-",$as);
$first_accession_number = $as[0];
$sql = "SELECT MEDRECID,RegID FROM pacs_result_series WHERE AccessionNumber = '$first_accession_number' LIMIT 1";
$result = $dbhis->query($sql);
if($dbhis->getRowsNum($result)>0) {
list($MEDRECID,$RegID)=$dbhis->fetchRow($result);
$sql = "SELECT Nama FROM medrec WHERE MEDRECID = '$MEDRECID'";
$result = $dbhis->query($sql);
if($dbhis->getRowsNum($result)>0) {
list($NamaPasien)=$dbhis->fetchRow($result);
} else {
echo "Accession Number Error";
exit(0);
}
} else {
echo "Accession Number Error";
exit(0);
}
$dicomdir = "/tmp/".uniqid("dicomdir_");
if(strlen($list_accession_number)==0) {
echo "Accession Number Error";
exit(0);
}
// $accession_number = "MR.180505.026";
$filename_pasien = preg_replace( '/[^a-zA-Z0-9]+/', '', strtoupper($NamaPasien) );
$filename = $filename_pasien."-".preg_replace( '/[^a-zA-Z0-9\-\.]+/', '', strtoupper($list_accession_number) );
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$filename.'.iso"');
mkdir($dicomdir);
mkdir("$dicomdir/DICOMDIR");
$cmd = "/bin/cp -r /var/www/html/microdicom/* ${dicomdir}/";
exec($cmd, $outputRes);
/*
CR - Computed Radiography Image Storage
CT - CT Image Storage
MR - MRImageStorage
US - Ultrasound Image Storage
NM - Nuclear Medicine Image Storage
PET - PET Image Storage
SC - Secondary Capture Image Storage
XA - XRay Angiographic Image Storage
XRF - XRay Radiofluoroscopic Image Storage
DX - Digital X-Ray Image Storage for Presentation
MG - Digital Mammography X-Ray Image Storage for Presentation
PR - Grayscale Softcopy Presentation State Storage
KO - Key Object Selection Document Storage
SR - Basic Text Structured Report Document Storage
*/
$modalities["CR"] = 1;
$modalities["CT"] = 1;
$modalities["MR"] = 1;
$modalities["US"] = 1;
$modalities["NM"] = 1;
$modalities["PET"] = 1;
$modalities["SC"] = 1;
$modalities["XA"] = 1;
$modalities["XRF"] = 1;
$modalities["DX"] = 1;
$modalities["MG"] = 1;
$modalities["PR"] = 1;
$modalities["KO"] = 1;
$modalities["SR"] = 1;
foreach($modalities as $cstore=>$v) {
foreach($as as $accession_number) {
$cmd = "JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144 LANG=en_US.iso-8859-1 /usr/local/dcm4che/dcm4che2/bin/dcmqr -L CDRECORD:10104 ABPACS@localhost:11112 -cmove CDRECORD -qAccessionNumber=${accession_number} -cstore $cstore -cstoredest $dicomdir/DICOMDIR";
exec($cmd, $outputRes);
}
}
$cmd = "/bin/rm -f ${filename}.iso";
exec($cmd, $outputRes);
$cmd = "/usr/bin/genisoimage -iso-level 4 -r -allow-multidot -allow-lowercase -allow-leading-dots -V DICOM -o ${filename}.iso $dicomdir";
exec($cmd, $outputRes);
$cmd = "/bin/rm -rf $dicomdir";
exec($cmd, $outputRes);
readfile("${filename}.iso");
unlink("${filename}.iso");
exit(0);