Compare commits
No commits in common. "master" and "v3.0.0" have entirely different histories.
3
.gitignore
vendored
3
.gitignore
vendored
@ -15,6 +15,3 @@ stepfunctions/*/build
|
|||||||
# python test
|
# python test
|
||||||
.coverage
|
.coverage
|
||||||
.report/
|
.report/
|
||||||
|
|
||||||
# log
|
|
||||||
.log
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
# EC2インスタンス管理資材
|
|
||||||
|
|
||||||
## NLBゲートウェイ インスタンス 起動スクリプト
|
|
||||||
|
|
||||||
### 目的
|
|
||||||
|
|
||||||
Merck様のDB接続経路としてのNLBから、Auroraデータベースに踏み台アクセスを行うため、ゲートウェイの機能を提供するEC2インスタンスを稼働している。
|
|
||||||
EC2インスタンス内では、NLBからの任意のポートをAuroraデータベースのポートにフォワーディングするために、`socat`プロセスを動かす必要がある。
|
|
||||||
`socat`プロセスを動かすためのコマンドと、EC2インスタンス起動時にプロセスを実行するためのsystemdの設定を配置している。
|
|
||||||
|
|
||||||
### フォルダ構成
|
|
||||||
|
|
||||||
```txt
|
|
||||||
.
|
|
||||||
├── README.md -- 当ファイル
|
|
||||||
└── gateway
|
|
||||||
├── staging -- ステージング環境用設定
|
|
||||||
│ ├── public1-1 -- ap-northeast-1aのインスタンス要設定
|
|
||||||
│ │ ├── socat-dbconnection-1a.service -- systemdにsocatプロセスを登録するためのファイル
|
|
||||||
│ │ └── socat-portforwarding-1a.sh -- socatでAuroraデータベースにポートフォワーディングするためのシェルスクリプト
|
|
||||||
│ └── public2-1 -- ap-northeast-1dのインスタンス要設定
|
|
||||||
│ ├── socat-dbconnection-1d.service
|
|
||||||
│ └── socat-portforwarding-1d.sh
|
|
||||||
│
|
|
||||||
├── product -- 本番環境用設定
|
|
||||||
│ ├── public1-1
|
|
||||||
│ │ ├── socat-dbconnection-1a.service
|
|
||||||
│ │ └── socat-portforwarding-1a.sh
|
|
||||||
│ └── public2-1
|
|
||||||
│ ├── socat-dbconnection-1d.service
|
|
||||||
│ └── socat-portforwarding-1d.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### ファイル配置方法(両環境共通)
|
|
||||||
|
|
||||||
- 対象のゲートウェイEC2インスタンスにログインする
|
|
||||||
- セッションマネージャーでログインした場合は、`ec2-user`に切り替えること(`sudo su --login ec2-user`)
|
|
||||||
- 以下の操作を実行し、`socat`プロセスを起動するシェルスクリプトを配置する。
|
|
||||||
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
|
|
||||||
- `sudo vi /opt/socat-portforwarding-1a.sh`コマンドを実行する。
|
|
||||||
- `ec2/gateway/<環境名>/public-1-1/socat-portforwarding-1a.sh`の内容をコピペして保存する。
|
|
||||||
- `sudo chmod 774 /opt/socat-portforwarding-1a.sh`コマンドを実行する。
|
|
||||||
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
|
|
||||||
- `sudo vi /opt/socat-portforwarding-1d.sh`コマンドを実行する。
|
|
||||||
- `ec2/gateway/<環境名>/public-2-1/socat-portforwarding-1d.sh`の内容をコピペして保存する。
|
|
||||||
- `sudo chmod 774 /opt/socat-portforwarding-1d.sh`コマンドを実行する。
|
|
||||||
- 以下の操作を実行し、`socat`プロセスを常駐させるためのサービス設定ファイルを配置する。
|
|
||||||
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
|
|
||||||
- `sudo vi /etc/systemd/system/socat-dbconnection-1a.service`コマンドを実行する。
|
|
||||||
- `ec2/gateway/<環境名>/public-1-1/socat-dbconnection-1a.service`の内容をコピペして保存する。
|
|
||||||
- `sudo chmod 774 /etc/systemd/system/socat-dbconnection-1a.service`コマンドを実行する。
|
|
||||||
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
|
|
||||||
- `sudo vi /etc/systemd/system/socat-dbconnection-1d.service`コマンドを実行する。
|
|
||||||
- `ec2/gateway/<環境名>/public-2-1/socat-dbconnection-1d.service`の内容をコピペして保存する。
|
|
||||||
- `sudo chmod 774 /etc/systemd/system/socat-dbconnection-1d.service`コマンドを実行する。
|
|
||||||
- 以下の操作を実行し、`socat`プロセスを起動するスクリプトをsystemdに登録する
|
|
||||||
- **ap-northeast-1aのインスタンス(public-1-1)の場合**
|
|
||||||
- `sudo systemctl enable socat-dbconnection-1a.service`コマンドを実行し、サービスを有効化する。
|
|
||||||
- `sudo systemctl status socat-dbconnection-1a.service`コマンドを実行し、サービスのステータスを確認する。`enabled;`となっていればOK
|
|
||||||
- **ap-northeast-1dのインスタンス(public-2-1)の場合**
|
|
||||||
- `sudo systemctl enable socat-dbconnection-1d.service`コマンドを実行し、サービスを有効化する。
|
|
||||||
- `sudo systemctl status socat-dbconnection-1d.service`コマンドを実行し、サービスのステータスを確認する。`enabled;`となっていればOK
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description = socat-dbconnection-1a
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart = /opt/socat-portforwarding-1a.sh
|
|
||||||
Type = oneshot
|
|
||||||
RemainAfterExit = yes
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy = default.target
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster-instance-1.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description = socat-dbconnection-1d
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart = /opt/socat-portforwarding-1d.sh
|
|
||||||
Type = oneshot
|
|
||||||
RemainAfterExit = yes
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy = default.target
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster-instance-1-ap-northeast-1d.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-product-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description = socat-dbconnection-1a
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart = /opt/socat-portforwarding-1a.sh
|
|
||||||
Type = oneshot
|
|
||||||
RemainAfterExit = yes
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy = default.target
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster-instance-1.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description = socat-dbconnection-1d
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart = /opt/socat-portforwarding-1d.sh
|
|
||||||
Type = oneshot
|
|
||||||
RemainAfterExit = yes
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy = default.target
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
socat tcp4-listen:40001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster-instance-1-ap-northeast-1d.chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
socat tcp4-listen:50001,reuseaddr,fork TCP:mbj-newdwh2021-staging-dbcluster.cluster-chs11qsgoyix.ap-northeast-1.rds.amazonaws.com:3306 &
|
|
||||||
20
ecs/crm-datafetch/.gitignore
vendored
20
ecs/crm-datafetch/.gitignore
vendored
@ -1,20 +0,0 @@
|
|||||||
# Node.jsで実装されたLambdaの管理対象外ファイル群
|
|
||||||
package-lock.json
|
|
||||||
node_modules/
|
|
||||||
# ローカル確認用環境変数ファイル
|
|
||||||
.env
|
|
||||||
# Pythonの仮想環境ファイル
|
|
||||||
.venv
|
|
||||||
# pythonのキャッシュファイル
|
|
||||||
__pycache__/
|
|
||||||
|
|
||||||
# StepFunctionsステートメント定義変換後のフォルダ
|
|
||||||
stepfunctions/*/build
|
|
||||||
**/.vscode/settings.json
|
|
||||||
|
|
||||||
# python test
|
|
||||||
.coverage
|
|
||||||
.report/
|
|
||||||
|
|
||||||
# log
|
|
||||||
.log
|
|
||||||
@ -1,15 +1,15 @@
|
|||||||
FROM python:3.12-slim-bookworm
|
FROM python:3.8
|
||||||
|
|
||||||
ENV TZ="Asia/Tokyo"
|
ENV TZ="Asia/Tokyo"
|
||||||
# pythonの標準出力をバッファリングしないフラグ
|
|
||||||
ENV PYTHONUNBUFFERED=1
|
|
||||||
# pythonのバイトコードを生成しないフラグ
|
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1
|
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
COPY Pipfile Pipfile.lock ./
|
COPY Pipfile Pipfile.lock ./
|
||||||
RUN \
|
RUN \
|
||||||
apt update -y && \
|
apt update -y && \
|
||||||
|
# パッケージのセキュリティアップデートのみを適用するコマンド
|
||||||
|
apt install -y unattended-upgrades && \
|
||||||
|
unattended-upgrades && \
|
||||||
|
pip install --upgrade pip wheel setuptools && \
|
||||||
pip install pipenv --no-cache-dir && \
|
pip install pipenv --no-cache-dir && \
|
||||||
pipenv install --system --deploy && \
|
pipenv install --system --deploy && \
|
||||||
pip uninstall -y pipenv virtualenv-clone virtualenv
|
pip uninstall -y pipenv virtualenv-clone virtualenv
|
||||||
|
|||||||
@ -11,7 +11,7 @@ test = "pytest tests/"
|
|||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
boto3 = "*"
|
boto3 = "*"
|
||||||
simple-salesforce = "==1.12.6"
|
simple-salesforce = "==1.12.4"
|
||||||
tenacity = "*"
|
tenacity = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
@ -23,4 +23,4 @@ pytest-html = "*"
|
|||||||
moto = "*"
|
moto = "*"
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
python_version = "3.12"
|
python_version = "3.8"
|
||||||
|
|||||||
1689
ecs/crm-datafetch/Pipfile.lock
generated
1689
ecs/crm-datafetch/Pipfile.lock
generated
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
### ツールのバージョン
|
### ツールのバージョン
|
||||||
|
|
||||||
- Python 3.12.x
|
- Python 3.8.x
|
||||||
- PipEnv(Pythonの依存関係管理用モジュール)
|
- PipEnv(Pythonの依存関係管理用モジュール)
|
||||||
|
|
||||||
### 開発環境
|
### 開発環境
|
||||||
|
|||||||
@ -12,87 +12,87 @@ from src.system_var.environments import (CRM_BACKUP_BUCKET, CRM_CONFIG_BUCKET,
|
|||||||
RESPONSE_JSON_BACKUP_FOLDER)
|
RESPONSE_JSON_BACKUP_FOLDER)
|
||||||
|
|
||||||
|
|
||||||
class S3Client:
|
class S3Resource:
|
||||||
def __init__(self, bucket_name: str) -> None:
|
def __init__(self, bucket_name: str) -> None:
|
||||||
self.__s3_client = boto3.client(AWS_RESOURCE_S3)
|
self.__s3_resource = boto3.resource(AWS_RESOURCE_S3)
|
||||||
self.__s3_bucket = bucket_name
|
self.__s3_bucket = self.__s3_resource.Bucket(bucket_name)
|
||||||
|
|
||||||
def get_object(self, object_key: str) -> str:
|
def get_object(self, object_key: str) -> str:
|
||||||
response = self.__s3_client.get_object(Bucket=self.__s3_bucket, Key=object_key)
|
response = self.__s3_bucket.Object(object_key).get()
|
||||||
body = response[S3_RESPONSE_BODY].read()
|
body = response[S3_RESPONSE_BODY].read()
|
||||||
return body.decode(S3_CHAR_CODE)
|
return body.decode(S3_CHAR_CODE)
|
||||||
|
|
||||||
def put_object(self, object_key: str, local_file_path: str) -> None:
|
def put_object(self, object_key: str, local_file_path: str) -> None:
|
||||||
self.__s3_client.upload_file(Filename=local_file_path, Bucket=self.__s3_bucket, Key=object_key)
|
self.__s3_bucket.upload_file(Key=object_key, Filename=local_file_path)
|
||||||
return
|
return
|
||||||
|
|
||||||
def copy(self, src_bucket: str, src_key: str, dest_bucket: str, dest_key: str) -> None:
|
def copy(self, src_bucket: str, src_key: str, dest_bucket: str, dest_key: str) -> None:
|
||||||
copy_source = {'Bucket': src_bucket, 'Key': src_key}
|
copy_source = {'Bucket': src_bucket, 'Key': src_key}
|
||||||
self.__s3_client.copy_object(CopySource=copy_source, Bucket=dest_bucket, Key=dest_key)
|
self.__s3_resource.meta.client.copy(copy_source, dest_bucket, dest_key)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class ConfigBucket:
|
class ConfigBucket:
|
||||||
__s3_client: S3Client = None
|
__s3_resource: S3Resource = None
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.__s3_client = S3Client(CRM_CONFIG_BUCKET)
|
self.__s3_resource = S3Resource(CRM_CONFIG_BUCKET)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return CRM_CONFIG_BUCKET
|
return CRM_CONFIG_BUCKET
|
||||||
|
|
||||||
def get_object_info_file(self) -> str:
|
def get_object_info_file(self) -> str:
|
||||||
return self.__s3_client.get_object(f'{OBJECT_INFO_FOLDER}/{OBJECT_INFO_FILENAME}')
|
return self.__s3_resource.get_object(f'{OBJECT_INFO_FOLDER}/{OBJECT_INFO_FILENAME}')
|
||||||
|
|
||||||
def get_last_fetch_datetime_file(self, file_key: str) -> str:
|
def get_last_fetch_datetime_file(self, file_key: str) -> str:
|
||||||
return self.__s3_client.get_object(f'{LAST_FETCH_DATE_FOLDER}/{file_key}')
|
return self.__s3_resource.get_object(f'{LAST_FETCH_DATE_FOLDER}/{file_key}')
|
||||||
|
|
||||||
def put_last_fetch_datetime_file(self, file_key: str, local_file_path: str) -> None:
|
def put_last_fetch_datetime_file(self, file_key: str, local_file_path: str) -> None:
|
||||||
self.__s3_client.put_object(
|
self.__s3_resource.put_object(
|
||||||
f'{LAST_FETCH_DATE_FOLDER}/{file_key}', local_file_path)
|
f'{LAST_FETCH_DATE_FOLDER}/{file_key}', local_file_path)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class DataBucket:
|
class DataBucket:
|
||||||
__s3_client: S3Client = None
|
__s3_resource: S3Resource = None
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.__s3_client = S3Client(IMPORT_DATA_BUCKET)
|
self.__s3_resource = S3Resource(IMPORT_DATA_BUCKET)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return IMPORT_DATA_BUCKET
|
return IMPORT_DATA_BUCKET
|
||||||
|
|
||||||
def put_csv(self, file_key: str, local_file_path: str) -> None:
|
def put_csv(self, file_key: str, local_file_path: str) -> None:
|
||||||
object_key = f'{CRM_IMPORT_DATA_FOLDER}/{file_key}'
|
object_key = f'{CRM_IMPORT_DATA_FOLDER}/{file_key}'
|
||||||
self.__s3_client.put_object(object_key, local_file_path)
|
self.__s3_resource.put_object(object_key, local_file_path)
|
||||||
return
|
return
|
||||||
|
|
||||||
def put_csv_from(self, src_bucket: str, src_key: str):
|
def put_csv_from(self, src_bucket: str, src_key: str):
|
||||||
dest_filename = src_key.split('/')[-1]
|
dest_filename = src_key.split('/')[-1]
|
||||||
self.__s3_client.copy(src_bucket, src_key, str(self), f'{CRM_IMPORT_DATA_FOLDER}/{dest_filename}')
|
self.__s3_resource.copy(src_bucket, src_key, str(self), f'{CRM_IMPORT_DATA_FOLDER}/{dest_filename}')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class BackupBucket:
|
class BackupBucket:
|
||||||
__s3_client: S3Client = None
|
__s3_resource: S3Resource = None
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.__s3_client = S3Client(CRM_BACKUP_BUCKET)
|
self.__s3_resource = S3Resource(CRM_BACKUP_BUCKET)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return CRM_BACKUP_BUCKET
|
return CRM_BACKUP_BUCKET
|
||||||
|
|
||||||
def put_response_json(self, file_key: str, local_file_path: str) -> None:
|
def put_response_json(self, file_key: str, local_file_path: str) -> None:
|
||||||
object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_key}'
|
object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_key}'
|
||||||
self.__s3_client.put_object(object_key, local_file_path)
|
self.__s3_resource.put_object(object_key, local_file_path)
|
||||||
return
|
return
|
||||||
|
|
||||||
def put_csv(self, file_key: str, local_file_path: str) -> None:
|
def put_csv(self, file_key: str, local_file_path: str) -> None:
|
||||||
object_key = f'{CRM_IMPORT_DATA_BACKUP_FOLDER}/{file_key}'
|
object_key = f'{CRM_IMPORT_DATA_BACKUP_FOLDER}/{file_key}'
|
||||||
self.__s3_client.put_object(object_key, local_file_path)
|
self.__s3_resource.put_object(object_key, local_file_path)
|
||||||
return
|
return
|
||||||
|
|
||||||
def put_result_json(self, file_key: str, local_file_path: str) -> None:
|
def put_result_json(self, file_key: str, local_file_path: str) -> None:
|
||||||
object_key = f'{PROCESS_RESULT_FOLDER}/{file_key}'
|
object_key = f'{PROCESS_RESULT_FOLDER}/{file_key}'
|
||||||
self.__s3_client.put_object(object_key, local_file_path)
|
self.__s3_resource.put_object(object_key, local_file_path)
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
from collections import OrderedDict
|
|
||||||
from src.config.objects import TargetObject
|
from src.config.objects import TargetObject
|
||||||
from src.converter.convert_strategy import ConvertStrategyFactory
|
from src.converter.convert_strategy import ConvertStrategyFactory
|
||||||
|
|
||||||
@ -26,11 +25,10 @@ class CSVStringConverter:
|
|||||||
json_object = self.__extract_necessary_props_from(json_object)
|
json_object = self.__extract_necessary_props_from(json_object)
|
||||||
csv_row = []
|
csv_row = []
|
||||||
for column in columns:
|
for column in columns:
|
||||||
column_name = column.upper()
|
v = json_object[column.upper()]
|
||||||
column_value = self.__get_column_value(json_object, column_name)
|
|
||||||
|
|
||||||
convert_strategy = self.__convert_strategy_factory.create(column_value)
|
convert_strategy = self.__convert_strategy_factory.create(v)
|
||||||
converted_value = convert_strategy.convert_value(column_value)
|
converted_value = convert_strategy.convert_value(v)
|
||||||
|
|
||||||
csv_row.append(converted_value)
|
csv_row.append(converted_value)
|
||||||
|
|
||||||
@ -40,31 +38,3 @@ class CSVStringConverter:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f'CSV変換に失敗しました カラム名:[{column}] 行番号: [{i}] エラー内容:[{e}]')
|
f'CSV変換に失敗しました カラム名:[{column}] 行番号: [{i}] エラー内容:[{e}]')
|
||||||
|
|
||||||
def __get_column_value(self, json_object: dict, column_name: str) -> str:
|
|
||||||
# 参照を辿らない通常の項目の場合、カラム名が一致するためそのまま取得
|
|
||||||
if '.' not in column_name:
|
|
||||||
return json_object[column_name]
|
|
||||||
|
|
||||||
# カラム名に`.`が含まれている場合、オブジェクトの参照を辿って終端を取得する
|
|
||||||
relationship_columns = column_name.split('.')
|
|
||||||
return self.__get_column_value_by_relationship(json_object, relationship_columns)
|
|
||||||
|
|
||||||
def __get_column_value_by_relationship(self, json_object: dict, relationship_columns: str, recurs: int = 0) -> str:
|
|
||||||
# 参照関係の終端を取得しきるまで再帰的に深掘りする
|
|
||||||
# REVIEW: 参照の終端の項目型が住所型の場合、レスポンスが辞書型になるため大抵の場合Noneになる
|
|
||||||
relationship_name = relationship_columns[recurs]
|
|
||||||
relationship_item = json_object.get(relationship_name)
|
|
||||||
|
|
||||||
# 項目が取得できなかったらNoneを返す
|
|
||||||
if relationship_item is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
# 参照が辿りきれていない場合、再帰的に深掘りする
|
|
||||||
if type(relationship_item) == dict or type(relationship_item) == OrderedDict:
|
|
||||||
# 取り回しを良くするために、辞書のキーをアッパーケースにしておく
|
|
||||||
relationship_item_upper = {k.upper(): v for k, v in relationship_item.items()}
|
|
||||||
return self.__get_column_value_by_relationship(relationship_item_upper, relationship_columns, recurs + 1)
|
|
||||||
|
|
||||||
# 終端のデータを取得
|
|
||||||
return relationship_item
|
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from src.aws.s3 import BackupBucket, ConfigBucket, DataBucket, S3Resource
|
||||||
from src.aws.s3 import BackupBucket, ConfigBucket, DataBucket, S3Client
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -16,7 +15,7 @@ def s3_test(s3_client, bucket_name):
|
|||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
||||||
class TestS3Client:
|
class TestS3Resource:
|
||||||
|
|
||||||
def test_get_object(self, s3_test, s3_client, bucket_name):
|
def test_get_object(self, s3_test, s3_client, bucket_name):
|
||||||
"""
|
"""
|
||||||
@ -32,7 +31,7 @@ class TestS3Client:
|
|||||||
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
|
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
actual = sut.get_object('hogehoge/test.txt')
|
actual = sut.get_object('hogehoge/test.txt')
|
||||||
|
|
||||||
# Assert
|
# Assert
|
||||||
@ -49,7 +48,7 @@ class TestS3Client:
|
|||||||
"""
|
"""
|
||||||
# Arrange
|
# Arrange
|
||||||
# Act
|
# Act
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
with pytest.raises(Exception):
|
with pytest.raises(Exception):
|
||||||
# Assert
|
# Assert
|
||||||
sut.get_object('hogehoge/test.txt')
|
sut.get_object('hogehoge/test.txt')
|
||||||
@ -69,7 +68,7 @@ class TestS3Client:
|
|||||||
with open(file_path, mode='w') as f:
|
with open(file_path, mode='w') as f:
|
||||||
f.write('aaaaaaaaaaaaaaa')
|
f.write('aaaaaaaaaaaaaaa')
|
||||||
|
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
|
|
||||||
sut.put_object('hogehoge/test.txt', file_path)
|
sut.put_object('hogehoge/test.txt', file_path)
|
||||||
actual = s3_client.get_object(Bucket=bucket_name, Key='hogehoge/test.txt')
|
actual = s3_client.get_object(Bucket=bucket_name, Key='hogehoge/test.txt')
|
||||||
@ -88,7 +87,7 @@ class TestS3Client:
|
|||||||
"""
|
"""
|
||||||
# Arrange
|
# Arrange
|
||||||
# Act
|
# Act
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
with pytest.raises(Exception):
|
with pytest.raises(Exception):
|
||||||
# Assert
|
# Assert
|
||||||
sut.put_object('hogehoge/test.txt', 'aaaaaaaaaaaaaaa')
|
sut.put_object('hogehoge/test.txt', 'aaaaaaaaaaaaaaa')
|
||||||
@ -109,7 +108,7 @@ class TestS3Client:
|
|||||||
s3_client.create_bucket(Bucket=for_copy_bucket)
|
s3_client.create_bucket(Bucket=for_copy_bucket)
|
||||||
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
|
s3_client.put_object(Bucket=bucket_name, Key='hogehoge/test.txt', Body=b'aaaaaaaaaaaaaaa')
|
||||||
|
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
sut.copy(bucket_name, 'hogehoge/test.txt', for_copy_bucket, 'test.txt')
|
sut.copy(bucket_name, 'hogehoge/test.txt', for_copy_bucket, 'test.txt')
|
||||||
|
|
||||||
actual = s3_client.get_object(Bucket=for_copy_bucket, Key='test.txt')
|
actual = s3_client.get_object(Bucket=for_copy_bucket, Key='test.txt')
|
||||||
@ -126,7 +125,7 @@ class TestS3Client:
|
|||||||
"""
|
"""
|
||||||
# Arrange
|
# Arrange
|
||||||
# Act
|
# Act
|
||||||
sut = S3Client(bucket_name)
|
sut = S3Resource(bucket_name)
|
||||||
with pytest.raises(Exception):
|
with pytest.raises(Exception):
|
||||||
# Assert
|
# Assert
|
||||||
sut.copy(bucket_name, 'hogehoge/test.txt', 'for_copy_bucket', 'test.txt')
|
sut.copy(bucket_name, 'hogehoge/test.txt', 'for_copy_bucket', 'test.txt')
|
||||||
@ -141,8 +140,8 @@ class TestS3Client:
|
|||||||
- インスタンス生成時に例外が発生すること
|
- インスタンス生成時に例外が発生すること
|
||||||
"""
|
"""
|
||||||
with pytest.raises(Exception) as e:
|
with pytest.raises(Exception) as e:
|
||||||
S3Client()
|
S3Resource()
|
||||||
assert e.value.args[0] == "S3Client.__init__() missing 1 required positional argument: 'bucket_name'"
|
assert e.value.args[0] == "__init__() missing 1 required positional argument: 'bucket_name'"
|
||||||
|
|
||||||
|
|
||||||
class TestConfigBucket:
|
class TestConfigBucket:
|
||||||
|
|||||||
@ -4,7 +4,8 @@ from datetime import datetime
|
|||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
import pytest
|
import pytest
|
||||||
from moto import mock_aws
|
from moto import mock_s3
|
||||||
|
from py.xml import html # type: ignore
|
||||||
|
|
||||||
from . import docstring_parser
|
from . import docstring_parser
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ def aws_credentials():
|
|||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def s3_client(aws_credentials):
|
def s3_client(aws_credentials):
|
||||||
with mock_aws():
|
with mock_s3():
|
||||||
conn = boto3.client("s3", region_name="us-east-1")
|
conn = boto3.client("s3", region_name="us-east-1")
|
||||||
yield conn
|
yield conn
|
||||||
|
|
||||||
@ -34,18 +35,18 @@ def pytest_html_report_title(report):
|
|||||||
|
|
||||||
def pytest_html_results_table_header(cells):
|
def pytest_html_results_table_header(cells):
|
||||||
del cells[2:]
|
del cells[2:]
|
||||||
cells.insert(3, '<th>Cases</th>')
|
cells.insert(3, html.th("Cases"))
|
||||||
cells.insert(4, '<th>Arranges</th>')
|
cells.insert(4, html.th("Arranges"))
|
||||||
cells.insert(5, '<th>Expects</th>')
|
cells.insert(5, html.th("Expects"))
|
||||||
cells.append('<th class="sortable time" col="time">Time</th>')
|
cells.append(html.th("Time", class_="sortable time", col="time"))
|
||||||
|
|
||||||
|
|
||||||
def pytest_html_results_table_row(report, cells):
|
def pytest_html_results_table_row(report, cells):
|
||||||
del cells[2:]
|
del cells[2:]
|
||||||
cells.insert(3, f'<td><pre>{report.cases}</pre></td>') # 「テスト内容」をレポートに出力
|
cells.insert(3, html.td(html.pre(report.cases))) # 「テスト内容」をレポートに出力
|
||||||
cells.insert(4, f'<td><pre>{report.arranges}</pre></td>') # 「期待結果」をレポートに出力
|
cells.insert(4, html.td(html.pre(report.arranges))) # 「期待結果」をレポートに出力
|
||||||
cells.insert(5, f'<td><pre>{report.expects}</pre></td>') # 「期待結果」をレポートに出力
|
cells.insert(5, html.td(html.pre(report.expects))) # 「期待結果」をレポートに出力
|
||||||
cells.append(f'<td class="col-time">{datetime.now()}</td>') # ついでに「時間」もレポートに出力
|
cells.append(html.td(datetime.now(), class_="col-time")) # ついでに「時間」もレポートに出力
|
||||||
|
|
||||||
|
|
||||||
@pytest.hookimpl(hookwrapper=True)
|
@pytest.hookimpl(hookwrapper=True)
|
||||||
|
|||||||
@ -11,8 +11,7 @@ class TestCSVStringConverter:
|
|||||||
def test_convert(self) -> str:
|
def test_convert(self) -> str:
|
||||||
"""
|
"""
|
||||||
Cases:
|
Cases:
|
||||||
- 入力データがCSV形式の文字列で出力されること
|
入力データがCSV形式の文字列で出力されること
|
||||||
- 参照関係を辿った項目の終端が取得されていること
|
|
||||||
Arranges:
|
Arranges:
|
||||||
- オブジェクト情報の作成
|
- オブジェクト情報の作成
|
||||||
- データの作成
|
- データの作成
|
||||||
@ -36,10 +35,7 @@ class TestCSVStringConverter:
|
|||||||
"RowCause",
|
"RowCause",
|
||||||
"LastModifiedDate",
|
"LastModifiedDate",
|
||||||
"LastModifiedById",
|
"LastModifiedById",
|
||||||
"IsDeleted",
|
"IsDeleted"
|
||||||
"Account.Name",
|
|
||||||
"Account.attributes.type",
|
|
||||||
"Account.attributes.url"
|
|
||||||
],
|
],
|
||||||
"is_skip": False,
|
"is_skip": False,
|
||||||
"is_update_last_fetch_datetime": False,
|
"is_update_last_fetch_datetime": False,
|
||||||
@ -61,8 +57,7 @@ class TestCSVStringConverter:
|
|||||||
('RowCause', 'テストのため1'),
|
('RowCause', 'テストのため1'),
|
||||||
('LastModifiedDate', '2022-06-01T00:00:00.000+0000'),
|
('LastModifiedDate', '2022-06-01T00:00:00.000+0000'),
|
||||||
('LastModifiedById', 1.234567E+6),
|
('LastModifiedById', 1.234567E+6),
|
||||||
('IsDeleted', False),
|
('IsDeleted', False)
|
||||||
('Account', None)
|
|
||||||
]),
|
]),
|
||||||
OrderedDict([
|
OrderedDict([
|
||||||
('attributes', OrderedDict([('type', 'AccountShare'), ('url', '/services/data/v1.0/sobjects/AccountShare/test1')])),
|
('attributes', OrderedDict([('type', 'AccountShare'), ('url', '/services/data/v1.0/sobjects/AccountShare/test1')])),
|
||||||
@ -76,8 +71,7 @@ class TestCSVStringConverter:
|
|||||||
('RowCause', 'テストのため2'),
|
('RowCause', 'テストのため2'),
|
||||||
('LastModifiedDate', '2022-06-02T16:30:30.000+0000'),
|
('LastModifiedDate', '2022-06-02T16:30:30.000+0000'),
|
||||||
('LastModifiedById', 2.23E+0),
|
('LastModifiedById', 2.23E+0),
|
||||||
('IsDeleted', True),
|
('IsDeleted', True)
|
||||||
('Account', None)
|
|
||||||
]),
|
]),
|
||||||
OrderedDict([
|
OrderedDict([
|
||||||
('attributes', OrderedDict([('type', 'AccountShare'), ('url', '/services/data/v1.0/sobjects/AccountShare/test1')])),
|
('attributes', OrderedDict([('type', 'AccountShare'), ('url', '/services/data/v1.0/sobjects/AccountShare/test1')])),
|
||||||
@ -91,26 +85,7 @@ class TestCSVStringConverter:
|
|||||||
('RowCause', 'テストのため3'),
|
('RowCause', 'テストのため3'),
|
||||||
('LastModifiedDate', '2022-06-03T23:50:50.000+0000'),
|
('LastModifiedDate', '2022-06-03T23:50:50.000+0000'),
|
||||||
('LastModifiedById', 3.234567),
|
('LastModifiedById', 3.234567),
|
||||||
('IsDeleted', True),
|
('IsDeleted', False)
|
||||||
('Account', None)
|
|
||||||
]),
|
|
||||||
OrderedDict([
|
|
||||||
('attributes', OrderedDict([('type', 'AccountShare'), ('url', '/services/data/v1.0/sobjects/AccountShare/test1')])),
|
|
||||||
('Id', 'TEST004'),
|
|
||||||
('AccountId', 'test004'),
|
|
||||||
('UserOrGroupId', None),
|
|
||||||
('AccountAccessLevel', 13),
|
|
||||||
('OpportunityAccessLevel', 14),
|
|
||||||
('CaseAccessLevel', 15),
|
|
||||||
('ContactAccessLevel', 16),
|
|
||||||
('RowCause', 'テストのため4'),
|
|
||||||
('LastModifiedDate', '2022-06-03T23:50:50.000+0000'),
|
|
||||||
('LastModifiedById', 3.234567),
|
|
||||||
('IsDeleted', False),
|
|
||||||
('Account', OrderedDict([
|
|
||||||
('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v1.0/sobjects/Account/test4')])),
|
|
||||||
('Name', 'テスト取引先'),
|
|
||||||
]))
|
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -124,13 +99,10 @@ class TestCSVStringConverter:
|
|||||||
# Expects
|
# Expects
|
||||||
expect = [
|
expect = [
|
||||||
["Id", "AccountId", "UserOrGroupId", "AccountAccessLevel", "OpportunityAccessLevel", "CaseAccessLevel",
|
["Id", "AccountId", "UserOrGroupId", "AccountAccessLevel", "OpportunityAccessLevel", "CaseAccessLevel",
|
||||||
"ContactAccessLevel", "RowCause", "LastModifiedDate", "LastModifiedById", "IsDeleted",
|
"ContactAccessLevel", "RowCause", "LastModifiedDate", "LastModifiedById", "IsDeleted"],
|
||||||
"Account.Name", "Account.attributes.type", "Account.attributes.url"],
|
["TEST001", "test001", "", 1, 2, 3, 4, "テストのため1", "2022-06-01 09:00:00", 1234567.0, 0],
|
||||||
["TEST001", "test001", "", 1, 2, 3, 4, "テストのため1", "2022-06-01 09:00:00", 1234567.0, 0, "", "", ""],
|
["TEST002", "test002", "", 5, 6, 7, 8, "テストのため2", "2022-06-03 01:30:30", 2.23, 1],
|
||||||
["TEST002", "test002", "", 5, 6, 7, 8, "テストのため2", "2022-06-03 01:30:30", 2.23, 1, "", "", ""],
|
["TEST003", "test003", "", 9, 10, 11, 12, "テストのため3", "2022-06-04 08:50:50", 3.234567, 0]
|
||||||
["TEST003", "test003", "", 9, 10, 11, 12, "テストのため3", "2022-06-04 08:50:50", 3.234567, 1, "", "", ""],
|
|
||||||
["TEST004", "test004", "", 13, 14, 15, 16, "テストのため4", "2022-06-04 08:50:50",
|
|
||||||
3.234567, 0, "テスト取引先", "Account", "/services/data/v1.0/sobjects/Account/test4"]
|
|
||||||
]
|
]
|
||||||
|
|
||||||
assert actual == expect
|
assert actual == expect
|
||||||
@ -212,12 +184,7 @@ class TestCSVStringConverter:
|
|||||||
('RowCause', 'テストのため3'),
|
('RowCause', 'テストのため3'),
|
||||||
('LastModifiedDate', '2022-06-03T23:50:50.000+0000'),
|
('LastModifiedDate', '2022-06-03T23:50:50.000+0000'),
|
||||||
('LastModifiedById', 3.234567E+6),
|
('LastModifiedById', 3.234567E+6),
|
||||||
('IsDeleted', False),
|
('IsDeleted', False)
|
||||||
('Account', OrderedDict([
|
|
||||||
('attributes', OrderedDict([('type', 'Account'), ('url', '/services/data/v1.0/sobjects/Account/test3')])),
|
|
||||||
('Name', 'テスト取引先'),
|
|
||||||
])
|
|
||||||
),
|
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -286,56 +286,6 @@ class TestSalesforceApiClient:
|
|||||||
actual = sut.fetch_sf_data(soql)
|
actual = sut.fetch_sf_data(soql)
|
||||||
assert len(actual) >= 0
|
assert len(actual) >= 0
|
||||||
|
|
||||||
def test_fetch_sf_data_relationship_object_depth_1(self):
|
|
||||||
"""
|
|
||||||
Cases:
|
|
||||||
参照関係を1回辿るSOQLを実行し、Salesforceからデータが取得できること
|
|
||||||
Arranges:
|
|
||||||
Salesforceの以下のオブジェクトに、レコードを作成する(手作業、コード上では行わない)
|
|
||||||
- RelationShipTest__c
|
|
||||||
Expects:
|
|
||||||
取得結果が期待値と一致すること
|
|
||||||
"""
|
|
||||||
soql = """SELECT
|
|
||||||
Id,
|
|
||||||
Name,
|
|
||||||
RecordTypeId,
|
|
||||||
RecordType.DeveloperName
|
|
||||||
FROM
|
|
||||||
RelationShipTest__c
|
|
||||||
ORDER BY Name ASC
|
|
||||||
"""
|
|
||||||
sut = SalesforceApiClient()
|
|
||||||
|
|
||||||
actual = sut.fetch_sf_data(soql)
|
|
||||||
assert len(actual) > 0
|
|
||||||
assert dict(actual[0])["RecordType"]["DeveloperName"] == "RecordTypeNormal"
|
|
||||||
|
|
||||||
def test_fetch_sf_data_relationship_object_depth_2(self):
|
|
||||||
"""
|
|
||||||
Cases:
|
|
||||||
参照関係を2回辿るSOQLを実行し、Salesforceからデータが取得できること
|
|
||||||
Arranges:
|
|
||||||
Salesforceの以下のオブジェクトに、レコードを作成する(手作業、コード上では行わない)
|
|
||||||
- RelationShipTest__c
|
|
||||||
- RelationShipTest_Child__c
|
|
||||||
Expects:
|
|
||||||
取得結果が期待値と一致すること
|
|
||||||
"""
|
|
||||||
soql = """SELECT
|
|
||||||
Id,
|
|
||||||
Name,
|
|
||||||
RelationShipTest__r.RecordType.DeveloperName
|
|
||||||
FROM
|
|
||||||
RelationShipTest_Child__c
|
|
||||||
ORDER BY Name ASC
|
|
||||||
"""
|
|
||||||
sut = SalesforceApiClient()
|
|
||||||
|
|
||||||
actual = sut.fetch_sf_data(soql)
|
|
||||||
assert len(actual) > 0
|
|
||||||
assert dict(actual[0])["RelationshipTest__r"]["RecordType"]["DeveloperName"] == "RecordTypeNormal"
|
|
||||||
|
|
||||||
def test_fetch_sf_data_by_soql_builder_system_modstamp_to_ge(self):
|
def test_fetch_sf_data_by_soql_builder_system_modstamp_to_ge(self):
|
||||||
"""
|
"""
|
||||||
Cases:
|
Cases:
|
||||||
@ -582,79 +532,6 @@ class TestSalesforceApiClient:
|
|||||||
assert len(actual) == 17
|
assert len(actual) == 17
|
||||||
# 内容の確認は別のケースで行っているため省略
|
# 内容の確認は別のケースで行っているため省略
|
||||||
|
|
||||||
def test_fetch_sf_data_by_soql_builder_relationship_object_depth_1(self):
|
|
||||||
"""
|
|
||||||
Cases:
|
|
||||||
- SOQLBuilderから生成したSOQLで、Salesforceから参照関係を1回辿ったオブジェクト項目が取得できること
|
|
||||||
Arranges:
|
|
||||||
- Salesforceの以下のオブジェクトに、レコードを作成する(手作業、コード上では行わない)
|
|
||||||
- RelationShipTest__c
|
|
||||||
- RelationShipTest_Child__c
|
|
||||||
- LastFetchDatetimeのFromに2000年1月1日を指定する
|
|
||||||
- LastFetchDatetimeのToに2100年12月31日を指定する
|
|
||||||
Expects:
|
|
||||||
取得できたオブジェクトの1件をサンプリング確認し、レコードタイプ名(DeveloperName)が含まれている
|
|
||||||
"""
|
|
||||||
|
|
||||||
execute_datetime = ExecuteDateTime()
|
|
||||||
last_fetch_datetime = LastFetchDatetime({
|
|
||||||
'last_fetch_datetime_from': '2000-01-01T00:00:00.000Z',
|
|
||||||
'last_fetch_datetime_to': '2100-12-31T23:59:59.000Z',
|
|
||||||
}, execute_datetime)
|
|
||||||
target_object = TargetObject({
|
|
||||||
'object_name': 'RelationShipTest__c',
|
|
||||||
'columns': [
|
|
||||||
'Id',
|
|
||||||
'Name',
|
|
||||||
'RecordTypeId',
|
|
||||||
'RecordType.DeveloperName'
|
|
||||||
]
|
|
||||||
}, execute_datetime)
|
|
||||||
soql_builder = SOQLBuilder(target_object, last_fetch_datetime)
|
|
||||||
soql = soql_builder.create_fetch_soql()
|
|
||||||
sut = SalesforceApiClient()
|
|
||||||
|
|
||||||
actual = sut.fetch_sf_data(soql)
|
|
||||||
assert len(actual) > 0
|
|
||||||
assert dict(actual[0])["RecordType"]["DeveloperName"] == "RecordTypeNormal"
|
|
||||||
...
|
|
||||||
|
|
||||||
def test_fetch_sf_data_by_soql_builder_relationship_object_depth_2(self):
|
|
||||||
"""
|
|
||||||
Cases:
|
|
||||||
- SOQLBuilderから生成したSOQLで、Salesforceから参照関係を2回辿ったオブジェクト項目が取得できること
|
|
||||||
Arranges:
|
|
||||||
- Salesforceの以下のオブジェクトに、レコードを作成する(手作業、コード上では行わない)
|
|
||||||
- RelationShipTest__c
|
|
||||||
- RelationShipTest_Child__c
|
|
||||||
- LastFetchDatetimeのFromに2000年1月1日を指定する
|
|
||||||
- LastFetchDatetimeのToに2100年12月31日を指定する
|
|
||||||
Expects:
|
|
||||||
取得できたオブジェクトの1件をサンプリング確認し、レコードタイプ名(DeveloperName)が含まれている
|
|
||||||
"""
|
|
||||||
|
|
||||||
execute_datetime = ExecuteDateTime()
|
|
||||||
last_fetch_datetime = LastFetchDatetime({
|
|
||||||
'last_fetch_datetime_from': '2000-01-01T00:00:00.000Z',
|
|
||||||
'last_fetch_datetime_to': '2100-12-31T23:59:59.000Z',
|
|
||||||
}, execute_datetime)
|
|
||||||
target_object = TargetObject({
|
|
||||||
'object_name': 'RelationShipTest_Child__c',
|
|
||||||
'columns': [
|
|
||||||
'Id',
|
|
||||||
'Name',
|
|
||||||
'RelationShipTest__r.RecordType.DeveloperName'
|
|
||||||
]
|
|
||||||
}, execute_datetime)
|
|
||||||
soql_builder = SOQLBuilder(target_object, last_fetch_datetime)
|
|
||||||
soql = soql_builder.create_fetch_soql()
|
|
||||||
sut = SalesforceApiClient()
|
|
||||||
|
|
||||||
actual = sut.fetch_sf_data(soql)
|
|
||||||
assert len(actual) > 0
|
|
||||||
print(dict(actual[0]))
|
|
||||||
assert dict(actual[0])["RelationshipTest__r"]["RecordType"]["DeveloperName"] == "RecordTypeNormal"
|
|
||||||
|
|
||||||
def test_raise_create_instance_cause_auth_failed(self, monkeypatch):
|
def test_raise_create_instance_cause_auth_failed(self, monkeypatch):
|
||||||
"""
|
"""
|
||||||
Cases:
|
Cases:
|
||||||
|
|||||||
@ -6,7 +6,6 @@ from datetime import datetime, timezone
|
|||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.controller import controller
|
from src.controller import controller
|
||||||
from src.parser.json_parser import JsonParser
|
from src.parser.json_parser import JsonParser
|
||||||
from src.system_var.constants import YYYYMMDDTHHMMSSTZ
|
from src.system_var.constants import YYYYMMDDTHHMMSSTZ
|
||||||
@ -115,10 +114,6 @@ def test_walk_through(s3_test, s3_client, monkeypatch, caplog):
|
|||||||
logger.info(f'##########################')
|
logger.info(f'##########################')
|
||||||
# Assertion
|
# Assertion
|
||||||
log_messages = caplog.messages
|
log_messages = caplog.messages
|
||||||
# ログの目視確認を容易にするため、ローカルファイルに書き出す。
|
|
||||||
with open('crm_datafetch_test_walk_through_diff.log', 'w', encoding='utf8') as f:
|
|
||||||
f.write('\n'.join(log_messages))
|
|
||||||
|
|
||||||
# ループ前のログ確認
|
# ループ前のログ確認
|
||||||
assert 'I-CTRL-01 CRMデータ取得処理を開始します' in log_messages
|
assert 'I-CTRL-01 CRMデータ取得処理を開始します' in log_messages
|
||||||
assert 'I-CTRL-02 データ取得準備処理呼び出し' in log_messages
|
assert 'I-CTRL-02 データ取得準備処理呼び出し' in log_messages
|
||||||
@ -175,10 +170,6 @@ def test_walk_through(s3_test, s3_client, monkeypatch, caplog):
|
|||||||
logger.info(f'##########################')
|
logger.info(f'##########################')
|
||||||
# ログ再取得
|
# ログ再取得
|
||||||
log_messages_all = caplog.messages
|
log_messages_all = caplog.messages
|
||||||
# ログの目視確認を容易にするため、ローカルファイルに書き出す。
|
|
||||||
with open('crm_datafetch_test_walk_through_all.log', 'w', encoding='utf8') as f:
|
|
||||||
f.write('\n'.join(log_messages_all))
|
|
||||||
|
|
||||||
object_info_list_all = object_info_files[1]
|
object_info_list_all = object_info_files[1]
|
||||||
# 開始ログなどはテスト済みなのでチェックを省く
|
# 開始ログなどはテスト済みなのでチェックを省く
|
||||||
for object_info in object_info_list_all['objects']:
|
for object_info in object_info_list_all['objects']:
|
||||||
|
|||||||
@ -99,9 +99,8 @@ class TestCounterObject:
|
|||||||
sut = CounterObject()
|
sut = CounterObject()
|
||||||
sut.describe(1)
|
sut.describe(1)
|
||||||
|
|
||||||
print(str(e.value))
|
|
||||||
# Expects
|
# Expects
|
||||||
assert str(e.value) == 'CounterObject.describe() takes 1 positional argument but 2 were given'
|
assert str(e.value) == 'describe() takes 1 positional argument but 2 were given'
|
||||||
|
|
||||||
def test_increment(self) -> int:
|
def test_increment(self) -> int:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,19 +1,16 @@
|
|||||||
FROM python:3.12-slim-bookworm
|
FROM python:3.9
|
||||||
|
|
||||||
ENV TZ="Asia/Tokyo"
|
ENV TZ="Asia/Tokyo"
|
||||||
# pythonの標準出力をバッファリングしないフラグ
|
|
||||||
ENV PYTHONUNBUFFERED=1
|
|
||||||
# pythonのバイトコードを生成しないフラグ
|
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1
|
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
COPY Pipfile Pipfile.lock ./
|
COPY requirements.txt ./
|
||||||
RUN \
|
RUN \
|
||||||
apt update -y && \
|
apt update -y && \
|
||||||
pip install pipenv --no-cache-dir && \
|
# パッケージのセキュリティアップデートのみを適用するコマンド
|
||||||
pipenv install --system --deploy && \
|
apt install -y unattended-upgrades && \
|
||||||
pip uninstall -y pipenv virtualenv-clone virtualenv
|
unattended-upgrades && \
|
||||||
|
pip install --upgrade pip wheel setuptools && \
|
||||||
|
pip install --no-cache-dir -r requirements.txt
|
||||||
COPY dataimport ./
|
COPY dataimport ./
|
||||||
|
|
||||||
CMD [ "python", "./controller.py" ]
|
CMD [ "python", "./controller.py" ]
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
[[source]]
|
|
||||||
url = "https://pypi.org/simple"
|
|
||||||
verify_ssl = true
|
|
||||||
name = "pypi"
|
|
||||||
|
|
||||||
[packages]
|
|
||||||
boto3 = "*"
|
|
||||||
pymysql = "*"
|
|
||||||
|
|
||||||
[dev-packages]
|
|
||||||
|
|
||||||
[requires]
|
|
||||||
python_version = "3.12"
|
|
||||||
87
ecs/dataimport/Pipfile.lock
generated
87
ecs/dataimport/Pipfile.lock
generated
@ -1,87 +0,0 @@
|
|||||||
{
|
|
||||||
"_meta": {
|
|
||||||
"hash": {
|
|
||||||
"sha256": "1738beec0de1a16f127d9bbeef1c9cb1ffb5b2377aa1aedbce9bfacae0fa1c67"
|
|
||||||
},
|
|
||||||
"pipfile-spec": 6,
|
|
||||||
"requires": {
|
|
||||||
"python_version": "3.12"
|
|
||||||
},
|
|
||||||
"sources": [
|
|
||||||
{
|
|
||||||
"name": "pypi",
|
|
||||||
"url": "https://pypi.org/simple",
|
|
||||||
"verify_ssl": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"boto3": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
|
|
||||||
"sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"markers": "python_version >= '3.9'",
|
|
||||||
"version": "==1.38.32"
|
|
||||||
},
|
|
||||||
"botocore": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
|
|
||||||
"sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.9'",
|
|
||||||
"version": "==1.38.32"
|
|
||||||
},
|
|
||||||
"jmespath": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980",
|
|
||||||
"sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.7'",
|
|
||||||
"version": "==1.0.1"
|
|
||||||
},
|
|
||||||
"pymysql": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
|
|
||||||
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"markers": "python_version >= '3.7'",
|
|
||||||
"version": "==1.1.1"
|
|
||||||
},
|
|
||||||
"python-dateutil": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
|
|
||||||
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
|
||||||
"version": "==2.9.0.post0"
|
|
||||||
},
|
|
||||||
"s3transfer": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
|
|
||||||
"sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.9'",
|
|
||||||
"version": "==0.13.0"
|
|
||||||
},
|
|
||||||
"six": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
|
|
||||||
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
|
||||||
"version": "==1.17.0"
|
|
||||||
},
|
|
||||||
"urllib3": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
|
|
||||||
"sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.9'",
|
|
||||||
"version": "==2.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"develop": {}
|
|
||||||
}
|
|
||||||
@ -4,6 +4,7 @@ import sys
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
|
|
||||||
from common import convert_quotechar, debug_log
|
from common import convert_quotechar, debug_log
|
||||||
from end import end
|
from end import end
|
||||||
from error import error
|
from error import error
|
||||||
@ -40,7 +41,7 @@ LINE_FEED_CODE = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# クラス変数
|
# クラス変数
|
||||||
s3_client = boto3.client('s3')
|
s3_resource = boto3.resource('s3')
|
||||||
|
|
||||||
|
|
||||||
# チェック例外クラス
|
# チェック例外クラス
|
||||||
@ -73,14 +74,16 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-01 - チェック処理を開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-01 - チェック処理を開始します')
|
||||||
|
|
||||||
# データ読込
|
# データ読込
|
||||||
settings_obj_response = s3_client.get_object(Bucket=bucket_name, Key=settings_key)
|
settings_obj = s3_resource.Object(bucket_name, settings_key)
|
||||||
|
settings_response = settings_obj.get()
|
||||||
settings_list = []
|
settings_list = []
|
||||||
for line in io.TextIOWrapper(io.BytesIO(settings_obj_response["Body"].read()), encoding='utf-8'):
|
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
|
||||||
settings_list.append(line.rstrip('\n'))
|
settings_list.append(line.rstrip('\n'))
|
||||||
|
|
||||||
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
||||||
work_obj_response = s3_client.get_object(Bucket=bucket_name, Key=work_key)
|
work_obj = s3_resource.Object(bucket_name, work_key)
|
||||||
work_data = io.TextIOWrapper(io.BytesIO(work_obj_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
work_response = work_obj.get()
|
||||||
|
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
||||||
work_csv_row = []
|
work_csv_row = []
|
||||||
for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])):
|
for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])):
|
||||||
# ヘッダあり、かつ、1行目の場合
|
# ヘッダあり、かつ、1行目の場合
|
||||||
@ -145,16 +148,3 @@ def is_empty_file(work_csv_row: list, settings_list: list):
|
|||||||
return len(work_csv_row[1:]) == 0
|
return len(work_csv_row[1:]) == 0
|
||||||
|
|
||||||
return len(work_csv_row) == 0
|
return len(work_csv_row) == 0
|
||||||
|
|
||||||
|
|
||||||
# ローカル実行用コード
|
|
||||||
# 値はよしなに変えてください
|
|
||||||
# if __name__ == '__main__':
|
|
||||||
# check(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_data_source='データソース名',
|
|
||||||
# target_file_name='targetフォルダ内のファイル名',
|
|
||||||
# settings_key='個別設定ファイル名',
|
|
||||||
# log_info='Info',
|
|
||||||
# mode='i'
|
|
||||||
# )
|
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
from common import debug_log
|
|
||||||
from error import error
|
from error import error
|
||||||
|
from common import debug_log
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
|
LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
|
||||||
@ -13,6 +12,7 @@ DIRECTORY_WARNING = '/warning/'
|
|||||||
|
|
||||||
# クラス変数
|
# クラス変数
|
||||||
s3_client = boto3.client('s3')
|
s3_client = boto3.client('s3')
|
||||||
|
s3_resource = boto3.resource('s3')
|
||||||
|
|
||||||
|
|
||||||
def end(bucket_name, target_data_source, target_file_name, warning_info, log_info, mode):
|
def end(bucket_name, target_data_source, target_file_name, warning_info, log_info, mode):
|
||||||
@ -45,7 +45,8 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
|
|||||||
}
|
}
|
||||||
done_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
done_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
||||||
done_key = target_data_source + DIRECTORY_DONE + done_file_name
|
done_key = target_data_source + DIRECTORY_DONE + done_file_name
|
||||||
s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=done_key)
|
done_obj = s3_resource.Object(bucket_name, done_key)
|
||||||
|
done_obj.copy(copy_source)
|
||||||
s3_client.delete_object(Bucket=bucket_name, Key=work_key)
|
s3_client.delete_object(Bucket=bucket_name, Key=work_key)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-02 - workディレクトリの {target_file_name} をdoneディレクトリに移動しました 移動後ファイル名:{done_file_name}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-02 - workディレクトリの {target_file_name} をdoneディレクトリに移動しました 移動後ファイル名:{done_file_name}')
|
||||||
|
|
||||||
@ -63,20 +64,23 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
|
|||||||
# warningファイルの作成
|
# warningファイルの作成
|
||||||
warning_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}_war.log'
|
warning_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}_war.log'
|
||||||
warning_key = target_data_source + DIRECTORY_WARNING + warning_file_name
|
warning_key = target_data_source + DIRECTORY_WARNING + warning_file_name
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=warning_key, Body=bytes(warning_info, 'utf-8'))
|
warning_obj = s3_resource.Object(bucket_name, warning_key)
|
||||||
|
warning_obj.put(Body=warning_info)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-06 - warningディレクトリに {warning_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-06 - warningディレクトリに {warning_file_name} を作成しました')
|
||||||
|
|
||||||
# warning処理結果ファイルの作成
|
# warning処理結果ファイルの作成
|
||||||
result_warning_file_name = target_file_name + '.warning'
|
result_warning_file_name = target_file_name + '.warning'
|
||||||
result_warning_key = target_data_source + DIRECTORY_TARGET + result_warning_file_name
|
result_warning_key = target_data_source + DIRECTORY_TARGET + result_warning_file_name
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=result_warning_key, Body=b'')
|
result_warning_obj = s3_resource.Object(bucket_name, result_warning_key)
|
||||||
|
result_warning_obj.put(Body='')
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-07 - targetディレクトリに {result_warning_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-07 - targetディレクトリに {result_warning_file_name} を作成しました')
|
||||||
else:
|
else:
|
||||||
# done処理結果ファイルの作成
|
# done処理結果ファイルの作成
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-08 - Warning情報は存在しませんでした')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-08 - Warning情報は存在しませんでした')
|
||||||
result_done_file_name = target_file_name + '.done'
|
result_done_file_name = target_file_name + '.done'
|
||||||
result_done_key = target_data_source + DIRECTORY_TARGET + result_done_file_name
|
result_done_key = target_data_source + DIRECTORY_TARGET + result_done_file_name
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=result_done_key, Body=b'')
|
result_done_obj = s3_resource.Object(bucket_name, result_done_key)
|
||||||
|
result_done_obj.put(Body='')
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-09 - targetディレクトリに {result_done_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-END-09 - targetディレクトリに {result_done_file_name} を作成しました')
|
||||||
|
|
||||||
# ⑤ 終了処理終了ログを出力する
|
# ⑤ 終了処理終了ログを出力する
|
||||||
@ -84,17 +88,3 @@ def end(bucket_name, target_data_source, target_file_name, warning_info, log_inf
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-END-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-END-99 - エラー内容:{e}')
|
||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
|
|
||||||
# ローカル実行用コード
|
|
||||||
# 値はよしなに変えてください
|
|
||||||
# if __name__ == '__main__':
|
|
||||||
# end(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_data_source='データソース名',
|
|
||||||
# target_file_name='targetフォルダ内のファイル',
|
|
||||||
# # warning_info='ワーニング内容', # ワーニングがある場合のテストはこちらを生かす
|
|
||||||
# warning_info='',
|
|
||||||
# log_info='Info',
|
|
||||||
# mode='i'
|
|
||||||
# )
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import sys
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
|
import sys
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
|
LOG_LEVEL = {'i': 'Info', 'e': 'Error'}
|
||||||
@ -11,6 +10,7 @@ DIRECTORY_ERROR = '/error/'
|
|||||||
|
|
||||||
# クラス変数
|
# クラス変数
|
||||||
s3_client = boto3.client('s3')
|
s3_client = boto3.client('s3')
|
||||||
|
s3_resource = boto3.resource('s3')
|
||||||
|
|
||||||
|
|
||||||
def error(bucket_name, target_data_source, target_file_name, log_info):
|
def error(bucket_name, target_data_source, target_file_name, log_info):
|
||||||
@ -34,7 +34,8 @@ def error(bucket_name, target_data_source, target_file_name, log_info):
|
|||||||
}
|
}
|
||||||
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
||||||
error_key = target_data_source + DIRECTORY_ERROR + error_file_name
|
error_key = target_data_source + DIRECTORY_ERROR + error_file_name
|
||||||
s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=error_key)
|
error_obj = s3_resource.Object(bucket_name, error_key)
|
||||||
|
error_obj.copy(copy_source)
|
||||||
s3_client.delete_object(Bucket=bucket_name, Key=work_key)
|
s3_client.delete_object(Bucket=bucket_name, Key=work_key)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-02 - workディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-02 - workディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
|
||||||
|
|
||||||
@ -47,7 +48,8 @@ def error(bucket_name, target_data_source, target_file_name, log_info):
|
|||||||
# ④ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する
|
# ④ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する
|
||||||
result_error_file_name = target_file_name + '.error'
|
result_error_file_name = target_file_name + '.error'
|
||||||
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
|
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=result_error_key, Body=b'')
|
result_error_obj = s3_resource.Object(bucket_name, result_error_key)
|
||||||
|
result_error_obj.put(Body='')
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-04 - targetディレクトリに {result_error_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-04 - targetディレクトリに {result_error_file_name} を作成しました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
|
||||||
@ -79,14 +81,16 @@ def error_doing_file_exists(bucket_name, target_key, target_data_source, target_
|
|||||||
}
|
}
|
||||||
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}'
|
||||||
error_key = target_data_source + DIRECTORY_ERROR + error_file_name
|
error_key = target_data_source + DIRECTORY_ERROR + error_file_name
|
||||||
s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=error_key)
|
error_obj = s3_resource.Object(bucket_name, error_key)
|
||||||
|
error_obj.copy(copy_source)
|
||||||
s3_client.delete_object(Bucket=bucket_name, Key=target_key)
|
s3_client.delete_object(Bucket=bucket_name, Key=target_key)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}')
|
||||||
|
|
||||||
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.exclusive_error」ファイルを作成する
|
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.exclusive_error」ファイルを作成する
|
||||||
result_error_file_name = target_file_name + '.exclusive_error'
|
result_error_file_name = target_file_name + '.exclusive_error'
|
||||||
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
|
result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=result_error_key, Body=b'')
|
result_error_obj = s3_resource.Object(bucket_name, result_error_key)
|
||||||
|
result_error_obj.put(Body='')
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-08 - targetディレクトリに {result_error_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-08 - targetディレクトリに {result_error_file_name} を作成しました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}')
|
||||||
@ -96,24 +100,3 @@ def error_doing_file_exists(bucket_name, target_key, target_data_source, target_
|
|||||||
|
|
||||||
# ⑤ 処理を終了する
|
# ⑤ 処理を終了する
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
# ローカル実行用コード
|
|
||||||
# 値はよしなに変えてください
|
|
||||||
# if __name__ == '__main__':
|
|
||||||
# エラー処理
|
|
||||||
# error(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_data_source='データソース名',
|
|
||||||
# target_file_name='データソース名/target/ファイル名',
|
|
||||||
# log_info='Info'
|
|
||||||
# )
|
|
||||||
|
|
||||||
# doingファイルの有無チェック関数
|
|
||||||
# error_doing_file_exists(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_key='投入データのフルパス',
|
|
||||||
# target_data_source='投入データのディレクトリ名よりデータソースに該当する部分',
|
|
||||||
# target_file_name='投入データのファイル名',
|
|
||||||
# log_info='Info'
|
|
||||||
# )
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import csv
|
from datetime import datetime
|
||||||
|
import boto3
|
||||||
import io
|
import io
|
||||||
|
import csv
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from datetime import datetime
|
from error import error
|
||||||
|
from error import error_doing_file_exists
|
||||||
import boto3
|
|
||||||
from common import debug_log
|
from common import debug_log
|
||||||
from error import error, error_doing_file_exists
|
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
LOG_LEVEL = {"i": 'Info', "e": 'Error'}
|
LOG_LEVEL = {"i": 'Info', "e": 'Error'}
|
||||||
@ -17,6 +17,7 @@ DIRECTORY_SETTINGS = '/settings/'
|
|||||||
|
|
||||||
# クラス変数
|
# クラス変数
|
||||||
s3_client = boto3.client('s3')
|
s3_client = boto3.client('s3')
|
||||||
|
s3_resource = boto3.resource('s3')
|
||||||
|
|
||||||
|
|
||||||
def init(bucket_name, target_key, target_data_source, target_file_name, log_info, mode):
|
def init(bucket_name, target_key, target_data_source, target_file_name, log_info, mode):
|
||||||
@ -59,7 +60,8 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.doing」ファイルを作成する
|
# ③ S3バケット内のtargetディレクトリに、「投入データファイル名.doing」ファイルを作成する
|
||||||
s3_client.put_object(Bucket=bucket_name, Key=doing_key, Body=b'')
|
doing_obj = s3_resource.Object(bucket_name, doing_key)
|
||||||
|
doing_obj.put(Body='')
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-04 - targetディレクトリに {doing_file_name} を作成しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-04 - targetディレクトリに {doing_file_name} を作成しました')
|
||||||
|
|
||||||
# ④ 投入データファイルをS3バケット内のtargetディレクトリから、workディレクトリに移動(コピー削除)する
|
# ④ 投入データファイルをS3バケット内のtargetディレクトリから、workディレクトリに移動(コピー削除)する
|
||||||
@ -68,7 +70,8 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
|
|||||||
'Key': target_key
|
'Key': target_key
|
||||||
}
|
}
|
||||||
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
||||||
s3_client.copy(CopySource=copy_source, Bucket=bucket_name, Key=work_key)
|
work_obj = s3_resource.Object(bucket_name, work_key)
|
||||||
|
work_obj.copy(copy_source)
|
||||||
s3_client.delete_object(Bucket=bucket_name, Key=target_key)
|
s3_client.delete_object(Bucket=bucket_name, Key=target_key)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-05 - 投入データ {target_file_name} をworkディレクトリに移動しました')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-05 - 投入データ {target_file_name} をworkディレクトリに移動しました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -119,8 +122,9 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
|
|||||||
try:
|
try:
|
||||||
# ⑦ 個別設定ファイルを特定する
|
# ⑦ 個別設定ファイルを特定する
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-17 - 個別設定ファイルを検索します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-17 - 個別設定ファイルを検索します')
|
||||||
mapping_obj_response = s3_client.get_object(Bucket=bucket_name, Key=mapping_key)
|
mapping_obj = s3_resource.Object(bucket_name, mapping_key)
|
||||||
mapping_body = io.TextIOWrapper(io.BytesIO(mapping_obj_response["Body"].read()), encoding='utf-8')
|
mapping_response = mapping_obj.get()
|
||||||
|
mapping_body = io.TextIOWrapper(io.BytesIO(mapping_response["Body"].read()), encoding='utf-8')
|
||||||
settings_file_name = ''
|
settings_file_name = ''
|
||||||
for row in csv.reader(mapping_body, delimiter='\t'):
|
for row in csv.reader(mapping_body, delimiter='\t'):
|
||||||
if row:
|
if row:
|
||||||
@ -155,15 +159,3 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-INI-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-INI-99 - エラー内容:{e}')
|
||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
# ローカル実行用コード
|
|
||||||
# 値はよしなに変えてください
|
|
||||||
# if __name__ == '__main__':
|
|
||||||
# init(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_key='データソース名/target/ファイル名',
|
|
||||||
# target_data_source='データソース名',
|
|
||||||
# target_file_name='ファイル名',
|
|
||||||
# log_info='Info',
|
|
||||||
# mode='i'
|
|
||||||
# )
|
|
||||||
|
|||||||
@ -5,9 +5,10 @@ from datetime import datetime
|
|||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
import pymysql
|
import pymysql
|
||||||
|
from pymysql.constants import CLIENT
|
||||||
|
|
||||||
from common import convert_quotechar, debug_log
|
from common import convert_quotechar, debug_log
|
||||||
from error import error
|
from error import error
|
||||||
from pymysql.constants import CLIENT
|
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
DIRECTORY_WORK = '/work/'
|
DIRECTORY_WORK = '/work/'
|
||||||
@ -46,6 +47,7 @@ INVALID_CONFIG_EXCEPTION_MESSAGE = f'個別設定ファイルのインポート
|
|||||||
|
|
||||||
# クラス変数
|
# クラス変数
|
||||||
s3_client = boto3.client('s3')
|
s3_client = boto3.client('s3')
|
||||||
|
s3_resource = boto3.resource('s3')
|
||||||
|
|
||||||
|
|
||||||
def main(bucket_name, target_data_source, target_file_name, settings_key, db_info, log_info, mode):
|
def main(bucket_name, target_data_source, target_file_name, settings_key, db_info, log_info, mode):
|
||||||
@ -89,7 +91,8 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
|
|
||||||
# ④ 個別設定ファイルのロードスキーマのテーブル名に記載されているテーブルをTRUNCATEする
|
# ④ 個別設定ファイルのロードスキーマのテーブル名に記載されているテーブルをTRUNCATEする
|
||||||
# 個別設定ファイルの読み込み
|
# 個別設定ファイルの読み込み
|
||||||
settings_response = s3_client.get_object(Bucket=bucket_name, Key=settings_key)
|
settings_obj = s3_resource.Object(bucket_name, settings_key)
|
||||||
|
settings_response = settings_obj.get()
|
||||||
settings_list = []
|
settings_list = []
|
||||||
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
|
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
|
||||||
settings_list.append(line.rstrip('\n'))
|
settings_list.append(line.rstrip('\n'))
|
||||||
@ -107,7 +110,8 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
# ⑤ 投入データファイルを1行ごとにループする
|
# ⑤ 投入データファイルを1行ごとにループする
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-MAIN-05 - 投入データ {target_file_name} の読み込みを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-MAIN-05 - 投入データ {target_file_name} の読み込みを開始します')
|
||||||
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
work_key = target_data_source + DIRECTORY_WORK + target_file_name
|
||||||
work_response = s3_client.get_object(Bucket=bucket_name, Key=work_key)
|
work_obj = s3_resource.Object(bucket_name, work_key)
|
||||||
|
work_response = work_obj.get()
|
||||||
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
||||||
|
|
||||||
process_count = 0 # 処理件数カウンタ
|
process_count = 0 # 処理件数カウンタ
|
||||||
@ -257,9 +261,10 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
try:
|
try:
|
||||||
if ex_sql_file_exists:
|
if ex_sql_file_exists:
|
||||||
# 拡張SQLファイルからSQL文生成
|
# 拡張SQLファイルからSQL文生成
|
||||||
ex_sql_obj_response = s3_client.get_object(Bucket=bucket_name, Key=ex_sql_key)
|
ex_sqls_obj = s3_resource.Object(bucket_name, ex_sql_key)
|
||||||
|
ex_sql_response = ex_sqls_obj.get()
|
||||||
ex_sql = ''
|
ex_sql = ''
|
||||||
for line in io.TextIOWrapper(io.BytesIO(ex_sql_obj_response["Body"].read()), encoding='utf-8'):
|
for line in io.TextIOWrapper(io.BytesIO(ex_sql_response["Body"].read()), encoding='utf-8'):
|
||||||
ex_sql = f'{ex_sql} {line.rstrip()}'
|
ex_sql = f'{ex_sql} {line.rstrip()}'
|
||||||
|
|
||||||
# トランザクション開始
|
# トランザクション開始
|
||||||
@ -353,18 +358,3 @@ def truncate_judge(settings_list):
|
|||||||
|
|
||||||
class InvalidConfigException(Exception):
|
class InvalidConfigException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
# ローカル実行用コード
|
|
||||||
# 値はよしなに変えてください
|
|
||||||
# if __name__ == '__main__':
|
|
||||||
# DB_INFO = {"host": '127.0.0.1', "name": 'org02', "pass": 'user', "user": 'user'}
|
|
||||||
# main(
|
|
||||||
# bucket_name='バケット名',
|
|
||||||
# target_data_source='投入データのディレクトリ名よりデータソースに該当する部分',
|
|
||||||
# target_file_name='投入データのファイル名',
|
|
||||||
# settings_key='投入データに該当する個別設定ファイルのフルパス',
|
|
||||||
# db_info=DB_INFO,
|
|
||||||
# log_info='info',
|
|
||||||
# mode='i'
|
|
||||||
# )
|
|
||||||
|
|||||||
2
ecs/dataimport/requirements.txt
Normal file
2
ecs/dataimport/requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
boto3
|
||||||
|
PyMySQL
|
||||||
@ -1,12 +0,0 @@
|
|||||||
tests/*
|
|
||||||
.coverage
|
|
||||||
.env
|
|
||||||
.env.example
|
|
||||||
.report/*
|
|
||||||
.vscode/*
|
|
||||||
.pytest_cache/*
|
|
||||||
*/__pychache__/*
|
|
||||||
Dockerfile
|
|
||||||
pytest.ini
|
|
||||||
README.md
|
|
||||||
*.sql
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
DB_HOST=************
|
|
||||||
DB_PORT=3306
|
|
||||||
DB_USERNAME=************
|
|
||||||
DB_PASSWORD=************
|
|
||||||
DB_SCHEMA=*****
|
|
||||||
|
|
||||||
DUMP_BACKUP_BUCKET=************
|
|
||||||
|
|
||||||
LOG_LEVEL=INFO
|
|
||||||
11
ecs/export-dbdump/.gitignore
vendored
11
ecs/export-dbdump/.gitignore
vendored
@ -1,11 +0,0 @@
|
|||||||
.vscode/settings.json
|
|
||||||
.env
|
|
||||||
my.cnf
|
|
||||||
|
|
||||||
# python
|
|
||||||
__pycache__
|
|
||||||
|
|
||||||
# python test
|
|
||||||
.pytest_cache
|
|
||||||
.coverage
|
|
||||||
.report/
|
|
||||||
16
ecs/export-dbdump/.vscode/launch.json
vendored
16
ecs/export-dbdump/.vscode/launch.json
vendored
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
// IntelliSense を使用して利用可能な属性を学べます。
|
|
||||||
// 既存の属性の説明をホバーして表示します。
|
|
||||||
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "(DEBUG) export dbdump",
|
|
||||||
"type": "python",
|
|
||||||
"request": "launch",
|
|
||||||
"program": "entrypoint.py",
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"justMyCode": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"[python]": {
|
|
||||||
"editor.defaultFormatter": null,
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"editor.codeActionsOnSave": {
|
|
||||||
"source.organizeImports": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 自身の環境に合わせて変えてください
|
|
||||||
"python.defaultInterpreterPath": "<pythonインタプリターのパス>",
|
|
||||||
"python.linting.lintOnSave": true,
|
|
||||||
"python.linting.enabled": true,
|
|
||||||
"python.linting.pylintEnabled": false,
|
|
||||||
"python.linting.flake8Enabled": true,
|
|
||||||
"python.linting.flake8Args": [
|
|
||||||
"--max-line-length=200",
|
|
||||||
"--ignore=F541"
|
|
||||||
],
|
|
||||||
"python.formatting.provider": "autopep8",
|
|
||||||
"python.formatting.autopep8Path": "autopep8",
|
|
||||||
"python.formatting.autopep8Args": [
|
|
||||||
"--max-line-length", "200",
|
|
||||||
"--ignore=F541"
|
|
||||||
],
|
|
||||||
"python.testing.pytestArgs": [
|
|
||||||
"tests/batch/ultmarc"
|
|
||||||
],
|
|
||||||
|
|
||||||
"python.testing.unittestEnabled": false,
|
|
||||||
"python.testing.pytestEnabled": true
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
FROM python:3.12-slim-bookworm
|
|
||||||
|
|
||||||
ENV TZ="Asia/Tokyo"
|
|
||||||
# pythonの標準出力をバッファリングしないフラグ
|
|
||||||
ENV PYTHONUNBUFFERED=1
|
|
||||||
# pythonのバイトコードを生成しないフラグ
|
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1
|
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
|
||||||
COPY Pipfile Pipfile.lock ./
|
|
||||||
# mysql-apt-config をdpkgでインストールする際に標準出力に渡す文字列ファイルをコピー
|
|
||||||
COPY mysql_dpkg_selection.txt ./
|
|
||||||
# 必要なパッケージインストール
|
|
||||||
RUN apt update && apt install -y less vim curl wget gzip unzip sudo lsb-release
|
|
||||||
|
|
||||||
# mysqlをインストール
|
|
||||||
RUN \
|
|
||||||
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \
|
|
||||||
apt install -y gnupg && \
|
|
||||||
dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \
|
|
||||||
apt update && \
|
|
||||||
apt install -y mysql-client
|
|
||||||
|
|
||||||
# aws cli v2 のインストール
|
|
||||||
RUN \
|
|
||||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
|
|
||||||
unzip awscliv2.zip && \
|
|
||||||
sudo ./aws/install
|
|
||||||
|
|
||||||
# python関連のライブラリインストール
|
|
||||||
RUN \
|
|
||||||
pip install --upgrade pip wheel setuptools && \
|
|
||||||
pip install pipenv --no-cache-dir && \
|
|
||||||
pipenv install --system --deploy && \
|
|
||||||
pip uninstall -y pipenv virtualenv-clone virtualenv
|
|
||||||
|
|
||||||
COPY src ./src
|
|
||||||
COPY entrypoint.py entrypoint.py
|
|
||||||
|
|
||||||
CMD ["python", "entrypoint.py"]
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
[[source]]
|
|
||||||
url = "https://pypi.org/simple"
|
|
||||||
verify_ssl = true
|
|
||||||
name = "pypi"
|
|
||||||
|
|
||||||
[packages]
|
|
||||||
|
|
||||||
[dev-packages]
|
|
||||||
autopep8 = "*"
|
|
||||||
flake8 = "*"
|
|
||||||
|
|
||||||
[requires]
|
|
||||||
python_version = "3.12"
|
|
||||||
|
|
||||||
[pipenv]
|
|
||||||
allow_prereleases = true
|
|
||||||
63
ecs/export-dbdump/Pipfile.lock
generated
63
ecs/export-dbdump/Pipfile.lock
generated
@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
"_meta": {
|
|
||||||
"hash": {
|
|
||||||
"sha256": "2f7808325e11704ced6ad10c85e1d583663a03d7ccabaa9696ab1fe133a6b30c"
|
|
||||||
},
|
|
||||||
"pipfile-spec": 6,
|
|
||||||
"requires": {
|
|
||||||
"python_version": "3.12"
|
|
||||||
},
|
|
||||||
"sources": [
|
|
||||||
{
|
|
||||||
"name": "pypi",
|
|
||||||
"url": "https://pypi.org/simple",
|
|
||||||
"verify_ssl": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"default": {},
|
|
||||||
"develop": {
|
|
||||||
"autopep8": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758",
|
|
||||||
"sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"markers": "python_version >= '3.9'",
|
|
||||||
"version": "==2.3.2"
|
|
||||||
},
|
|
||||||
"flake8": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a",
|
|
||||||
"sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"
|
|
||||||
],
|
|
||||||
"index": "pypi",
|
|
||||||
"markers": "python_full_version >= '3.8.1'",
|
|
||||||
"version": "==7.1.2"
|
|
||||||
},
|
|
||||||
"mccabe": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325",
|
|
||||||
"sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.6'",
|
|
||||||
"version": "==0.7.0"
|
|
||||||
},
|
|
||||||
"pycodestyle": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
|
|
||||||
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.8'",
|
|
||||||
"version": "==2.12.1"
|
|
||||||
},
|
|
||||||
"pyflakes": {
|
|
||||||
"hashes": [
|
|
||||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
|
||||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
|
||||||
],
|
|
||||||
"markers": "python_version >= '3.8'",
|
|
||||||
"version": "==3.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
# 【共通】DBダンプ取得
|
|
||||||
|
|
||||||
## 概要
|
|
||||||
|
|
||||||
当処理は特定の機能で利用するものではなく、共通処理として要件に応じて実行することを想定している。
|
|
||||||
|
|
||||||
## 環境情報
|
|
||||||
|
|
||||||
- Python 3.9
|
|
||||||
- MySQL 8.23
|
|
||||||
- VSCode
|
|
||||||
|
|
||||||
## 環境構築
|
|
||||||
|
|
||||||
- Python の構築
|
|
||||||
|
|
||||||
- Merck_NewDWH 開発 2021 の Wiki、[Python 環境構築](https://nds-tyo.backlog.com/alias/wiki/1874930)を参照
|
|
||||||
- 「Pipenv の導入」までを行っておくこと
|
|
||||||
- 構築完了後、プロジェクト配下で以下のコマンドを実行し、Python の仮想環境を作成する
|
|
||||||
- `pipenv install --dev --python <pyenvでインストールしたpythonバージョン>`
|
|
||||||
- この手順で出力される仮想環境のパスは、後述する VSCode の設定手順で使用するため、控えておく
|
|
||||||
|
|
||||||
- MySQL の環境構築
|
|
||||||
- Windows の場合、以下のリンクからダウンロードする
|
|
||||||
- <https://dev.mysql.com/downloads/installer/>
|
|
||||||
- Docker を利用する場合、「newsdwh-tools」リポジトリの MySQL 設定を使用すると便利
|
|
||||||
- 「crm-table-to-ddl」フォルダ内で以下のコマンドを実行すると
|
|
||||||
- `docker-compose up -d`
|
|
||||||
- Docker の構築手順は、[Docker のセットアップ手順](https://nds-tyo.backlog.com/alias/wiki/1754332)を参照のこと
|
|
||||||
- データを投入する
|
|
||||||
- 立ち上げたデータベースに「src05」スキーマを作成する
|
|
||||||
- [ローカル開発用データ](https://ndstokyo.sharepoint.com/:f:/r/sites/merck-new-dwh-team/Shared%20Documents/03.NewDWH%E6%A7%8B%E7%AF%89%E3%83%95%E3%82%A7%E3%83%BC%E3%82%BA3/02.%E9%96%8B%E7%99%BA/90.%E9%96%8B%E7%99%BA%E5%85%B1%E6%9C%89/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%8B%E7%99%BA%E7%94%A8%E3%83%87%E3%83%BC%E3%82%BF?csf=1&web=1&e=VVcRUs)をダウンロードし、mysql コマンドを使用して復元する
|
|
||||||
- `mysql -h <ホスト名> -P <ポート> -u <ユーザー名> -p src05 < src05_dump.sql`
|
|
||||||
- 環境変数の設定
|
|
||||||
- 「.env.example」ファイルをコピーし、「.env」ファイルを作成する
|
|
||||||
- 環境変数を設定する。設定内容は PRJ メンバーより共有を受けてください
|
|
||||||
- VSCode の設定
|
|
||||||
- 「.vscode/recommended_settings.json」ファイルをコピーし、「settings.json」ファイルを作成する
|
|
||||||
- 「python.defaultInterpreterPath」を、Python の構築手順で作成した仮想環境のパスに変更する
|
|
||||||
|
|
||||||
## 実行
|
|
||||||
|
|
||||||
- VSCode 上で「F5」キーを押下すると、バッチ処理が起動する。
|
|
||||||
- 「entrypoint.py」が、バッチ処理のエントリーポイント。
|
|
||||||
- 実際の処理は、「src/jobctrl_dbdump.py」で行っている。
|
|
||||||
|
|
||||||
|
|
||||||
## フォルダ構成(工事中)
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
"""【共通】DBダンプ取得処理のエントリーポイント"""
|
|
||||||
from src import jobctrl_dbdump
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
try:
|
|
||||||
exit(jobctrl_dbdump.exec())
|
|
||||||
except Exception:
|
|
||||||
# エラーが起きても、正常系のコードで返す。
|
|
||||||
# エラーが起きた事実はbatch_process内でログを出す。
|
|
||||||
exit(0)
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
1
|
|
||||||
1
|
|
||||||
4
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
"""DBダンプ取得"""
|
|
||||||
|
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
from src.logging.get_logger import get_logger
|
|
||||||
from src.system_var import constants, environment
|
|
||||||
|
|
||||||
logger = get_logger('DBダンプ取得')
|
|
||||||
|
|
||||||
|
|
||||||
def exec():
|
|
||||||
try:
|
|
||||||
logger.info('DBダンプ取得:開始')
|
|
||||||
|
|
||||||
# 事前処理(共通処理としては空振りする)
|
|
||||||
_pre_exec()
|
|
||||||
|
|
||||||
# メイン処理
|
|
||||||
# MySQL接続情報を作成する
|
|
||||||
my_cnf_file_content = f"""
|
|
||||||
[client]
|
|
||||||
user={environment.DB_USERNAME}
|
|
||||||
password={environment.DB_PASSWORD}
|
|
||||||
host={environment.DB_HOST}
|
|
||||||
"""
|
|
||||||
# my.cnfファイルのパス
|
|
||||||
my_cnf_path = os.path.join('my.cnf')
|
|
||||||
|
|
||||||
# my.cnfファイルを生成する
|
|
||||||
with open(my_cnf_path, 'w') as f:
|
|
||||||
f.write(textwrap.dedent(my_cnf_file_content)[1:-1])
|
|
||||||
|
|
||||||
# ファイルのパーミッションが強いとmysqldumpコマンドが実行できないため
|
|
||||||
# my.cnfファイルのパーミッションをread-onlyに設定
|
|
||||||
os.chmod(my_cnf_path, 0o444)
|
|
||||||
|
|
||||||
dt_now = datetime.datetime.now()
|
|
||||||
converted_value = dt_now.strftime('%Y%m%d%H%M%S%f')
|
|
||||||
dump_file_name = f'backup_rds_{environment.DB_SCHEMA}_{converted_value}.gz'
|
|
||||||
s3_file_path = f's3://{environment.DUMP_BACKUP_BUCKET}/{constants.DUMP_BACKUP_FOLDER}/{dt_now.year}/{dt_now.strftime("%m")}/{dt_now.strftime("%d")}/{dump_file_name}'
|
|
||||||
|
|
||||||
# mysqldumpコマンドを実行し、dumpを取得する
|
|
||||||
command = [
|
|
||||||
'mysqldump',
|
|
||||||
f'--defaults-file={my_cnf_path}',
|
|
||||||
'-P',
|
|
||||||
f"{environment.DB_PORT}",
|
|
||||||
'--no-tablespaces',
|
|
||||||
'--skip-column-statistics',
|
|
||||||
'--single-transaction',
|
|
||||||
'--set-gtid-purged=OFF',
|
|
||||||
environment.DB_SCHEMA
|
|
||||||
]
|
|
||||||
|
|
||||||
mysqldump_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
||||||
# gzipコマンドを実行してdump結果を圧縮する
|
|
||||||
gzip_process = subprocess.Popen(['gzip', '-c'], stdin=mysqldump_process.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
||||||
# aws s3 cpコマンドを実行してアップロードする
|
|
||||||
s3_cp_process = subprocess.Popen(['aws', 's3', 'cp', '-', s3_file_path], stdin=gzip_process.stdout, stderr=subprocess.PIPE)
|
|
||||||
# mysqldumpの標準出力をgzipに接続したため、標準出力をクローズする
|
|
||||||
mysqldump_process.stdout.close()
|
|
||||||
# gzipの標準出力をaws s3 cpに接続したため、標準出力をクローズする
|
|
||||||
gzip_process.stdout.close()
|
|
||||||
|
|
||||||
# パイプラインを実行し、エラーハンドリング
|
|
||||||
_, error = mysqldump_process.communicate()
|
|
||||||
if mysqldump_process.returncode != 0:
|
|
||||||
raise Exception(f'`mysqldump`実行時にエラーが発生しました。{"" if error is None else error.decode("utf-8")}')
|
|
||||||
|
|
||||||
_, error = gzip_process.communicate()
|
|
||||||
if gzip_process.returncode != 0:
|
|
||||||
raise Exception(f'`gzip`実行時にエラーが発生しました。{"" if error is None else error.decode("utf-8")}')
|
|
||||||
|
|
||||||
_, error = s3_cp_process.communicate()
|
|
||||||
if s3_cp_process.returncode != 0:
|
|
||||||
raise Exception(f'`aws s3 cp`実行時にエラーが発生しました。{"" if error is None else error.decode("utf-8")}')
|
|
||||||
|
|
||||||
# 事後処理(共通処理としては空振りする)
|
|
||||||
_post_exec()
|
|
||||||
|
|
||||||
logger.info('DBダンプ取得:終了(正常終了)')
|
|
||||||
logger.info(f'出力ファイルパス: {s3_file_path}')
|
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.exception(f'DBダンプ取得中に想定外のエラーが発生しました :{e}')
|
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
|
||||||
|
|
||||||
def _pre_exec():
|
|
||||||
"""
|
|
||||||
ダンプ復元 事前処理
|
|
||||||
共通機能としては事前処理を実装しない。
|
|
||||||
事前処理が必要なダンプ復元処理を実装する場合、当ロジックをコピーする。
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _post_exec():
|
|
||||||
"""
|
|
||||||
ダンプ復元 事後処理
|
|
||||||
共通機能としては事後処理を実装しない。
|
|
||||||
事後処理が必要なダンプ復元処理を実装する場合、当ロジックをコピーする。
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
import logging
|
|
||||||
|
|
||||||
from src.system_var.environment import LOG_LEVEL
|
|
||||||
|
|
||||||
# boto3関連モジュールのログレベルを事前に個別指定し、モジュール内のDEBUGログの表示を抑止する
|
|
||||||
for name in ["boto3", "botocore", "s3transfer", "urllib3"]:
|
|
||||||
logging.getLogger(name).setLevel(logging.WARNING)
|
|
||||||
|
|
||||||
|
|
||||||
def get_logger(log_name: str) -> logging.Logger:
|
|
||||||
"""一意のログ出力モジュールを取得します。
|
|
||||||
|
|
||||||
Args:
|
|
||||||
log_name (str): ロガー名
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
_type_: _description_
|
|
||||||
"""
|
|
||||||
logger = logging.getLogger(log_name)
|
|
||||||
level = logging.getLevelName(LOG_LEVEL)
|
|
||||||
if not isinstance(level, int):
|
|
||||||
level = logging.INFO
|
|
||||||
logger.setLevel(level)
|
|
||||||
|
|
||||||
if not logger.hasHandlers():
|
|
||||||
handler = logging.StreamHandler()
|
|
||||||
logger.addHandler(handler)
|
|
||||||
|
|
||||||
formatter = logging.Formatter(
|
|
||||||
'%(name)s\t[%(levelname)s]\t%(asctime)s\t%(message)s',
|
|
||||||
'%Y-%m-%d %H:%M:%S'
|
|
||||||
)
|
|
||||||
|
|
||||||
for handler in logger.handlers:
|
|
||||||
handler.setFormatter(formatter)
|
|
||||||
|
|
||||||
return logger
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
# バッチ正常終了コード
|
|
||||||
BATCH_EXIT_CODE_SUCCESS = 0
|
|
||||||
|
|
||||||
# ダンプバックアップフォルダー
|
|
||||||
DUMP_BACKUP_FOLDER = 'dump'
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
# Database
|
|
||||||
DB_HOST = os.environ['DB_HOST']
|
|
||||||
DB_PORT = int(os.environ['DB_PORT'])
|
|
||||||
DB_USERNAME = os.environ['DB_USERNAME']
|
|
||||||
DB_PASSWORD = os.environ['DB_PASSWORD']
|
|
||||||
DB_SCHEMA = os.environ['DB_SCHEMA']
|
|
||||||
|
|
||||||
# AWS
|
|
||||||
DUMP_BACKUP_BUCKET = os.environ['DUMP_BACKUP_BUCKET']
|
|
||||||
|
|
||||||
# 初期値がある環境変数
|
|
||||||
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
|
|
||||||
DB_CONNECTION_MAX_RETRY_ATTEMPT = int(os.environ.get('DB_CONNECTION_MAX_RETRY_ATTEMPT', 4))
|
|
||||||
DB_CONNECTION_RETRY_INTERVAL_INIT = int(os.environ.get('DB_CONNECTION_RETRY_INTERVAL', 5))
|
|
||||||
DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MIN_SECONDS', 5))
|
|
||||||
DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MAX_SECONDS', 50))
|
|
||||||
|
|
||||||
460
ecs/jskult-batch-daily/Pipfile.lock
generated
460
ecs/jskult-batch-daily/Pipfile.lock
generated
@ -18,20 +18,82 @@
|
|||||||
"default": {
|
"default": {
|
||||||
"boto3": {
|
"boto3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3faa2c328a61745f3215a63039606a6fcf55d9afe1cc76e3a5e27b9db58cdbf6",
|
"sha256:ae1352d0193aaf90c47d6e57ab054b0b1fabf0fbbe9f51eefec431bf2c3e18f4",
|
||||||
"sha256:b998edac72f6740bd5d9d585cf3880f2dfeb4842e626b34430fd0e9623378011"
|
"sha256:bb8ecd6f86289ceaed566eefc0ce8ac66a85e5954aef115ed4ac602cbe61f101"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.9'",
|
"version": "==1.28.82"
|
||||||
"version": "==1.38.32"
|
|
||||||
},
|
},
|
||||||
"botocore": {
|
"botocore": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0899a090e352cb5eeaae2c7bb52a987b469d23912c7ece86664dfb5c2e074978",
|
"sha256:5f213229348433d0b7b6aac2d9ae2fdd15c4ff9f38c30ea072f5b300bf6c1dcb",
|
||||||
"sha256:64ab919a5d8b74dd73eaac1f978d0e674d11ff3bbe8815c3d2982477be9a082c"
|
"sha256:9d7d8de1789b1ed37b86a2b0a4fcff9fac91deef0548461d411e1626f68ca70c"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==1.38.32"
|
"version": "==1.31.82"
|
||||||
|
},
|
||||||
|
"greenlet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174",
|
||||||
|
"sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd",
|
||||||
|
"sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa",
|
||||||
|
"sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a",
|
||||||
|
"sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec",
|
||||||
|
"sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565",
|
||||||
|
"sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d",
|
||||||
|
"sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c",
|
||||||
|
"sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234",
|
||||||
|
"sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d",
|
||||||
|
"sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546",
|
||||||
|
"sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2",
|
||||||
|
"sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74",
|
||||||
|
"sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de",
|
||||||
|
"sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd",
|
||||||
|
"sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9",
|
||||||
|
"sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3",
|
||||||
|
"sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846",
|
||||||
|
"sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2",
|
||||||
|
"sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353",
|
||||||
|
"sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8",
|
||||||
|
"sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166",
|
||||||
|
"sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206",
|
||||||
|
"sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b",
|
||||||
|
"sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d",
|
||||||
|
"sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe",
|
||||||
|
"sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997",
|
||||||
|
"sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445",
|
||||||
|
"sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0",
|
||||||
|
"sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96",
|
||||||
|
"sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884",
|
||||||
|
"sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6",
|
||||||
|
"sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1",
|
||||||
|
"sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619",
|
||||||
|
"sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94",
|
||||||
|
"sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4",
|
||||||
|
"sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1",
|
||||||
|
"sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63",
|
||||||
|
"sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd",
|
||||||
|
"sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a",
|
||||||
|
"sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376",
|
||||||
|
"sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57",
|
||||||
|
"sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16",
|
||||||
|
"sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e",
|
||||||
|
"sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc",
|
||||||
|
"sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a",
|
||||||
|
"sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c",
|
||||||
|
"sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5",
|
||||||
|
"sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a",
|
||||||
|
"sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72",
|
||||||
|
"sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9",
|
||||||
|
"sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9",
|
||||||
|
"sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e",
|
||||||
|
"sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8",
|
||||||
|
"sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65",
|
||||||
|
"sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064",
|
||||||
|
"sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"
|
||||||
|
],
|
||||||
|
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
|
||||||
|
"version": "==3.0.1"
|
||||||
},
|
},
|
||||||
"jmespath": {
|
"jmespath": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -43,241 +105,217 @@
|
|||||||
},
|
},
|
||||||
"pymysql": {
|
"pymysql": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
|
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96",
|
||||||
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
|
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==1.1.0"
|
||||||
"version": "==1.1.1"
|
|
||||||
},
|
},
|
||||||
"python-dateutil": {
|
"python-dateutil": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
|
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||||
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
"version": "==2.9.0.post0"
|
"version": "==2.8.2"
|
||||||
},
|
},
|
||||||
"s3transfer": {
|
"s3transfer": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0148ef34d6dd964d0d8cf4311b2b21c474693e57c2e069ec708ce043d2b527be",
|
"sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a",
|
||||||
"sha256:f5e6db74eb7776a37208001113ea7aa97695368242b364d73e91c981ac522177"
|
"sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==0.13.0"
|
"version": "==0.7.0"
|
||||||
},
|
},
|
||||||
"six": {
|
"six": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
|
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||||
"sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
|
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
"version": "==1.17.0"
|
"version": "==1.16.0"
|
||||||
},
|
},
|
||||||
"sqlalchemy": {
|
"sqlalchemy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
|
"sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3",
|
||||||
"sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
|
"sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884",
|
||||||
"sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
|
"sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74",
|
||||||
"sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
|
"sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d",
|
||||||
"sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
|
"sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc",
|
||||||
"sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
|
"sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca",
|
||||||
"sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
|
"sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d",
|
||||||
"sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
|
"sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf",
|
||||||
"sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
|
"sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846",
|
||||||
"sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
|
"sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306",
|
||||||
"sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
|
"sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221",
|
||||||
"sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
|
"sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5",
|
||||||
"sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
|
"sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89",
|
||||||
"sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
|
"sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55",
|
||||||
"sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
|
"sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72",
|
||||||
"sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
|
"sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea",
|
||||||
"sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
|
"sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8",
|
||||||
"sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
|
"sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577",
|
||||||
"sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
|
"sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df",
|
||||||
"sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
|
"sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4",
|
||||||
"sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
|
"sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d",
|
||||||
"sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
|
"sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34",
|
||||||
"sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
|
"sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4",
|
||||||
"sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
|
"sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24",
|
||||||
"sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
|
"sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6",
|
||||||
"sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
|
"sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965",
|
||||||
"sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
|
"sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35",
|
||||||
"sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
|
"sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b",
|
||||||
"sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
|
"sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab",
|
||||||
"sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
|
"sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22",
|
||||||
"sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
|
"sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4",
|
||||||
"sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
|
"sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204",
|
||||||
"sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
|
"sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855",
|
||||||
"sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
|
"sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d",
|
||||||
"sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
|
"sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab",
|
||||||
"sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
|
"sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69",
|
||||||
"sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
|
"sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693",
|
||||||
"sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
|
"sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e",
|
||||||
"sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
|
"sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8",
|
||||||
"sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
|
"sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0",
|
||||||
"sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
|
"sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45",
|
||||||
"sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
|
"sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab",
|
||||||
"sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
|
"sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1",
|
||||||
"sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
|
"sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d",
|
||||||
"sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
|
"sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda",
|
||||||
"sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
|
"sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b",
|
||||||
"sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
|
"sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18",
|
||||||
"sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
|
"sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac",
|
||||||
"sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
|
"sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"
|
||||||
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
|
|
||||||
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
|
|
||||||
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
|
|
||||||
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
|
|
||||||
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
|
|
||||||
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
|
|
||||||
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
|
|
||||||
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==2.0.23"
|
||||||
"version": "==2.0.41"
|
|
||||||
},
|
},
|
||||||
"tenacity": {
|
"tenacity": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
|
"sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a",
|
||||||
"sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
|
"sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.9'",
|
"version": "==8.2.3"
|
||||||
"version": "==9.1.2"
|
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
|
"sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0",
|
||||||
"sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
|
"sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==4.14.0"
|
"version": "==4.8.0"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e",
|
"sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07",
|
||||||
"sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
|
"sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
"markers": "python_version < '3.10'",
|
||||||
"version": "==1.26.20"
|
"version": "==1.26.18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"develop": {
|
"develop": {
|
||||||
"autopep8": {
|
"autopep8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
|
"sha256:067959ca4a07b24dbd5345efa8325f5f58da4298dab0dde0443d5ed765de80cb",
|
||||||
"sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
|
"sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.8'",
|
"version": "==2.0.4"
|
||||||
"version": "==2.3.1"
|
|
||||||
},
|
},
|
||||||
"boto3": {
|
"boto3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:9edf49640c79a05b0a72f4c2d1e24dfc164344b680535a645f455ac624dc3680",
|
"sha256:ae1352d0193aaf90c47d6e57ab054b0b1fabf0fbbe9f51eefec431bf2c3e18f4",
|
||||||
"sha256:db58348849a5af061f0f5ec9c3b699da5221ca83354059fdccb798e3ddb6b62a"
|
"sha256:bb8ecd6f86289ceaed566eefc0ce8ac66a85e5954aef115ed4ac602cbe61f101"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.8'",
|
"version": "==1.28.82"
|
||||||
"version": "==1.35.57"
|
|
||||||
},
|
},
|
||||||
"botocore": {
|
"botocore": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:92ddd02469213766872cb2399269dd20948f90348b42bf08379881d5e946cc34",
|
"sha256:5f213229348433d0b7b6aac2d9ae2fdd15c4ff9f38c30ea072f5b300bf6c1dcb",
|
||||||
"sha256:d96306558085baf0bcb3b022d7a8c39c93494f031edb376694d2b2dcd0e81327"
|
"sha256:9d7d8de1789b1ed37b86a2b0a4fcff9fac91deef0548461d411e1626f68ca70c"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==1.35.57"
|
"version": "==1.31.82"
|
||||||
},
|
},
|
||||||
"coverage": {
|
"coverage": {
|
||||||
"extras": [
|
"extras": [
|
||||||
"toml"
|
"toml"
|
||||||
],
|
],
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376",
|
"sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1",
|
||||||
"sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9",
|
"sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63",
|
||||||
"sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111",
|
"sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9",
|
||||||
"sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172",
|
"sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312",
|
||||||
"sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491",
|
"sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3",
|
||||||
"sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546",
|
"sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb",
|
||||||
"sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2",
|
"sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25",
|
||||||
"sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11",
|
"sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92",
|
||||||
"sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08",
|
"sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda",
|
||||||
"sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c",
|
"sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148",
|
||||||
"sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2",
|
"sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6",
|
||||||
"sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963",
|
"sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216",
|
||||||
"sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613",
|
"sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a",
|
||||||
"sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0",
|
"sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640",
|
||||||
"sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db",
|
"sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836",
|
||||||
"sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf",
|
"sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c",
|
||||||
"sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73",
|
"sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f",
|
||||||
"sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117",
|
"sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2",
|
||||||
"sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1",
|
"sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901",
|
||||||
"sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e",
|
"sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed",
|
||||||
"sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522",
|
"sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a",
|
||||||
"sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25",
|
"sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074",
|
||||||
"sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc",
|
"sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc",
|
||||||
"sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea",
|
"sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84",
|
||||||
"sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52",
|
"sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083",
|
||||||
"sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a",
|
"sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f",
|
||||||
"sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07",
|
"sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c",
|
||||||
"sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06",
|
"sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c",
|
||||||
"sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa",
|
"sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637",
|
||||||
"sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901",
|
"sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2",
|
||||||
"sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b",
|
"sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82",
|
||||||
"sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17",
|
"sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f",
|
||||||
"sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0",
|
"sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce",
|
||||||
"sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21",
|
"sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef",
|
||||||
"sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19",
|
"sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f",
|
||||||
"sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5",
|
"sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611",
|
||||||
"sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51",
|
"sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c",
|
||||||
"sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3",
|
"sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76",
|
||||||
"sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3",
|
"sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9",
|
||||||
"sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f",
|
"sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce",
|
||||||
"sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076",
|
"sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9",
|
||||||
"sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a",
|
"sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf",
|
||||||
"sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718",
|
"sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf",
|
||||||
"sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba",
|
"sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9",
|
||||||
"sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e",
|
"sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6",
|
||||||
"sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27",
|
"sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2",
|
||||||
"sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e",
|
"sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a",
|
||||||
"sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09",
|
"sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a",
|
||||||
"sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e",
|
"sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf",
|
||||||
"sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70",
|
"sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738",
|
||||||
"sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f",
|
"sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a",
|
||||||
"sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72",
|
"sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"
|
||||||
"sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a",
|
|
||||||
"sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef",
|
|
||||||
"sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b",
|
|
||||||
"sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b",
|
|
||||||
"sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f",
|
|
||||||
"sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806",
|
|
||||||
"sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b",
|
|
||||||
"sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1",
|
|
||||||
"sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c",
|
|
||||||
"sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"
|
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==7.6.4"
|
"version": "==7.3.2"
|
||||||
},
|
},
|
||||||
"exceptiongroup": {
|
"exceptiongroup": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b",
|
"sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9",
|
||||||
"sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"
|
"sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.11'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==1.2.2"
|
"version": "==1.1.3"
|
||||||
},
|
},
|
||||||
"flake8": {
|
"flake8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
|
"sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
|
||||||
"sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
|
"sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_full_version >= '3.8.1'",
|
"version": "==6.1.0"
|
||||||
"version": "==7.1.1"
|
|
||||||
},
|
},
|
||||||
"iniconfig": {
|
"iniconfig": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -305,69 +343,67 @@
|
|||||||
},
|
},
|
||||||
"packaging": {
|
"packaging": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759",
|
"sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
|
||||||
"sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"
|
"sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==24.2"
|
"version": "==23.2"
|
||||||
},
|
},
|
||||||
"pluggy": {
|
"pluggy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1",
|
"sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12",
|
||||||
"sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"
|
"sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==1.5.0"
|
"version": "==1.3.0"
|
||||||
},
|
},
|
||||||
"pycodestyle": {
|
"pycodestyle": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
|
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f",
|
||||||
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
|
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==2.12.1"
|
"version": "==2.11.1"
|
||||||
},
|
},
|
||||||
"pyflakes": {
|
"pyflakes": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
"sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774",
|
||||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
"sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==3.2.0"
|
"version": "==3.1.0"
|
||||||
},
|
},
|
||||||
"pytest": {
|
"pytest": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181",
|
"sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac",
|
||||||
"sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"
|
"sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.8'",
|
"version": "==7.4.3"
|
||||||
"version": "==8.3.3"
|
|
||||||
},
|
},
|
||||||
"pytest-cov": {
|
"pytest-cov": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35",
|
"sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6",
|
||||||
"sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"
|
"sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.9'",
|
"version": "==4.1.0"
|
||||||
"version": "==6.0.0"
|
|
||||||
},
|
},
|
||||||
"python-dateutil": {
|
"python-dateutil": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
|
"sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
|
||||||
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
"sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
"version": "==2.9.0.post0"
|
"version": "==2.8.2"
|
||||||
},
|
},
|
||||||
"s3transfer": {
|
"s3transfer": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d",
|
"sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a",
|
||||||
"sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"
|
"sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.7'",
|
||||||
"version": "==0.10.3"
|
"version": "==0.7.0"
|
||||||
},
|
},
|
||||||
"six": {
|
"six": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -379,19 +415,19 @@
|
|||||||
},
|
},
|
||||||
"tomli": {
|
"tomli": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
|
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||||
"sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
|
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.11'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==2.0.2"
|
"version": "==2.0.1"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e",
|
"sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07",
|
||||||
"sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
|
"sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.10'",
|
"markers": "python_version < '3.10'",
|
||||||
"version": "==1.26.20"
|
"version": "==1.26.18"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,8 +20,8 @@ def exec():
|
|||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
try:
|
try:
|
||||||
db.connect()
|
db.connect()
|
||||||
db.begin()
|
|
||||||
db.to_jst()
|
db.to_jst()
|
||||||
|
db.begin()
|
||||||
logger.debug('DCF施設統合マスタ作成処理開始')
|
logger.debug('DCF施設統合マスタ作成処理開始')
|
||||||
# COM施設からDCF施設統合マスタに登録
|
# COM施設からDCF施設統合マスタに登録
|
||||||
(is_add_dcf_inst_merge, duplication_inst_records) = _insert_dcf_inst_merge_from_com_inst(db)
|
(is_add_dcf_inst_merge, duplication_inst_records) = _insert_dcf_inst_merge_from_com_inst(db)
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from src.batch.batch_functions import logging_sql
|
from src.batch.batch_functions import logging_sql
|
||||||
from src.batch.common.batch_context import BatchContext
|
from src.batch.common.batch_context import BatchContext
|
||||||
from src.db.database import Database
|
from src.db.database import Database
|
||||||
@ -15,8 +14,8 @@ def exec():
|
|||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
try:
|
try:
|
||||||
db.connect()
|
db.connect()
|
||||||
db.begin()
|
|
||||||
db.to_jst()
|
db.to_jst()
|
||||||
|
db.begin()
|
||||||
logger.debug('DCF施設統合マスタ日次更新処理開始')
|
logger.debug('DCF施設統合マスタ日次更新処理開始')
|
||||||
# DCF施設統合マスタ移行先コードのセット(無効フラグが『0(有効)』)
|
# DCF施設統合マスタ移行先コードのセット(無効フラグが『0(有効)』)
|
||||||
enabled_dst_inst_merge_records = _set_enabled_dct_inst_merge(db)
|
enabled_dst_inst_merge_records = _set_enabled_dct_inst_merge(db)
|
||||||
@ -121,13 +120,12 @@ def _add_ult_ident_presc(db: Database, enabled_dst_inst_merge_records: list[dict
|
|||||||
logger.info('納入先処方元マスタの登録 終了')
|
logger.info('納入先処方元マスタの登録 終了')
|
||||||
|
|
||||||
|
|
||||||
def _select_primary_key_from_emp_chg_inst(db: Database, dcf_inst_cd: str) -> list[dict]:
|
def _select_emp_chg_inst_ta_cd(db: Database, dcf_inst_cd: str) -> list[dict]:
|
||||||
# 従業員担当施設マスタから、DCF施設コードに対応した領域コードと担当者種別コードの取得
|
# 従業員担当施設マスタから、DCF施設コードに対応した領域コードの取得
|
||||||
try:
|
try:
|
||||||
sql = """
|
sql = """
|
||||||
SELECT
|
SELECT
|
||||||
ta_cd,
|
ta_cd
|
||||||
emp_chg_type_cd
|
|
||||||
FROM
|
FROM
|
||||||
src05.emp_chg_inst
|
src05.emp_chg_inst
|
||||||
WHERE
|
WHERE
|
||||||
@ -136,14 +134,14 @@ def _select_primary_key_from_emp_chg_inst(db: Database, dcf_inst_cd: str) -> lis
|
|||||||
AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < end_date
|
AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < end_date
|
||||||
"""
|
"""
|
||||||
params = {'dcf_inst_cd': dcf_inst_cd}
|
params = {'dcf_inst_cd': dcf_inst_cd}
|
||||||
emp_chg_inst_primary_key_records = db.execute_select(sql, params)
|
emp_chg_inst_ta_cd_records = db.execute_select(sql, params)
|
||||||
logging_sql(logger, sql)
|
logging_sql(logger, sql)
|
||||||
logger.info('従業員担当施設マスタから領域コード、担当者種別コードの取得に成功')
|
logger.info('従業員担当施設マスタから領域コードの取得に成功')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug('従業員担当施設マスタから領域コード、担当者種別コードの取得に失敗')
|
logger.debug('従業員担当施設マスタから領域コードの取得に失敗')
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
return emp_chg_inst_primary_key_records
|
return emp_chg_inst_ta_cd_records
|
||||||
|
|
||||||
|
|
||||||
def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]):
|
def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]):
|
||||||
@ -151,10 +149,10 @@ def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]):
|
|||||||
logger.info('従業員担当施設マスタの登録 開始')
|
logger.info('従業員担当施設マスタの登録 開始')
|
||||||
for enabled_merge_record in enabled_dst_inst_merge_records:
|
for enabled_merge_record in enabled_dst_inst_merge_records:
|
||||||
tekiyo_month_first_day = _get_first_day_of_month(enabled_merge_record['tekiyo_month'])
|
tekiyo_month_first_day = _get_first_day_of_month(enabled_merge_record['tekiyo_month'])
|
||||||
emp_chg_inst_primary_key_records = _select_primary_key_from_emp_chg_inst(db, enabled_merge_record['dcf_inst_cd'])
|
emp_chg_inst_ta_cd_records = _select_emp_chg_inst_ta_cd(db, enabled_merge_record['dcf_inst_cd'])
|
||||||
for emp_chg_inst_primary_key_record in emp_chg_inst_primary_key_records:
|
for emp_chg_inst_ta_cd_record in emp_chg_inst_ta_cd_records:
|
||||||
emp_chg_inst_records = _select_emp_chg_inst(db, enabled_merge_record['dcf_inst_cd'], enabled_merge_record['dup_opp_cd'],
|
emp_chg_inst_records = _select_emp_chg_inst(db, enabled_merge_record['dcf_inst_cd'], enabled_merge_record['dup_opp_cd'],
|
||||||
emp_chg_inst_primary_key_record['ta_cd'], emp_chg_inst_primary_key_record['emp_chg_type_cd'])
|
emp_chg_inst_ta_cd_record['ta_cd'])
|
||||||
for emp_chg_inst_row in emp_chg_inst_records:
|
for emp_chg_inst_row in emp_chg_inst_records:
|
||||||
# 重複時相手先コードが存在したかのチェック
|
# 重複時相手先コードが存在したかのチェック
|
||||||
if emp_chg_inst_row['opp_count'] > 0:
|
if emp_chg_inst_row['opp_count'] > 0:
|
||||||
@ -175,7 +173,7 @@ def _add_emp_chg_inst(db: Database, enabled_dst_inst_merge_records: list[dict]):
|
|||||||
emp_chg_inst_row)
|
emp_chg_inst_row)
|
||||||
continue
|
continue
|
||||||
# 適用開始日 ≧ DCF施設統合マスタの適用月度の1日の場合、N(論理削除レコード)に設定する
|
# 適用開始日 ≧ DCF施設統合マスタの適用月度の1日の場合、N(論理削除レコード)に設定する
|
||||||
_update_emp_chg_inst_disabled(db, enabled_merge_record['dcf_inst_cd'], emp_chg_inst_row['ta_cd'], emp_chg_inst_row['emp_chg_type_cd'],
|
_update_emp_chg_inst_disabled(db, enabled_merge_record['dcf_inst_cd'], emp_chg_inst_row['ta_cd'],
|
||||||
emp_chg_inst_row['start_date'])
|
emp_chg_inst_row['start_date'])
|
||||||
|
|
||||||
logger.info('従業員担当施設マスタの登録 終了')
|
logger.info('従業員担当施設マスタの登録 終了')
|
||||||
@ -209,7 +207,7 @@ def _delete_ult_ident_presc(db: Database, start_date: str, ult_ident_presc_row:
|
|||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, emp_chg_type_cd: str, start_date: str):
|
def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, start_date: str):
|
||||||
# emp_chg_instをUPDATE
|
# emp_chg_instをUPDATE
|
||||||
try:
|
try:
|
||||||
elapsed_time = ElapsedTime()
|
elapsed_time = ElapsedTime()
|
||||||
@ -223,10 +221,9 @@ def _update_emp_chg_inst_disabled(db: Database, dcf_inst_cd: str, ta_cd: str, em
|
|||||||
WHERE
|
WHERE
|
||||||
inst_cd = :dcf_inst_cd
|
inst_cd = :dcf_inst_cd
|
||||||
AND ta_cd = :ta_cd
|
AND ta_cd = :ta_cd
|
||||||
AND emp_chg_type_cd = :emp_chg_type_cd
|
|
||||||
AND start_date = :start_date
|
AND start_date = :start_date
|
||||||
"""
|
"""
|
||||||
params = {'dcf_inst_cd': dcf_inst_cd, 'ta_cd': ta_cd, 'emp_chg_type_cd': emp_chg_type_cd, 'start_date': start_date}
|
params = {'dcf_inst_cd': dcf_inst_cd, 'ta_cd': ta_cd, 'start_date': start_date}
|
||||||
res = db.execute(sql, params)
|
res = db.execute(sql, params)
|
||||||
logging_sql(logger, sql)
|
logging_sql(logger, sql)
|
||||||
logger.info(f'従業員担当施設マスタのYorNフラグ更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
|
logger.info(f'従業員担当施設マスタのYorNフラグ更新に成功, {res.rowcount} 行更新 ({elapsed_time.of})')
|
||||||
@ -249,7 +246,6 @@ def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date:
|
|||||||
WHERE
|
WHERE
|
||||||
inst_cd = :dcf_inst_cd
|
inst_cd = :dcf_inst_cd
|
||||||
AND ta_cd = :ta_cd
|
AND ta_cd = :ta_cd
|
||||||
AND emp_chg_type_cd = :emp_chg_type_cd
|
|
||||||
AND emp_cd = :emp_cd
|
AND emp_cd = :emp_cd
|
||||||
AND bu_cd = :bu_cd
|
AND bu_cd = :bu_cd
|
||||||
AND start_date = :start_date
|
AND start_date = :start_date
|
||||||
@ -258,7 +254,6 @@ def _update_emp_chg_inst_end_date(db: Database, dcf_inst_cd: str, last_end_date:
|
|||||||
'end_date': last_end_date,
|
'end_date': last_end_date,
|
||||||
'dcf_inst_cd': dcf_inst_cd,
|
'dcf_inst_cd': dcf_inst_cd,
|
||||||
'ta_cd': emp_chg_inst_row['ta_cd'],
|
'ta_cd': emp_chg_inst_row['ta_cd'],
|
||||||
'emp_chg_type_cd': emp_chg_inst_row['emp_chg_type_cd'],
|
|
||||||
'emp_cd': emp_chg_inst_row['emp_cd'],
|
'emp_cd': emp_chg_inst_row['emp_cd'],
|
||||||
'bu_cd': emp_chg_inst_row['bu_cd'],
|
'bu_cd': emp_chg_inst_row['bu_cd'],
|
||||||
'start_date': emp_chg_inst_row['start_date']
|
'start_date': emp_chg_inst_row['start_date']
|
||||||
@ -281,7 +276,6 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str,
|
|||||||
src05.emp_chg_inst(
|
src05.emp_chg_inst(
|
||||||
inst_cd,
|
inst_cd,
|
||||||
ta_cd,
|
ta_cd,
|
||||||
emp_chg_type_cd,
|
|
||||||
emp_cd,
|
emp_cd,
|
||||||
bu_cd,
|
bu_cd,
|
||||||
start_date,
|
start_date,
|
||||||
@ -296,7 +290,6 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str,
|
|||||||
VALUES(
|
VALUES(
|
||||||
:dup_opp_cd,
|
:dup_opp_cd,
|
||||||
:ta_cd,
|
:ta_cd,
|
||||||
:emp_chg_type_cd,
|
|
||||||
:emp_cd,
|
:emp_cd,
|
||||||
:bu_cd,
|
:bu_cd,
|
||||||
:start_date,
|
:start_date,
|
||||||
@ -312,7 +305,6 @@ def _insert_emp_chg_inst(db: Database, dup_opp_cd: str, set_start_date: str,
|
|||||||
params = {
|
params = {
|
||||||
'dup_opp_cd': dup_opp_cd,
|
'dup_opp_cd': dup_opp_cd,
|
||||||
'ta_cd': emp_chg_inst_row['ta_cd'],
|
'ta_cd': emp_chg_inst_row['ta_cd'],
|
||||||
'emp_chg_type_cd': emp_chg_inst_row['emp_chg_type_cd'],
|
|
||||||
'emp_cd': emp_chg_inst_row['emp_cd'],
|
'emp_cd': emp_chg_inst_row['emp_cd'],
|
||||||
'bu_cd': emp_chg_inst_row['bu_cd'],
|
'bu_cd': emp_chg_inst_row['bu_cd'],
|
||||||
'start_date': set_start_date,
|
'start_date': set_start_date,
|
||||||
@ -526,14 +518,13 @@ def _insert_ult_ident_presc(db: Database, set_Start_Date: str, dup_opp_cd: str,
|
|||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd: str, emp_chg_type_cd: str) -> list[dict]:
|
def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd: str) -> list[dict]:
|
||||||
# emp_chg_instからSELECT
|
# emp_chg_instからSELECT
|
||||||
try:
|
try:
|
||||||
sql = """
|
sql = """
|
||||||
SELECT
|
SELECT
|
||||||
eci.inst_cd,
|
eci.inst_cd,
|
||||||
eci.ta_cd,
|
eci.ta_cd,
|
||||||
eci.emp_chg_type_cd,
|
|
||||||
eci.emp_cd,
|
eci.emp_cd,
|
||||||
eci.bu_cd,
|
eci.bu_cd,
|
||||||
eci.start_date,
|
eci.start_date,
|
||||||
@ -548,18 +539,16 @@ def _select_emp_chg_inst(db: Database, dcf_inst_cd: str, dup_opp_cd: str, ta_cd:
|
|||||||
WHERE
|
WHERE
|
||||||
eciopp.inst_cd = :dup_opp_cd
|
eciopp.inst_cd = :dup_opp_cd
|
||||||
AND eciopp.ta_cd = :ta_cd
|
AND eciopp.ta_cd = :ta_cd
|
||||||
AND eciopp.emp_chg_type_cd = :emp_chg_type_cd
|
|
||||||
) AS opp_count
|
) AS opp_count
|
||||||
FROM
|
FROM
|
||||||
src05.emp_chg_inst AS eci
|
src05.emp_chg_inst AS eci
|
||||||
WHERE
|
WHERE
|
||||||
eci.inst_cd = :dcf_inst_cd
|
eci.inst_cd = :dcf_inst_cd
|
||||||
AND eci.ta_cd = :ta_cd
|
AND eci.ta_cd = :ta_cd
|
||||||
AND eci.emp_chg_type_cd = :emp_chg_type_cd
|
|
||||||
AND eci.enabled_flg = 'Y'
|
AND eci.enabled_flg = 'Y'
|
||||||
AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < eci.end_date
|
AND (SELECT ht.syor_date FROM src05.hdke_tbl AS ht) < eci.end_date
|
||||||
"""
|
"""
|
||||||
params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd, 'ta_cd': ta_cd, 'emp_chg_type_cd': emp_chg_type_cd}
|
params = {'dcf_inst_cd': dcf_inst_cd, 'dup_opp_cd': dup_opp_cd, 'ta_cd': ta_cd}
|
||||||
emp_chg_inst_records = db.execute_select(sql, params)
|
emp_chg_inst_records = db.execute_select(sql, params)
|
||||||
logging_sql(logger, sql)
|
logging_sql(logger, sql)
|
||||||
logger.info('従業員担当施設マスタの取得 成功')
|
logger.info('従業員担当施設マスタの取得 成功')
|
||||||
|
|||||||
@ -53,9 +53,7 @@ def _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db: Database):
|
|||||||
src05.emp_chg_inst_lau
|
src05.emp_chg_inst_lau
|
||||||
SELECT
|
SELECT
|
||||||
inst_cd,
|
inst_cd,
|
||||||
ta_cd,
|
ta_cd,emp_cd,
|
||||||
emp_chg_type_cd,
|
|
||||||
emp_cd,
|
|
||||||
bu_cd,
|
bu_cd,
|
||||||
start_date,
|
start_date,
|
||||||
end_date,
|
end_date,
|
||||||
|
|||||||
@ -86,14 +86,7 @@ def _insert_mst_inst_from_fcl_mst_v(db: Database):
|
|||||||
END AS address,
|
END AS address,
|
||||||
fmv1.postal_cd,
|
fmv1.postal_cd,
|
||||||
fmv1.tel_num,
|
fmv1.tel_num,
|
||||||
CASE
|
LEFT(fmv1.closed_dt, 10),
|
||||||
WHEN
|
|
||||||
fmv1.fcl_type BETWEEN '20' AND '29' THEN LEFT(fmv1.closed_dt, 10)
|
|
||||||
WHEN
|
|
||||||
fmv1.fcl_type IN ('A1', 'A0') AND fmv1.end_date != '9999-12-31' THEN DATE_FORMAT(fmv1.end_date, "%Y-%m-%d")
|
|
||||||
ELSE
|
|
||||||
null
|
|
||||||
END AS delete_date,
|
|
||||||
fmv1.v_inst_cd,
|
fmv1.v_inst_cd,
|
||||||
fmv1.ins_dt,
|
fmv1.ins_dt,
|
||||||
fmv1.upd_dt
|
fmv1.upd_dt
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
from src.batch.common.batch_context import BatchContext
|
from src.batch.common.batch_context import BatchContext
|
||||||
|
from src.batch.laundering import (
|
||||||
|
create_inst_merge_for_laundering, emp_chg_inst_laundering,
|
||||||
|
ult_ident_presc_laundering, sales_results_laundering)
|
||||||
from src.batch.dcf_inst_merge import integrate_dcf_inst_merge
|
from src.batch.dcf_inst_merge import integrate_dcf_inst_merge
|
||||||
from src.batch.laundering import (create_inst_merge_for_laundering,
|
|
||||||
emp_chg_inst_laundering,
|
|
||||||
sales_results_laundering,
|
|
||||||
ult_ident_presc_laundering)
|
|
||||||
from src.logging.get_logger import get_logger
|
from src.logging.get_logger import get_logger
|
||||||
|
|
||||||
batch_context = BatchContext.get_instance()
|
batch_context = BatchContext.get_instance()
|
||||||
|
|||||||
@ -214,9 +214,6 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
# 西暦の取得
|
# 西暦の取得
|
||||||
self.__set_era()
|
self.__set_era()
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
@ -250,10 +247,14 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
# 削除予定理由
|
# 削除予定理由
|
||||||
if len(self.record.drdel_code) > 0:
|
if len(self.record.drdel_code) > 0:
|
||||||
set_clauses.append('delete_sche_reason_cd = :drdel_code')
|
set_clauses.append('delete_sche_reason_cd = :drdel_code')
|
||||||
|
if self.record.drdel_code == '@':
|
||||||
|
self.query_parameter['drdel_code'] = None
|
||||||
|
|
||||||
# 重複時相手先コード
|
# 重複時相手先コード
|
||||||
if len(self.record.opp_dup_code) > 0:
|
if len(self.record.opp_dup_code) > 0:
|
||||||
set_clauses.append('opp_dup_cd = :opp_dup_code')
|
set_clauses.append('opp_dup_cd = :opp_dup_code')
|
||||||
|
if self.record.reptdr_id == '@':
|
||||||
|
self.query_parameter['opp_dup_code'] = None
|
||||||
|
|
||||||
# 医師名(漢字)
|
# 医師名(漢字)
|
||||||
if len(self.record.dr_name) > 0:
|
if len(self.record.dr_name) > 0:
|
||||||
@ -274,6 +275,12 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('birthday_month = :birthday_month')
|
set_clauses.append('birthday_month = :birthday_month')
|
||||||
set_clauses.append('birthday_day = :birthday_day')
|
set_clauses.append('birthday_day = :birthday_day')
|
||||||
set_clauses.append('birthday = :birth_day')
|
set_clauses.append('birthday = :birth_day')
|
||||||
|
if self.record.birthday_era == '@':
|
||||||
|
self.query_parameter['birthday_era'] = None
|
||||||
|
self.query_parameter['birthday_year'] = None
|
||||||
|
self.query_parameter['birthday_month'] = None
|
||||||
|
self.query_parameter['birthday_day'] = None
|
||||||
|
self.query_parameter['birth_day'] = None
|
||||||
|
|
||||||
# 出身都道府県コード
|
# 出身都道府県コード
|
||||||
if len(self.record.home_town_code) > 0:
|
if len(self.record.home_town_code) > 0:
|
||||||
@ -288,6 +295,10 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('grad_year = :grad_year')
|
set_clauses.append('grad_year = :grad_year')
|
||||||
set_clauses.append('grad_era = :grad_yearera')
|
set_clauses.append('grad_era = :grad_yearera')
|
||||||
set_clauses.append('grad_y = :grad_y')
|
set_clauses.append('grad_y = :grad_y')
|
||||||
|
if self.record.grad_yearera == '@':
|
||||||
|
self.query_parameter['grad_yearera'] = None
|
||||||
|
self.query_parameter['grad_year'] = None
|
||||||
|
self.query_parameter['grad_y'] = None
|
||||||
|
|
||||||
# 出身校コード
|
# 出身校コード
|
||||||
if len(self.record.graduniv_code) > 0:
|
if len(self.record.graduniv_code) > 0:
|
||||||
@ -302,10 +313,16 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('drday_era = :drda_yera')
|
set_clauses.append('drday_era = :drda_yera')
|
||||||
set_clauses.append('drday_year = :drday_year')
|
set_clauses.append('drday_year = :drday_year')
|
||||||
set_clauses.append('drday_y = :drday_y')
|
set_clauses.append('drday_y = :drday_y')
|
||||||
|
if self.record.drda_yera == '@':
|
||||||
|
self.query_parameter['drda_yera'] = None
|
||||||
|
self.query_parameter['drday_year'] = None
|
||||||
|
self.query_parameter['drday_y'] = None
|
||||||
|
|
||||||
# 住所不明
|
# 住所不明
|
||||||
if len(self.record.dr_addr_lost_code) > 0:
|
if len(self.record.dr_addr_lost_code) > 0:
|
||||||
set_clauses.append('addr_unknown_reason_cd = :dr_addr_lost_code')
|
set_clauses.append('addr_unknown_reason_cd = :dr_addr_lost_code')
|
||||||
|
if self.record.dr_addr_lost_code == '@':
|
||||||
|
self.query_parameter['dr_addr_lost_code'] = None
|
||||||
|
|
||||||
# 住所
|
# 住所
|
||||||
# 集合項目のいずれかに入力がある場合に更新
|
# 集合項目のいずれかに入力がある場合に更新
|
||||||
@ -323,22 +340,32 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
# 自宅電話番号
|
# 自宅電話番号
|
||||||
if len(self.record.dr_tel) > 0:
|
if len(self.record.dr_tel) > 0:
|
||||||
set_clauses.append('home_phone_number = :dr_tel')
|
set_clauses.append('home_phone_number = :dr_tel')
|
||||||
|
if self.record.dr_tel == '@':
|
||||||
|
self.query_parameter['dr_tel'] = None
|
||||||
|
|
||||||
# 利用停止区分
|
# 利用停止区分
|
||||||
if len(self.record.use_stop_flag) > 0:
|
if len(self.record.use_stop_flag) > 0:
|
||||||
set_clauses.append('use_stop_div = :use_stop_flag')
|
set_clauses.append('use_stop_div = :use_stop_flag')
|
||||||
|
if self.record.use_stop_flag == '@':
|
||||||
|
self.query_parameter['use_stop_flag'] = None
|
||||||
|
|
||||||
# 利用停止理由
|
# 利用停止理由
|
||||||
if len(self.record.use_stopc_ode) > 0:
|
if len(self.record.use_stopc_ode) > 0:
|
||||||
set_clauses.append('use_stop_reason_cd = :use_stopc_ode')
|
set_clauses.append('use_stop_reason_cd = :use_stopc_ode')
|
||||||
|
if self.record.use_stopc_ode == '@':
|
||||||
|
self.query_parameter['use_stopc_ode'] = None
|
||||||
|
|
||||||
# 利用停止登録年月日
|
# 利用停止登録年月日
|
||||||
if len(self.record.cre_stop_date) > 0:
|
if len(self.record.cre_stop_date) > 0:
|
||||||
set_clauses.append('use_stop_regist_ymd = :cre_stop_date')
|
set_clauses.append('use_stop_regist_ymd = :cre_stop_date')
|
||||||
|
if self.record.cre_stop_date == '@':
|
||||||
|
self.query_parameter['cre_stop_date'] = None
|
||||||
|
|
||||||
# 利用停止解除年月日
|
# 利用停止解除年月日
|
||||||
if len(self.record.release_date) > 0:
|
if len(self.record.release_date) > 0:
|
||||||
set_clauses.append('use_stop_cancel_ymd = :release_date')
|
set_clauses.append('use_stop_cancel_ymd = :release_date')
|
||||||
|
if self.record.release_date == '@':
|
||||||
|
self.query_parameter['release_date'] = None
|
||||||
|
|
||||||
# 開勤区分
|
# 開勤区分
|
||||||
if len(self.record.pract_class_code) > 0:
|
if len(self.record.pract_class_code) > 0:
|
||||||
@ -349,6 +376,10 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('estab_era = :pract_yearera')
|
set_clauses.append('estab_era = :pract_yearera')
|
||||||
set_clauses.append('estab_year = :pract_year')
|
set_clauses.append('estab_year = :pract_year')
|
||||||
set_clauses.append('estab_y = :estab_y')
|
set_clauses.append('estab_y = :estab_y')
|
||||||
|
if self.record.pract_yearera == '@':
|
||||||
|
self.query_parameter['pract_yearera'] = None
|
||||||
|
self.query_parameter['pract_year'] = None
|
||||||
|
self.query_parameter['estab_y'] = None
|
||||||
|
|
||||||
# 一括登録フラグ
|
# 一括登録フラグ
|
||||||
if len(self.record.bskregst_flag) > 0:
|
if len(self.record.bskregst_flag) > 0:
|
||||||
@ -428,53 +459,3 @@ class ComDrMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
# 月日も空の場合、生年月日は空
|
# 月日も空の場合、生年月日は空
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
# 削除予定理由
|
|
||||||
if self.record.drdel_code == '@':
|
|
||||||
self.query_parameter['drdel_code'] = None
|
|
||||||
# 重複時相手先コード
|
|
||||||
if self.record.reptdr_id == '@':
|
|
||||||
self.query_parameter['opp_dup_code'] = None
|
|
||||||
# 生年月日
|
|
||||||
if self.record.birthday_era == '@':
|
|
||||||
self.query_parameter['birthday_era'] = None
|
|
||||||
self.query_parameter['birthday_year'] = None
|
|
||||||
self.query_parameter['birthday_month'] = None
|
|
||||||
self.query_parameter['birthday_day'] = None
|
|
||||||
self.query_parameter['birth_day'] = None
|
|
||||||
# 卒年
|
|
||||||
if self.record.grad_yearera == '@':
|
|
||||||
self.query_parameter['grad_yearera'] = None
|
|
||||||
self.query_parameter['grad_year'] = None
|
|
||||||
self.query_parameter['grad_y'] = None
|
|
||||||
# 登録年
|
|
||||||
if self.record.drda_yera == '@':
|
|
||||||
self.query_parameter['drda_yera'] = None
|
|
||||||
self.query_parameter['drday_year'] = None
|
|
||||||
self.query_parameter['drday_y'] = None
|
|
||||||
# 住所不明
|
|
||||||
if self.record.dr_addr_lost_code == '@':
|
|
||||||
self.query_parameter['dr_addr_lost_code'] = None
|
|
||||||
# 自宅電話番号
|
|
||||||
if self.record.dr_tel == '@':
|
|
||||||
self.query_parameter['dr_tel'] = None
|
|
||||||
# 利用停止区分
|
|
||||||
if self.record.use_stop_flag == '@':
|
|
||||||
self.query_parameter['use_stop_flag'] = None
|
|
||||||
# 利用停止理由
|
|
||||||
if self.record.use_stopc_ode == '@':
|
|
||||||
self.query_parameter['use_stopc_ode'] = None
|
|
||||||
# 利用停止登録年月日
|
|
||||||
if self.record.cre_stop_date == '@':
|
|
||||||
self.query_parameter['cre_stop_date'] = None
|
|
||||||
# 利用停止解除年月日
|
|
||||||
if self.record.release_date == '@':
|
|
||||||
self.query_parameter['release_date'] = None
|
|
||||||
# 開業年
|
|
||||||
if self.record.pract_yearera == '@':
|
|
||||||
self.query_parameter['pract_yearera'] = None
|
|
||||||
self.query_parameter['pract_year'] = None
|
|
||||||
self.query_parameter['estab_y'] = None
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
@ -182,10 +182,6 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
|||||||
def __make_queries(self):
|
def __make_queries(self):
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]['count_num'] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
return [self.INSERT_QUERY]
|
return [self.INSERT_QUERY]
|
||||||
@ -208,6 +204,8 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
|||||||
# DM不可フラグの値をセット
|
# DM不可フラグの値をセット
|
||||||
# 履歴レコード作成判断とならないため、後から設定
|
# 履歴レコード作成判断とならないため、後から設定
|
||||||
if self.record.notdm_flg != '':
|
if self.record.notdm_flg != '':
|
||||||
|
notdm_flg = None if self.record.notdm_flg == '@' else self.record.notdm_flg
|
||||||
|
self.query_parameter['notdm_flg'] = notdm_flg
|
||||||
set_clause_without_historical.append(f'notdm_flg = :notdm_flg')
|
set_clause_without_historical.append(f'notdm_flg = :notdm_flg')
|
||||||
# 何かしら更新がある場合、履歴作成クエリを作成
|
# 何かしら更新がある場合、履歴作成クエリを作成
|
||||||
if len(set_clauses_with_historical) != 0:
|
if len(set_clauses_with_historical) != 0:
|
||||||
@ -232,16 +230,24 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
|||||||
# 役職コード
|
# 役職コード
|
||||||
if self.record.postcode != '':
|
if self.record.postcode != '':
|
||||||
set_clauses.append('post_cd = :postcode')
|
set_clauses.append('post_cd = :postcode')
|
||||||
|
self.query_parameter['postcode'] = '' if self.record.postcode == '@' else self.record.postcode
|
||||||
# 大学順位
|
# 大学順位
|
||||||
if self.record.identitycode != '':
|
if self.record.identitycode != '':
|
||||||
set_clauses.append('identity_cd = :identitycode')
|
set_clauses.append('identity_cd = :identitycode')
|
||||||
|
self.query_parameter['identitycode'] = '' if self.record.identitycode == '@' else self.record.identitycode
|
||||||
# 所属部科(集合項目)
|
# 所属部科(集合項目)
|
||||||
if self.record.sectcode != '':
|
if self.record.sectcode != '':
|
||||||
# 所属部科コード
|
# 所属部科コード
|
||||||
|
self.query_parameter['sectcode'] = '9999' if self.record.sectcode == '@' else self.record.sectcode
|
||||||
set_clauses.append('blng_sec_cd = :sectcode')
|
set_clauses.append('blng_sec_cd = :sectcode')
|
||||||
# 所属部科(カナ)
|
# 所属部科(カナ)
|
||||||
|
sectname_kana = None if self.record.sectname_kana == '@' else self.record.sectname_kana
|
||||||
|
self.query_parameter['sectname_kana'] = sectname_kana
|
||||||
set_clauses.append(f'blng_sec_name_kana = :sectname_kana')
|
set_clauses.append(f'blng_sec_name_kana = :sectname_kana')
|
||||||
# 所属部科(漢字)
|
# 所属部科(漢字)
|
||||||
|
# 全角文字なので、修正項目として全角@が連携されるパターンがある
|
||||||
|
sectname = None if self.record.sectname == '@' else self.record.sectname
|
||||||
|
self.query_parameter['sectname'] = sectname
|
||||||
set_clauses.append(f'blng_sec_name = :sectname')
|
set_clauses.append(f'blng_sec_name = :sectname')
|
||||||
|
|
||||||
# 何かしら更新がある場合、適用開始日をセットする
|
# 何かしら更新がある場合、適用開始日をセットする
|
||||||
@ -250,32 +256,3 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append("aply_start_ymd = DATE_FORMAT(:syor_date, '%Y%m%d')")
|
set_clauses.append("aply_start_ymd = DATE_FORMAT(:syor_date, '%Y%m%d')")
|
||||||
|
|
||||||
return set_clauses
|
return set_clauses
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
|
|
||||||
# 役職コード
|
|
||||||
if self.record.postcode == '@':
|
|
||||||
# NOT NULLのため、空文字をセット
|
|
||||||
self.query_parameter['postcode'] = ''
|
|
||||||
# 大学順位
|
|
||||||
if self.record.identitycode == '@':
|
|
||||||
# NOT NULLのため、空文字をセット
|
|
||||||
self.query_parameter['identitycode'] = ''
|
|
||||||
# DM不可フラグ
|
|
||||||
if self.record.notdm_flg == '@':
|
|
||||||
self.query_parameter['notdm_flg'] = None
|
|
||||||
|
|
||||||
# 以下、実際には項目のクリアが発生しない為不要なロジックだが、現行踏襲の為残しておく
|
|
||||||
# 所属部科コード
|
|
||||||
if self.record.sectcode == '@':
|
|
||||||
# NOT NULLのため、固定の所属部科コードをセット
|
|
||||||
self.query_parameter['sectcode'] = '9999'
|
|
||||||
# 所属部科(カナ)
|
|
||||||
if self.record.sectname_kana == '@':
|
|
||||||
self.query_parameter['sectname_kana'] = None
|
|
||||||
# 所属部科(漢字)
|
|
||||||
# 全角の項目なので、修正項目値として全角@が連携される
|
|
||||||
if self.record.sectname == '@':
|
|
||||||
self.query_parameter['sectname'] = None
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
@ -677,10 +677,6 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]['count_num'] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
self.queries.append(self.INSERT_QUERY)
|
self.queries.append(self.INSERT_QUERY)
|
||||||
@ -697,24 +693,40 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('dpc_flag = :dpc_flag')
|
set_clauses.append('dpc_flag = :dpc_flag')
|
||||||
set_clauses.append('dpc_specday = :dpc_spec_day')
|
set_clauses.append('dpc_specday = :dpc_spec_day')
|
||||||
set_clauses.append('dpc_cancelday = :dpc_cancel_day')
|
set_clauses.append('dpc_cancelday = :dpc_cancel_day')
|
||||||
|
if self.record.dpc_flag == '@':
|
||||||
|
self.query_parameter['dpc_flag'] = None
|
||||||
|
self.query_parameter['dpc_spec_day'] = None
|
||||||
|
self.query_parameter['dpc_cancel_day'] = None
|
||||||
|
|
||||||
# DPC準備病院
|
# DPC準備病院
|
||||||
if len(self.record.predpc_flag) > 0:
|
if len(self.record.predpc_flag) > 0:
|
||||||
set_clauses.append('predpc_flag = :predpc_flag')
|
set_clauses.append('predpc_flag = :predpc_flag')
|
||||||
set_clauses.append('predpc_specday = :predpc_spec_day')
|
set_clauses.append('predpc_specday = :predpc_spec_day')
|
||||||
set_clauses.append('predpc_cancelday = :predpc_cancel_day')
|
set_clauses.append('predpc_cancelday = :predpc_cancel_day')
|
||||||
|
if self.record.predpc_flag == '@':
|
||||||
|
self.query_parameter['predpc_flag'] = None
|
||||||
|
self.query_parameter['predpc_spec_day'] = None
|
||||||
|
self.query_parameter['predpc_cancel_day'] = None
|
||||||
|
|
||||||
# がん診療連携拠点病院
|
# がん診療連携拠点病院
|
||||||
if len(self.record.cancer_flag) > 0:
|
if len(self.record.cancer_flag) > 0:
|
||||||
set_clauses.append('cancer_flag = :cancer_flag')
|
set_clauses.append('cancer_flag = :cancer_flag')
|
||||||
set_clauses.append('cancer_specday = :cancer_spec_day')
|
set_clauses.append('cancer_specday = :cancer_spec_day')
|
||||||
set_clauses.append('cancer_cancelday = :cancer_cancel_day')
|
set_clauses.append('cancer_cancelday = :cancer_cancel_day')
|
||||||
|
if self.record.cancer_flag == '@':
|
||||||
|
self.query_parameter['cancer_flag'] = None
|
||||||
|
self.query_parameter['cancer_spec_day'] = None
|
||||||
|
self.query_parameter['cancer_cancel_day'] = None
|
||||||
|
|
||||||
# 特定機能病院
|
# 特定機能病院
|
||||||
if len(self.record.funchp_flag) > 0:
|
if len(self.record.funchp_flag) > 0:
|
||||||
set_clauses.append('funchpflag = :funchp_flag')
|
set_clauses.append('funchpflag = :funchp_flag')
|
||||||
set_clauses.append('funchpokdate = :funchp_ok_date')
|
set_clauses.append('funchpokdate = :funchp_ok_date')
|
||||||
set_clauses.append('funchpcandate = :funchp_can_date')
|
set_clauses.append('funchpcandate = :funchp_can_date')
|
||||||
|
if self.record.funchp_flag == '@':
|
||||||
|
self.query_parameter['funchp_flag'] = None
|
||||||
|
self.query_parameter['funchp_ok_date'] = None
|
||||||
|
self.query_parameter['funchp_can_date'] = None
|
||||||
|
|
||||||
# 地域医療支援病院
|
# 地域医療支援病院
|
||||||
if len(self.record.areasuphp_flag) > 0:
|
if len(self.record.areasuphp_flag) > 0:
|
||||||
@ -722,167 +734,275 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('areasuphpintrate = :areasuphp_intrate')
|
set_clauses.append('areasuphpintrate = :areasuphp_intrate')
|
||||||
set_clauses.append('areasuphpokdate = :areasuphp_ok_date')
|
set_clauses.append('areasuphpokdate = :areasuphp_ok_date')
|
||||||
set_clauses.append('areasuphpcandate = :areasuphp_can_date')
|
set_clauses.append('areasuphpcandate = :areasuphp_can_date')
|
||||||
|
if self.record.areasuphp_flag == '@':
|
||||||
|
self.query_parameter['areasuphp_flag'] = None
|
||||||
|
self.query_parameter['areasuphp_intrate'] = None
|
||||||
|
self.query_parameter['areasuphp_ok_date'] = None
|
||||||
|
self.query_parameter['areasuphp_can_date'] = None
|
||||||
|
|
||||||
# 超急性期脳卒中加算
|
# 超急性期脳卒中加算
|
||||||
if len(self.record.acuthp_add_flag) > 0:
|
if len(self.record.acuthp_add_flag) > 0:
|
||||||
set_clauses.append('acuthpaddflag = :acuthp_add_flag')
|
set_clauses.append('acuthpaddflag = :acuthp_add_flag')
|
||||||
set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date')
|
set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date')
|
||||||
set_clauses.append('acuthpaddcandate = :acuthp_add_can_date')
|
set_clauses.append('acuthpaddcandate = :acuthp_add_can_date')
|
||||||
|
if self.record.acuthp_add_flag == '@':
|
||||||
|
self.query_parameter['acuthp_add_flag'] = None
|
||||||
|
self.query_parameter['acuthp_add_ok_date'] = None
|
||||||
|
self.query_parameter['acuthp_add_can_date'] = None
|
||||||
|
|
||||||
# 総合入院体制加算
|
# 総合入院体制加算
|
||||||
if len(self.record.genadmisiion_flag) > 0:
|
if len(self.record.genadmisiion_flag) > 0:
|
||||||
set_clauses.append('genadmisiionflag = :genadmisiion_flag')
|
set_clauses.append('genadmisiionflag = :genadmisiion_flag')
|
||||||
set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date')
|
set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date')
|
||||||
set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date')
|
set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date')
|
||||||
|
if self.record.genadmisiion_flag == '@':
|
||||||
|
self.query_parameter['genadmisiion_flag'] = None
|
||||||
|
self.query_parameter['genadmisiion_ok_date'] = None
|
||||||
|
self.query_parameter['genadmisiion_can_date'] = None
|
||||||
|
|
||||||
# 医師事務作業補助体制加算
|
# 医師事務作業補助体制加算
|
||||||
if len(self.record.assistance_flag) > 0:
|
if len(self.record.assistance_flag) > 0:
|
||||||
set_clauses.append('assistanceflag = :assistance_flag')
|
set_clauses.append('assistanceflag = :assistance_flag')
|
||||||
set_clauses.append('assistanceokdate = :assistance_ok_date')
|
set_clauses.append('assistanceokdate = :assistance_ok_date')
|
||||||
set_clauses.append('assistancecandate = :assistance_can_date')
|
set_clauses.append('assistancecandate = :assistance_can_date')
|
||||||
|
if self.record.assistance_flag == '@':
|
||||||
|
self.query_parameter['assistance_flag'] = None
|
||||||
|
self.query_parameter['assistance_ok_date'] = None
|
||||||
|
self.query_parameter['assistance_can_date'] = None
|
||||||
|
|
||||||
# 診療録管理体制加算
|
# 診療録管理体制加算
|
||||||
if len(self.record.diagnosis_treatment_flag) > 0:
|
if len(self.record.diagnosis_treatment_flag) > 0:
|
||||||
set_clauses.append('diagnosistreatment_flag = :diagnosis_treatment_flag')
|
set_clauses.append('diagnosistreatment_flag = :diagnosis_treatment_flag')
|
||||||
set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day')
|
set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day')
|
||||||
set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day')
|
set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day')
|
||||||
|
if self.record.diagnosis_treatment_flag == '@':
|
||||||
|
self.query_parameter['diagnosis_treatment_flag'] = None
|
||||||
|
self.query_parameter['diagnosis_treatment_spec_day'] = None
|
||||||
|
self.query_parameter['diagnosis_treatment_cancel_day'] = None
|
||||||
|
|
||||||
# 医療安全対策加算
|
# 医療安全対策加算
|
||||||
if len(self.record.safety_flag) > 0:
|
if len(self.record.safety_flag) > 0:
|
||||||
set_clauses.append('safety_flag = :safety_flag')
|
set_clauses.append('safety_flag = :safety_flag')
|
||||||
set_clauses.append('safety_specday = :safety_spec_day')
|
set_clauses.append('safety_specday = :safety_spec_day')
|
||||||
set_clauses.append('safety_cancelday = :safety_cancel_day')
|
set_clauses.append('safety_cancelday = :safety_cancel_day')
|
||||||
|
if self.record.safety_flag == '@':
|
||||||
|
self.query_parameter['safety_flag'] = None
|
||||||
|
self.query_parameter['safety_spec_day'] = None
|
||||||
|
self.query_parameter['safety_cancel_day'] = None
|
||||||
|
|
||||||
# 褥瘡ハイリスク患者ケア加算
|
# 褥瘡ハイリスク患者ケア加算
|
||||||
if len(self.record.highrisk_flag) > 0:
|
if len(self.record.highrisk_flag) > 0:
|
||||||
set_clauses.append('highrisk_flag = :highrisk_flag')
|
set_clauses.append('highrisk_flag = :highrisk_flag')
|
||||||
set_clauses.append('highrisk_specday = :highrisk_spec_day')
|
set_clauses.append('highrisk_specday = :highrisk_spec_day')
|
||||||
set_clauses.append('highrisk_cancelday = :highrisk_cancel_day')
|
set_clauses.append('highrisk_cancelday = :highrisk_cancel_day')
|
||||||
|
if self.record.highrisk_flag == '@':
|
||||||
|
self.query_parameter['highrisk_flag'] = None
|
||||||
|
self.query_parameter['highrisk_spec_day'] = None
|
||||||
|
self.query_parameter['highrisk_cancel_day'] = None
|
||||||
|
|
||||||
# 地域連携小児夜間・休日診療料
|
# 地域連携小児夜間・休日診療料
|
||||||
if len(self.record.infant_and_holiday_flag) > 0:
|
if len(self.record.infant_and_holiday_flag) > 0:
|
||||||
set_clauses.append('infantandholiday_flag = :infant_and_holiday_flag')
|
set_clauses.append('infantandholiday_flag = :infant_and_holiday_flag')
|
||||||
set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day')
|
set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day')
|
||||||
set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day')
|
set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day')
|
||||||
|
if self.record.infant_and_holiday_flag == '@':
|
||||||
|
self.query_parameter['infant_and_holiday_flag'] = None
|
||||||
|
self.query_parameter['infant_and_holiday_spec_day'] = None
|
||||||
|
self.query_parameter['infant_and_holiday_cancel_day'] = None
|
||||||
|
|
||||||
# 開放型病院
|
# 開放型病院
|
||||||
if len(self.record.ophp_flag) > 0:
|
if len(self.record.ophp_flag) > 0:
|
||||||
set_clauses.append('ophpflag = :ophp_flag')
|
set_clauses.append('ophpflag = :ophp_flag')
|
||||||
set_clauses.append('ophpokdate = :ophpok_date')
|
set_clauses.append('ophpokdate = :ophpok_date')
|
||||||
set_clauses.append('ophpcandate = :ophpcan_date')
|
set_clauses.append('ophpcandate = :ophpcan_date')
|
||||||
|
if self.record.ophp_flag == '@':
|
||||||
|
self.query_parameter['ophp_flag'] = None
|
||||||
|
self.query_parameter['ophpok_date'] = None
|
||||||
|
self.query_parameter['ophpcan_date'] = None
|
||||||
|
|
||||||
# 地域連携クリティカルパス
|
# 地域連携クリティカルパス
|
||||||
if len(self.record.critical_flag) > 0:
|
if len(self.record.critical_flag) > 0:
|
||||||
set_clauses.append('critical_flag = :critical_flag')
|
set_clauses.append('critical_flag = :critical_flag')
|
||||||
|
# 項目クリア判断
|
||||||
|
is_aggregate_item_clear = self.record.critical_flag == '@'
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter['critical_flag'] = None
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
||||||
for i in range(1, 21):
|
for i in range(1, 21):
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
num = str(i).zfill(2) # 2桁で0埋め
|
||||||
setting_item_name = f'critical_code{num}'
|
setting_item_name = f'critical_code{num}'
|
||||||
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter[setting_item_name] = None
|
||||||
|
|
||||||
# 薬剤管理指導料
|
# 薬剤管理指導料
|
||||||
if len(self.record.drgmgthp_flag) > 0:
|
if len(self.record.drgmgthp_flag) > 0:
|
||||||
set_clauses.append('drgmgthpflag = :drgmgthp_flag')
|
set_clauses.append('drgmgthpflag = :drgmgthp_flag')
|
||||||
set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date')
|
set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date')
|
||||||
set_clauses.append('drgmgthpcandate = :drgmgthp_can_date')
|
set_clauses.append('drgmgthpcandate = :drgmgthp_can_date')
|
||||||
|
if self.record.drgmgthp_flag == '@':
|
||||||
|
self.query_parameter['drgmgthp_flag'] = None
|
||||||
|
self.query_parameter['drgmgthp_ok_date'] = None
|
||||||
|
self.query_parameter['drgmgthp_can_date'] = None
|
||||||
|
|
||||||
# 画像診断管理加算
|
# 画像診断管理加算
|
||||||
if len(self.record.image_diagnosis_flag) > 0:
|
if len(self.record.image_diagnosis_flag) > 0:
|
||||||
set_clauses.append('imagediagnosis_flag = :image_diagnosis_flag')
|
set_clauses.append('imagediagnosis_flag = :image_diagnosis_flag')
|
||||||
set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day')
|
set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day')
|
||||||
set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day')
|
set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day')
|
||||||
|
if self.record.image_diagnosis_flag == '@':
|
||||||
|
self.query_parameter['image_diagnosis_flag'] = None
|
||||||
|
self.query_parameter['image_diagnosis_specified_day'] = None
|
||||||
|
self.query_parameter['image_diagnosis_cancel_day'] = None
|
||||||
|
|
||||||
# 外来化学療法加算
|
# 外来化学療法加算
|
||||||
if len(self.record.chemotherapy_flag) > 0:
|
if len(self.record.chemotherapy_flag) > 0:
|
||||||
set_clauses.append('chemotherapy_flag = :chemotherapy_flag')
|
set_clauses.append('chemotherapy_flag = :chemotherapy_flag')
|
||||||
set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day')
|
set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day')
|
||||||
set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day')
|
set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day')
|
||||||
|
if self.record.chemotherapy_flag == '@':
|
||||||
|
self.query_parameter['chemotherapy_flag'] = None
|
||||||
|
self.query_parameter['chemotherapy_spec_day'] = None
|
||||||
|
self.query_parameter['chemotherapy_cancel_day'] = None
|
||||||
|
|
||||||
# 疾患別リハビリテーション料
|
# 疾患別リハビリテーション料
|
||||||
if len(self.record.rehabilitation_flag) > 0:
|
if len(self.record.rehabilitation_flag) > 0:
|
||||||
set_clauses.append('rehabilitation_flag = :rehabilitation_flag')
|
set_clauses.append('rehabilitation_flag = :rehabilitation_flag')
|
||||||
|
# 項目クリア判断
|
||||||
|
is_aggregate_item_clear = self.record.rehabilitation_flag == '@'
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter['rehabilitation_flag'] = None
|
||||||
# 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
# 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
||||||
for i in range(1, 11):
|
for i in range(1, 11):
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
num = str(i).zfill(2) # 2桁で0埋め
|
||||||
setting_item_name = f'rehabilitation_code{num}'
|
setting_item_name = f'rehabilitation_code{num}'
|
||||||
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter[setting_item_name] = None
|
||||||
|
|
||||||
# 麻酔管理料
|
# 麻酔管理料
|
||||||
if len(self.record.anesthetizing_manage_flag) > 0:
|
if len(self.record.anesthetizing_manage_flag) > 0:
|
||||||
set_clauses.append('anesthetizingmanage_flag = :anesthetizing_manage_flag')
|
set_clauses.append('anesthetizingmanage_flag = :anesthetizing_manage_flag')
|
||||||
set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day')
|
set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day')
|
||||||
set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day')
|
set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day')
|
||||||
|
if self.record.anesthetizing_manage_flag == '@':
|
||||||
|
self.query_parameter['anesthetizing_manage_flag'] = None
|
||||||
|
self.query_parameter['anesthetizing_manage_spec_day'] = None
|
||||||
|
self.query_parameter['anesthetizing_manage_can_day'] = None
|
||||||
|
|
||||||
# 在宅療養支援病院・診療所
|
# 在宅療養支援病院・診療所
|
||||||
if len(self.record.home_recuperation_flag) > 0:
|
if len(self.record.home_recuperation_flag) > 0:
|
||||||
set_clauses.append('homerecuperation_flag = :home_recuperation_flag')
|
set_clauses.append('homerecuperation_flag = :home_recuperation_flag')
|
||||||
set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day')
|
set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day')
|
||||||
set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day')
|
set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day')
|
||||||
|
if self.record.home_recuperation_flag == '@':
|
||||||
|
self.query_parameter['home_recuperation_flag'] = None
|
||||||
|
self.query_parameter['home_recuperation_spec_day'] = None
|
||||||
|
self.query_parameter['home_recuperation_cancel_day'] = None
|
||||||
|
|
||||||
# 在宅時医学総合管理料
|
# 在宅時医学総合管理料
|
||||||
if len(self.record.synthesis_when_staying_flag) > 0:
|
if len(self.record.synthesis_when_staying_flag) > 0:
|
||||||
set_clauses.append('synthesiswhenstaying_flag = :synthesis_when_staying_flag')
|
set_clauses.append('synthesiswhenstaying_flag = :synthesis_when_staying_flag')
|
||||||
set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day')
|
set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day')
|
||||||
set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day')
|
set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day')
|
||||||
|
if self.record.synthesis_when_staying_flag == '@':
|
||||||
|
self.query_parameter['synthesis_when_staying_flag'] = None
|
||||||
|
self.query_parameter['synthesis_when_staying_spec_day'] = None
|
||||||
|
self.query_parameter['synthesis_when_staying_can_day'] = None
|
||||||
|
|
||||||
# 在宅末期医療総合診療料
|
# 在宅末期医療総合診療料
|
||||||
if len(self.record.home_late_flag) > 0:
|
if len(self.record.home_late_flag) > 0:
|
||||||
set_clauses.append('homelateflag = :home_late_flag')
|
set_clauses.append('homelateflag = :home_late_flag')
|
||||||
set_clauses.append('homelateokday = :home_late_ok_day')
|
set_clauses.append('homelateokday = :home_late_ok_day')
|
||||||
set_clauses.append('homelatecanday = :home_late_can_day')
|
set_clauses.append('homelatecanday = :home_late_can_day')
|
||||||
|
if self.record.home_late_flag == '@':
|
||||||
|
self.query_parameter['home_late_flag'] = None
|
||||||
|
self.query_parameter['home_late_ok_day'] = None
|
||||||
|
self.query_parameter['home_late_can_day'] = None
|
||||||
|
|
||||||
# ケアミックス区分
|
# ケアミックス区分
|
||||||
if len(self.record.caremix_kind) > 0:
|
if len(self.record.caremix_kind) > 0:
|
||||||
set_clauses.append('caremixkind = :caremix_kind')
|
set_clauses.append('caremixkind = :caremix_kind')
|
||||||
|
if self.record.caremix_kind == '@':
|
||||||
|
self.query_parameter['caremix_kind'] = None
|
||||||
|
|
||||||
# 完全型・移行型区分
|
# 完全型・移行型区分
|
||||||
if len(self.record.fullmove_flag) > 0:
|
if len(self.record.fullmove_flag) > 0:
|
||||||
set_clauses.append('fullmoveflag = :fullmove_flag')
|
set_clauses.append('fullmoveflag = :fullmove_flag')
|
||||||
|
if self.record.fullmove_flag == '@':
|
||||||
|
self.query_parameter['fullmove_flag'] = None
|
||||||
|
|
||||||
# 療養型病床群
|
# 療養型病床群
|
||||||
if sum(len(item) for item in self.record.resthp_items) > 0:
|
if sum(len(item) for item in self.record.resthp_items) > 0:
|
||||||
# 医療型
|
|
||||||
set_clauses.append('resthpflag = :resthp_flag')
|
set_clauses.append('resthpflag = :resthp_flag')
|
||||||
set_clauses.append('resthpcarekind = :resthp_care_kind')
|
set_clauses.append('resthpcarekind = :resthp_care_kind')
|
||||||
set_clauses.append('resthpbednum = :resthp_bed_num')
|
set_clauses.append('resthpbednum = :resthp_bed_num')
|
||||||
set_clauses.append('resthpokdate = :resthp_ok_date')
|
set_clauses.append('resthpokdate = :resthp_ok_date')
|
||||||
set_clauses.append('resthpcandate = :resthp_can_date')
|
set_clauses.append('resthpcandate = :resthp_can_date')
|
||||||
# 介護型
|
|
||||||
set_clauses.append('resthpcarenrskind = :resthp_care_nrs_kind')
|
set_clauses.append('resthpcarenrskind = :resthp_care_nrs_kind')
|
||||||
set_clauses.append('resthpcarebednum = :resthp_care_bed_num')
|
set_clauses.append('resthpcarebednum = :resthp_care_bed_num')
|
||||||
set_clauses.append('resthpcareokdate = :resthp_care_ok_date')
|
set_clauses.append('resthpcareokdate = :resthp_care_ok_date')
|
||||||
set_clauses.append('resthpcarecandate = :resthp_care_can_date')
|
set_clauses.append('resthpcarecandate = :resthp_care_can_date')
|
||||||
# 合計
|
|
||||||
set_clauses.append('resthpsbednum = :resthp_sbed_num')
|
set_clauses.append('resthpsbednum = :resthp_sbed_num')
|
||||||
|
if self.record.resthp_flag == '@':
|
||||||
|
self.query_parameter['resthp_flag'] = None
|
||||||
|
self.query_parameter['resthp_care_kind'] = None
|
||||||
|
self.query_parameter['resthp_bed_num'] = None
|
||||||
|
self.query_parameter['resthp_ok_date'] = None
|
||||||
|
self.query_parameter['resthp_can_date'] = None
|
||||||
|
self.query_parameter['resthp_care_nrs_kind'] = None
|
||||||
|
self.query_parameter['resthp_care_bed_num'] = None
|
||||||
|
self.query_parameter['resthp_care_ok_date'] = None
|
||||||
|
self.query_parameter['resthp_care_can_date'] = None
|
||||||
|
self.query_parameter['resthp_sbed_num'] = None
|
||||||
|
|
||||||
# 一般病棟
|
# 一般病棟
|
||||||
if len(self.record.nrmhp_flag) > 0:
|
if len(self.record.nrmhp_flag) > 0:
|
||||||
set_clauses.append('nrmhpflag = :nrmhp_flag')
|
set_clauses.append('nrmhpflag = :nrmhp_flag')
|
||||||
set_clauses.append('nrmhpcarekind = :nrmhp_care_kind')
|
set_clauses.append('nrmhpcarekind = :nrmhp_care_kind')
|
||||||
set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num')
|
set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num')
|
||||||
|
if self.record.nrmhp_flag == '@':
|
||||||
|
self.query_parameter['nrmhp_flag'] = None
|
||||||
|
self.query_parameter['nrmhp_care_kind'] = None
|
||||||
|
self.query_parameter['nrmhp_bed_total_num'] = None
|
||||||
|
|
||||||
# 精神病棟
|
# 精神病棟
|
||||||
if len(self.record.menthp_flag) > 0:
|
if len(self.record.menthp_flag) > 0:
|
||||||
set_clauses.append('menthpflag = :menthp_flag')
|
set_clauses.append('menthpflag = :menthp_flag')
|
||||||
set_clauses.append('menthpcarekind = :menthp_care_kind')
|
set_clauses.append('menthpcarekind = :menthp_care_kind')
|
||||||
set_clauses.append('menthpbednum = :menthp_bed_num')
|
set_clauses.append('menthpbednum = :menthp_bed_num')
|
||||||
|
if self.record.menthp_flag == '@':
|
||||||
|
self.query_parameter['menthp_flag'] = None
|
||||||
|
self.query_parameter['menthp_care_kind'] = None
|
||||||
|
self.query_parameter['menthp_bed_num'] = None
|
||||||
|
|
||||||
# 結核病棟
|
# 結核病棟
|
||||||
if len(self.record.tubhp_flag) > 0:
|
if len(self.record.tubhp_flag) > 0:
|
||||||
set_clauses.append('tubhpflag = :tubhp_flag')
|
set_clauses.append('tubhpflag = :tubhp_flag')
|
||||||
set_clauses.append('tubhpcarekind = :tubhp_care_kind')
|
set_clauses.append('tubhpcarekind = :tubhp_care_kind')
|
||||||
set_clauses.append('tubhpbednum = :tubhp_bed_num')
|
set_clauses.append('tubhpbednum = :tubhp_bed_num')
|
||||||
|
if self.record.tubhp_flag == '@':
|
||||||
|
self.query_parameter['tubhp_flag'] = None
|
||||||
|
self.query_parameter['tubhp_care_kind'] = None
|
||||||
|
self.query_parameter['tubhp_bed_num'] = None
|
||||||
|
|
||||||
# 感染症指定医療機関
|
# 感染症指定医療機関
|
||||||
if len(self.record.infhp_flag) > 0:
|
if len(self.record.infhp_flag) > 0:
|
||||||
set_clauses.append('infhpflag = :infhp_flag')
|
set_clauses.append('infhpflag = :infhp_flag')
|
||||||
set_clauses.append('infhpflag1 = :infhp_flag1')
|
set_clauses.append('infhpflag1 = :infhp_flag1')
|
||||||
set_clauses.append('infhpflag2 = :infhp_flag2')
|
set_clauses.append('infhpflag2 = :infhp_flag2')
|
||||||
|
if self.record.infhp_flag == '@':
|
||||||
|
self.query_parameter['infhp_flag'] = None
|
||||||
|
self.query_parameter['infhp_flag1'] = None
|
||||||
|
self.query_parameter['infhp_flag2'] = None
|
||||||
|
|
||||||
# 感染症病床
|
# 感染症病床
|
||||||
if len(self.record.infhp_bed_flag) > 0:
|
if len(self.record.infhp_bed_flag) > 0:
|
||||||
set_clauses.append('infhpbedflag = :infhp_bed_flag')
|
set_clauses.append('infhpbedflag = :infhp_bed_flag')
|
||||||
set_clauses.append('infhpbednum = :infhp_bed_num')
|
set_clauses.append('infhpbednum = :infhp_bed_num')
|
||||||
|
if self.record.infhp_bed_flag == '@':
|
||||||
|
self.query_parameter['infhp_bed_flag'] = None
|
||||||
|
self.query_parameter['infhp_bed_num'] = None
|
||||||
|
|
||||||
# 緩和ケア病棟設置病院
|
# 緩和ケア病棟設置病院
|
||||||
if len(self.record.hospice_flag) > 0:
|
if len(self.record.hospice_flag) > 0:
|
||||||
@ -890,6 +1010,11 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('hospicebednum = :hospice_bed_num')
|
set_clauses.append('hospicebednum = :hospice_bed_num')
|
||||||
set_clauses.append('hospiceokdate = :hospice_ok_date')
|
set_clauses.append('hospiceokdate = :hospice_ok_date')
|
||||||
set_clauses.append('hospicecandate = :hospice_can_date')
|
set_clauses.append('hospicecandate = :hospice_can_date')
|
||||||
|
if self.record.hospice_flag == '@':
|
||||||
|
self.query_parameter['hospice_flag'] = None
|
||||||
|
self.query_parameter['hospice_bed_num'] = None
|
||||||
|
self.query_parameter['hospice_ok_date'] = None
|
||||||
|
self.query_parameter['hospice_can_date'] = None
|
||||||
|
|
||||||
# 医療機能評価
|
# 医療機能評価
|
||||||
if len(self.record.hpfunce_st_flag) > 0:
|
if len(self.record.hpfunce_st_flag) > 0:
|
||||||
@ -897,35 +1022,55 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('hpfuncestkind = :hpfunce_st_kind')
|
set_clauses.append('hpfuncestkind = :hpfunce_st_kind')
|
||||||
set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date')
|
set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date')
|
||||||
set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date')
|
set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date')
|
||||||
|
if self.record.hpfunce_st_flag == '@':
|
||||||
|
self.query_parameter['hpfunce_st_flag'] = None
|
||||||
|
self.query_parameter['hpfunce_st_kind'] = None
|
||||||
|
self.query_parameter['hpfunce_st_ok_date'] = None
|
||||||
|
self.query_parameter['hpfunce_st_can_date'] = None
|
||||||
|
|
||||||
# 臨床研修指定病院
|
# 臨床研修指定病院
|
||||||
if sum(len(item) for item in self.record.cl_items) > 0:
|
if sum(len(item) for item in self.record.cl_items) > 0:
|
||||||
# 基幹型病院1
|
|
||||||
set_clauses.append('clolyhpkind = :clolyhp_kind')
|
set_clauses.append('clolyhpkind = :clolyhp_kind')
|
||||||
set_clauses.append('clolyhpokdate = :clolyhp_ok_date')
|
set_clauses.append('clolyhpokdate = :clolyhp_ok_date')
|
||||||
set_clauses.append('clolyhpcandate = :clolyhp_can_date')
|
set_clauses.append('clolyhpcandate = :clolyhp_can_date')
|
||||||
# 基幹型病院2(群指定)
|
|
||||||
set_clauses.append('clhpkind = :clhp_kind')
|
set_clauses.append('clhpkind = :clhp_kind')
|
||||||
set_clauses.append('clhpokdate = :clhp_ok_date')
|
set_clauses.append('clhpokdate = :clhp_ok_date')
|
||||||
set_clauses.append('clhpcandate = :clhp_can_date')
|
set_clauses.append('clhpcandate = :clhp_can_date')
|
||||||
# 協力型病院(群指定)
|
|
||||||
set_clauses.append('cldephpkind = :cldephp_kind')
|
set_clauses.append('cldephpkind = :cldephp_kind')
|
||||||
set_clauses.append('cldephpokdate = :cldephp_ok_date')
|
set_clauses.append('cldephpokdate = :cldephp_ok_date')
|
||||||
set_clauses.append('cldephpcandate = :cldephp_can_date')
|
set_clauses.append('cldephpcandate = :cldephp_can_date')
|
||||||
|
if self.record.clolyhp_kind == '@':
|
||||||
|
self.query_parameter['clolyhp_kind'] = None
|
||||||
|
self.query_parameter['clolyhp_ok_date'] = None
|
||||||
|
self.query_parameter['clolyhp_can_date'] = None
|
||||||
|
self.query_parameter['clhp_kind'] = None
|
||||||
|
self.query_parameter['clhp_ok_date'] = None
|
||||||
|
self.query_parameter['clhp_can_date'] = None
|
||||||
|
self.query_parameter['cldephp_kind'] = None
|
||||||
|
self.query_parameter['cldephp_ok_date'] = None
|
||||||
|
self.query_parameter['cldephp_can_date'] = None
|
||||||
|
|
||||||
# 災害拠点病院
|
# 災害拠点病院
|
||||||
if len(self.record.disasthp_flag) > 0:
|
if len(self.record.disasthp_flag) > 0:
|
||||||
set_clauses.append('disasthpflag = :disasthp_flag')
|
set_clauses.append('disasthpflag = :disasthp_flag')
|
||||||
|
if self.record.disasthp_flag == '@':
|
||||||
|
self.query_parameter['disasthp_flag'] = None
|
||||||
|
|
||||||
# 救急医療
|
# 救急医療
|
||||||
if len(self.record.d1emerhp_flag) > 0:
|
if len(self.record.d1emerhp_flag) > 0:
|
||||||
set_clauses.append('d1emerhpflag = :d1emerhp_flag')
|
set_clauses.append('d1emerhpflag = :d1emerhp_flag')
|
||||||
set_clauses.append('d2emerhpflag = :d2emerhp_flag')
|
set_clauses.append('d2emerhpflag = :d2emerhp_flag')
|
||||||
set_clauses.append('d3emerhpflag = :d3emerhp_flag')
|
set_clauses.append('d3emerhpflag = :d3emerhp_flag')
|
||||||
|
if self.record.d1emerhp_flag == '@':
|
||||||
|
self.query_parameter['d1emerhp_flag'] = None
|
||||||
|
self.query_parameter['d2emerhp_flag'] = None
|
||||||
|
self.query_parameter['d3emerhp_flag'] = None
|
||||||
|
|
||||||
# 救急告示診療所
|
# 救急告示診療所
|
||||||
if len(self.record.emergency_clinic) > 0:
|
if len(self.record.emergency_clinic) > 0:
|
||||||
set_clauses.append('emergencyclinic = :emergency_clinic')
|
set_clauses.append('emergencyclinic = :emergency_clinic')
|
||||||
|
if self.record.emergency_clinic == '@':
|
||||||
|
self.query_parameter['emergency_clinic'] = None
|
||||||
|
|
||||||
# 治験中核病院
|
# 治験中核病院
|
||||||
if len(self.record.trial_core_flag) > 0:
|
if len(self.record.trial_core_flag) > 0:
|
||||||
@ -933,42 +1078,72 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('trialcore_div = :trial_core_div')
|
set_clauses.append('trialcore_div = :trial_core_div')
|
||||||
set_clauses.append('trialcoreokdate = :trial_core_ok_date')
|
set_clauses.append('trialcoreokdate = :trial_core_ok_date')
|
||||||
set_clauses.append('trialcorecandate = :trial_core_can_date')
|
set_clauses.append('trialcorecandate = :trial_core_can_date')
|
||||||
|
if self.record.trial_core_flag == '@':
|
||||||
|
self.query_parameter['trial_core_flag'] = None
|
||||||
|
self.query_parameter['trial_core_div'] = None
|
||||||
|
self.query_parameter['trial_core_ok_date'] = None
|
||||||
|
self.query_parameter['trial_core_can_date'] = None
|
||||||
|
|
||||||
# 認知症疾患医療センター
|
# 認知症疾患医療センター
|
||||||
if len(self.record.dementia_flag) > 0:
|
if len(self.record.dementia_flag) > 0:
|
||||||
set_clauses.append('dementiaflag = :dementia_flag')
|
set_clauses.append('dementiaflag = :dementia_flag')
|
||||||
set_clauses.append('dementiaokdate = :dementia_okd_ate')
|
set_clauses.append('dementiaokdate = :dementia_okd_ate')
|
||||||
set_clauses.append('dementiacandate = :dementia_can_date')
|
set_clauses.append('dementiacandate = :dementia_can_date')
|
||||||
|
if self.record.dementia_flag == '@':
|
||||||
|
self.query_parameter['dementia_flag'] = None
|
||||||
|
self.query_parameter['dementia_okd_ate'] = None
|
||||||
|
self.query_parameter['dementia_can_date'] = None
|
||||||
|
|
||||||
# 特定健康診査実施機関
|
# 特定健康診査実施機関
|
||||||
if len(self.record.sphealth_exploration) > 0:
|
if len(self.record.sphealth_exploration) > 0:
|
||||||
set_clauses.append('sphealth_exploration = :sphealth_exploration')
|
set_clauses.append('sphealth_exploration = :sphealth_exploration')
|
||||||
|
if self.record.sphealth_exploration == '@':
|
||||||
|
self.query_parameter['sphealth_exploration'] = None
|
||||||
|
|
||||||
# 特定保健指導実施機関
|
# 特定保健指導実施機関
|
||||||
if len(self.record.sphealth_guidance) > 0:
|
if len(self.record.sphealth_guidance) > 0:
|
||||||
set_clauses.append('sphealth_guidance = :sphealth_guidance')
|
set_clauses.append('sphealth_guidance = :sphealth_guidance')
|
||||||
|
if self.record.sphealth_guidance == '@':
|
||||||
|
self.query_parameter['sphealth_guidance'] = None
|
||||||
|
|
||||||
# 先進医療実施医療機関
|
# 先進医療実施医療機関
|
||||||
if len(self.record.hiadhp_flag) > 0:
|
if len(self.record.hiadhp_flag) > 0:
|
||||||
set_clauses.append('hiadhpflag = :hiadhp_flag')
|
set_clauses.append('hiadhpflag = :hiadhp_flag')
|
||||||
|
# 項目クリア判断
|
||||||
|
is_aggregate_item_clear = self.record.hiadhp_flag == '@'
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter['hiadhp_flag'] = None
|
||||||
# 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
# 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
||||||
for i in range(1, 41):
|
for i in range(1, 41):
|
||||||
setting_item_name_code = f'hiadhpcode{i}'
|
setting_item_name_code = f'hiadhpcode{i}'
|
||||||
setting_item_name_kind = f'hiadhpkind{i}'
|
setting_item_name_kind = f'hiadhpkind{i}'
|
||||||
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
|
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
|
||||||
set_clauses.append(f'{setting_item_name_kind} = :{setting_item_name_kind}')
|
set_clauses.append(f'{setting_item_name_kind} = :{setting_item_name_kind}')
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter[setting_item_name_code] = None
|
||||||
|
self.query_parameter[setting_item_name_kind] = None
|
||||||
|
|
||||||
# 先端医療実施医療機関
|
# 先端医療実施医療機関
|
||||||
if len(self.record.hitechhp_flag) > 0:
|
if len(self.record.hitechhp_flag) > 0:
|
||||||
set_clauses.append('hitechhpflag = :hitechhp_flag')
|
set_clauses.append('hitechhpflag = :hitechhp_flag')
|
||||||
|
# 項目クリア判断
|
||||||
|
is_aggregate_item_clear = self.record.hitechhp_flag == '@'
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter['hitechhp_flag'] = None
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
||||||
for i in range(1, 21):
|
for i in range(1, 21):
|
||||||
setting_item_name = f'hitechhpkind{i}'
|
setting_item_name = f'hitechhpkind{i}'
|
||||||
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter[setting_item_name] = None
|
||||||
|
|
||||||
# 政策医療
|
# 政策医療
|
||||||
if len(self.record.policy_medical_flag) > 0:
|
if len(self.record.policy_medical_flag) > 0:
|
||||||
set_clauses.append('policymedical_flag = :policy_medical_flag')
|
set_clauses.append('policymedical_flag = :policy_medical_flag')
|
||||||
|
# 項目クリア判断
|
||||||
|
is_aggregate_item_clear = self.record.policy_medical_flag == '@'
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter['policy_medical_flag'] = None
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
||||||
for i in range(1, 21):
|
for i in range(1, 21):
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
num = str(i).zfill(2) # 2桁で0埋め
|
||||||
@ -976,6 +1151,9 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
setting_item_name_content = f'policymedical_content{num}'
|
setting_item_name_content = f'policymedical_content{num}'
|
||||||
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
|
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
|
||||||
set_clauses.append(f'{setting_item_name_content} = :{setting_item_name_content}')
|
set_clauses.append(f'{setting_item_name_content} = :{setting_item_name_content}')
|
||||||
|
if is_aggregate_item_clear:
|
||||||
|
self.query_parameter[setting_item_name_code] = None
|
||||||
|
self.query_parameter[setting_item_name_content] = None
|
||||||
|
|
||||||
# 訪問看護ステーション
|
# 訪問看護ステーション
|
||||||
if len(self.record.visitcarest_flag) > 0:
|
if len(self.record.visitcarest_flag) > 0:
|
||||||
@ -983,10 +1161,17 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('visitcarestation_id = :visitcarestation_id')
|
set_clauses.append('visitcarestation_id = :visitcarestation_id')
|
||||||
set_clauses.append('visitcarestation_code = :visitcarestation_code')
|
set_clauses.append('visitcarestation_code = :visitcarestation_code')
|
||||||
set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi')
|
set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi')
|
||||||
|
if self.record.visitcarest_flag == '@':
|
||||||
|
self.query_parameter['visitcarest_flag'] = None
|
||||||
|
self.query_parameter['visitcarestation_id'] = None
|
||||||
|
self.query_parameter['visitcarestation_code'] = None
|
||||||
|
self.query_parameter['visitcarestation_yobi'] = None
|
||||||
|
|
||||||
# 開設年月
|
# 開設年月
|
||||||
if len(self.record.open_date) > 0:
|
if len(self.record.open_date) > 0:
|
||||||
set_clauses.append('opendate = :open_date')
|
set_clauses.append('opendate = :open_date')
|
||||||
|
if self.record.open_date == '@':
|
||||||
|
self.query_parameter['open_date'] = None
|
||||||
|
|
||||||
update_columns = ','.join(set_clauses)
|
update_columns = ','.join(set_clauses)
|
||||||
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
||||||
@ -999,277 +1184,3 @@ class ComInstAttMapper(UltmarcTableMapper):
|
|||||||
update_columns=update_columns
|
update_columns=update_columns
|
||||||
)
|
)
|
||||||
return update_query
|
return update_query
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
# DPC対象病院
|
|
||||||
if self.record.dpc_flag == '@':
|
|
||||||
self.query_parameter['dpc_flag'] = None
|
|
||||||
self.query_parameter['dpc_spec_day'] = None
|
|
||||||
self.query_parameter['dpc_cancel_day'] = None
|
|
||||||
# DPC準備病院
|
|
||||||
if self.record.predpc_flag == '@':
|
|
||||||
self.query_parameter['predpc_flag'] = None
|
|
||||||
self.query_parameter['predpc_spec_day'] = None
|
|
||||||
self.query_parameter['predpc_cancel_day'] = None
|
|
||||||
# がん診療連携拠点病院
|
|
||||||
if self.record.cancer_flag == '@':
|
|
||||||
self.query_parameter['cancer_flag'] = None
|
|
||||||
self.query_parameter['cancer_spec_day'] = None
|
|
||||||
self.query_parameter['cancer_cancel_day'] = None
|
|
||||||
# 特定機能病院
|
|
||||||
if self.record.funchp_flag == '@':
|
|
||||||
self.query_parameter['funchp_flag'] = None
|
|
||||||
self.query_parameter['funchp_ok_date'] = None
|
|
||||||
self.query_parameter['funchp_can_date'] = None
|
|
||||||
# 地域医療支援病院
|
|
||||||
if self.record.areasuphp_flag == '@':
|
|
||||||
self.query_parameter['areasuphp_flag'] = None
|
|
||||||
self.query_parameter['areasuphp_intrate'] = None
|
|
||||||
self.query_parameter['areasuphp_ok_date'] = None
|
|
||||||
self.query_parameter['areasuphp_can_date'] = None
|
|
||||||
# 超急性期脳卒中加算
|
|
||||||
if self.record.acuthp_add_flag == '@':
|
|
||||||
self.query_parameter['acuthp_add_flag'] = None
|
|
||||||
self.query_parameter['acuthp_add_ok_date'] = None
|
|
||||||
self.query_parameter['acuthp_add_can_date'] = None
|
|
||||||
# 総合入院体制加算
|
|
||||||
if self.record.genadmisiion_flag == '@':
|
|
||||||
self.query_parameter['genadmisiion_flag'] = None
|
|
||||||
self.query_parameter['genadmisiion_ok_date'] = None
|
|
||||||
self.query_parameter['genadmisiion_can_date'] = None
|
|
||||||
# 医師事務作業補助体制加算
|
|
||||||
if self.record.assistance_flag == '@':
|
|
||||||
self.query_parameter['assistance_flag'] = None
|
|
||||||
self.query_parameter['assistance_ok_date'] = None
|
|
||||||
self.query_parameter['assistance_can_date'] = None
|
|
||||||
# 診療録管理体制加算
|
|
||||||
if self.record.diagnosis_treatment_flag == '@':
|
|
||||||
self.query_parameter['diagnosis_treatment_flag'] = None
|
|
||||||
self.query_parameter['diagnosis_treatment_spec_day'] = None
|
|
||||||
self.query_parameter['diagnosis_treatment_cancel_day'] = None
|
|
||||||
# 医療安全対策加算
|
|
||||||
if self.record.safety_flag == '@':
|
|
||||||
self.query_parameter['safety_flag'] = None
|
|
||||||
self.query_parameter['safety_spec_day'] = None
|
|
||||||
self.query_parameter['safety_cancel_day'] = None
|
|
||||||
# 褥瘡ハイリスク患者ケア加算
|
|
||||||
if self.record.highrisk_flag == '@':
|
|
||||||
self.query_parameter['highrisk_flag'] = None
|
|
||||||
self.query_parameter['highrisk_spec_day'] = None
|
|
||||||
self.query_parameter['highrisk_cancel_day'] = None
|
|
||||||
# 地域連携小児夜間・休日診療料
|
|
||||||
if self.record.infant_and_holiday_flag == '@':
|
|
||||||
self.query_parameter['infant_and_holiday_flag'] = None
|
|
||||||
self.query_parameter['infant_and_holiday_spec_day'] = None
|
|
||||||
self.query_parameter['infant_and_holiday_cancel_day'] = None
|
|
||||||
# 開放型病院
|
|
||||||
if self.record.ophp_flag == '@':
|
|
||||||
self.query_parameter['ophp_flag'] = None
|
|
||||||
self.query_parameter['ophpok_date'] = None
|
|
||||||
self.query_parameter['ophpcan_date'] = None
|
|
||||||
|
|
||||||
# 地域連携クリティカルパス
|
|
||||||
is_aggregate_item_clear = self.record.critical_flag == '@'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter['critical_flag'] = None
|
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
|
||||||
for i in range(1, 21):
|
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
|
||||||
setting_item_name = f'critical_code{num}'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter[setting_item_name] = None
|
|
||||||
|
|
||||||
# 薬剤管理指導料
|
|
||||||
if self.record.drgmgthp_flag == '@':
|
|
||||||
self.query_parameter['drgmgthp_flag'] = None
|
|
||||||
self.query_parameter['drgmgthp_ok_date'] = None
|
|
||||||
self.query_parameter['drgmgthp_can_date'] = None
|
|
||||||
# 画像診断管理加算
|
|
||||||
if self.record.image_diagnosis_flag == '@':
|
|
||||||
self.query_parameter['image_diagnosis_flag'] = None
|
|
||||||
self.query_parameter['image_diagnosis_specified_day'] = None
|
|
||||||
self.query_parameter['image_diagnosis_cancel_day'] = None
|
|
||||||
# 外来化学療法加算
|
|
||||||
if self.record.chemotherapy_flag == '@':
|
|
||||||
self.query_parameter['chemotherapy_flag'] = None
|
|
||||||
self.query_parameter['chemotherapy_spec_day'] = None
|
|
||||||
self.query_parameter['chemotherapy_cancel_day'] = None
|
|
||||||
|
|
||||||
# 疾患別リハビリテーション料
|
|
||||||
is_aggregate_item_clear = self.record.rehabilitation_flag == '@'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter['rehabilitation_flag'] = None
|
|
||||||
# 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
|
||||||
for i in range(1, 11):
|
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
|
||||||
setting_item_name = f'rehabilitation_code{num}'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter[setting_item_name] = None
|
|
||||||
|
|
||||||
# 麻酔管理料
|
|
||||||
if self.record.anesthetizing_manage_flag == '@':
|
|
||||||
self.query_parameter['anesthetizing_manage_flag'] = None
|
|
||||||
self.query_parameter['anesthetizing_manage_spec_day'] = None
|
|
||||||
self.query_parameter['anesthetizing_manage_can_day'] = None
|
|
||||||
# 在宅療養支援病院・診療所
|
|
||||||
if self.record.home_recuperation_flag == '@':
|
|
||||||
self.query_parameter['home_recuperation_flag'] = None
|
|
||||||
self.query_parameter['home_recuperation_spec_day'] = None
|
|
||||||
self.query_parameter['home_recuperation_cancel_day'] = None
|
|
||||||
# 在宅時医学総合管理料
|
|
||||||
if self.record.synthesis_when_staying_flag == '@':
|
|
||||||
self.query_parameter['synthesis_when_staying_flag'] = None
|
|
||||||
self.query_parameter['synthesis_when_staying_spec_day'] = None
|
|
||||||
self.query_parameter['synthesis_when_staying_can_day'] = None
|
|
||||||
# 在宅末期医療総合診療料
|
|
||||||
if self.record.home_late_flag == '@':
|
|
||||||
self.query_parameter['home_late_flag'] = None
|
|
||||||
self.query_parameter['home_late_ok_day'] = None
|
|
||||||
self.query_parameter['home_late_can_day'] = None
|
|
||||||
# ケアミックス区分
|
|
||||||
if self.record.caremix_kind == '@':
|
|
||||||
self.query_parameter['caremix_kind'] = None
|
|
||||||
# 完全型・移行型区分
|
|
||||||
if self.record.fullmove_flag == '@':
|
|
||||||
self.query_parameter['fullmove_flag'] = None
|
|
||||||
# 療養型病床群
|
|
||||||
if self.record.resthp_flag == '@':
|
|
||||||
# 医療型
|
|
||||||
self.query_parameter['resthp_flag'] = None
|
|
||||||
self.query_parameter['resthp_care_kind'] = None
|
|
||||||
self.query_parameter['resthp_bed_num'] = None
|
|
||||||
self.query_parameter['resthp_ok_date'] = None
|
|
||||||
self.query_parameter['resthp_can_date'] = None
|
|
||||||
# 介護型
|
|
||||||
self.query_parameter['resthp_care_nrs_kind'] = None
|
|
||||||
self.query_parameter['resthp_care_bed_num'] = None
|
|
||||||
self.query_parameter['resthp_care_ok_date'] = None
|
|
||||||
self.query_parameter['resthp_care_can_date'] = None
|
|
||||||
# 合計
|
|
||||||
self.query_parameter['resthp_sbed_num'] = None
|
|
||||||
# 一般病棟
|
|
||||||
if self.record.nrmhp_flag == '@':
|
|
||||||
self.query_parameter['nrmhp_flag'] = None
|
|
||||||
self.query_parameter['nrmhp_care_kind'] = None
|
|
||||||
self.query_parameter['nrmhp_bed_total_num'] = None
|
|
||||||
# 精神病棟
|
|
||||||
if self.record.menthp_flag == '@':
|
|
||||||
self.query_parameter['menthp_flag'] = None
|
|
||||||
self.query_parameter['menthp_care_kind'] = None
|
|
||||||
self.query_parameter['menthp_bed_num'] = None
|
|
||||||
# 結核病棟
|
|
||||||
if self.record.tubhp_flag == '@':
|
|
||||||
self.query_parameter['tubhp_flag'] = None
|
|
||||||
self.query_parameter['tubhp_care_kind'] = None
|
|
||||||
self.query_parameter['tubhp_bed_num'] = None
|
|
||||||
# 感染症指定医療機関
|
|
||||||
if self.record.infhp_flag == '@':
|
|
||||||
self.query_parameter['infhp_flag'] = None
|
|
||||||
self.query_parameter['infhp_flag1'] = None
|
|
||||||
self.query_parameter['infhp_flag2'] = None
|
|
||||||
# 感染症病床
|
|
||||||
if self.record.infhp_bed_flag == '@':
|
|
||||||
self.query_parameter['infhp_bed_flag'] = None
|
|
||||||
self.query_parameter['infhp_bed_num'] = None
|
|
||||||
# 緩和ケア病棟設置病院
|
|
||||||
if self.record.hospice_flag == '@':
|
|
||||||
self.query_parameter['hospice_flag'] = None
|
|
||||||
self.query_parameter['hospice_bed_num'] = None
|
|
||||||
self.query_parameter['hospice_ok_date'] = None
|
|
||||||
self.query_parameter['hospice_can_date'] = None
|
|
||||||
# 医療機能評価
|
|
||||||
if self.record.hpfunce_st_flag == '@':
|
|
||||||
self.query_parameter['hpfunce_st_flag'] = None
|
|
||||||
self.query_parameter['hpfunce_st_kind'] = None
|
|
||||||
self.query_parameter['hpfunce_st_ok_date'] = None
|
|
||||||
self.query_parameter['hpfunce_st_can_date'] = None
|
|
||||||
# 臨床研修指定病院
|
|
||||||
if self.record.clolyhp_kind == '@':
|
|
||||||
# 基幹型病院1
|
|
||||||
self.query_parameter['clolyhp_kind'] = None
|
|
||||||
self.query_parameter['clolyhp_ok_date'] = None
|
|
||||||
self.query_parameter['clolyhp_can_date'] = None
|
|
||||||
# 基幹型病院2(群指定)
|
|
||||||
self.query_parameter['clhp_kind'] = None
|
|
||||||
self.query_parameter['clhp_ok_date'] = None
|
|
||||||
self.query_parameter['clhp_can_date'] = None
|
|
||||||
# 協力型病院(群指定)
|
|
||||||
self.query_parameter['cldephp_kind'] = None
|
|
||||||
self.query_parameter['cldephp_ok_date'] = None
|
|
||||||
self.query_parameter['cldephp_can_date'] = None
|
|
||||||
# 災害拠点病院
|
|
||||||
if self.record.disasthp_flag == '@':
|
|
||||||
self.query_parameter['disasthp_flag'] = None
|
|
||||||
# 救急医療
|
|
||||||
if self.record.d1emerhp_flag == '@':
|
|
||||||
self.query_parameter['d1emerhp_flag'] = None
|
|
||||||
self.query_parameter['d2emerhp_flag'] = None
|
|
||||||
self.query_parameter['d3emerhp_flag'] = None
|
|
||||||
# 救急告示診療所
|
|
||||||
if self.record.emergency_clinic == '@':
|
|
||||||
self.query_parameter['emergency_clinic'] = None
|
|
||||||
# 治験中核病院
|
|
||||||
if self.record.trial_core_flag == '@':
|
|
||||||
self.query_parameter['trial_core_flag'] = None
|
|
||||||
self.query_parameter['trial_core_div'] = None
|
|
||||||
self.query_parameter['trial_core_ok_date'] = None
|
|
||||||
self.query_parameter['trial_core_can_date'] = None
|
|
||||||
# 認知症疾患医療センター
|
|
||||||
if self.record.dementia_flag == '@':
|
|
||||||
self.query_parameter['dementia_flag'] = None
|
|
||||||
self.query_parameter['dementia_okd_ate'] = None
|
|
||||||
self.query_parameter['dementia_can_date'] = None
|
|
||||||
# 特定健康診査実施機関
|
|
||||||
if self.record.sphealth_exploration == '@':
|
|
||||||
self.query_parameter['sphealth_exploration'] = None
|
|
||||||
# 特定保健指導実施機関
|
|
||||||
if self.record.sphealth_guidance == '@':
|
|
||||||
self.query_parameter['sphealth_guidance'] = None
|
|
||||||
|
|
||||||
# 先進医療実施医療機関
|
|
||||||
is_aggregate_item_clear = self.record.hiadhp_flag == '@'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter['hiadhp_flag'] = None
|
|
||||||
# 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
|
||||||
for i in range(1, 41):
|
|
||||||
setting_item_name_code = f'hiadhpcode{i}'
|
|
||||||
setting_item_name_kind = f'hiadhpkind{i}'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter[setting_item_name_code] = None
|
|
||||||
self.query_parameter[setting_item_name_kind] = None
|
|
||||||
|
|
||||||
# 先端医療実施医療機関
|
|
||||||
is_aggregate_item_clear = self.record.hitechhp_flag == '@'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter['hitechhp_flag'] = None
|
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
|
||||||
for i in range(1, 21):
|
|
||||||
setting_item_name = f'hitechhpkind{i}'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter[setting_item_name] = None
|
|
||||||
|
|
||||||
# 政策医療
|
|
||||||
# 項目クリア判断
|
|
||||||
is_aggregate_item_clear = self.record.policy_medical_flag == '@'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter['policy_medical_flag'] = None
|
|
||||||
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
|
|
||||||
for i in range(1, 21):
|
|
||||||
num = str(i).zfill(2) # 2桁で0埋め
|
|
||||||
setting_item_name_code = f'policymedical_code{num}'
|
|
||||||
setting_item_name_content = f'policymedical_content{num}'
|
|
||||||
if is_aggregate_item_clear:
|
|
||||||
self.query_parameter[setting_item_name_code] = None
|
|
||||||
self.query_parameter[setting_item_name_content] = None
|
|
||||||
|
|
||||||
# 訪問看護ステーション
|
|
||||||
if self.record.visitcarest_flag == '@':
|
|
||||||
self.query_parameter['visitcarest_flag'] = None
|
|
||||||
self.query_parameter['visitcarestation_id'] = None
|
|
||||||
self.query_parameter['visitcarestation_code'] = None
|
|
||||||
self.query_parameter['visitcarestation_yobi'] = None
|
|
||||||
# 開設年月
|
|
||||||
if self.record.open_date == '@':
|
|
||||||
self.query_parameter['open_date'] = None
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
@ -263,10 +263,6 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# レコードの存在確認(施設)
|
# レコードの存在確認(施設)
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
if record_count[0]['count_num'] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
self.queries.append(self.INSERT_INST_QUERY)
|
self.queries.append(self.INSERT_INST_QUERY)
|
||||||
@ -348,64 +344,96 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
# 未確認フラグ
|
# 未確認フラグ
|
||||||
if len(self.record.uncheck_flag) > 0:
|
if len(self.record.uncheck_flag) > 0:
|
||||||
set_clauses.append('unconf_flg = :uncheck_flag')
|
set_clauses.append('unconf_flg = :uncheck_flag')
|
||||||
|
if self.record.uncheck_flag == '@':
|
||||||
|
self.query_parameter['uncheck_flag'] = None
|
||||||
|
|
||||||
# 削除予定理由コード
|
# 削除予定理由コード
|
||||||
if len(self.record.hpdel_code) > 0:
|
if len(self.record.hpdel_code) > 0:
|
||||||
set_clauses.append('delete_sche_reason_cd = :hpdel_code')
|
set_clauses.append('delete_sche_reason_cd = :hpdel_code')
|
||||||
|
if self.record.hpdel_code == '@':
|
||||||
|
self.query_parameter['hpdel_code'] = None
|
||||||
|
|
||||||
# 重複時相手先コード
|
# 重複時相手先コード
|
||||||
if len(self.record.dup_opp_code) > 0:
|
if len(self.record.dup_opp_code) > 0:
|
||||||
set_clauses.append('dup_opp_cd = :dup_opp_code')
|
set_clauses.append('dup_opp_cd = :dup_opp_code')
|
||||||
|
if self.record.duphp_id == '@':
|
||||||
|
self.query_parameter['dup_opp_code'] = None
|
||||||
|
|
||||||
# 住所不明理由コード
|
# 住所不明理由コード
|
||||||
if len(self.record.hp_addr_lost_code) > 0:
|
if len(self.record.hp_addr_lost_code) > 0:
|
||||||
set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code')
|
set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code')
|
||||||
|
if self.record.hp_addr_lost_code == '@':
|
||||||
|
self.query_parameter['hp_addr_lost_code'] = None
|
||||||
|
|
||||||
# 電話番号なしフラグ
|
# 電話番号なしフラグ
|
||||||
if len(self.record.tel_nothing_flag) > 0:
|
if len(self.record.tel_nothing_flag) > 0:
|
||||||
set_clauses.append('phone_number_non_flg = :tel_nothing_flag')
|
set_clauses.append('phone_number_non_flg = :tel_nothing_flag')
|
||||||
|
if self.record.tel_nothing_flag == '@':
|
||||||
|
self.query_parameter['tel_nothing_flag'] = None
|
||||||
|
|
||||||
# 電話番号
|
# 電話番号
|
||||||
if len(self.record.hp_tel) > 0:
|
if len(self.record.hp_tel) > 0:
|
||||||
set_clauses.append('inst_phone_number = :hp_tel')
|
set_clauses.append('inst_phone_number = :hp_tel')
|
||||||
|
if self.record.hp_tel == '@':
|
||||||
|
self.query_parameter['hp_tel'] = None
|
||||||
|
|
||||||
# 施設代表者コード
|
# 施設代表者コード
|
||||||
if len(self.record.inst_repre_code) > 0:
|
if len(self.record.inst_repre_code) > 0:
|
||||||
set_clauses.append('inst_repre_cd = :inst_repre_code')
|
set_clauses.append('inst_repre_cd = :inst_repre_code')
|
||||||
|
if self.record.president_id == '@':
|
||||||
|
self.query_parameter['inst_repre_code'] = None
|
||||||
|
|
||||||
# 代表者(カナ)
|
# 代表者(カナ)
|
||||||
if len(self.record.president_kana) > 0:
|
if len(self.record.president_kana) > 0:
|
||||||
set_clauses.append('inst_repre_kana = :president_kana')
|
set_clauses.append('inst_repre_kana = :president_kana')
|
||||||
|
if self.record.president_kana == '@':
|
||||||
|
self.query_parameter['president_kana'] = None
|
||||||
|
|
||||||
# 代表者(漢字) ※「@」が大文字
|
# 代表者(漢字) ※「@」が大文字
|
||||||
if len(self.record.president) > 0:
|
if len(self.record.president) > 0:
|
||||||
set_clauses.append('inst_repre = :president')
|
set_clauses.append('inst_repre = :president')
|
||||||
|
if self.record.president == '@':
|
||||||
|
self.query_parameter['president'] = None
|
||||||
|
|
||||||
# 開業予定フラグ・開業予定年月
|
# 開業予定フラグ・開業予定年月
|
||||||
if len(self.record.open_flag + self.record.open_year_month) > 0:
|
if len(self.record.open_flag + self.record.open_year_month) > 0:
|
||||||
set_clauses.append('estab_sche_flg = :open_flag')
|
set_clauses.append('estab_sche_flg = :open_flag')
|
||||||
set_clauses.append('estab_sche_ym = :open_year_month')
|
set_clauses.append('estab_sche_ym = :open_year_month')
|
||||||
|
if self.record.open_flag == '@':
|
||||||
|
self.query_parameter['open_flag'] = None
|
||||||
|
self.query_parameter['open_year_month'] = None
|
||||||
|
|
||||||
# 休院フラグ・休院開始年月
|
# 休院フラグ・休院開始年月
|
||||||
if len(self.record.close_flag + self.record.close_year_month) > 0:
|
if len(self.record.close_flag + self.record.close_year_month) > 0:
|
||||||
set_clauses.append('close_flg = :close_flag')
|
set_clauses.append('close_flg = :close_flag')
|
||||||
set_clauses.append('close_start_ym = :close_year_month')
|
set_clauses.append('close_start_ym = :close_year_month')
|
||||||
|
if self.record.close_flag == '@':
|
||||||
|
self.query_parameter['close_flag'] = None
|
||||||
|
self.query_parameter['close_year_month'] = None
|
||||||
|
|
||||||
# 関連大学親コード
|
# 関連大学親コード
|
||||||
if len(self.record.univ_prnt_code) > 0:
|
if len(self.record.univ_prnt_code) > 0:
|
||||||
set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code')
|
set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code')
|
||||||
|
if self.record.assoc_parrent_id == '@':
|
||||||
|
self.query_parameter['univ_prnt_code'] = None
|
||||||
|
|
||||||
# 病棟閉鎖フラグ
|
# 病棟閉鎖フラグ
|
||||||
if len(self.record.close_flag2) > 0:
|
if len(self.record.close_flag2) > 0:
|
||||||
set_clauses.append('ward_abolish_flg = :close_flag2')
|
set_clauses.append('ward_abolish_flg = :close_flag2')
|
||||||
|
if self.record.close_flag2 == '@':
|
||||||
|
self.query_parameter['close_flag2'] = None
|
||||||
|
|
||||||
# 病床数(定員)
|
# 病床数(定員)
|
||||||
if self.record.bed_num is not None:
|
if self.record.bed_num is not None:
|
||||||
set_clauses.append('bed_num = :bed_num')
|
set_clauses.append('bed_num = :bed_num')
|
||||||
|
if self.record.bed_num == '@':
|
||||||
|
self.query_parameter['bed_num'] = None
|
||||||
|
|
||||||
# 許可病床メンテ日付
|
# 許可病床メンテ日付
|
||||||
if len(self.record.bed_class_maint_date) > 0:
|
if len(self.record.bed_class_maint_date) > 0:
|
||||||
set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date')
|
set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date')
|
||||||
|
if self.record.bed_class_maint_date == '@':
|
||||||
|
self.query_parameter['bed_class_maint_date'] = None
|
||||||
|
|
||||||
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
|
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
|
||||||
if not self.record.prmit_bed.count(None) == len(self.record.prmit_bed):
|
if not self.record.prmit_bed.count(None) == len(self.record.prmit_bed):
|
||||||
@ -416,6 +444,14 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('prmit_bed_num_other = :bed_num_gen')
|
set_clauses.append('prmit_bed_num_other = :bed_num_gen')
|
||||||
set_clauses.append('prmit_bed_num_gen = :bed_num_gen2')
|
set_clauses.append('prmit_bed_num_gen = :bed_num_gen2')
|
||||||
set_clauses.append('prmit_bed_num_rcup = :bed_num_rest')
|
set_clauses.append('prmit_bed_num_rcup = :bed_num_rest')
|
||||||
|
if self.record.bed_num_sum == '@':
|
||||||
|
self.query_parameter['bed_num_sum'] = None
|
||||||
|
self.query_parameter['bed_num_psy'] = None
|
||||||
|
self.query_parameter['bed_num_tub'] = None
|
||||||
|
self.query_parameter['bed_num_epi'] = None
|
||||||
|
self.query_parameter['bed_num_gen'] = None
|
||||||
|
self.query_parameter['bed_num_gen2'] = None
|
||||||
|
self.query_parameter['bed_num_rest'] = None
|
||||||
|
|
||||||
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
|
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
|
||||||
if sum(len(item) for item in self.record.insp_item) > 0:
|
if sum(len(item) for item in self.record.insp_item) > 0:
|
||||||
@ -426,6 +462,14 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
set_clauses.append('insp_item_paras = :inspect_code5')
|
set_clauses.append('insp_item_paras = :inspect_code5')
|
||||||
set_clauses.append('insp_item_biochem = :inspect_code6')
|
set_clauses.append('insp_item_biochem = :inspect_code6')
|
||||||
set_clauses.append('insp_item_ri = :inspect_code7')
|
set_clauses.append('insp_item_ri = :inspect_code7')
|
||||||
|
if self.record.inspect_code1 == '@':
|
||||||
|
self.query_parameter['inspect_code1'] = None
|
||||||
|
self.query_parameter['inspect_code2'] = None
|
||||||
|
self.query_parameter['inspect_code3'] = None
|
||||||
|
self.query_parameter['inspect_code4'] = None
|
||||||
|
self.query_parameter['inspect_code5'] = None
|
||||||
|
self.query_parameter['inspect_code6'] = None
|
||||||
|
self.query_parameter['inspect_code7'] = None
|
||||||
|
|
||||||
update_columns = ','.join(set_clauses)
|
update_columns = ','.join(set_clauses)
|
||||||
# 何も更新項目が無い場合は更新処理は行わない
|
# 何も更新項目が無い場合は更新処理は行わない
|
||||||
@ -450,7 +494,6 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
# 削除
|
# 削除
|
||||||
self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY)
|
self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY)
|
||||||
|
|
||||||
# 診療科目の1つ目の値がクリアマーク(@)の場合、診療科目を登録しない
|
|
||||||
if self.record.medsbj_code[0] == "@":
|
if self.record.medsbj_code[0] == "@":
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -473,15 +516,10 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter)
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]['count_num'] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
# 特養医務室の集合項目の値がクリアマーク(@)の場合、登録しない
|
|
||||||
if self.record.dcfhp_92id == "@":
|
|
||||||
return
|
|
||||||
|
|
||||||
self.queries.append(self.INSERT_SPCARE_QUERY)
|
self.queries.append(self.INSERT_SPCARE_QUERY)
|
||||||
return
|
return
|
||||||
|
|
||||||
# 存在する場合はUpdate
|
# 存在する場合はUpdate
|
||||||
# 特養医務室の集合項目の値がクリアマーク(@)の場合、DCF親施設コードをクリアし、削除日を設定
|
|
||||||
if self.record.dcfhp_92id == "@":
|
if self.record.dcfhp_92id == "@":
|
||||||
self.query_parameter['dcf_prnt_inst_code'] = None
|
self.query_parameter['dcf_prnt_inst_code'] = None
|
||||||
self.query_parameter['delete_ymd'] = self.query_parameter['execute_date_str_ymd']
|
self.query_parameter['delete_ymd'] = self.query_parameter['execute_date_str_ymd']
|
||||||
@ -491,73 +529,3 @@ class ComInstMapper(UltmarcTableMapper):
|
|||||||
self.queries.append(self.UPDATE_SPCARE_QUERY)
|
self.queries.append(self.UPDATE_SPCARE_QUERY)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
|
|
||||||
# 未確認フラグ
|
|
||||||
if self.record.uncheck_flag == '@':
|
|
||||||
self.query_parameter['uncheck_flag'] = None
|
|
||||||
# 削除予定理由コード
|
|
||||||
if self.record.hpdel_code == '@':
|
|
||||||
self.query_parameter['hpdel_code'] = None
|
|
||||||
# 重複時相手先コード
|
|
||||||
if self.record.duphp_id == '@':
|
|
||||||
self.query_parameter['dup_opp_code'] = None
|
|
||||||
# 住所不明理由コード
|
|
||||||
if self.record.hp_addr_lost_code == '@':
|
|
||||||
self.query_parameter['hp_addr_lost_code'] = None
|
|
||||||
# 電話番号なしフラグ
|
|
||||||
if self.record.tel_nothing_flag == '@':
|
|
||||||
self.query_parameter['tel_nothing_flag'] = None
|
|
||||||
# 電話番号
|
|
||||||
if self.record.hp_tel == '@':
|
|
||||||
self.query_parameter['hp_tel'] = None
|
|
||||||
# 施設代表者コード
|
|
||||||
if self.record.president_id == '@':
|
|
||||||
self.query_parameter['inst_repre_code'] = None
|
|
||||||
# 代表者(カナ)
|
|
||||||
if self.record.president_kana == '@':
|
|
||||||
self.query_parameter['president_kana'] = None
|
|
||||||
# 代表者(漢字) ※全角文字のため、クリアマーク「@」が大文字
|
|
||||||
if self.record.president == '@':
|
|
||||||
self.query_parameter['president'] = None
|
|
||||||
# 開業予定フラグ・開業予定年月
|
|
||||||
if self.record.open_flag == '@':
|
|
||||||
self.query_parameter['open_flag'] = None
|
|
||||||
self.query_parameter['open_year_month'] = None
|
|
||||||
# 休院フラグ・休院開始年月
|
|
||||||
if self.record.close_flag == '@':
|
|
||||||
self.query_parameter['close_flag'] = None
|
|
||||||
self.query_parameter['close_year_month'] = None
|
|
||||||
# 関連大学親コード
|
|
||||||
if self.record.assoc_parrent_id == '@':
|
|
||||||
self.query_parameter['univ_prnt_code'] = None
|
|
||||||
# 病棟閉鎖フラグ
|
|
||||||
if self.record.close_flag2 == '@':
|
|
||||||
self.query_parameter['close_flag2'] = None
|
|
||||||
# 病床数(定員)
|
|
||||||
if self.record.bed_num == '@':
|
|
||||||
self.query_parameter['bed_num'] = None
|
|
||||||
# 許可病床メンテ日付
|
|
||||||
if self.record.bed_class_maint_date == '@':
|
|
||||||
self.query_parameter['bed_class_maint_date'] = None
|
|
||||||
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
|
|
||||||
if self.record.bed_num_sum == '@':
|
|
||||||
self.query_parameter['bed_num_sum'] = None
|
|
||||||
self.query_parameter['bed_num_psy'] = None
|
|
||||||
self.query_parameter['bed_num_tub'] = None
|
|
||||||
self.query_parameter['bed_num_epi'] = None
|
|
||||||
self.query_parameter['bed_num_gen'] = None
|
|
||||||
self.query_parameter['bed_num_gen2'] = None
|
|
||||||
self.query_parameter['bed_num_rest'] = None
|
|
||||||
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
|
|
||||||
if self.record.inspect_code1 == '@':
|
|
||||||
self.query_parameter['inspect_code1'] = None
|
|
||||||
self.query_parameter['inspect_code2'] = None
|
|
||||||
self.query_parameter['inspect_code3'] = None
|
|
||||||
self.query_parameter['inspect_code4'] = None
|
|
||||||
self.query_parameter['inspect_code5'] = None
|
|
||||||
self.query_parameter['inspect_code6'] = None
|
|
||||||
self.query_parameter['inspect_code7'] = None
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
@ -143,9 +143,6 @@ class ComPharmMapper(UltmarcTableMapper):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
@ -178,6 +175,7 @@ class ComPharmMapper(UltmarcTableMapper):
|
|||||||
# 住所不明理由コード
|
# 住所不明理由コード
|
||||||
if self.record.hp_addr_lost_code != '':
|
if self.record.hp_addr_lost_code != '':
|
||||||
set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code')
|
set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code')
|
||||||
|
self.query_parameter['hp_addr_lost_code'] = None if self.record.hp_addr_lost_code == '@' else self.record.hp_addr_lost_code
|
||||||
|
|
||||||
# 正式施設名カナ
|
# 正式施設名カナ
|
||||||
if self.record.hp_name_kana != '':
|
if self.record.hp_name_kana != '':
|
||||||
@ -199,31 +197,42 @@ class ComPharmMapper(UltmarcTableMapper):
|
|||||||
if len(self.record.close_flg + self.record.close_yearmonth) > 0:
|
if len(self.record.close_flg + self.record.close_yearmonth) > 0:
|
||||||
set_clauses.append('close_flg = :close_flg')
|
set_clauses.append('close_flg = :close_flg')
|
||||||
set_clauses.append('close_start_ym = :close_yearmonth')
|
set_clauses.append('close_start_ym = :close_yearmonth')
|
||||||
|
if self.record.close_flg == '@':
|
||||||
|
self.query_parameter['close_flg'] = None
|
||||||
|
self.query_parameter['close_yearmonth'] = None
|
||||||
|
|
||||||
# 開業予定フラグ、開業予定年月
|
# 開業予定フラグ、開業予定年月
|
||||||
if len(self.record.open_flag + self.record.open_yearmonth) > 0:
|
if len(self.record.open_flag + self.record.open_yearmonth) > 0:
|
||||||
set_clauses.append('estab_sche_flg = :open_flag')
|
set_clauses.append('estab_sche_flg = :open_flag')
|
||||||
set_clauses.append('estab_sche_ym = :open_yearmonth')
|
set_clauses.append('estab_sche_ym = :open_yearmonth')
|
||||||
|
if self.record.open_flag == '@':
|
||||||
|
self.query_parameter['open_flag'] = None
|
||||||
|
self.query_parameter['open_yearmonth'] = None
|
||||||
|
|
||||||
# 施設代表者カナ
|
# 施設代表者カナ
|
||||||
if self.record.president_Kana != '':
|
if self.record.president_Kana != '':
|
||||||
set_clauses.append('inst_repre_kana = :president_Kana')
|
set_clauses.append('inst_repre_kana = :president_Kana')
|
||||||
|
self.query_parameter['president_Kana'] = None if self.record.president_Kana == '@' else self.record.president_Kana
|
||||||
|
|
||||||
# 施設代表者
|
# 施設代表者 ※@が大文字
|
||||||
if self.record.president != '':
|
if self.record.president != '':
|
||||||
set_clauses.append('inst_repre = :president')
|
set_clauses.append('inst_repre = :president')
|
||||||
|
self.query_parameter['president'] = None if self.record.president == '@' else self.record.president
|
||||||
|
|
||||||
# 電話番号なしフラグ
|
# 電話番号なしフラグ
|
||||||
if self.record.tel_nothing_flag != '':
|
if self.record.tel_nothing_flag != '':
|
||||||
set_clauses.append('phone_number_non_flg = :tel_nothing_flag')
|
set_clauses.append('phone_number_non_flg = :tel_nothing_flag')
|
||||||
|
self.query_parameter['tel_nothing_flag'] = None if self.record.tel_nothing_flag == '@' else self.record.tel_nothing_flag
|
||||||
|
|
||||||
# 未確認フラグ
|
# 未確認フラグ
|
||||||
if self.record.unconf_flg != '':
|
if self.record.unconf_flg != '':
|
||||||
set_clauses.append('unconf_flg = :unconf_flg')
|
set_clauses.append('unconf_flg = :unconf_flg')
|
||||||
|
self.query_parameter['unconf_flg'] = None if self.record.unconf_flg == '@' else self.record.unconf_flg
|
||||||
|
|
||||||
# 施設電話番号
|
# 施設電話番号
|
||||||
if self.record.tel_number != '':
|
if self.record.tel_number != '':
|
||||||
set_clauses.append('inst_phone_number = :tel_number')
|
set_clauses.append('inst_phone_number = :tel_number')
|
||||||
|
self.query_parameter['tel_number'] = None if self.record.tel_number == '@' else self.record.tel_number
|
||||||
|
|
||||||
# 施設住所カナ
|
# 施設住所カナ
|
||||||
if self.record.addr_kana != '':
|
if self.record.addr_kana != '':
|
||||||
@ -246,6 +255,7 @@ class ComPharmMapper(UltmarcTableMapper):
|
|||||||
# 住所表示番号
|
# 住所表示番号
|
||||||
if self.record.addr_number != '':
|
if self.record.addr_number != '':
|
||||||
set_clauses.append('addr_display_number = :addr_number')
|
set_clauses.append('addr_display_number = :addr_number')
|
||||||
|
self.query_parameter['addr_number'] = None if self.record.addr_number == '@' else self.record.addr_number
|
||||||
|
|
||||||
# 住所カウント(集合項目である県コードが入っていればカウントをセットする)
|
# 住所カウント(集合項目である県コードが入っていればカウントをセットする)
|
||||||
if len(self.record.prefc_cd) > 0:
|
if len(self.record.prefc_cd) > 0:
|
||||||
@ -255,73 +265,32 @@ class ComPharmMapper(UltmarcTableMapper):
|
|||||||
# 経営体コード
|
# 経営体コード
|
||||||
if self.record.mgtclass_code != '':
|
if self.record.mgtclass_code != '':
|
||||||
set_clauses.append('manage_cd = :mgtclass_code')
|
set_clauses.append('manage_cd = :mgtclass_code')
|
||||||
|
self.query_parameter['mgtclass_code'] = None if self.record.mgtclass_code == '@' else self.record.mgtclass_code
|
||||||
|
|
||||||
# 削除予定理由コード
|
# 削除予定理由コード
|
||||||
if self.record.del_cd != '':
|
if self.record.del_cd != '':
|
||||||
set_clauses.append('delete_sche_reason_cd = :del_cd')
|
set_clauses.append('delete_sche_reason_cd = :del_cd')
|
||||||
|
self.query_parameter['del_cd'] = None if self.record.del_cd == '@' else self.record.del_cd
|
||||||
|
|
||||||
# 重複時相手先コード
|
# 重複時相手先コード
|
||||||
if self.record.dup_opp_cd != '':
|
if self.record.dup_opp_cd != '':
|
||||||
set_clauses.append('dup_opp_cd = :dup_opp_cd')
|
set_clauses.append('dup_opp_cd = :dup_opp_cd')
|
||||||
|
self.query_parameter['dup_opp_cd'] = None if self.record.dup_opp_cd == '@' else self.record.dup_opp_cd
|
||||||
|
|
||||||
# 管理薬剤師名(漢字)※@が大文字
|
# 管理薬剤師名(漢字)※@が大文字
|
||||||
if self.record.pharmacist != '':
|
if self.record.pharmacist != '':
|
||||||
set_clauses.append('supervising_pharmacist = :pharmacist')
|
set_clauses.append('supervising_pharmacist = :pharmacist')
|
||||||
|
self.query_parameter['pharmacist'] = None if self.record.pharmacist == '@' else self.record.pharmacist
|
||||||
|
|
||||||
# 管理薬剤師名(カナ)
|
# 管理薬剤師名(カナ)
|
||||||
if self.record.pharmacist_kana != '':
|
if self.record.pharmacist_kana != '':
|
||||||
set_clauses.append('supervising_pharmacist_kana = :pharmacist_kana')
|
set_clauses.append('supervising_pharmacist_kana = :pharmacist_kana')
|
||||||
|
self.query_parameter['pharmacist_kana'] = None if self.record.pharmacist_kana == '@' else self.record.pharmacist_kana
|
||||||
|
|
||||||
# チェーン店本部コード
|
# チェーン店本部コード
|
||||||
if self.record.franchise_hq_id != '':
|
if self.record.franchise_hq_id != '':
|
||||||
set_clauses.append('franchise_hq_cd = :franchise_hq_cd')
|
set_clauses.append('franchise_hq_cd = :franchise_hq_cd')
|
||||||
|
|
||||||
return set_clauses
|
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
# 住所不明理由コード
|
|
||||||
if self.record.hp_addr_lost_code == '@':
|
|
||||||
self.query_parameter['hp_addr_lost_code'] = None
|
|
||||||
# 休院フラグ、休院予定年月
|
|
||||||
if self.record.close_flg == '@':
|
|
||||||
self.query_parameter['close_flg'] = None
|
|
||||||
self.query_parameter['close_yearmonth'] = None
|
|
||||||
# 開業予定フラグ、開業予定年月
|
|
||||||
if self.record.open_flag == '@':
|
|
||||||
self.query_parameter['open_flag'] = None
|
|
||||||
self.query_parameter['open_yearmonth'] = None
|
|
||||||
# 施設代表者カナ
|
|
||||||
if self.record.president_Kana == '@':
|
|
||||||
self.query_parameter['president_Kana'] = None
|
|
||||||
# 施設代表者 ※@が大文字
|
|
||||||
if self.record.president == '@':
|
|
||||||
self.query_parameter['president'] = None
|
|
||||||
# 電話番号なしフラグ
|
|
||||||
if self.record.tel_nothing_flag == '@':
|
|
||||||
self.query_parameter['tel_nothing_flag'] = None
|
|
||||||
# 未確認フラグ
|
|
||||||
if self.record.unconf_flg == '@':
|
|
||||||
self.query_parameter['unconf_flg'] = None
|
|
||||||
# 施設電話番号
|
|
||||||
if self.record.tel_number == '@':
|
|
||||||
self.query_parameter['tel_number'] = None
|
|
||||||
# 住所表示番号
|
|
||||||
if self.record.addr_number == '@':
|
|
||||||
self.query_parameter['addr_number'] = None
|
|
||||||
# 削除予定理由コード
|
|
||||||
if self.record.del_cd == '@':
|
|
||||||
self.query_parameter['del_cd'] = None
|
|
||||||
# 重複時相手先コード
|
|
||||||
if self.record.duphp_id == '@':
|
|
||||||
self.query_parameter['dup_opp_cd'] = None
|
|
||||||
# 管理薬剤師名(漢字) ※@が大文字
|
|
||||||
if self.record.pharmacist == '@':
|
|
||||||
self.query_parameter['pharmacist'] = None
|
|
||||||
# 管理薬剤師名(カナ)
|
|
||||||
if self.record.pharmacist_kana == '@':
|
|
||||||
self.query_parameter['pharmacist_kana'] = None
|
|
||||||
# チェーン店本部コード
|
|
||||||
if self.record.franchise_hq_id == '@':
|
if self.record.franchise_hq_id == '@':
|
||||||
self.query_parameter['franchise_hq_cd'] = None
|
self.query_parameter['franchise_hq_cd'] = None
|
||||||
|
|
||||||
return
|
return set_clauses
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||||
UltmarcTableMapper
|
UltmarcTableMapper
|
||||||
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_base import \
|
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_base import ComPrefcMedBase
|
||||||
ComPrefcMedBase
|
|
||||||
|
|
||||||
|
|
||||||
class ComPrefcMedBaseMapper(UltmarcTableMapper):
|
class ComPrefcMedBaseMapper(UltmarcTableMapper):
|
||||||
@ -192,18 +191,15 @@ class ComPrefcMedBaseMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
def __init__(self, record: list[str], db) -> None:
|
def __init__(self, record: list[str], db) -> None:
|
||||||
super().__init__(record, db, ComPrefcMedBase)
|
super().__init__(record, db, ComPrefcMedBase)
|
||||||
program_name = __name__.split(".")[-1] # 当モジュール名(現行から変わっている)
|
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||||
# モジュール名をクエリパラメータに設定
|
# モジュール名をクエリパラメータに設定
|
||||||
self.query_parameter["program_name"] = program_name
|
self.query_parameter['program_name'] = program_name
|
||||||
# 読み込んだレコード値もクエリパラメータに追加
|
# 読み込んだレコード値もクエリパラメータに追加
|
||||||
self.query_parameter = {
|
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||||
**self.query_parameter,
|
|
||||||
**self.record.to_sql_parameter(),
|
|
||||||
}
|
|
||||||
|
|
||||||
def make_query(self):
|
def make_query(self):
|
||||||
# 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除
|
# 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除
|
||||||
if self.record.maint_flag == "B" and self.record.adddel_div == "1":
|
if self.record.maint_flag == 'B' and self.record.adddel_div == '1':
|
||||||
self.queries.append(self.PHYSICAL_DELETE_QUERY)
|
self.queries.append(self.PHYSICAL_DELETE_QUERY)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -212,16 +208,10 @@ class ComPrefcMedBaseMapper(UltmarcTableMapper):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
self.RECORD_EXISTS_QUERY, self.query_parameter
|
|
||||||
)
|
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]["count_num"] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
return self.INSERT_QUERY
|
return self.INSERT_QUERY
|
||||||
|
|
||||||
# 存在する場合ではUpdate
|
# 存在する場合ではUpdate
|
||||||
@ -232,258 +222,234 @@ class ComPrefcMedBaseMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
# 情報年月日
|
# 情報年月日
|
||||||
if len(self.record.info_date) > 0:
|
if len(self.record.info_date) > 0:
|
||||||
set_clauses.append("info_date = :info_date")
|
set_clauses.append('info_date = :info_date')
|
||||||
|
if self.record.info_date == '@':
|
||||||
|
self.query_parameter['info_date'] = None
|
||||||
|
|
||||||
# 案内用ホームページアドレス
|
# 案内用ホームページアドレス
|
||||||
if len(self.record.home_page) > 0:
|
if len(self.record.home_page) > 0:
|
||||||
set_clauses.append("home_page = :home_page")
|
set_clauses.append('home_page = :home_page')
|
||||||
|
if self.record.home_page == '@':
|
||||||
|
self.query_parameter['home_page'] = None
|
||||||
|
|
||||||
# 院内処方フラグ
|
# 院内処方フラグ
|
||||||
if len(self.record.hppre_flg) > 0:
|
if len(self.record.hppre_flg) > 0:
|
||||||
set_clauses.append("hppre_flg = :hppre_flg")
|
set_clauses.append('hppre_flg = :hppre_flg')
|
||||||
|
if self.record.hppre_flg == '@':
|
||||||
|
self.query_parameter['hppre_flg'] = None
|
||||||
|
|
||||||
# 院外処方フラグ
|
# 院外処方フラグ
|
||||||
if len(self.record.expre_flg) > 0:
|
if len(self.record.expre_flg) > 0:
|
||||||
set_clauses.append("expre_flg = :expre_flg")
|
set_clauses.append('expre_flg = :expre_flg')
|
||||||
|
if self.record.expre_flg == '@':
|
||||||
|
self.query_parameter['expre_flg'] = None
|
||||||
|
|
||||||
# 治験の実施
|
# 治験の実施
|
||||||
if len(self.record.trial_flg) > 0:
|
if len(self.record.trial_flg) > 0:
|
||||||
set_clauses.append("trial_flg = :trial_flg")
|
set_clauses.append('trial_flg = :trial_flg')
|
||||||
set_clauses.append("trial_contcount = :trial_cont_count")
|
set_clauses.append('trial_contcount = :trial_cont_count')
|
||||||
set_clauses.append("trialwhet_from = :trial_whet_from")
|
set_clauses.append('trialwhet_from = :trial_whet_from')
|
||||||
set_clauses.append("trialwhet_to = :trial_whet_to")
|
set_clauses.append('trialwhet_to = :trial_whet_to')
|
||||||
|
if self.record.trial_flg == '@':
|
||||||
|
self.query_parameter['trial_flg'] = None
|
||||||
|
self.query_parameter['trial_cont_count'] = None
|
||||||
|
self.query_parameter['trial_whet_from'] = None
|
||||||
|
self.query_parameter['trial_whet_to'] = None
|
||||||
|
|
||||||
# 保有する施設設備フラグ
|
# 保有する施設設備フラグ
|
||||||
if len(self.record.equipment_flg) > 0:
|
if len(self.record.equipment_flg) > 0:
|
||||||
set_clauses.append("equipment_flg = :equipment_flg")
|
set_clauses.append('equipment_flg = :equipment_flg')
|
||||||
|
if self.record.equipment_flg == '@':
|
||||||
|
self.query_parameter['equipment_flg'] = None
|
||||||
|
|
||||||
# 対応することができる疾患・治療の内容フラグ
|
# 対応することができる疾患・治療の内容フラグ
|
||||||
if len(self.record.cos_disease_flg) > 0:
|
if len(self.record.cos_disease_flg) > 0:
|
||||||
set_clauses.append("cos_disease_flg = :cos_disease_flg")
|
set_clauses.append('cos_disease_flg = :cos_disease_flg')
|
||||||
|
if self.record.cos_disease_flg == '@':
|
||||||
|
self.query_parameter['cos_disease_flg'] = None
|
||||||
|
|
||||||
# 対応することができる短期滞在手術フラグ
|
# 対応することができる短期滞在手術フラグ
|
||||||
if len(self.record.cos_surgery) > 0:
|
if len(self.record.cos_surgery) > 0:
|
||||||
set_clauses.append("cos_surgery = :cos_surgery")
|
set_clauses.append('cos_surgery = :cos_surgery')
|
||||||
|
if self.record.cos_surgery == '@':
|
||||||
|
self.query_parameter['cos_surgery'] = None
|
||||||
|
|
||||||
# 専門外来フラグ
|
# 専門外来フラグ
|
||||||
if len(self.record.specialclinic_flg) > 0:
|
if len(self.record.specialclinic_flg) > 0:
|
||||||
set_clauses.append("specialclinic_flg = :specialclinic_flg")
|
set_clauses.append('specialclinic_flg = :specialclinic_flg')
|
||||||
|
if self.record.specialclinic_flg == '@':
|
||||||
|
self.query_parameter['specialclinic_flg'] = None
|
||||||
|
|
||||||
# 地域医療連携体制_窓口設置フラグ
|
# 地域医療連携体制_窓口設置フラグ
|
||||||
if len(self.record.establishment_flg) > 0:
|
if len(self.record.establishment_flg) > 0:
|
||||||
set_clauses.append("establishment_flg = :establishment_flg")
|
set_clauses.append('establishment_flg = :establishment_flg')
|
||||||
|
if self.record.establishment_flg == '@':
|
||||||
|
self.query_parameter['establishment_flg'] = None
|
||||||
|
|
||||||
# 地域医療連携体制_地域連携パスフラグ
|
# 地域医療連携体制_地域連携パスフラグ
|
||||||
if len(self.record.critical_flg) > 0:
|
if len(self.record.critical_flg) > 0:
|
||||||
set_clauses.append("critical_flg = :critical_flg")
|
set_clauses.append('critical_flg = :critical_flg')
|
||||||
|
if self.record.critical_flg == '@':
|
||||||
|
self.query_parameter['critical_flg'] = None
|
||||||
|
|
||||||
# 入院診療計画策定時における院内の連携体制
|
# 入院診療計画策定時における院内の連携体制
|
||||||
if len(self.record.cop_system) > 0:
|
if len(self.record.cop_system) > 0:
|
||||||
set_clauses.append("cop_system = :cop_system")
|
set_clauses.append('cop_system = :cop_system')
|
||||||
|
if self.record.cop_system == '@':
|
||||||
|
self.query_parameter['cop_system'] = None
|
||||||
|
|
||||||
# オーダリングシステム
|
# オーダリングシステム
|
||||||
if len(self.record.sys_exists_flg) > 0:
|
if len(self.record.sys_exists_flg) > 0:
|
||||||
set_clauses.append("sys_exists_flg = :sys_exists_flg")
|
set_clauses.append('sys_exists_flg = :sys_exists_flg')
|
||||||
set_clauses.append("sys_inspection = :sys_inspection")
|
set_clauses.append('sys_inspection = :sys_inspection')
|
||||||
set_clauses.append("sys_prescription = :sys_prescription")
|
set_clauses.append('sys_prescription = :sys_prescription')
|
||||||
set_clauses.append("sys_reserv = :sys_reserv")
|
set_clauses.append('sys_reserv = :sys_reserv')
|
||||||
|
if self.record.sys_exists_flg == '@':
|
||||||
|
self.query_parameter['sys_exists_flg'] = None
|
||||||
|
self.query_parameter['sys_inspection'] = None
|
||||||
|
self.query_parameter['sys_prescription'] = None
|
||||||
|
self.query_parameter['sys_reserv'] = None
|
||||||
|
|
||||||
# ICDコード利用フラグ
|
# ICDコード利用フラグ
|
||||||
if len(self.record.icduse_flg) > 0:
|
if len(self.record.icduse_flg) > 0:
|
||||||
set_clauses.append("icduse_flg = :icduse_flg")
|
set_clauses.append('icduse_flg = :icduse_flg')
|
||||||
|
if self.record.icduse_flg == '@':
|
||||||
|
self.query_parameter['icduse_flg'] = None
|
||||||
|
|
||||||
# 電子カルテフラク
|
# 電子カルテフラク
|
||||||
if len(self.record.echart_flg) > 0:
|
if len(self.record.echart_flg) > 0:
|
||||||
set_clauses.append("echart_flg = :echart_flg")
|
set_clauses.append('echart_flg = :echart_flg')
|
||||||
|
if self.record.echart_flg == '@':
|
||||||
|
self.query_parameter['echart_flg'] = None
|
||||||
|
|
||||||
# 専任従事者
|
# 専任従事者
|
||||||
if len(self.record.fulltime_flg) > 0:
|
if len(self.record.fulltime_flg) > 0:
|
||||||
set_clauses.append("fulltime_flg = :fulltime_flg")
|
set_clauses.append('fulltime_flg = :fulltime_flg')
|
||||||
set_clauses.append("fulltime_count = :fulltime_count")
|
set_clauses.append('fulltime_count = :fulltime_count')
|
||||||
|
if self.record.fulltime_flg == '@':
|
||||||
|
self.query_parameter['fulltime_flg'] = None
|
||||||
|
self.query_parameter['fulltime_count'] = None
|
||||||
|
|
||||||
# 病床患者数平均
|
# 病床患者数平均
|
||||||
if len(self.record.ge_patient_avg) > 0:
|
if len(self.record.ge_patient_avg) > 0:
|
||||||
set_clauses.append("ge_patient_avg = :ge_patient_avg")
|
set_clauses.append('ge_patient_avg = :ge_patient_avg')
|
||||||
set_clauses.append("mt_patient_avg = :mt_patient_avg")
|
set_clauses.append('mt_patient_avg = :mt_patient_avg')
|
||||||
set_clauses.append("mc_patient_avg = :mc_patient_avg")
|
set_clauses.append('mc_patient_avg = :mc_patient_avg')
|
||||||
set_clauses.append("ca_patient_avg = :ca_patient_avg")
|
set_clauses.append('ca_patient_avg = :ca_patient_avg')
|
||||||
set_clauses.append("pys_patient_avg = :pys_patient_avg")
|
set_clauses.append('pys_patient_avg = :pys_patient_avg')
|
||||||
set_clauses.append("tub_patient_avg = :inf_patient_avg")
|
set_clauses.append('tub_patient_avg = :inf_patient_avg')
|
||||||
set_clauses.append("inf_patient_avg = :tub_patient_avg")
|
set_clauses.append('inf_patient_avg = :tub_patient_avg')
|
||||||
set_clauses.append("patient_avg_sum = :patient_avg_sum")
|
set_clauses.append('patient_avg_sum = :patient_avg_sum')
|
||||||
set_clauses.append("patient_avg_from = :patient_avg_from")
|
set_clauses.append('patient_avg_from = :patient_avg_from')
|
||||||
set_clauses.append("patient_avg_to = :patient_avg_to")
|
set_clauses.append('patient_avg_to = :patient_avg_to')
|
||||||
|
if self.record.ge_patient_avg == '@':
|
||||||
|
self.query_parameter['ge_patient_avg'] = None
|
||||||
|
self.query_parameter['mt_patient_avg'] = None
|
||||||
|
self.query_parameter['mc_patient_avg'] = None
|
||||||
|
self.query_parameter['ca_patient_avg'] = None
|
||||||
|
self.query_parameter['pys_patient_avg'] = None
|
||||||
|
self.query_parameter['inf_patient_avg'] = None
|
||||||
|
self.query_parameter['tub_patient_avg'] = None
|
||||||
|
self.query_parameter['patient_avg_sum'] = None
|
||||||
|
self.query_parameter['patient_avg_from'] = None
|
||||||
|
self.query_parameter['patient_avg_to'] = None
|
||||||
|
|
||||||
# 患者数平均
|
# 患者数平均
|
||||||
if len(self.record.cl_patient_avg) > 0:
|
if len(self.record.cl_patient_avg) > 0:
|
||||||
set_clauses.append("cl_patient_avg = :cl_patient_avg")
|
set_clauses.append('cl_patient_avg = :cl_patient_avg')
|
||||||
set_clauses.append("cl_patient_avg_from = :cl_patient_avg_from")
|
set_clauses.append('cl_patient_avg_from = :cl_patient_avg_from')
|
||||||
set_clauses.append("cl_patient_avg_to = :cl_patient_avg_to")
|
set_clauses.append('cl_patient_avg_to = :cl_patient_avg_to')
|
||||||
|
if self.record.cl_patient_avg == '@':
|
||||||
|
self.query_parameter['cl_patient_avg'] = None
|
||||||
|
self.query_parameter['cl_patient_avg_from'] = None
|
||||||
|
self.query_parameter['cl_patient_avg_to'] = None
|
||||||
|
|
||||||
# 患者数平均
|
# 患者数平均
|
||||||
if len(self.record.hm_patient_avg) > 0:
|
if len(self.record.hm_patient_avg) > 0:
|
||||||
set_clauses.append("hm_patient_avg = :hm_patient_avg")
|
set_clauses.append('hm_patient_avg = :hm_patient_avg')
|
||||||
set_clauses.append("hm_patient_avg_from = :hm_patient_avg_from")
|
set_clauses.append('hm_patient_avg_from = :hm_patient_avg_from')
|
||||||
set_clauses.append("hm_patient_avg_to = :hm_patient_avg_to")
|
set_clauses.append('hm_patient_avg_to = :hm_patient_avg_to')
|
||||||
|
if self.record.hm_patient_avg == '@':
|
||||||
|
self.query_parameter['hm_patient_avg'] = None
|
||||||
|
self.query_parameter['hm_patient_avg_from'] = None
|
||||||
|
self.query_parameter['hm_patient_avg_to'] = None
|
||||||
|
|
||||||
# 患者数延数
|
# 患者数延数
|
||||||
if len(self.record.ge_patient_ex) > 0:
|
if len(self.record.ge_patient_ex) > 0:
|
||||||
set_clauses.append("ge_patient_ex = :ge_patient_ex")
|
set_clauses.append('ge_patient_ex = :ge_patient_ex')
|
||||||
set_clauses.append("mt_patient_ex = :mt_patient_ex")
|
set_clauses.append('mt_patient_ex = :mt_patient_ex')
|
||||||
set_clauses.append("mc_patient_ex = :mc_patient_ex")
|
set_clauses.append('mc_patient_ex = :mc_patient_ex')
|
||||||
set_clauses.append("ca_patient_ex = :ca_patient_ex")
|
set_clauses.append('ca_patient_ex = :ca_patient_ex')
|
||||||
set_clauses.append("pys_patient_ex = :pys_patient_ex")
|
set_clauses.append('pys_patient_ex = :pys_patient_ex')
|
||||||
set_clauses.append("tub_patient_ex = :tub_patient_ex")
|
set_clauses.append('tub_patient_ex = :tub_patient_ex')
|
||||||
set_clauses.append("inf_patient_ex = :inf_patient_ex")
|
set_clauses.append('inf_patient_ex = :inf_patient_ex')
|
||||||
set_clauses.append("patient_ex_sum = :patient_ex_sum")
|
set_clauses.append('patient_ex_sum = :patient_ex_sum')
|
||||||
set_clauses.append("patient_ex_from = :patient_ex_from")
|
set_clauses.append('patient_ex_from = :patient_ex_from')
|
||||||
set_clauses.append("patient_ex_to = :patient_ex_to")
|
set_clauses.append('patient_ex_to = :patient_ex_to')
|
||||||
|
if self.record.ge_patient_ex == '@':
|
||||||
|
self.query_parameter['ge_patient_ex'] = None
|
||||||
|
self.query_parameter['mt_patient_ex'] = None
|
||||||
|
self.query_parameter['mc_patient_ex'] = None
|
||||||
|
self.query_parameter['ca_patient_ex'] = None
|
||||||
|
self.query_parameter['pys_patient_ex'] = None
|
||||||
|
self.query_parameter['tub_patient_ex'] = None
|
||||||
|
self.query_parameter['inf_patient_ex'] = None
|
||||||
|
self.query_parameter['patient_ex_sum'] = None
|
||||||
|
self.query_parameter['patient_ex_from'] = None
|
||||||
|
self.query_parameter['patient_ex_to'] = None
|
||||||
|
|
||||||
# 患者数延数
|
# 患者数延数
|
||||||
if len(self.record.cl_patient_ex) > 0:
|
if len(self.record.cl_patient_ex) > 0:
|
||||||
set_clauses.append("cl_patient_ex = :cl_patient_ex")
|
set_clauses.append('cl_patient_ex = :cl_patient_ex')
|
||||||
set_clauses.append("cl_patient_ex_from = :cl_patient_ex_from")
|
set_clauses.append('cl_patient_ex_from = :cl_patient_ex_from')
|
||||||
set_clauses.append("cl_patient_ex_to = :cl_patient_ex_to")
|
set_clauses.append('cl_patient_ex_to = :cl_patient_ex_to')
|
||||||
|
if self.record.cl_patient_ex == '@':
|
||||||
|
self.query_parameter['cl_patient_ex'] = None
|
||||||
|
self.query_parameter['cl_patient_ex_from'] = None
|
||||||
|
self.query_parameter['cl_patient_ex_to'] = None
|
||||||
|
|
||||||
# 患者数延数
|
# 患者数延数
|
||||||
if len(self.record.hm_patient_ex) > 0:
|
if len(self.record.hm_patient_ex) > 0:
|
||||||
set_clauses.append("hm_patient_ex = :hm_patient_ex")
|
set_clauses.append('hm_patient_ex = :hm_patient_ex')
|
||||||
set_clauses.append("hm_patient_ex_from = :hm_patient_ex_from")
|
set_clauses.append('hm_patient_ex_from = :hm_patient_ex_from')
|
||||||
set_clauses.append("hm_patient_ex_to = :hm_patient_ex_to")
|
set_clauses.append('hm_patient_ex_to = :hm_patient_ex_to')
|
||||||
|
if self.record.hm_patient_ex == '@':
|
||||||
|
self.query_parameter['hm_patient_ex'] = None
|
||||||
|
self.query_parameter['hm_patient_ex_from'] = None
|
||||||
|
self.query_parameter['hm_patient_ex_to'] = None
|
||||||
|
|
||||||
# 平均在院日数
|
# 平均在院日数
|
||||||
if len(self.record.ge_stay_avg) > 0:
|
if len(self.record.ge_stay_avg) > 0:
|
||||||
set_clauses.append("ge_stay_avg = :ge_stay_avg")
|
set_clauses.append('ge_stay_avg = :ge_stay_avg')
|
||||||
set_clauses.append("mt_stay_avg = :mt_stay_avg")
|
set_clauses.append('mt_stay_avg = :mt_stay_avg')
|
||||||
set_clauses.append("mc_stay_avg = :mc_stay_avg")
|
set_clauses.append('mc_stay_avg = :mc_stay_avg')
|
||||||
set_clauses.append("ca_stay_avg = :ca_stay_avg")
|
set_clauses.append('ca_stay_avg = :ca_stay_avg')
|
||||||
set_clauses.append("pys_stay_avg = :pys_stay_avg")
|
set_clauses.append('pys_stay_avg = :pys_stay_avg')
|
||||||
set_clauses.append("tub_stay_avg = :tub_stay_avg")
|
set_clauses.append('tub_stay_avg = :tub_stay_avg')
|
||||||
set_clauses.append("inf_stay_avg = :inf_stay_avg")
|
set_clauses.append('inf_stay_avg = :inf_stay_avg')
|
||||||
set_clauses.append("stay_avg_sum = :stay_avg_sum")
|
set_clauses.append('stay_avg_sum = :stay_avg_sum')
|
||||||
set_clauses.append("stay_avg_from = :stay_avg_from")
|
set_clauses.append('stay_avg_from = :stay_avg_from')
|
||||||
set_clauses.append("stay_avg_to = :stay_avg_to")
|
set_clauses.append('stay_avg_to = :stay_avg_to')
|
||||||
|
if self.record.ge_stay_avg == '@':
|
||||||
|
self.query_parameter['ge_stay_avg'] = None
|
||||||
|
self.query_parameter['mt_stay_avg'] = None
|
||||||
|
self.query_parameter['mc_stay_avg'] = None
|
||||||
|
self.query_parameter['ca_stay_avg'] = None
|
||||||
|
self.query_parameter['pys_stay_avg'] = None
|
||||||
|
self.query_parameter['tub_stay_avg'] = None
|
||||||
|
self.query_parameter['inf_stay_avg'] = None
|
||||||
|
self.query_parameter['stay_avg_sum'] = None
|
||||||
|
self.query_parameter['stay_avg_from'] = None
|
||||||
|
self.query_parameter['stay_avg_to'] = None
|
||||||
|
|
||||||
update_columns = ",".join(set_clauses)
|
update_columns = ','.join(set_clauses)
|
||||||
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
||||||
if len(update_columns) == 0:
|
if len(update_columns) == 0:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
# 末尾にカンマを付けてSET句を完成させる
|
# 末尾にカンマを付けてSET句を完成させる
|
||||||
update_columns += ","
|
update_columns += ','
|
||||||
update_query = self.UPDATE_QUERY.format(update_columns=update_columns)
|
update_query = self.UPDATE_QUERY.format(
|
||||||
|
update_columns=update_columns
|
||||||
|
)
|
||||||
return update_query
|
return update_query
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
# 情報年月日
|
|
||||||
if self.record.info_date == "@":
|
|
||||||
self.query_parameter["info_date"] = None
|
|
||||||
# 案内用ホームページアドレス
|
|
||||||
if self.record.home_page == "@":
|
|
||||||
self.query_parameter["home_page"] = None
|
|
||||||
# 院内処方フラグ
|
|
||||||
if self.record.hppre_flg == "@":
|
|
||||||
self.query_parameter["hppre_flg"] = None
|
|
||||||
# 院外処方フラグ
|
|
||||||
if self.record.expre_flg == "@":
|
|
||||||
self.query_parameter["expre_flg"] = None
|
|
||||||
# 治験の実施
|
|
||||||
if self.record.trial_flg == "@":
|
|
||||||
self.query_parameter["trial_flg"] = None
|
|
||||||
self.query_parameter["trial_cont_count"] = None
|
|
||||||
self.query_parameter["trial_whet_from"] = None
|
|
||||||
self.query_parameter["trial_whet_to"] = None
|
|
||||||
# 保有する施設設備フラグ
|
|
||||||
if self.record.equipment_flg == "@":
|
|
||||||
self.query_parameter["equipment_flg"] = None
|
|
||||||
# 対応することができる疾患・治療の内容フラグ
|
|
||||||
if self.record.cos_disease_flg == "@":
|
|
||||||
self.query_parameter["cos_disease_flg"] = None
|
|
||||||
# 対応することができる短期滞在手術フラグ
|
|
||||||
if self.record.cos_surgery == "@":
|
|
||||||
self.query_parameter["cos_surgery"] = None
|
|
||||||
# 専門外来フラグ
|
|
||||||
if self.record.specialclinic_flg == "@":
|
|
||||||
self.query_parameter["specialclinic_flg"] = None
|
|
||||||
# 地域医療連携体制_窓口設置フラグ
|
|
||||||
if self.record.establishment_flg == "@":
|
|
||||||
self.query_parameter["establishment_flg"] = None
|
|
||||||
# 地域医療連携体制_地域連携パスフラグ
|
|
||||||
if self.record.critical_flg == "@":
|
|
||||||
self.query_parameter["critical_flg"] = None
|
|
||||||
# 入院診療計画策定時における院内の連携体制
|
|
||||||
if self.record.cop_system == "@":
|
|
||||||
self.query_parameter["cop_system"] = None
|
|
||||||
# オーダリングシステム
|
|
||||||
if self.record.sys_exists_flg == "@":
|
|
||||||
self.query_parameter["sys_exists_flg"] = None
|
|
||||||
self.query_parameter["sys_inspection"] = None
|
|
||||||
self.query_parameter["sys_prescription"] = None
|
|
||||||
self.query_parameter["sys_reserv"] = None
|
|
||||||
# ICDコード利用フラグ
|
|
||||||
if self.record.icduse_flg == "@":
|
|
||||||
self.query_parameter["icduse_flg"] = None
|
|
||||||
# 電子カルテフラク
|
|
||||||
if self.record.echart_flg == "@":
|
|
||||||
self.query_parameter["echart_flg"] = None
|
|
||||||
# 専任従事者
|
|
||||||
if self.record.fulltime_flg == "@":
|
|
||||||
self.query_parameter["fulltime_flg"] = None
|
|
||||||
self.query_parameter["fulltime_count"] = None
|
|
||||||
# 病床患者数平均
|
|
||||||
if self.record.ge_patient_avg == "@":
|
|
||||||
self.query_parameter["ge_patient_avg"] = None
|
|
||||||
self.query_parameter["mt_patient_avg"] = None
|
|
||||||
self.query_parameter["mc_patient_avg"] = None
|
|
||||||
self.query_parameter["ca_patient_avg"] = None
|
|
||||||
self.query_parameter["pys_patient_avg"] = None
|
|
||||||
self.query_parameter["inf_patient_avg"] = None
|
|
||||||
self.query_parameter["tub_patient_avg"] = None
|
|
||||||
self.query_parameter["patient_avg_sum"] = None
|
|
||||||
self.query_parameter["patient_avg_from"] = None
|
|
||||||
self.query_parameter["patient_avg_to"] = None
|
|
||||||
# 患者数平均
|
|
||||||
if self.record.cl_patient_avg == "@":
|
|
||||||
self.query_parameter["cl_patient_avg"] = None
|
|
||||||
self.query_parameter["cl_patient_avg_from"] = None
|
|
||||||
self.query_parameter["cl_patient_avg_to"] = None
|
|
||||||
# 患者数平均
|
|
||||||
if self.record.hm_patient_avg == "@":
|
|
||||||
self.query_parameter["hm_patient_avg"] = None
|
|
||||||
self.query_parameter["hm_patient_avg_from"] = None
|
|
||||||
self.query_parameter["hm_patient_avg_to"] = None
|
|
||||||
# 患者数延数
|
|
||||||
if self.record.ge_patient_ex == "@":
|
|
||||||
self.query_parameter["ge_patient_ex"] = None
|
|
||||||
self.query_parameter["mt_patient_ex"] = None
|
|
||||||
self.query_parameter["mc_patient_ex"] = None
|
|
||||||
self.query_parameter["ca_patient_ex"] = None
|
|
||||||
self.query_parameter["pys_patient_ex"] = None
|
|
||||||
self.query_parameter["tub_patient_ex"] = None
|
|
||||||
self.query_parameter["inf_patient_ex"] = None
|
|
||||||
self.query_parameter["patient_ex_sum"] = None
|
|
||||||
self.query_parameter["patient_ex_from"] = None
|
|
||||||
self.query_parameter["patient_ex_to"] = None
|
|
||||||
# 患者数延数
|
|
||||||
if self.record.cl_patient_ex == "@":
|
|
||||||
self.query_parameter["cl_patient_ex"] = None
|
|
||||||
self.query_parameter["cl_patient_ex_from"] = None
|
|
||||||
self.query_parameter["cl_patient_ex_to"] = None
|
|
||||||
# 患者数延数
|
|
||||||
if self.record.hm_patient_ex == "@":
|
|
||||||
self.query_parameter["hm_patient_ex"] = None
|
|
||||||
self.query_parameter["hm_patient_ex_from"] = None
|
|
||||||
self.query_parameter["hm_patient_ex_to"] = None
|
|
||||||
# 平均在院日数
|
|
||||||
if self.record.ge_stay_avg == "@":
|
|
||||||
self.query_parameter["ge_stay_avg"] = None
|
|
||||||
self.query_parameter["mt_stay_avg"] = None
|
|
||||||
self.query_parameter["mc_stay_avg"] = None
|
|
||||||
self.query_parameter["ca_stay_avg"] = None
|
|
||||||
self.query_parameter["pys_stay_avg"] = None
|
|
||||||
self.query_parameter["tub_stay_avg"] = None
|
|
||||||
self.query_parameter["inf_stay_avg"] = None
|
|
||||||
self.query_parameter["stay_avg_sum"] = None
|
|
||||||
self.query_parameter["stay_avg_from"] = None
|
|
||||||
self.query_parameter["stay_avg_to"] = None
|
|
||||||
return
|
|
||||||
|
|||||||
@ -89,10 +89,6 @@ class ComPrefcMedDisTreatMapper(UltmarcTableMapper):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# 修正のレコードだった場合はNULLに変換する
|
|
||||||
if self.record.pre_num == '@':
|
|
||||||
self.query_parameter['pre_num'] = None
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
@ -100,7 +96,10 @@ class ComPrefcMedDisTreatMapper(UltmarcTableMapper):
|
|||||||
return self.INSERT_QUERY
|
return self.INSERT_QUERY
|
||||||
|
|
||||||
# 存在する場合はUpdate
|
# 存在する場合はUpdate
|
||||||
if self.record.is_pre_num_not_empty:
|
# 前年件数が空の場合は更新しない
|
||||||
|
if self.record.pre_num is not None:
|
||||||
|
if self.record.pre_num == '@':
|
||||||
|
self.query_parameter['pre_num'] = None
|
||||||
return self.UPDATE_QUERY
|
return self.UPDATE_QUERY
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|||||||
@ -89,10 +89,6 @@ class ComPrefcMedEqupmentMapper(UltmarcTableMapper):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# 修正のレコードだった場合はNULLに変換する
|
|
||||||
if self.record.bed_num == '@':
|
|
||||||
self.query_parameter['bed_num'] = None
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
@ -101,7 +97,9 @@ class ComPrefcMedEqupmentMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
# 存在する場合はUpdate
|
# 存在する場合はUpdate
|
||||||
# 病床数が空の場合は更新しない
|
# 病床数が空の場合は更新しない
|
||||||
if self.record.is_bed_num_not_empty:
|
if self.record.bed_num is not None:
|
||||||
|
if self.record.bed_num == '@':
|
||||||
|
self.query_parameter['bed_num'] = None
|
||||||
return self.UPDATE_QUERY
|
return self.UPDATE_QUERY
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import (
|
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||||
UltmarcTableMapper,
|
UltmarcTableMapper
|
||||||
)
|
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sp_outpat import ComPrefcMedSpOutpat
|
||||||
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sp_outpat import (
|
|
||||||
ComPrefcMedSpOutpat,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
|
class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
|
||||||
@ -76,18 +73,15 @@ class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
def __init__(self, record: list[str], db) -> None:
|
def __init__(self, record: list[str], db) -> None:
|
||||||
super().__init__(record, db, ComPrefcMedSpOutpat)
|
super().__init__(record, db, ComPrefcMedSpOutpat)
|
||||||
program_name = __name__.split(".")[-1] # 当モジュール名(現行から変わっている)
|
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||||
# モジュール名をクエリパラメータに設定
|
# モジュール名をクエリパラメータに設定
|
||||||
self.query_parameter["program_name"] = program_name
|
self.query_parameter['program_name'] = program_name
|
||||||
# 読み込んだレコード値もクエリパラメータに追加
|
# 読み込んだレコード値もクエリパラメータに追加
|
||||||
self.query_parameter = {
|
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||||
**self.query_parameter,
|
|
||||||
**self.record.to_sql_parameter(),
|
|
||||||
}
|
|
||||||
|
|
||||||
def make_query(self):
|
def make_query(self):
|
||||||
# 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除
|
# 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除
|
||||||
if self.record.maint_flag == "B" and self.record.adddel_div == "1":
|
if self.record.maint_flag == 'B' and self.record.adddel_div == '1':
|
||||||
self.queries.append(self.PHYSICAL_DELETE_QUERY)
|
self.queries.append(self.PHYSICAL_DELETE_QUERY)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -96,16 +90,10 @@ class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def __make_upsert_query(self):
|
def __make_upsert_query(self):
|
||||||
# 修正のレコードだった場合はNULLに変換する
|
|
||||||
if self.record.sectsub_cd == "@":
|
|
||||||
self.query_parameter["sectsub_cd"] = None
|
|
||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
self.RECORD_EXISTS_QUERY, self.query_parameter
|
|
||||||
)
|
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]["count_num"] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
return self.INSERT_QUERY
|
return self.INSERT_QUERY
|
||||||
|
|
||||||
# 存在する場合ではUpdate
|
# 存在する場合ではUpdate
|
||||||
@ -116,18 +104,22 @@ class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
# ソートキー
|
# ソートキー
|
||||||
if len(self.record.sort_key) > 0:
|
if len(self.record.sort_key) > 0:
|
||||||
set_clauses.append("sort_key = :sort_key")
|
set_clauses.append('sort_key = :sort_key')
|
||||||
|
|
||||||
# 分類補助コード
|
# 分類補助コード
|
||||||
if len(self.record.sectsub_cd) > 0:
|
if len(self.record.sectsub_cd) > 0:
|
||||||
set_clauses.append("sectsub_cd = :sectsub_cd")
|
set_clauses.append('sectsub_cd = :sectsub_cd')
|
||||||
|
if self.record.sectsub_cd == '@':
|
||||||
|
self.query_parameter['sectsub_cd'] = None
|
||||||
|
|
||||||
update_columns = ",".join(set_clauses)
|
update_columns = ','.join(set_clauses)
|
||||||
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
||||||
if len(update_columns) == 0:
|
if len(update_columns) == 0:
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
# 末尾にカンマを付けてSET句を完成させる
|
# 末尾にカンマを付けてSET句を完成させる
|
||||||
update_columns += ","
|
update_columns += ','
|
||||||
update_query = self.UPDATE_QUERY.format(update_columns=update_columns)
|
update_query = self.UPDATE_QUERY.format(
|
||||||
|
update_columns=update_columns
|
||||||
|
)
|
||||||
return update_query
|
return update_query
|
||||||
|
|||||||
@ -104,10 +104,6 @@ class ComSpFieldMapper(UltmarcTableMapper):
|
|||||||
|
|
||||||
# レコードの存在確認
|
# レコードの存在確認
|
||||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||||
|
|
||||||
# 「@」による項目クリアを設定
|
|
||||||
self.__set_clearing_item()
|
|
||||||
|
|
||||||
# 存在しない場合はInsert
|
# 存在しない場合はInsert
|
||||||
if record_count[0]['count_num'] == 0:
|
if record_count[0]['count_num'] == 0:
|
||||||
return self.INSERT_QUERY
|
return self.INSERT_QUERY
|
||||||
@ -119,14 +115,23 @@ class ComSpFieldMapper(UltmarcTableMapper):
|
|||||||
if len(self.record.specialist_flg) > 0:
|
if len(self.record.specialist_flg) > 0:
|
||||||
set_clauses.append('specialist_flg = :specialist_flg')
|
set_clauses.append('specialist_flg = :specialist_flg')
|
||||||
set_clauses.append('specialist_publsh_ymd = :specialist_publsh_ymd')
|
set_clauses.append('specialist_publsh_ymd = :specialist_publsh_ymd')
|
||||||
|
if self.record.specialist_flg == '@':
|
||||||
|
self.query_parameter['specialist_flg'] = None
|
||||||
|
self.query_parameter['specialist_publsh_ymd'] = None
|
||||||
|
|
||||||
if len(self.record.ackn_med_flg) > 0:
|
if len(self.record.ackn_med_flg) > 0:
|
||||||
set_clauses.append('ackn_med_flg = :ackn_med_flg')
|
set_clauses.append('ackn_med_flg = :ackn_med_flg')
|
||||||
set_clauses.append('ackn_med_publsh_ymd = :ackn_med_publsh_ymd')
|
set_clauses.append('ackn_med_publsh_ymd = :ackn_med_publsh_ymd')
|
||||||
|
if self.record.ackn_med_flg == '@':
|
||||||
|
self.query_parameter['ackn_med_flg'] = None
|
||||||
|
self.query_parameter['ackn_med_publsh_ymd'] = None
|
||||||
|
|
||||||
if len(self.record.guide_med_flg) > 0:
|
if len(self.record.guide_med_flg) > 0:
|
||||||
set_clauses.append('guide_med_flg = :guide_med_flg')
|
set_clauses.append('guide_med_flg = :guide_med_flg')
|
||||||
set_clauses.append('guide_med_publsh_ymd = :guide_med_publsh_ymd')
|
set_clauses.append('guide_med_publsh_ymd = :guide_med_publsh_ymd')
|
||||||
|
if self.record.guide_med_flg == '@':
|
||||||
|
self.query_parameter['guide_med_flg'] = None
|
||||||
|
self.query_parameter['guide_med_publsh_ymd'] = None
|
||||||
|
|
||||||
update_columns = ','.join(set_clauses)
|
update_columns = ','.join(set_clauses)
|
||||||
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
||||||
@ -139,20 +144,3 @@ class ComSpFieldMapper(UltmarcTableMapper):
|
|||||||
update_columns=update_columns
|
update_columns=update_columns
|
||||||
)
|
)
|
||||||
return update_query
|
return update_query
|
||||||
|
|
||||||
def __set_clearing_item(self):
|
|
||||||
|
|
||||||
# 専門医の集合項目クリア
|
|
||||||
if self.record.specialist_flg == '@':
|
|
||||||
self.query_parameter['specialist_flg'] = None
|
|
||||||
self.query_parameter['specialist_publsh_ymd'] = None
|
|
||||||
# 認定医の集合項目クリア
|
|
||||||
if self.record.ackn_med_flg == '@':
|
|
||||||
self.query_parameter['ackn_med_flg'] = None
|
|
||||||
self.query_parameter['ackn_med_publsh_ymd'] = None
|
|
||||||
# 指導医の集合項目クリア
|
|
||||||
if self.record.guide_med_flg == '@':
|
|
||||||
self.query_parameter['guide_med_flg'] = None
|
|
||||||
self.query_parameter['guide_med_publsh_ymd'] = None
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
@ -23,12 +23,8 @@ class ComPrefcMedDisTreat(UltmarcTable):
|
|||||||
self.adddel_div = record[6]
|
self.adddel_div = record[6]
|
||||||
self.pre_num = record[9]
|
self.pre_num = record[9]
|
||||||
|
|
||||||
# Update判断フラグ。数値が空の場合は更新しない。
|
|
||||||
self.is_pre_num_not_empty = True
|
|
||||||
|
|
||||||
# smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する
|
# smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する
|
||||||
self.pre_num = self.pre_num if len(self.pre_num) > 0 else None
|
self.pre_num = self.pre_num if len(self.pre_num) > 0 else None
|
||||||
self.is_pre_num_not_empty = self.pre_num is not None
|
|
||||||
|
|
||||||
# DCFDSF施設コード
|
# DCFDSF施設コード
|
||||||
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])
|
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])
|
||||||
|
|||||||
@ -23,12 +23,8 @@ class ComPrefcMedEqupment(UltmarcTable):
|
|||||||
self.adddel_div = record[6]
|
self.adddel_div = record[6]
|
||||||
self.bed_num = record[9]
|
self.bed_num = record[9]
|
||||||
|
|
||||||
# Update判断フラグ。数値が空の場合は更新しない。
|
|
||||||
self.is_bed_num_not_empty = True
|
|
||||||
|
|
||||||
# smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する
|
# smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する
|
||||||
self.bed_num = self.bed_num if len(self.bed_num) > 0 else None
|
self.bed_num = self.bed_num if len(self.bed_num) > 0 else None
|
||||||
self.is_bed_num_not_empty = self.bed_num is not None
|
|
||||||
|
|
||||||
# DCFDSF施設コード
|
# DCFDSF施設コード
|
||||||
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])
|
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])
|
||||||
|
|||||||
@ -3,5 +3,6 @@
|
|||||||
"501","01","995783","00","A","20141113","20141114",,,,,"船越 正信","フナコシ マサノブ","1","3","29","01","06","53","55","3","53","039","1","3","53","A01","L01","E02","C04","L03","7","00","000","000","000",,,,,"00","00","00","00","00","00","00","00",,"02","A05","20051003",,"2",,,
|
"501","01","995783","00","A","20141113","20141114",,,,,"船越 正信","フナコシ マサノブ","1","3","29","01","06","53","55","3","53","039","1","3","53","A01","L01","E02","C04","L03","7","00","000","000","000",,,,,"00","00","00","00","00","00","00","00",,"02","A05","20051003",,"2",,,
|
||||||
"501","01","997682","00","A","20141113","20141114",,,,,"川崎 三紀子","カワサキ ミキコ","2","3","46","10","03","99","99","4","11","057","1","4","11","A01","A58",,,,,"13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698",,,,,"2",,,"1"
|
"501","01","997682","00","A","20141113","20141114",,,,,"川崎 三紀子","カワサキ ミキコ","2","3","46","10","03","99","99","4","11","057","1","4","11","A01","A58",,,,,"13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698",,,,,"2",,,"1"
|
||||||
"501","01","997906","00","A","20141113","20141114",,,,,"丘 守正","オカ モリマサ","1","3","20","03","11","99","31","3","45","799","1",,,"A01","L01","A31","A21","A11",,"08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110",,,,,"1","4","03",
|
"501","01","997906","00","A","20141113","20141114",,,,,"丘 守正","オカ モリマサ","1","3","20","03","11","99","31","3","45","799","1",,,"A01","L01","A31","A21","A11",,"08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110",,,,,"1","4","03",
|
||||||
|
"501","01","999613","00","A","20141113","20141114","5","01","481065","00","藤田 茜","フジタ アカネ","2",,,,,"99","99",,,"799","1","4","23",,,,,,"6","00","000","000","000",,,,,"00","00","00","00","00","00","00","00",,,,,,"9",,,
|
||||||
"501","01","997907","00","A","20141113","20141114",,,,,"丘 守正","オカ モリマサ","1",,,"03","11","99","31","3","45","799","1",,,"","","","","",,"08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110",,,,,"1","4","03",
|
"501","01","997907","00","A","20141113","20141114",,,,,"丘 守正","オカ モリマサ","1",,,"03","11","99","31","3","45","799","1",,,"","","","","",,"08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110",,,,,"1","4","03",
|
||||||
"501","01","997908","00","A","20141113","20141114","@","@","481065","00","藤堂 尚也","トウドウ ナオヤ","1","@","20","10","03","99","31","@","45","799","1","@","23","@","L01","E02","C04","L03","@","08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","@","@","@","@","@","1","@","03","1"
|
"501","01","997908","00","A","20141113","20141114",,,,,"丘 守正","オカ モリマサ","1","3","20",,,"99","31","3","45","799","1",,,"","","","","",,"08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110",,,,,"1","4","03",
|
||||||
|
|||||||
|
@ -5,4 +5,5 @@
|
|||||||
"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99",,,,"03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2",,,"057","1","4","11","1999","1",,"1",,,,,"4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99",,,,"03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2",,,"057","1","4","11","1999","1",,"1",,,,,"4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
||||||
"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1",,,"799","1","3","45","1970",,,"1",,,,,,,,"NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1",,,"799","1","3","45","1970",,,"1",,,,,,,,"NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
||||||
"0199790700","オカ モリマサ","丘 守正",,,"03","11"," 0311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1",,,"799","1","3","45","1970",,,"1",,,,,,,,"NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
"0199790700","オカ モリマサ","丘 守正",,,"03","11"," 0311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1",,,"799","1","3","45","1970",,,"1",,,,,,,,"NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
||||||
"0199790800","トウドウ ナオヤ","藤堂 尚也","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","NULL","NULL","799","1","NULL","NULL","NULL","1","NULL","1","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
"0199790800","オカ モリマサ","丘 守正","3","20",,,"","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1",,,"799","1","3","45","1970",,,"1",,,,,,,,"NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
||||||
|
"0199961300","フジタ アカネ","藤田 茜",,,,,,"99",,,,,,,,"00000000000","00","000",,"00000000","00000000","99","9","2","5","6","799","1",,,,,"0148106500","1",,,,,"4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper"
|
||||||
|
|||||||
|
@ -8,4 +8,3 @@
|
|||||||
"502","01","997906","","A","00","5504428","","2","20141113","20141114","","144","7212","","",""
|
"502","01","997906","","A","00","5504428","","2","20141113","20141114","","144","7212","","",""
|
||||||
"502","01","997906","","A","00","5507600","","2","20141113","20141114","","144","9114","","",""
|
"502","01","997906","","A","00","5507600","","2","20141113","20141114","","144","9114","","",""
|
||||||
"502","01","999613","","A","00","5504428","","2","20141113","20141114","","144","5140","","",""
|
"502","01","999613","","A","00","5504428","","2","20141113","20141114","","144","5140","","",""
|
||||||
"502","01","995784","","B","00","5507600","","2","20170907","20170910","@","@","@","@","@","@"
|
|
||||||
|
|||||||
|
@ -9,4 +9,3 @@
|
|||||||
"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
||||||
"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
||||||
"005504428","01999613","5140",,"144","2020-02-22","ヤクリガク","薬理学",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
"005504428","01999613","5140",,"144","2020-02-22","ヤクリガク","薬理学",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
||||||
"005507600","01995784","9999",,,"2020-02-22","NULL","NULL","NULL","2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:17","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper"
|
|
||||||
|
|||||||
|
@ -5,4 +5,3 @@
|
|||||||
"101","00","9901679","","A","20141113","20141114","","","","","","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","","46","201","017","000","892-0846","鹿児島県鹿児島市加治屋町3-10","カゴシマケン カゴシマシ カジヤチヨウ 3-10","3-10","04","04","04","00","08","07","08","00","","099-226-8827","470","60","01","148013","","海江田 健","カイエダ タケル","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9","9","","","","","0","","","","","","","","","1","1","1","1","1","1","1","","",""
|
"101","00","9901679","","A","20141113","20141114","","","","","","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","","46","201","017","000","892-0846","鹿児島県鹿児島市加治屋町3-10","カゴシマケン カゴシマシ カジヤチヨウ 3-10","3-10","04","04","04","00","08","07","08","00","","099-226-8827","470","60","01","148013","","海江田 健","カイエダ タケル","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9","9","","","","","0","","","","","","","","","1","1","1","1","1","1","1","","",""
|
||||||
"101","00","9904439","","A","20141113","20141114","","","","","","川崎市立井田病院","カワサキシリツイダビヨウイン","井田病院 市立","イダビヨウイン シリツ","","14","133","001","002","211-0035","神奈川県川崎市中原区井田2-27-1","カナガワケン カワサキシ ナカハラク イダ 2-27-1","2-27-1","04","06","02","02","08","12","04","02","","044-766-2188","221","01","","","","","","","","","","A01","A34","A22","M01","D02","A12","A81","C01","N03","K01","J01","P02","O01","B01","C04","E02","F01","I01","C05","B31","H02","A41","A03","A58","A61","A65","F08","A56","B11","B22","B04","P03","G06","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","1","3","","","","","370","20140811","370","0","27","0","343","343","0","","","","","","","","","",""
|
"101","00","9904439","","A","20141113","20141114","","","","","","川崎市立井田病院","カワサキシリツイダビヨウイン","井田病院 市立","イダビヨウイン シリツ","","14","133","001","002","211-0035","神奈川県川崎市中原区井田2-27-1","カナガワケン カワサキシ ナカハラク イダ 2-27-1","2-27-1","04","06","02","02","08","12","04","02","","044-766-2188","221","01","","","","","","","","","","A01","A34","A22","M01","D02","A12","A81","C01","N03","K01","J01","P02","O01","B01","C04","E02","F01","I01","C05","B31","H02","A41","A03","A58","A61","A65","F08","A56","B11","B22","B04","P03","G06","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","1","3","","","","","370","20140811","370","0","27","0","343","343","0","","","","","","","","","",""
|
||||||
"101","00","9929798","","A","20141113","20141114","","","","","","パーソナルヘルス学びのクリニック","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのCL","パ-ソナルヘルスマナビノクリニツク","","13","103","025","002","107-0062","東京都港区南青山2-2-15 ウイン青山405","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","2-2-15-405","03","02","03","02","07","05","08","02","1","","472","10","01","331831","","白澤 博満","シラサワ ヒロミツ","","","","","A01","I01","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20130415","0","0","0","0","0","0","0","","","","","","","","","",""
|
"101","00","9929798","","A","20141113","20141114","","","","","","パーソナルヘルス学びのクリニック","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのCL","パ-ソナルヘルスマナビノクリニツク","","13","103","025","002","107-0062","東京都港区南青山2-2-15 ウイン青山405","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","2-2-15-405","03","02","03","02","07","05","08","02","1","","472","10","01","331831","","白澤 博満","シラサワ ヒロミツ","","","","","A01","I01","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20130415","0","0","0","0","0","0","0","","","","","","","","","",""
|
||||||
"101","99","99999","99","A","20230606","200230607","@","@","@","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","@","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","@","@","36","37","@","39","40","@","@","@","202304","@","202306","@","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","@","10","11","@","@","@","@","6","7","8","9","0","1","@","3","4","5","6","7","8","@","333333","11"
|
|
||||||
|
|||||||
|
@ -6,4 +6,3 @@
|
|||||||
"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立井田病院","井田病院 市立","","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","","","","","","","","3","343","0","27","0","370","343","0","20140811","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper"
|
"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立井田病院","井田病院 市立","","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","","","","","","","","3","343","0","27","0","370","343","0","20140811","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper"
|
||||||
"009929798","10","","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","01331831","シラサワ ヒロミツ","白澤 博満","1","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130415","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper"
|
"009929798","10","","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","01331831","シラサワ ヒロミツ","白澤 博満","1","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130415","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper"
|
||||||
"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper"
|
"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper"
|
||||||
"999999999","37","NULL","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","NULL","7","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","8","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper"
|
|
||||||
|
|||||||
|
@ -134,8 +134,6 @@ class TestComInstMapper:
|
|||||||
|
|
||||||
# 期待値ファイルを読み込む(特養医務室データ)
|
# 期待値ファイルを読み込む(特養医務室データ)
|
||||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_insert.csv'))
|
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_insert.csv'))
|
||||||
actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_spcare_med_office_dat')[0]['count_num']
|
|
||||||
assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること'
|
|
||||||
primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list]
|
primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list]
|
||||||
actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_cd IN ({','.join(primary_keys)})"
|
actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_cd IN ({','.join(primary_keys)})"
|
||||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||||
|
|||||||
@ -18,4 +18,3 @@
|
|||||||
"111","00","9908576","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","","","","33","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704"
|
"111","00","9908576","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","","","","33","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704"
|
||||||
"111","00","9910624","","A","2","20141113","20141114","1","20030401","","","","","1","20120401","","1","19940201","","","","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202"
|
"111","00","9910624","","A","2","20141113","20141114","1","20030401","","","","","1","20120401","","1","19940201","","","","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202"
|
||||||
"111","00","9929798","","A","2","20141113","20141114","1","20080701","","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305"
|
"111","00","9929798","","A","2","20141113","20141114","1","20080701","","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305"
|
||||||
"111","00","9929799",,"A","2","20141113","20141114","@","20080701","20080701","@","2008","20080701","@","20080701","20080701","@","20080701","20080701","@","10.1","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","20080701","20080701","@","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","15","17","18","19","20","@","20100401","20100401","@","20100401","20100401","@","20100401","20100401","@","01","02","03","04","05","06","07","08","09","10","@","20140401","20140401","@","20140401","20140401","@","20140401","20140401","@","20140401","20140401","@","@","@","I001","33","20130401","20130401","4101","116","20090501","20090501","33","@","B999","450","@","M999","40","@","K999","4","@","9","9","@","9","@","21","20130901","20130901","@","13","20140106","20140106","@","20030401","20040229","1","20041001","20041001","1","20040331","20040331","@","@","1","1","@","@","2","20070702","20070702","@","20070702","20070702","@","@","@","168","1","197","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182",,"202","1","214","5","149","1","197","1","198","1","177","1","183","1","213","5","217","5","212","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","@","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","@","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","@","00","8106522","00","@"
|
|
||||||
|
|||||||
|
@ -18,4 +18,4 @@
|
|||||||
"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
||||||
"009910624","1","20030401","","","","","1","20120401","","1","19940201","","","NULL","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
"009910624","1","20030401","","","","","1","20120401","","1","19940201","","","NULL","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
||||||
"009929798","1","20080701","","","","","","","","","","","","NULL","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
"009929798","1","20080701","","","","","","","","","","","","NULL","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
||||||
"009929799","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper"
|
"12345678999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20230509","20230509","NULL","NULL","NULL","NULL","2023/05/09 10:10:10","com_inst_att_mapper","2023/05/09 10:10:10","com_inst_att_mapper"
|
||||||
|
|||||||
|
@ -117,4 +117,3 @@
|
|||||||
"102","03","3673870",,"A","20121127","20121128",,,,,,"薮藪篭籠","セイシキテンポメイモジ70","薮藪篭籠","リヤクシキモジ70",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 薮藪篭籠","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ70","2-45-1-70","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","薮藪篭籠 太郎","ダイヒヨウシヤメイモジ70 タロウ",,,,,"薮藪篭籠 太郎","カンリヤクザイシメイモジ70 タロウ",,,
|
"102","03","3673870",,"A","20121127","20121128",,,,,,"薮藪篭籠","セイシキテンポメイモジ70","薮藪篭籠","リヤクシキモジ70",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 薮藪篭籠","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ70","2-45-1-70","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","薮藪篭籠 太郎","ダイヒヨウシヤメイモジ70 タロウ",,,,,"薮藪篭籠 太郎","カンリヤクザイシメイモジ70 タロウ",,,
|
||||||
"102","03","3673871",,"A","20121127","20121128",,,,,,"尭堯槙槇遥遙瑶瑤凜熙","セイシキテンポメイモジ71","尭堯槙槇遥遙瑶瑤凜熙","リヤクシキモジ71",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 尭堯槙槇遥遙瑶瑤凜熙","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ71","2-45-1-71","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","尭堯槙槇遥遙瑶瑤凜熙 太郎","ダイヒヨウシヤメイモジ71 タロウ",,,,,"尭堯槙槇遥遙瑶瑤凜熙 太郎","カンリヤクザイシメイモジ71 タロウ",,,
|
"102","03","3673871",,"A","20121127","20121128",,,,,,"尭堯槙槇遥遙瑶瑤凜熙","セイシキテンポメイモジ71","尭堯槙槇遥遙瑶瑤凜熙","リヤクシキモジ71",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 尭堯槙槇遥遙瑶瑤凜熙","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ71","2-45-1-71","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","尭堯槙槇遥遙瑶瑤凜熙 太郎","ダイヒヨウシヤメイモジ71 タロウ",,,,,"尭堯槙槇遥遙瑶瑤凜熙 太郎","カンリヤクザイシメイモジ71 タロウ",,,
|
||||||
"102","03","3673872",,"A","20121127","20121128",,,,,,"ツッー-一医院薬鈴田","セイシキテンポメイモジ72","ツッー-一医院薬鈴田","リヤクシキモジ72",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ツッー-一医院薬鈴田","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ72","2-45-1-72","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","ツッー-一医院薬鈴田 太郎","ダイヒヨウシヤメイモジ72 タロウ",,,,,"ツッー-一医院薬鈴田 太郎","カンリヤクザイシメイモジ72 タロウ",,,
|
"102","03","3673872",,"A","20121127","20121128",,,,,,"ツッー-一医院薬鈴田","セイシキテンポメイモジ72","ツッー-一医院薬鈴田","リヤクシキモジ72",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ツッー-一医院薬鈴田","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ72","2-45-1-72","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","ツッー-一医院薬鈴田 太郎","ダイヒヨウシヤメイモジ72 タロウ",,,,,"ツッー-一医院薬鈴田 太郎","カンリヤクザイシメイモジ72 タロウ",,,
|
||||||
"102","03","3673873",,"A","20121127","20121128","@","@","@","3673873","00","正漢字","セイカナ","略漢字","リヤクカナ","@","61","62","63","64","001-6234","住所漢字","ジユウシヨカナ","@","1","2","3","4","5","6","7","8","@","@","471","66","@","@","@","201212","@","201210","@","@","@","3673056","00"
|
|
||||||
|
|||||||
|
@ -1,7 +1,7 @@
|
|||||||
"102","1","2","3","B",,,"6",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"102","1","2","3","B",,,"6",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
"102","9","9","9","B",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"102","9","9","9","B",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
"102","4","5","6","B",200501,200601,"6",7,55,56,57,正漢字,正カナ,略漢字,略カナ,0,61,62,63,64,001-6234,住所漢字,住所カナ,11,1,2,3,4,5,6,7,8,0,119991234,11,66,代漢,代カナ,4,204411,8,204812,薬剤師漢字,薬剤師カナ,99,88,77,
|
"102","4","5","6","B",200501,200601,"6",7,55,56,57,正漢字,正カナ,略漢字,略カナ,0,61,62,63,64,001-6234,住所漢字,住所カナ,11,1,2,3,4,5,6,7,8,0,119991234,11,66,代漢,代カナ,4,204411,8,204812,薬剤師漢字,薬剤師カナ,99,88,77,
|
||||||
"102","7","8","9","B",200501,200601,"6",@,@,,,正漢字,正カナ,略漢字,略カナ,@,61,62,63,64,001-6234,住所漢字,住所カナ,@,1,2,3,4,5,6,7,8,@,@,471,66,@,@,@,,@,,@,@,@,,,
|
"102","7","8","9","B",200501,200601,"6",@,@,,,正漢字,正カナ,略漢字,略カナ,@,61,62,63,64,001-6234,住所漢字,住所カナ,@,1,2,3,4,5,6,7,8,@,@,@,66,@,@,@,,@,,@,@,@,,,
|
||||||
"102","03","3673002",,"B",20121128,20121129,,5,03,3673003,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"102","03","3673002",,"B",20121128,20121129,,5,03,3673003,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
"102","03","3673011",,"B",20121128,20121129,"@",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"102","03","3673011",,"B",20121128,20121129,"@",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
"102","03","3673012",,"B",20121128,20121129,,1,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"102","03","3673012",,"B",20121128,20121129,,1,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
|||||||
|
@ -117,4 +117,3 @@
|
|||||||
"033673870","85",,"セイシキテンポメイモジ70","リヤクシキモジ70","薮藪篭籠","薮藪篭籠",,,,,"ダイヒヨウシヤメイモジ70 タロウ","薮藪篭籠 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ70","東京都中央区日本橋浜町2-45-1 薮藪篭籠","103-0007","13102242","13","102","2-45-1-70","07071202","03030502","471",,,"薮藪篭籠 太郎","カンリヤクザイシメイモジ70 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
"033673870","85",,"セイシキテンポメイモジ70","リヤクシキモジ70","薮藪篭籠","薮藪篭籠",,,,,"ダイヒヨウシヤメイモジ70 タロウ","薮藪篭籠 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ70","東京都中央区日本橋浜町2-45-1 薮藪篭籠","103-0007","13102242","13","102","2-45-1-70","07071202","03030502","471",,,"薮藪篭籠 太郎","カンリヤクザイシメイモジ70 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
||||||
"033673871","85",,"セイシキテンポメイモジ71","リヤクシキモジ71","尭堯槙槇遥遙瑶瑤凜熙","尭堯槙槇遥遙瑶瑤凜熙",,,,,"ダイヒヨウシヤメイモジ71 タロウ","尭堯槙槇遥遙瑶瑤凜熙 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ71","東京都中央区日本橋浜町2-45-1 尭堯槙槇遥遙瑶瑤凜熙","103-0007","13102242","13","102","2-45-1-71","07071202","03030502","471",,,"尭堯槙槇遥遙瑶瑤凜熙 太郎","カンリヤクザイシメイモジ71 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
"033673871","85",,"セイシキテンポメイモジ71","リヤクシキモジ71","尭堯槙槇遥遙瑶瑤凜熙","尭堯槙槇遥遙瑶瑤凜熙",,,,,"ダイヒヨウシヤメイモジ71 タロウ","尭堯槙槇遥遙瑶瑤凜熙 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ71","東京都中央区日本橋浜町2-45-1 尭堯槙槇遥遙瑶瑤凜熙","103-0007","13102242","13","102","2-45-1-71","07071202","03030502","471",,,"尭堯槙槇遥遙瑶瑤凜熙 太郎","カンリヤクザイシメイモジ71 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
||||||
"033673872","85",,"セイシキテンポメイモジ72","リヤクシキモジ72","ツッー-一医院薬鈴田","ツッー-一医院薬鈴田",,,,,"ダイヒヨウシヤメイモジ72 タロウ","ツッー-一医院薬鈴田 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ72","東京都中央区日本橋浜町2-45-1 ツッー-一医院薬鈴田","103-0007","13102242","13","102","2-45-1-72","07071202","03030502","471",,,"ツッー-一医院薬鈴田 太郎","カンリヤクザイシメイモジ72 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
"033673872","85",,"セイシキテンポメイモジ72","リヤクシキモジ72","ツッー-一医院薬鈴田","ツッー-一医院薬鈴田",,,,,"ダイヒヨウシヤメイモジ72 タロウ","ツッー-一医院薬鈴田 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ72","東京都中央区日本橋浜町2-45-1 ツッー-一医院薬鈴田","103-0007","13102242","13","102","2-45-1-72","07071202","03030502","471",,,"ツッー-一医院薬鈴田 太郎","カンリヤクザイシメイモジ72 タロウ",,"2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
||||||
"033673873","66","NULL","セイカナ","リヤクカナ","正漢字","略漢字","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","ジユウシヨカナ","住所漢字","001-6234","61626364","61","62","NULL","05060708","01020304","471","NULL","NULL","NULL","NULL","NULL","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_pharm_mapper","2023/04/12 00:00:00","com_pharm_mapper"
|
|
||||||
|
|||||||
|
@ -33,5 +33,5 @@
|
|||||||
"033673061","85",,"セイシキテンポメイ03B13B","リヤクシキ03B13B","正式店舗名03B13b","略式03B13b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13B","東京都中央区日本橋浜町2-45-1 03B13b","103-0007","13102242","13","102","2-45-1-03B13B","07071202","03030502","471",,,,,"033673060","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_pharm_mapper","2023/04/19 00:00:00","com_pharm_mapper"
|
"033673061","85",,"セイシキテンポメイ03B13B","リヤクシキ03B13B","正式店舗名03B13b","略式03B13b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13B","東京都中央区日本橋浜町2-45-1 03B13b","103-0007","13102242","13","102","2-45-1-03B13B","07071202","03030502","471",,,,,"033673060","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_pharm_mapper","2023/04/19 00:00:00","com_pharm_mapper"
|
||||||
"123","2","6","13","15","12","14","1","9","204201","204001","38","37","3","6","34","23","22","221-000","17181920","17","18","24","29303132","25262728","35","8","91011","43","44","454647","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/18 10:27:33","com_pharm_mapper","2023/04/19 08:27:33","com_pharm_mapper"
|
"123","2","6","13","15","12","14","1","9","204201","204001","38","37","3","6","34","23","22","221-000","17181920","17","18","24","29303132","25262728","35","8","91011","43","44","454647","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/18 10:27:33","com_pharm_mapper","2023/04/19 08:27:33","com_pharm_mapper"
|
||||||
"456","66","0","正カナ","略カナ","正漢字","略漢字","8","4","204812","204411","代カナ","代漢","0","6","119991234","住所カナ","住所漢字","001-6234","61626364","61","62","11","05060708","01020304","11","7","555657","薬剤師漢字","薬剤師カナ","998877","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/4/18 10:27:00","com_pharm_mapper","2023/4/19 08:27:00","com_pharm_mapper"
|
"456","66","0","正カナ","略カナ","正漢字","略漢字","8","4","204812","204411","代カナ","代漢","0","6","119991234","住所カナ","住所漢字","001-6234","61626364","61","62","11","05060708","01020304","11","7","555657","薬剤師漢字","薬剤師カナ","998877","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/4/18 10:27:00","com_pharm_mapper","2023/4/19 08:27:00","com_pharm_mapper"
|
||||||
"789","66","NULL","正カナ","略カナ","正漢字","略漢字","NULL","NULL","NULL","NULL","NULL","NULL","NULL","6","NULL","住所カナ","住所漢字","001-6234","61626364","61","62","NULL","05060708","01020304","471","NULL","NULL","NULL","NULL","NULL","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/4/18 10:27:00","com_pharm_mapper","2023/4/19 08:27:00","com_pharm_mapper"
|
"789","66","NULL","正カナ","略カナ","正漢字","略漢字","NULL","NULL","NULL","NULL","NULL","NULL","NULL","6","NULL","住所カナ","住所漢字","001-6234","61626364","61","62","NULL","05060708","01020304","NULL","NULL","NULL","NULL","NULL","NULL","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/4/18 10:27:00","com_pharm_mapper","2023/4/19 08:27:00","com_pharm_mapper"
|
||||||
"999","2","6","13","15","12","14","1","9","204201","204001","38","37","3","7","34","23","22","221-000","17181920","17","18","24","29303132","25262728","35","8","91011","43","44","454647","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/18 10:27:33","com_pharm_mapper","2023/04/18 10:27:33","com_pharm_mapper"
|
"999","2","6","13","15","12","14","1","9","204201","204001","38","37","3","7","34","23","22","221-000","17181920","17","18","24","29303132","25262728","35","8","91011","43","44","454647","2","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/18 10:27:33","com_pharm_mapper","2023/04/18 10:27:33","com_pharm_mapper"
|
||||||
|
|||||||
|
@ -1,8 +1,6 @@
|
|||||||
"132","00","9900146",,"A","2","20141113","20141114","20140624",,"1",,,,,,"1","1",,,,,,,,,,,,,,"18.8",,,,,,,,"20130401","20140331","49.8","20130401","20140331",,,,,,,,,,,,,,,,,,,,"39.3",,,,,,,,"20130401","20140331"
|
"132","00","9900146","","A","2","20141113","20141114","20140624","","1","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20130401","20140331","49.8","20130401","20140331","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331"
|
||||||
"132","00","9900194",,"A","2","20141113","20141114","20121101",http://www.hospital.misawa.aomori.jp/,"1",1,1,0,20100401,20110331,"1","1",1,1,1,1,1,1,1,1,1,1,1,1,3,"205.4",,,,,,,,"20100401","20110331","468.1","20100401","20110331",8.3,20100401,20110331,,,,,,,,,,,,,,,,,"18.7",,,,,,0.0,,"20100401","20110331"
|
"132","00","9900194","","A","2","20141113","20141114","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4","","","","","","","","20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331","","","","","","","","","","","","","","","","","18.7","","","","","","0.0","","20100401","20110331"
|
||||||
"132","00","9901649",,"A","2","20141113","20141114",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
"132","00","9901649","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
|
||||||
"132","00","9901679",,"A","2","20141113","20141114","20140627",http://www.kai-sei-kai.com/,"1",,,,,,"1","1",1,1,1,,1,,,,,1,,1,2,"58.5",229.2,102.3,131.3,,,,,"20130401","20140331","96.0","20130401","20140331",,,,,,,,,,,,,,,,,,,,"20.4",641.3,533.2,749.2,,,,,"20130401","20140331"
|
"132","00","9901679","","A","2","20141113","20141114","20140627","http://www.kai-sei-kai.com/","1","","","","","","1","1","1","1","1","","1","","","","","1","","1","2","58.5","229.2","102.3","131.3","","","","","20130401","20140331","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","20.4","641.3","533.2","749.2","","","","","20130401","20140331"
|
||||||
"132","00","9929798",,"A","2","20141113","20141114","20130611",http://www.urakawa.jrc.or.jp/,"1",,,,,,"1","1",1,1,1,,1,,,,,,,1,1,"114.6",46.6,,,39.9,0.0,0.0,,"20120401","20130331","481.6","20120401","20130331",16.2,20120401,20130331,,,,,,,,,,,,,,,,,"15.6",555.3,,,169.4,0.0,0.0,,"20120401","20130331"
|
"132","00","9929798","","A","2","20141113","20141114","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331"
|
||||||
"132","99","9999999",88,"A","2","20141113","20141114","@",@,"@",@,@,@,@,@,"@","@",@,@,@,@,@,@,@,@,@,@,@,@,@,"@",@,@,@,@,@,@,@,"@","@","@","@","@",@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,"@",@,@,@,@,@,@,@,"@","@"
|
"132","99","9999999","99","A","2","20141113","20141114","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331"
|
||||||
"132","99","9999999",89,"A","2","20141113","20141114","@",@,"@",@,@,4444,20100401,20110331,"@","@",@,@,@,@,@,@,1,1,1,@,@,@,12345,"@",146.6,114.5,39.2,679.4,753.1,951.3,0.0,"20120401","20130331","@","20220430","20220517",@,20230623,20230707,@,147258,369147,258369,987654,321789,753159,842862,20200202,20200220,@,20220222,20230330,@,20060606,20070707,"@",159.3,25.6,154.1,35.1,397.8,65.7,62.5,"19980430","19990501"
|
|
||||||
"132","99","9999999",99,"A","2","20141113","20141114","20130611",aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz,"1",2,3,4444,20150101,20160101,"1","1",1,1,1,1,1,1,1,1,1,1,1,1,123,"12345.6",12345.6,12345.6,12345.6,12345.6,12345.6,12345.6,12345.6,"20120401","20130331","12345.6","20120401","20130331",12345.6,20120401,20130331,123467,123467,123467,123467,123467,123467,123467,123467,20200202,20200202,123467,20200202,20200202,123467,20200202,20200202,"12345.6",12345.6,12345.6,12345.6,12345.6,12345.6,12345.6,12345.6,"20120401","20130331"
|
|
||||||
|
|||||||
|
@ -1,9 +1,7 @@
|
|||||||
"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||||
"009900146","20140624",,"1",,,,,,"1","1",,,,,,,,,,,,,,"18.8",,,,,,,,"20130401","20140331","49.8","20130401","20140331",,,,,,,,,,,,,,,,,,,,"39.3",,,,,,,,"20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"009900146","20140624","","1","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20130401","20140331","49.8","20130401","20140331","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4",,,,,,,,"20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331",,,,,,,,,,,,,,,,,"18.7",,,,,,"0.0",,"20100401","20110331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4","","","","","","","","20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331","","","","","","","","","","","","","","","","","18.7","","","","","","0.0","","20100401","20110331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
"009901649",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
"009901679","20140627","http://www.kai-sei-kai.com/","1",,,,,,"1","1","1","1","1",,"1",,,,,"1",,"1","2","58.5","229.2","102.3","131.3",,,,,"20130401","20140331","96.0","20130401","20140331",,,,,,,,,,,,,,,,,,,,"20.4","641.3","533.2","749.2",,,,,"20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"009901679","20140627","http://www.kai-sei-kai.com/","1","","","","","","1","1","1","1","1","","1","","","","","1","","1","2","58.5","229.2","102.3","131.3","","","","","20130401","20140331","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","20.4","641.3","533.2","749.2","","","","","20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
"009929798","20130611","http://www.urakawa.jrc.or.jp/","1",,,,,,"1","1","1","1","1",,"1",,,,,,,"1","1","114.6","46.6",,,"39.9","0.0","0.0",,"20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331",,,,,,,,,,,,,,,,,"15.6","555.3",,,"169.4","0.0","0.0",,"20120401","20130331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"009929798","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
"99999999988","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20130331","NULL","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","com_prefc_med_base_mapper","2000/05/09 20:39:15","com_prefc_med_base_mapper"
|
|
||||||
"99999999989","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20130331","NULL","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","com_prefc_med_base_mapper","2000/05/09 20:39:15","com_prefc_med_base_mapper"
|
|
||||||
"99999999999","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
"99999999999","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper"
|
||||||
|
|||||||
|
@ -6,4 +6,3 @@
|
|||||||
"134","00","9929798","","A","0902","2","20141113","20141114",""
|
"134","00","9929798","","A","0902","2","20141113","20141114",""
|
||||||
"134","00","9929798","","A","0915","2","20141113","20141114",""
|
"134","00","9929798","","A","0915","2","20141113","20141114",""
|
||||||
"134","99","9999999","99","A","1234","2","20141113","20141114","123456"
|
"134","99","9999999","99","A","1234","2","20141113","20141114","123456"
|
||||||
"134","99","9999999","99","A","1235","2","20141113","20141114","@"
|
|
||||||
|
|||||||
|
@ -8,4 +8,3 @@
|
|||||||
"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
||||||
"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
||||||
"99999999999","1234","123456","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
"99999999999","1234","123456","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
||||||
"99999999999","1235","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper"
|
|
||||||
|
|||||||
|
@ -3,4 +3,4 @@
|
|||||||
"133","00","9901649","","A","009","2","20141113","20141114","3"
|
"133","00","9901649","","A","009","2","20141113","20141114","3"
|
||||||
"133","00","9901679","","A","015","2","20141113","20141114",""
|
"133","00","9901679","","A","015","2","20141113","20141114",""
|
||||||
"133","00","9904439","","A","006","2","20141113","20141114",""
|
"133","00","9904439","","A","006","2","20141113","20141114",""
|
||||||
"133","00","9929798","","A","010","2","20141113","20141114","@"
|
"133","00","9929798","","A","010","2","20141113","20141114",""
|
||||||
|
|||||||
|
@ -1,4 +1,3 @@
|
|||||||
"136","99","9999999","88","A","あいうえお","2","20141113","20141114","123","@"
|
|
||||||
"136","00","9901649","","A","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","030"
|
"136","00","9901649","","A","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","030"
|
||||||
"136","00","9904439","","A","テスト アルコール症専門外来","2","20141113","20141114","1","019"
|
"136","00","9904439","","A","テスト アルコール症専門外来","2","20141113","20141114","1","019"
|
||||||
"136","00","9904439","","A","テスト メンタルヘルス専門外来","2","20141113","20141114","7","019"
|
"136","00","9904439","","A","テスト メンタルヘルス専門外来","2","20141113","20141114","7","019"
|
||||||
|
|||||||
|
@ -1,5 +1,4 @@
|
|||||||
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||||
"99999999988","あいうえお","123","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sp_outpat_mapper","2017/10/08 20:57:12","com_prefc_med_sp_outpat_mapper"
|
|
||||||
"009901649","テスト 小児 内分泌・腎臓外来","5","030","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
"009901649","テスト 小児 内分泌・腎臓外来","5","030","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
||||||
"009904439","テスト アルコール症専門外来","1","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
"009904439","テスト アルコール症専門外来","1","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
||||||
"009904439","テスト メンタルヘルス専門外来","7","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
"009904439","テスト メンタルヘルス専門外来","7","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
|
||||||
|
|||||||
|
@ -5,4 +5,3 @@
|
|||||||
"511","01","999613","00","A","0056","2","20141113","20141114","1","20140706","","","1","20140706"
|
"511","01","999613","00","A","0056","2","20141113","20141114","1","20140706","","","1","20140706"
|
||||||
"511","91","999999","99","B","9999","2","","","1","20220628","1","20230425","1","20230425"
|
"511","91","999999","99","B","9999","2","","","1","20220628","1","20230425","1","20230425"
|
||||||
"511","99","999999","99","A","9999","2","","","1","20220628","1","20230425","1","20230425"
|
"511","99","999999","99","A","9999","2","","","1","20220628","1","20230425","1","20230425"
|
||||||
"511","01","999988","99","A","9999","2",,,"@","20220628","@","20230425","@","20230425"
|
|
||||||
|
|||||||
|
@ -6,4 +6,3 @@
|
|||||||
"0199961300","0056","2","1","20140706","","","1","20140706","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
"0199961300","0056","2","1","20140706","","","1","20140706","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
||||||
"9199999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
"9199999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
||||||
"9999999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
"9999999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
||||||
"0199998899","9999","2","NULL","NULL","NULL","NULL","NULL","NULL","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper"
|
|
||||||
|
|||||||
|
@ -136,8 +136,6 @@ def is_valid_date_format(date_str: str, date_format):
|
|||||||
Returns:
|
Returns:
|
||||||
_type_: 正しい日付文字列の場合、True、それ以外はFalse
|
_type_: 正しい日付文字列の場合、True、それ以外はFalse
|
||||||
"""
|
"""
|
||||||
if date_str is None:
|
|
||||||
return False
|
|
||||||
try:
|
try:
|
||||||
datetime.strptime(date_str, date_format)
|
datetime.strptime(date_str, date_format)
|
||||||
return True
|
return True
|
||||||
|
|||||||
226
ecs/jskult-batch-laundering/Pipfile.lock
generated
226
ecs/jskult-batch-laundering/Pipfile.lock
generated
@ -16,115 +16,165 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"default": {
|
"default": {
|
||||||
|
"greenlet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174",
|
||||||
|
"sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd",
|
||||||
|
"sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa",
|
||||||
|
"sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a",
|
||||||
|
"sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec",
|
||||||
|
"sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565",
|
||||||
|
"sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d",
|
||||||
|
"sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c",
|
||||||
|
"sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234",
|
||||||
|
"sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d",
|
||||||
|
"sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546",
|
||||||
|
"sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2",
|
||||||
|
"sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74",
|
||||||
|
"sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de",
|
||||||
|
"sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd",
|
||||||
|
"sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9",
|
||||||
|
"sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3",
|
||||||
|
"sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846",
|
||||||
|
"sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2",
|
||||||
|
"sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353",
|
||||||
|
"sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8",
|
||||||
|
"sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166",
|
||||||
|
"sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206",
|
||||||
|
"sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b",
|
||||||
|
"sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d",
|
||||||
|
"sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe",
|
||||||
|
"sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997",
|
||||||
|
"sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445",
|
||||||
|
"sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0",
|
||||||
|
"sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96",
|
||||||
|
"sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884",
|
||||||
|
"sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6",
|
||||||
|
"sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1",
|
||||||
|
"sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619",
|
||||||
|
"sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94",
|
||||||
|
"sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4",
|
||||||
|
"sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1",
|
||||||
|
"sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63",
|
||||||
|
"sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd",
|
||||||
|
"sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a",
|
||||||
|
"sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376",
|
||||||
|
"sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57",
|
||||||
|
"sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16",
|
||||||
|
"sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e",
|
||||||
|
"sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc",
|
||||||
|
"sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a",
|
||||||
|
"sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c",
|
||||||
|
"sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5",
|
||||||
|
"sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a",
|
||||||
|
"sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72",
|
||||||
|
"sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9",
|
||||||
|
"sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9",
|
||||||
|
"sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e",
|
||||||
|
"sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8",
|
||||||
|
"sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65",
|
||||||
|
"sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064",
|
||||||
|
"sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"
|
||||||
|
],
|
||||||
|
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
|
||||||
|
"version": "==3.0.1"
|
||||||
|
},
|
||||||
"pymysql": {
|
"pymysql": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
|
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96",
|
||||||
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
|
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==1.1.0"
|
||||||
"version": "==1.1.1"
|
|
||||||
},
|
},
|
||||||
"sqlalchemy": {
|
"sqlalchemy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
|
"sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3",
|
||||||
"sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
|
"sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884",
|
||||||
"sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
|
"sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74",
|
||||||
"sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
|
"sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d",
|
||||||
"sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
|
"sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc",
|
||||||
"sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
|
"sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca",
|
||||||
"sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
|
"sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d",
|
||||||
"sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
|
"sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf",
|
||||||
"sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
|
"sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846",
|
||||||
"sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
|
"sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306",
|
||||||
"sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
|
"sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221",
|
||||||
"sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
|
"sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5",
|
||||||
"sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
|
"sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89",
|
||||||
"sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
|
"sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55",
|
||||||
"sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
|
"sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72",
|
||||||
"sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
|
"sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea",
|
||||||
"sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
|
"sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8",
|
||||||
"sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
|
"sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577",
|
||||||
"sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
|
"sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df",
|
||||||
"sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
|
"sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4",
|
||||||
"sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
|
"sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d",
|
||||||
"sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
|
"sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34",
|
||||||
"sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
|
"sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4",
|
||||||
"sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
|
"sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24",
|
||||||
"sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
|
"sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6",
|
||||||
"sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
|
"sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965",
|
||||||
"sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
|
"sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35",
|
||||||
"sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
|
"sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b",
|
||||||
"sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
|
"sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab",
|
||||||
"sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
|
"sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22",
|
||||||
"sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
|
"sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4",
|
||||||
"sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
|
"sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204",
|
||||||
"sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
|
"sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855",
|
||||||
"sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
|
"sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d",
|
||||||
"sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
|
"sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab",
|
||||||
"sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
|
"sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69",
|
||||||
"sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
|
"sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693",
|
||||||
"sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
|
"sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e",
|
||||||
"sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
|
"sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8",
|
||||||
"sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
|
"sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0",
|
||||||
"sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
|
"sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45",
|
||||||
"sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
|
"sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab",
|
||||||
"sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
|
"sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1",
|
||||||
"sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
|
"sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d",
|
||||||
"sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
|
"sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda",
|
||||||
"sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
|
"sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b",
|
||||||
"sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
|
"sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18",
|
||||||
"sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
|
"sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac",
|
||||||
"sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
|
"sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"
|
||||||
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
|
|
||||||
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
|
|
||||||
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
|
|
||||||
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
|
|
||||||
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
|
|
||||||
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
|
|
||||||
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
|
|
||||||
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==2.0.23"
|
||||||
"version": "==2.0.41"
|
|
||||||
},
|
},
|
||||||
"tenacity": {
|
"tenacity": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
|
"sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a",
|
||||||
"sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
|
"sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.9'",
|
"version": "==8.2.3"
|
||||||
"version": "==9.1.2"
|
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
|
"sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0",
|
||||||
"sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
|
"sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==4.14.0"
|
"version": "==4.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"develop": {
|
"develop": {
|
||||||
"autopep8": {
|
"autopep8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
|
"sha256:067959ca4a07b24dbd5345efa8325f5f58da4298dab0dde0443d5ed765de80cb",
|
||||||
"sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
|
"sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.8'",
|
"version": "==2.0.4"
|
||||||
"version": "==2.3.1"
|
|
||||||
},
|
},
|
||||||
"flake8": {
|
"flake8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
|
"sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
|
||||||
"sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
|
"sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_full_version >= '3.8.1'",
|
"version": "==6.1.0"
|
||||||
"version": "==7.1.1"
|
|
||||||
},
|
},
|
||||||
"mccabe": {
|
"mccabe": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -136,27 +186,27 @@
|
|||||||
},
|
},
|
||||||
"pycodestyle": {
|
"pycodestyle": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
|
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f",
|
||||||
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
|
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==2.12.1"
|
"version": "==2.11.1"
|
||||||
},
|
},
|
||||||
"pyflakes": {
|
"pyflakes": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
"sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774",
|
||||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
"sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==3.2.0"
|
"version": "==3.1.0"
|
||||||
},
|
},
|
||||||
"tomli": {
|
"tomli": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
|
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||||
"sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
|
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.11'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==2.0.2"
|
"version": "==2.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
FROM python:3.9
|
FROM python:3.9-bullseye
|
||||||
|
|
||||||
ENV TZ="Asia/Tokyo"
|
ENV TZ="Asia/Tokyo"
|
||||||
|
|
||||||
@ -11,8 +11,8 @@ RUN apt update && apt install -y less vim curl wget gzip unzip sudo lsb-release
|
|||||||
|
|
||||||
# mysqlをインストール
|
# mysqlをインストール
|
||||||
RUN \
|
RUN \
|
||||||
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \
|
wget https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb && \
|
||||||
dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \
|
dpkg -i mysql-apt-config_0.8.25-1_all.deb < mysql_dpkg_selection.txt && \
|
||||||
apt update && \
|
apt update && \
|
||||||
apt install -y mysql-client
|
apt install -y mysql-client
|
||||||
|
|
||||||
|
|||||||
226
ecs/jskult-dbdump/Pipfile.lock
generated
226
ecs/jskult-dbdump/Pipfile.lock
generated
@ -16,115 +16,165 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"default": {
|
"default": {
|
||||||
|
"greenlet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174",
|
||||||
|
"sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd",
|
||||||
|
"sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa",
|
||||||
|
"sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a",
|
||||||
|
"sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec",
|
||||||
|
"sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565",
|
||||||
|
"sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d",
|
||||||
|
"sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c",
|
||||||
|
"sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234",
|
||||||
|
"sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d",
|
||||||
|
"sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546",
|
||||||
|
"sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2",
|
||||||
|
"sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74",
|
||||||
|
"sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de",
|
||||||
|
"sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd",
|
||||||
|
"sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9",
|
||||||
|
"sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3",
|
||||||
|
"sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846",
|
||||||
|
"sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2",
|
||||||
|
"sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353",
|
||||||
|
"sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8",
|
||||||
|
"sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166",
|
||||||
|
"sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206",
|
||||||
|
"sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b",
|
||||||
|
"sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d",
|
||||||
|
"sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe",
|
||||||
|
"sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997",
|
||||||
|
"sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445",
|
||||||
|
"sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0",
|
||||||
|
"sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96",
|
||||||
|
"sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884",
|
||||||
|
"sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6",
|
||||||
|
"sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1",
|
||||||
|
"sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619",
|
||||||
|
"sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94",
|
||||||
|
"sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4",
|
||||||
|
"sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1",
|
||||||
|
"sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63",
|
||||||
|
"sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd",
|
||||||
|
"sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a",
|
||||||
|
"sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376",
|
||||||
|
"sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57",
|
||||||
|
"sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16",
|
||||||
|
"sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e",
|
||||||
|
"sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc",
|
||||||
|
"sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a",
|
||||||
|
"sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c",
|
||||||
|
"sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5",
|
||||||
|
"sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a",
|
||||||
|
"sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72",
|
||||||
|
"sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9",
|
||||||
|
"sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9",
|
||||||
|
"sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e",
|
||||||
|
"sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8",
|
||||||
|
"sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65",
|
||||||
|
"sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064",
|
||||||
|
"sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"
|
||||||
|
],
|
||||||
|
"markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
|
||||||
|
"version": "==3.0.1"
|
||||||
|
},
|
||||||
"pymysql": {
|
"pymysql": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c",
|
"sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96",
|
||||||
"sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0"
|
"sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==1.1.0"
|
||||||
"version": "==1.1.1"
|
|
||||||
},
|
},
|
||||||
"sqlalchemy": {
|
"sqlalchemy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5",
|
"sha256:0666031df46b9badba9bed00092a1ffa3aa063a5e68fa244acd9f08070e936d3",
|
||||||
"sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582",
|
"sha256:0a8c6aa506893e25a04233bc721c6b6cf844bafd7250535abb56cb6cc1368884",
|
||||||
"sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b",
|
"sha256:0e680527245895aba86afbd5bef6c316831c02aa988d1aad83c47ffe92655e74",
|
||||||
"sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b",
|
"sha256:14aebfe28b99f24f8a4c1346c48bc3d63705b1f919a24c27471136d2f219f02d",
|
||||||
"sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348",
|
"sha256:1e018aba8363adb0599e745af245306cb8c46b9ad0a6fc0a86745b6ff7d940fc",
|
||||||
"sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda",
|
"sha256:227135ef1e48165f37590b8bfc44ed7ff4c074bf04dc8d6f8e7f1c14a94aa6ca",
|
||||||
"sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5",
|
"sha256:31952bbc527d633b9479f5f81e8b9dfada00b91d6baba021a869095f1a97006d",
|
||||||
"sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2",
|
"sha256:3e983fa42164577d073778d06d2cc5d020322425a509a08119bdcee70ad856bf",
|
||||||
"sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29",
|
"sha256:42d0b0290a8fb0165ea2c2781ae66e95cca6e27a2fbe1016ff8db3112ac1e846",
|
||||||
"sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8",
|
"sha256:42ede90148b73fe4ab4a089f3126b2cfae8cfefc955c8174d697bb46210c8306",
|
||||||
"sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f",
|
"sha256:4895a63e2c271ffc7a81ea424b94060f7b3b03b4ea0cd58ab5bb676ed02f4221",
|
||||||
"sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826",
|
"sha256:4af79c06825e2836de21439cb2a6ce22b2ca129bad74f359bddd173f39582bf5",
|
||||||
"sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504",
|
"sha256:5f94aeb99f43729960638e7468d4688f6efccb837a858b34574e01143cf11f89",
|
||||||
"sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae",
|
"sha256:616fe7bcff0a05098f64b4478b78ec2dfa03225c23734d83d6c169eb41a93e55",
|
||||||
"sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45",
|
"sha256:62d9e964870ea5ade4bc870ac4004c456efe75fb50404c03c5fd61f8bc669a72",
|
||||||
"sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443",
|
"sha256:638c2c0b6b4661a4fd264f6fb804eccd392745c5887f9317feb64bb7cb03b3ea",
|
||||||
"sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23",
|
"sha256:63bfc3acc970776036f6d1d0e65faa7473be9f3135d37a463c5eba5efcdb24c8",
|
||||||
"sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576",
|
"sha256:6463aa765cf02b9247e38b35853923edbf2f6fd1963df88706bc1d02410a5577",
|
||||||
"sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1",
|
"sha256:64ac935a90bc479fee77f9463f298943b0e60005fe5de2aa654d9cdef46c54df",
|
||||||
"sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0",
|
"sha256:683ef58ca8eea4747737a1c35c11372ffeb84578d3aab8f3e10b1d13d66f2bc4",
|
||||||
"sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71",
|
"sha256:75eefe09e98043cff2fb8af9796e20747ae870c903dc61d41b0c2e55128f958d",
|
||||||
"sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11",
|
"sha256:787af80107fb691934a01889ca8f82a44adedbf5ef3d6ad7d0f0b9ac557e0c34",
|
||||||
"sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e",
|
"sha256:7c424983ab447dab126c39d3ce3be5bee95700783204a72549c3dceffe0fc8f4",
|
||||||
"sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f",
|
"sha256:7e0dc9031baa46ad0dd5a269cb7a92a73284d1309228be1d5935dac8fb3cae24",
|
||||||
"sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8",
|
"sha256:87a3d6b53c39cd173990de2f5f4b83431d534a74f0e2f88bd16eabb5667e65c6",
|
||||||
"sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd",
|
"sha256:89a01238fcb9a8af118eaad3ffcc5dedaacbd429dc6fdc43fe430d3a941ff965",
|
||||||
"sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814",
|
"sha256:9585b646ffb048c0250acc7dad92536591ffe35dba624bb8fd9b471e25212a35",
|
||||||
"sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08",
|
"sha256:964971b52daab357d2c0875825e36584d58f536e920f2968df8d581054eada4b",
|
||||||
"sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea",
|
"sha256:967c0b71156f793e6662dd839da54f884631755275ed71f1539c95bbada9aaab",
|
||||||
"sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30",
|
"sha256:9ca922f305d67605668e93991aaf2c12239c78207bca3b891cd51a4515c72e22",
|
||||||
"sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda",
|
"sha256:a86cb7063e2c9fb8e774f77fbf8475516d270a3e989da55fa05d08089d77f8c4",
|
||||||
"sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9",
|
"sha256:aeb397de65a0a62f14c257f36a726945a7f7bb60253462e8602d9b97b5cbe204",
|
||||||
"sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923",
|
"sha256:b41f5d65b54cdf4934ecede2f41b9c60c9f785620416e8e6c48349ab18643855",
|
||||||
"sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df",
|
"sha256:bd45a5b6c68357578263d74daab6ff9439517f87da63442d244f9f23df56138d",
|
||||||
"sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036",
|
"sha256:c14eba45983d2f48f7546bb32b47937ee2cafae353646295f0e99f35b14286ab",
|
||||||
"sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3",
|
"sha256:c1bda93cbbe4aa2aa0aa8655c5aeda505cd219ff3e8da91d1d329e143e4aff69",
|
||||||
"sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f",
|
"sha256:c4722f3bc3c1c2fcc3702dbe0016ba31148dd6efcd2a2fd33c1b4897c6a19693",
|
||||||
"sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6",
|
"sha256:c80c38bd2ea35b97cbf7c21aeb129dcbebbf344ee01a7141016ab7b851464f8e",
|
||||||
"sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04",
|
"sha256:cabafc7837b6cec61c0e1e5c6d14ef250b675fa9c3060ed8a7e38653bd732ff8",
|
||||||
"sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2",
|
"sha256:cc1d21576f958c42d9aec68eba5c1a7d715e5fc07825a629015fe8e3b0657fb0",
|
||||||
"sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560",
|
"sha256:d0f7fb0c7527c41fa6fcae2be537ac137f636a41b4c5a4c58914541e2f436b45",
|
||||||
"sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70",
|
"sha256:d4041ad05b35f1f4da481f6b811b4af2f29e83af253bf37c3c4582b2c68934ab",
|
||||||
"sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769",
|
"sha256:d5578e6863eeb998980c212a39106ea139bdc0b3f73291b96e27c929c90cd8e1",
|
||||||
"sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1",
|
"sha256:e3b5036aa326dc2df50cba3c958e29b291a80f604b1afa4c8ce73e78e1c9f01d",
|
||||||
"sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6",
|
"sha256:e599a51acf3cc4d31d1a0cf248d8f8d863b6386d2b6782c5074427ebb7803bda",
|
||||||
"sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b",
|
"sha256:f3420d00d2cb42432c1d0e44540ae83185ccbbc67a6054dcc8ab5387add6620b",
|
||||||
"sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747",
|
"sha256:f48ed89dd11c3c586f45e9eec1e437b355b3b6f6884ea4a4c3111a3358fd0c18",
|
||||||
"sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078",
|
"sha256:f508ba8f89e0a5ecdfd3761f82dda2a3d7b678a626967608f4273e0dba8f07ac",
|
||||||
"sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440",
|
"sha256:fd54601ef9cc455a0c61e5245f690c8a3ad67ddb03d3b91c361d076def0b4c60"
|
||||||
"sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f",
|
|
||||||
"sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2",
|
|
||||||
"sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d",
|
|
||||||
"sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc",
|
|
||||||
"sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a",
|
|
||||||
"sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd",
|
|
||||||
"sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9",
|
|
||||||
"sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.7'",
|
"version": "==2.0.23"
|
||||||
"version": "==2.0.41"
|
|
||||||
},
|
},
|
||||||
"tenacity": {
|
"tenacity": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb",
|
"sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a",
|
||||||
"sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"
|
"sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.9'",
|
"version": "==8.2.3"
|
||||||
"version": "==9.1.2"
|
|
||||||
},
|
},
|
||||||
"typing-extensions": {
|
"typing-extensions": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4",
|
"sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0",
|
||||||
"sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"
|
"sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.9'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==4.14.0"
|
"version": "==4.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"develop": {
|
"develop": {
|
||||||
"autopep8": {
|
"autopep8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda",
|
"sha256:067959ca4a07b24dbd5345efa8325f5f58da4298dab0dde0443d5ed765de80cb",
|
||||||
"sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"
|
"sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_version >= '3.8'",
|
"version": "==2.0.4"
|
||||||
"version": "==2.3.1"
|
|
||||||
},
|
},
|
||||||
"flake8": {
|
"flake8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38",
|
"sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
|
||||||
"sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"
|
"sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"markers": "python_full_version >= '3.8.1'",
|
"version": "==6.1.0"
|
||||||
"version": "==7.1.1"
|
|
||||||
},
|
},
|
||||||
"mccabe": {
|
"mccabe": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -136,27 +186,27 @@
|
|||||||
},
|
},
|
||||||
"pycodestyle": {
|
"pycodestyle": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3",
|
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f",
|
||||||
"sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"
|
"sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==2.12.1"
|
"version": "==2.11.1"
|
||||||
},
|
},
|
||||||
"pyflakes": {
|
"pyflakes": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
"sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774",
|
||||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
"sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==3.2.0"
|
"version": "==3.1.0"
|
||||||
},
|
},
|
||||||
"tomli": {
|
"tomli": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38",
|
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
|
||||||
"sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"
|
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
|
||||||
],
|
],
|
||||||
"markers": "python_version < '3.11'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==2.0.2"
|
"version": "==2.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
FROM python:3.9
|
FROM python:3.9-bullseye
|
||||||
|
|
||||||
ENV TZ="Asia/Tokyo"
|
ENV TZ="Asia/Tokyo"
|
||||||
|
|
||||||
@ -11,8 +11,8 @@ RUN apt update && apt install -y less vim curl wget gzip unzip sudo lsb-release
|
|||||||
|
|
||||||
# mysqlをインストール
|
# mysqlをインストール
|
||||||
RUN \
|
RUN \
|
||||||
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb && \
|
wget https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb && \
|
||||||
dpkg -i mysql-apt-config_0.8.29-1_all.deb < mysql_dpkg_selection.txt && \
|
dpkg -i mysql-apt-config_0.8.25-1_all.deb < mysql_dpkg_selection.txt && \
|
||||||
apt update && \
|
apt update && \
|
||||||
apt install -y mysql-client
|
apt install -y mysql-client
|
||||||
|
|
||||||
|
|||||||
18
ecs/jskult-restore-backup/Pipfile.lock
generated
18
ecs/jskult-restore-backup/Pipfile.lock
generated
@ -19,19 +19,19 @@
|
|||||||
"develop": {
|
"develop": {
|
||||||
"autopep8": {
|
"autopep8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7",
|
"sha256:067959ca4a07b24dbd5345efa8325f5f58da4298dab0dde0443d5ed765de80cb",
|
||||||
"sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"
|
"sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.1.0"
|
"version": "==2.0.4"
|
||||||
},
|
},
|
||||||
"flake8": {
|
"flake8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132",
|
"sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
|
||||||
"sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"
|
"sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==7.0.0"
|
"version": "==6.1.0"
|
||||||
},
|
},
|
||||||
"mccabe": {
|
"mccabe": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@ -51,11 +51,11 @@
|
|||||||
},
|
},
|
||||||
"pyflakes": {
|
"pyflakes": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f",
|
"sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774",
|
||||||
"sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"
|
"sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version >= '3.8'",
|
||||||
"version": "==3.2.0"
|
"version": "==3.1.0"
|
||||||
},
|
},
|
||||||
"tomli": {
|
"tomli": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|||||||
@ -26,7 +26,6 @@ openpyxl = "*"
|
|||||||
xlrd = "*"
|
xlrd = "*"
|
||||||
sqlalchemy = "==2.*"
|
sqlalchemy = "==2.*"
|
||||||
mojimoji = "*"
|
mojimoji = "*"
|
||||||
numpy = "==2.0.*"
|
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
autopep8 = "*"
|
autopep8 = "*"
|
||||||
|
|||||||
1947
ecs/jskult-webapp/Pipfile.lock
generated
1947
ecs/jskult-webapp/Pipfile.lock
generated
File diff suppressed because it is too large
Load Diff
@ -84,8 +84,6 @@
|
|||||||
│ ├── exception_handler.py -- FastAPI内部でエラー発生時のハンドリング
|
│ ├── exception_handler.py -- FastAPI内部でエラー発生時のハンドリング
|
||||||
│ └── exceptions.py -- カスタム例外クラス
|
│ └── exceptions.py -- カスタム例外クラス
|
||||||
├── main.py -- APサーバーのエントリーポイント。ここでルーターやハンドラーの登録を行う
|
├── main.py -- APサーバーのエントリーポイント。ここでルーターやハンドラーの登録を行う
|
||||||
├── middleware -- ミドルウェアの設定
|
|
||||||
│ └── middleware.py
|
|
||||||
├── model -- モデル層(MVCのM)
|
├── model -- モデル層(MVCのM)
|
||||||
│ ├── db -- リポジトリから返されるDBレコードのモデル
|
│ ├── db -- リポジトリから返されるDBレコードのモデル
|
||||||
│ │ ├── base_db_model.py
|
│ │ ├── base_db_model.py
|
||||||
@ -197,39 +195,3 @@
|
|||||||
- コントローラーのrouter変数が、`router.route_class = Authenticate`となっている場合、以下の動きをする
|
- コントローラーのrouter変数が、`router.route_class = Authenticate`となっている場合、以下の動きをする
|
||||||
- リクエスト到達時にセッションの有無をチェックする
|
- リクエスト到達時にセッションの有無をチェックする
|
||||||
- レスポンス時、クッキーにセッションキーを登録する
|
- レスポンス時、クッキーにセッションキーを登録する
|
||||||
|
|
||||||
## HTMLで読み込んでいるスクリプトのSRIハッシュ値を生成・設定する方法
|
|
||||||
|
|
||||||
### サブリソース完全性 (Subresource Integrity, SRI) とは
|
|
||||||
|
|
||||||
CDN などから取得したリソースが意図せず改ざんされていないかをブラウザーが検証するセキュリティ機能です。 SRI を利用する際には、取得したリソースのハッシュ値と一致すべきハッシュ値を指定します。
|
|
||||||
|
|
||||||
詳細:<https://developer.mozilla.org/ja/docs/Web/Security/Subresource_Integrity>
|
|
||||||
|
|
||||||
実消化&アルトマークのWebアプリケーションでは、複数の外部スクリプトを読み込んで動作しているため、読み込むスクリプトを変更した場合は、
|
|
||||||
タグの属性値`integrity`に設定されているスクリプトのハッシュ値を更新する必要がある。
|
|
||||||
|
|
||||||
### SRI ハッシュ値の生成方法(サーバー内のスクリプトについて)
|
|
||||||
|
|
||||||
- サーバー内に保管されているスクリプトを更新した場合、Linux環境(WSL2でも可)で、以下のコマンドを実行し、ハッシュ値を生成する
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat <更新したスクリプトファイル名> | openssl dgst -sha384 -binary | openssl base64 -A
|
|
||||||
```
|
|
||||||
|
|
||||||
参考:<https://developer.mozilla.org/ja/docs/Web/Security/Subresource_Integrity#sri_%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB>
|
|
||||||
|
|
||||||
|
|
||||||
### SRI ハッシュ値の生成方法(外部サイトから読み込んでいるスクリプトについて)
|
|
||||||
|
|
||||||
- 外部サイトから読み込んでいるスクリプトを更新した場合、下記のMDNオンラインツールでハッシュ値を生成する
|
|
||||||
- [SRI Hash Generator](https://www.srihash.org/)
|
|
||||||
|
|
||||||
### SRI ハッシュ値の設定方法
|
|
||||||
|
|
||||||
- 更新したスクリプトを読み込んでいる箇所の`integrity`属性値を、生成したハッシュ値に置き換える
|
|
||||||
- 以下は設定のサンプル
|
|
||||||
|
|
||||||
```bash
|
|
||||||
<script src="https://リンク/スクリプト.js" integrity="sha384-生成したハッシュ" crossorigin="anonymous"></script>
|
|
||||||
```
|
|
||||||
|
|||||||
@ -79,11 +79,11 @@ def search_bio_data(
|
|||||||
'data': data,
|
'data': data,
|
||||||
'count': bio_sales_lot_count
|
'count': bio_sales_lot_count
|
||||||
})
|
})
|
||||||
|
|
||||||
# クッキーも書き換え
|
# クッキーも書き換え
|
||||||
json_response.set_cookie(
|
json_response.set_cookie(
|
||||||
key='session',
|
key='session',
|
||||||
value=session.session_key,
|
value=session.session_key,
|
||||||
|
max_age=environment.SESSION_EXPIRE_MINUTE * 60, # cookieの有効期限は秒数指定なので、60秒をかける
|
||||||
secure=True,
|
secure=True,
|
||||||
httponly=True
|
httponly=True
|
||||||
)
|
)
|
||||||
@ -153,10 +153,10 @@ async def download_bio_data(
|
|||||||
'status': 'ok',
|
'status': 'ok',
|
||||||
'download_url': download_file_url
|
'download_url': download_file_url
|
||||||
})
|
})
|
||||||
|
|
||||||
json_response.set_cookie(
|
json_response.set_cookie(
|
||||||
key='session',
|
key='session',
|
||||||
value=session.session_key,
|
value=session.session_key,
|
||||||
|
max_age=environment.SESSION_EXPIRE_MINUTE * 60, # cookieの有効期限は秒数指定なので、60秒をかける
|
||||||
secure=True,
|
secure=True,
|
||||||
httponly=True
|
httponly=True
|
||||||
)
|
)
|
||||||
|
|||||||
@ -70,22 +70,11 @@ def login(
|
|||||||
jwt_token = login_service.login(request.username, request.password)
|
jwt_token = login_service.login(request.username, request.password)
|
||||||
except NotAuthorizeException as e:
|
except NotAuthorizeException as e:
|
||||||
logger.info(f'ログイン失敗:{e}')
|
logger.info(f'ログイン失敗:{e}')
|
||||||
# ログイン失敗回数をカウント
|
|
||||||
login_service.increase_login_failed_count(request.username)
|
|
||||||
# ログイン失敗回数を超過した場合はメッセージを変える
|
|
||||||
if login_service.is_login_failed_limit_exceeded(request.username):
|
|
||||||
login_service.on_login_fail_limit_exceeded(request.username)
|
|
||||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED)
|
|
||||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_LOGIN_ERROR)
|
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_LOGIN_ERROR)
|
||||||
except JWTTokenVerifyException as e:
|
except JWTTokenVerifyException as e:
|
||||||
logger.info(f'ログイン失敗:{e}')
|
logger.info(f'ログイン失敗:{e}')
|
||||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
|
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
|
||||||
|
|
||||||
# ログイン成功問わず、DBのログイン失敗回数が10回以上あれば、ログアウト画面にリダイレクトする
|
|
||||||
if login_service.is_login_failed_limit_exceeded(request.username):
|
|
||||||
logger.info(f'ログイン失敗回数が10回以上: {request.username}')
|
|
||||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail=constants.LOGOUT_REASON_LOGIN_FAILED_LIMIT_EXCEEDED)
|
|
||||||
|
|
||||||
verified_token = jwt_token.verify_token()
|
verified_token = jwt_token.verify_token()
|
||||||
# 普通の認証だと、`cognito:username`に入る。
|
# 普通の認証だと、`cognito:username`に入る。
|
||||||
user_id = verified_token.user_id
|
user_id = verified_token.user_id
|
||||||
@ -124,7 +113,6 @@ def login(
|
|||||||
status_code=status.HTTP_303_SEE_OTHER,
|
status_code=status.HTTP_303_SEE_OTHER,
|
||||||
headers={'session_key': session_key}
|
headers={'session_key': session_key}
|
||||||
)
|
)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@ -182,5 +170,4 @@ def sso_authorize(
|
|||||||
status_code=status.HTTP_303_SEE_OTHER,
|
status_code=status.HTTP_303_SEE_OTHER,
|
||||||
headers={'session_key': session_key}
|
headers={'session_key': session_key}
|
||||||
)
|
)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user