diff options
author | M.Dinslage <daedra1980@gmail.com> | 2022-03-31 21:28:33 +0100 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2022-04-02 18:19:19 +0700 |
commit | 2280155b907dd46b0d48669f0b80a4966bf47439 (patch) | |
tree | b73f45ab6f125481380f924494bf42b835122b3c /academic | |
parent | 48bc58222411bde2b64c7420cfde85db2c9bbef6 (diff) |
academic/aeskulap: Added (medical image viewer)
Signed-off-by: Dave Woodfall <dave@slackbuilds.org>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'academic')
-rw-r--r-- | academic/aeskulap/README | 8 | ||||
-rw-r--r-- | academic/aeskulap/aeskulap.SlackBuild | 122 | ||||
-rw-r--r-- | academic/aeskulap/aeskulap.info | 10 | ||||
-rw-r--r-- | academic/aeskulap/doinst.sh | 15 | ||||
-rw-r--r-- | academic/aeskulap/newDicomElement.patch | 269 | ||||
-rw-r--r-- | academic/aeskulap/slack-desc | 19 |
6 files changed, 443 insertions, 0 deletions
diff --git a/academic/aeskulap/README b/academic/aeskulap/README new file mode 100644 index 000000000000..5e074de1a015 --- /dev/null +++ b/academic/aeskulap/README @@ -0,0 +1,8 @@ +aeskulap (medical image viewer) + +aeskulap is able to load a series of special images stored in the DICOM +format for review. Additionally Aeskulap is able to query and fetch +DICOM images from archive nodes (also called PACS) over the network. +The goal of this project is to create a full open source replacement +for commercially available DICOM viewers. + diff --git a/academic/aeskulap/aeskulap.SlackBuild b/academic/aeskulap/aeskulap.SlackBuild new file mode 100644 index 000000000000..b5d13b1f9fc9 --- /dev/null +++ b/academic/aeskulap/aeskulap.SlackBuild @@ -0,0 +1,122 @@ +#!/bin/sh + +# Slackware build script for aeskulap + +# Copyright 2011 Federico Lupi, flupi@mclink.it, http://www.mclink.it/personal/MG2508 +# Modified by Matt Dinslage (daedra1980@gmail.com) +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=aeskulap +VERSION=${VERSION:-0.2.2_e710562d} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +patch -p1 < $CWD/newDicomElement.patch + +# point to the correct lib version depending on the arch +sed -i 's/lib -ldcmjpeg/%{_lib} -ldcmjpeg/' configure.ac +libtoolize --force --copy --install +autoreconf --force --install +intltoolize --force --copy --automake + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --disable-static \ + --with-gsettings \ + --build=$ARCH-slackware-linux + +make +make install DESTDIR=$PKG + +rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a \ + ABOUT-NLS COPYING NEWS COPYING.DOC COPYING.LIB ChangeLog INSTALL README \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/academic/aeskulap/aeskulap.info b/academic/aeskulap/aeskulap.info new file mode 100644 index 000000000000..4078803b0899 --- /dev/null +++ b/academic/aeskulap/aeskulap.info @@ -0,0 +1,10 @@ +PRGNAM="aeskulap" +VERSION="0.2.2_e710562d" +HOMEPAGE="https://gitlab.com/stefanhusmann/aeskulap" +DOWNLOAD="https://www.dropbox.com/s/84xpkwtgj0r2bd8/aeskulap-0.2.2_e710562d.tar.gz" +MD5SUM="6be6239b2bec4744db7e3b203e29d77f" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="dcmtk" +MAINTAINER="M.Dinslage" +EMAIL="daedra1980@gmail.com" diff --git a/academic/aeskulap/doinst.sh b/academic/aeskulap/doinst.sh new file mode 100644 index 000000000000..09b892d0024b --- /dev/null +++ b/academic/aeskulap/doinst.sh @@ -0,0 +1,15 @@ +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1 + fi +fi + +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -e usr/share/glib-2.0/schemas ]; then + if [ -x /usr/bin/glib-compile-schemas ]; then + /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1 + fi +fi diff --git a/academic/aeskulap/newDicomElement.patch b/academic/aeskulap/newDicomElement.patch new file mode 100644 index 000000000000..4ffc76015bad --- /dev/null +++ b/academic/aeskulap/newDicomElement.patch @@ -0,0 +1,269 @@ +Author: Gert Wollny <gewo@debian.org> +Description: correct code for newDicomElement now being a member of DcmItem +Bug: https://bugs.debian.org/865591 + +--- a/imagepool/netloader.cpp ++++ b/imagepool/netloader.cpp +@@ -102,29 +102,29 @@ bool NetLoader::run() { + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("STUDY"); + query.insert(e); + +- e = newDicomElement(DCM_PatientName); ++ e = DcmItem::newDicomElement(DCM_PatientName); + query.insert(e); + +- e = newDicomElement(DCM_PatientID); ++ e = DcmItem::newDicomElement(DCM_PatientID); + query.insert(e); + +- e = newDicomElement(DCM_StudyDate); ++ e = DcmItem::newDicomElement(DCM_StudyDate); + query.insert(e); + +- e = newDicomElement(DCM_StudyTime); ++ e = DcmItem::newDicomElement(DCM_StudyTime); + query.insert(e); + +- e = newDicomElement(DCM_AccessionNumber); ++ e = DcmItem::newDicomElement(DCM_AccessionNumber); + query.insert(e); + +- e = newDicomElement(DCM_StudyID); ++ e = DcmItem::newDicomElement(DCM_StudyID); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + e->putString(studyinstanceuid.c_str()); + query.insert(e); + +@@ -150,22 +150,22 @@ bool NetLoader::run() { + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("SERIES"); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + e->putString(studyinstanceuid.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SeriesInstanceUID); ++ e = DcmItem::newDicomElement(DCM_SeriesInstanceUID); + e->putString(i->c_str()); + query.insert(e); + +- e = newDicomElement(DCM_Modality); ++ e = DcmItem::newDicomElement(DCM_Modality); + query.insert(e); + +- e = newDicomElement(DCM_SeriesNumber); ++ e = DcmItem::newDicomElement(DCM_SeriesNumber); + query.insert(e); + + std::cout << "C-Move request:" << std::endl; +--- a/imagepool/netquery.cpp ++++ b/imagepool/netquery.cpp +@@ -196,64 +196,64 @@ void query_from_net( + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("STUDY"); + query.insert(e); + +- e = newDicomElement(DCM_SpecificCharacterSet); ++ e = DcmItem::newDicomElement(DCM_SpecificCharacterSet); + e->putString(dicom_enc.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_PatientName); ++ e = DcmItem::newDicomElement(DCM_PatientName); + e->putString(patientsname.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_PatientID); ++ e = DcmItem::newDicomElement(DCM_PatientID); + e->putString(convert_string_to(patientid.c_str(), system_enc).c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SOPClassesInStudy); ++ e = DcmItem::newDicomElement(DCM_SOPClassesInStudy); + query.insert(e); + +- e = newDicomElement(DCM_ModalitiesInStudy); ++ e = DcmItem::newDicomElement(DCM_ModalitiesInStudy); + e->putString(modality.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_PatientBirthDate); ++ e = DcmItem::newDicomElement(DCM_PatientBirthDate); + query.insert(e); + +- e = newDicomElement(DCM_PatientSex); ++ e = DcmItem::newDicomElement(DCM_PatientSex); + query.insert(e); + +- e = newDicomElement(DCM_StudyDate); ++ e = DcmItem::newDicomElement(DCM_StudyDate); + e->putString(date.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_StudyTime); ++ e = DcmItem::newDicomElement(DCM_StudyTime); + query.insert(e); + +- e = newDicomElement(DCM_NumberOfStudyRelatedSeries); ++ e = DcmItem::newDicomElement(DCM_NumberOfStudyRelatedSeries); + query.insert(e); + +- e = newDicomElement(DCM_NumberOfStudyRelatedInstances); ++ e = DcmItem::newDicomElement(DCM_NumberOfStudyRelatedInstances); + query.insert(e); + +- e = newDicomElement(DCM_AccessionNumber); ++ e = DcmItem::newDicomElement(DCM_AccessionNumber); + e->putString(accessionnumber.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_StudyID); ++ e = DcmItem::newDicomElement(DCM_StudyID); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + query.insert(e); + +- e = newDicomElement(DCM_StudyDescription); ++ e = DcmItem::newDicomElement(DCM_StudyDescription); + e->putString(description.c_str()); + query.insert(e); + + // StationName not allowed in StudyRoot +- /*e = newDicomElement(DCM_StationName); ++ /*e = DcmItem::newDicomElement(DCM_StationName); + e->putString(station.c_str()); + query.insert(e);*/ + +@@ -284,36 +284,36 @@ void query_series_from_net(const std::st + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("SERIES"); + query.insert(e); + +- e = newDicomElement(DCM_SpecificCharacterSet); ++ e = DcmItem::newDicomElement(DCM_SpecificCharacterSet); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + e->putString(studyinstanceuid.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SeriesInstanceUID); ++ e = DcmItem::newDicomElement(DCM_SeriesInstanceUID); + query.insert(e); + +- e = newDicomElement(DCM_SeriesNumber); ++ e = DcmItem::newDicomElement(DCM_SeriesNumber); + query.insert(e); + +- e = newDicomElement(DCM_Modality); ++ e = DcmItem::newDicomElement(DCM_Modality); + query.insert(e); + +- e = newDicomElement(DCM_SeriesDescription); ++ e = DcmItem::newDicomElement(DCM_SeriesDescription); + query.insert(e); + +- e = newDicomElement(DCM_SeriesTime); ++ e = DcmItem::newDicomElement(DCM_SeriesTime); + query.insert(e); + +- e = newDicomElement(DCM_StationName); ++ e = DcmItem::newDicomElement(DCM_StationName); + query.insert(e); + +- e = newDicomElement(DCM_NumberOfSeriesRelatedInstances); ++ e = DcmItem::newDicomElement(DCM_NumberOfSeriesRelatedInstances); + query.insert(e); + + +@@ -357,22 +357,22 @@ int query_series_instances(const std::st + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("IMAGE"); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + e->putString(studyinstanceuid.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SeriesInstanceUID); ++ e = DcmItem::newDicomElement(DCM_SeriesInstanceUID); + e->putString(seriesinstanceuid.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SOPInstanceUID); ++ e = DcmItem::newDicomElement(DCM_SOPInstanceUID); + query.insert(e); + +- e = newDicomElement(DCM_InstanceNumber); ++ e = DcmItem::newDicomElement(DCM_InstanceNumber); + query.insert(e); + + std::cout << "NEW QUERY:" << std::endl; +@@ -394,21 +394,21 @@ int query_study_series(const std::string + DcmDataset query; + DcmElement* e = NULL; + +- e = newDicomElement(DCM_QueryRetrieveLevel); ++ e = DcmItem::newDicomElement(DCM_QueryRetrieveLevel); + e->putString("SERIES"); + query.insert(e); + +- e = newDicomElement(DCM_StudyInstanceUID); ++ e = DcmItem::newDicomElement(DCM_StudyInstanceUID); + e->putString(studyinstanceuid.c_str()); + query.insert(e); + +- e = newDicomElement(DCM_SeriesInstanceUID); ++ e = DcmItem::newDicomElement(DCM_SeriesInstanceUID); + query.insert(e); + +- e = newDicomElement(DCM_SeriesNumber); ++ e = DcmItem::newDicomElement(DCM_SeriesNumber); + query.insert(e); + +- e = newDicomElement(DCM_Modality); ++ e = DcmItem::newDicomElement(DCM_Modality); + query.insert(e); + + std::cout << "NEW QUERY:" << std::endl; +--- a/imagepool/poolassociation.h ++++ b/imagepool/poolassociation.h +@@ -101,7 +101,7 @@ public: + return false; + } + +- DcmElement *elem = newDicomElement(tag); ++ DcmElement *elem = DcmItem::newDicomElement(tag); + if (elem == NULL) { + printf("cannot create element for tag: (%04x,%04x)", g, e); + return false; diff --git a/academic/aeskulap/slack-desc b/academic/aeskulap/slack-desc new file mode 100644 index 000000000000..5a3a8776e8d1 --- /dev/null +++ b/academic/aeskulap/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +aeskulap: aeskulap (medical image viewer) +aeskulap: +aeskulap: It is able to load a series of special images stored in the DICOM +aeskulap: format for review. Additionally Aeskulap is able to query and fetch +aeskulap: DICOM images from archive nodes (also called PACS) over the network. +aeskulap: The goal of this project is to create a full open source replacement +aeskulap: for commercially available DICOM viewers. +aeskulap: +aeskulap: http://aeskulap.nongnu.org/ +aeskulap: +aeskulap: |