Skip to content

Instantly share code, notes, and snippets.

@ise
Created April 3, 2019 08:32
Show Gist options
  • Save ise/acaf6cf2a6ffd37f71b9d34a2cb689bc to your computer and use it in GitHub Desktop.
Save ise/acaf6cf2a6ffd37f71b9d34a2cb689bc to your computer and use it in GitHub Desktop.
#!/bin/bash
JMARECEIPT_ENV="/etc/jma-receipt/jma-receipt.env"
if [ ! -f ${JMARECEIPT_ENV} ]; then
echo "${JMARECEIPT_ENV} does not found."
exit 1
fi
. $JMARECEIPT_ENV
#--------------------------------------------------------------------------
#
# ORCA「日医標準レセプトソフト」
#
# 薬剤情報マスタの取り込みを行う。
#
# CREATE: 2006/09/26
# UPDATE: 2007/09/20 グループ診療対応
# : 2008/02/14 サーバよりデータのバージョン情報を取得するよう修正
# : 2011/06/08 見直し(コマンド名変更など)
# : 2014/11/17 ver4.8.0対応
# : 2017/01/17 ver5.0.0対応
#
#--------------------------------------------------------------------------
VERSIONFL=${ORCA_DIR}/doc/version
WORKDIR=/tmp/jma-receipt-set-yakujyo-$(date +%Y%m%d)
FTP=http://ftp.orca.med.or.jp/pub/etc
MEDVERSIONFL=medversion.dat
echomsg() {
if [ "${LANG}" = "ja_JP.UTF-8" ] || \
[ "${LANG}" = "ja_JP.UTF8" ] || \
[ "${LANG}" = "ja_JP.utf8" ]; then
if [ -z ${2} ]; then
echo -e ${1}
else
echo -en ${1}
fi
else
if [ -z ${2} ]; then
echo -e `echo ${1} | nkf -eW`
else
echo -en `echo ${1} | nkf -eW`
fi
fi
return 0
}
orcawget () {
#受信ファイル削除
if [ -e ${1} ]; then
rm ${1}
fi
wget -q --passive-ftp ${FTP}/${1}
#接続確認
if [ $? -eq 0 ]; then
# echo "wget end OK"
return 0;
else
return 1;
fi
#ファイルサイズチェック
if [ -s ${1} ]; then
return 0;
else
return 1;
fi
}
cleanup_exit (){
rm -fr ${WORKDIR}
}
trap cleanup_exit EXIT
if [ `whoami` != "orca" ]; then
echomsg "orcaユーザーで実行してください。"
exit 1
fi
# disk space check
VOLSIZE=`df -m /tmp | tail -1 | sed 's/\s\{1,\}/ /g' | cut -d' ' -f4`
if [ -z "${MINSIZE}" ]; then
#set default 500MB
MINSIZE=500
fi
if [ $VOLSIZE -lt $MINSIZE ]; then
echomsg "/tmp の使用可能領域が少なくなっています。処理を中止します。[ ${VOLSIZE}MB / ${MINSIZE}MB ]"
exit 99
fi
# バージョンチェック
VERLIST=`awk '/version/{gsub(/\t| |;/,""); print} ' ${VERSIONFL}`
VERDATA=`echo ${VERLIST} | awk '{i=split($0,arr,"("); print arr[i]} ' `
VERDATA1=`echo ${VERDATA}| awk '{gsub(/[-)]/,""); print } ' `
# echo "VERDATA1=" ${VERDATA1}
if [ "${VERDATA1}" != "0408001" ] && \
[ "${VERDATA1}" != "0500001" ]; then
echomsg "このツールは日レセver5.0.0及び4.8.0用です。"
exit 99
fi
echomsg
# 作業ディレクトリ作成
if ! [ -d ${WORKDIR} ]; then
mkdir -m 755 -p ${WORKDIR}
fi
cd ${WORKDIR}
# センタから薬剤情報データ構造バージョン情報をダウンロード
if orcawget yakujyo/${MEDVERSIONFL} ; then
echomsg
else
echomsg "\nセンタからバージョン情報のダウンロードに失敗しました。"
exit 99
fi
YAKUJYOFL=""
YAKUJYOPHOTOFL=""
medinf=(`ruby -e "ARGF.readlines.each{|l| (min,max,meddata,medphotodata)=l.split(/ /)
if (\"${VERDATA1}\" >= min) and (\"${VERDATA1}\" <= max)
puts meddata + \" \" + medphotodata
exit 0
end
} " ${MEDVERSIONFL}`)
YAKUJYOFL=${medinf[0]}
YAKUJYOPHOTOFL=${medinf[1]}
if [ -z ${YAKUJYOFL} ]; then
echomsg "\n日レセバージョンに対応した薬剤情報データは存在しません。処理を中止します。"
exit 99
fi
echomsg "薬剤情報データの取り込みを行います。"
# センタから薬剤情報データをダウンロード
if orcawget yakujyo/${YAKUJYOFL} ; then
echomsg "\nセンタから薬剤情報データのダウンロードが終了しました。"
else
echomsg "\nセンタから薬剤情報データのダウンロードに失敗しました。"
exit 99
fi
# 薬剤情報データファイルの解凍
echomsg "薬剤情報データを解凍しています。"
tar xfz ${YAKUJYOFL}
# 薬剤情報データを/tmpへコピー
echomsg "薬剤情報データを/tmpにコピーします。"
cp meddata.txt /tmp
if [ ! -d /tmp/medphotodata ]; then
mkdir -m 755 -p /tmp/medphotodata
mkdir -m 755 -p /tmp/medphotodata/medimage
fi
echo "" > /tmp/medphotodata/path
while [ "${REPLY}" != "Y" ] && \
[ "${REPLY}" != "y" ] && \
[ "${REPLY}" != "N" ] && \
[ "${REPLY}" != "n" ];
do
echomsg "薬剤情報のイメージファイルをダウンロードしますか? (y/n)" -n
read REPLY
done
if [ "${REPLY}" = "Y" ] || \
[ "${REPLY}" = "y" ]; then
echomsg "イメージファイルの取り込みを行います。"
if orcawget yakujyo/${YAKUJYOPHOTOFL} ; then
echomsg "\nセンタからイメージファイルのダウンロードが終了しました。"
else
echomsg "\nセンタからイメージファイルのダウンロードに失敗しました。"
exit 99
fi
# イメージファイルの解凍
echomsg "イメージファイルを解凍しています。"
tar xfz ${YAKUJYOPHOTOFL}
# イメージデータを/tmpへコピー
echomsg "イメージファイルを/tmpにコピーします。"
mv medphotodata medimage
mv medimage /tmp/medphotodata
echo "/tmp/medphotodata/" > /tmp/medphotodata/path
fi
# 作業プログラムを複写
# compile COBOL programs
for f in "*.CBL"; do
m=`echo $f | sed 's/CBL$/so/'`
echo -n "Building ${m}..."
${COBOL} ${COBOLFLAGS} -o ${SITELIBDIR}/${m} \
-I . \
-I ${PATCHCOPYDIR} \
-I ${COPYDIR} \
-I ${SITESRCDIR}/cobol/copy \
${f}
echo "done"
done
# 処理終了
echomsg "\n薬剤情報データの取り込み処理はすべて終了しました。"
echomsg "\n説明書に従い薬剤情報マスタの更新処理を行ってください。\n"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment