diff --git a/ecs/jskult-batch-ultmarc-io/.dockerignore b/ecs/jskult-batch-ultmarc-io/.dockerignore new file mode 100644 index 00000000..8b9da402 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/.dockerignore @@ -0,0 +1,12 @@ +tests/* +.coverage +.env +.env.example +.report/* +.vscode/* +.pytest_cache/* +*/__pychache__/* +Dockerfile +pytest.ini +README.md +*.sql diff --git a/ecs/jskult-batch-ultmarc-io/.env.example b/ecs/jskult-batch-ultmarc-io/.env.example new file mode 100644 index 00000000..500f843d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/.env.example @@ -0,0 +1,26 @@ +DB_HOST=************ +DB_PORT=************ +DB_USERNAME=************ +DB_PASSWORD=************ +DB_SCHEMA=src05 +LOG_LEVEL=INFO +ULTMARC_DATA_BUCKET=**************** +ULTMARC_DATA_FOLDER=recv +JSKULT_BACKUP_BUCKET=**************** +ULTMARC_BACKUP_FOLDER=ultmarc +VJSK_BACKUP_FOLDER=vjsk +JSKULT_CONFIG_BUCKET=********************** +JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar +JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME=jskult_holiday_list.txt +VJSK_DATA_SEND_FOLDER=send +VJSK_DATA_RECEIVE_FOLDER=recv +VJSK_DATA_BUCKET=************* +JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILE_NAME=jskult_wholesaler_stock_input_day_list.txt +JSKULT_CONFIG_CONVERT_FOLDER=jskult/convert +JSKULT_ULTMARC_HEX_CONVERT_CONFIG_FILE_NAME=ultmarc_hex_convert_config.json +# 連携データ抽出期間 +SALES_LAUNDERING_EXTRACT_DATE_PERIOD=0 +# 洗替対象テーブル名 +SALES_LAUNDERING_TARGET_TABLE_NAME=src05.sales_lau +# 卸実績洗替で作成するデータの期間(年単位) +SALES_LAUNDERING_TARGET_YEAR_OFFSET=5 diff --git a/ecs/jskult-batch-ultmarc-io/.gitignore b/ecs/jskult-batch-ultmarc-io/.gitignore new file mode 100644 index 00000000..bd0b37f8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/.gitignore @@ -0,0 +1,10 @@ +.vscode/settings.json +.env + +# python +__pycache__ + +# python test +.pytest_cache +.coverage +.report/ \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/.vscode/launch.json b/ecs/jskult-batch-ultmarc-io/.vscode/launch.json new file mode 100644 index 00000000..f221147c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // IntelliSense を使用して利用可能な属性を学べます。 + // 既存の属性の説明をホバーして表示します。 + // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "(DEBUG)jskult ultmarc io", + "type": "python", + "request": "launch", + "program": "entrypoint.py", + "console": "integratedTerminal", + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/.vscode/recommended_settings.json b/ecs/jskult-batch-ultmarc-io/.vscode/recommended_settings.json new file mode 100644 index 00000000..2fde8732 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/.vscode/recommended_settings.json @@ -0,0 +1,31 @@ +{ + "[python]": { + "editor.defaultFormatter": null, + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": true + } + }, + // 自身の環境に合わせて変えてください + "python.defaultInterpreterPath": "", + "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/" + ], + + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/ecs/jskult-batch-ultmarc-io/Dockerfile b/ecs/jskult-batch-ultmarc-io/Dockerfile new file mode 100644 index 00000000..03579f2f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/Dockerfile @@ -0,0 +1,20 @@ +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 ./ +RUN \ + apt update -y && \ + 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" ] diff --git a/ecs/jskult-batch-ultmarc-io/Pipfile b/ecs/jskult-batch-ultmarc-io/Pipfile new file mode 100644 index 00000000..1f016eef --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/Pipfile @@ -0,0 +1,27 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[scripts] +"test:ultmarc" = "pytest tests/batch/ultmarc/" +"test:ultmarc:cov" = "pytest --cov=src/batch/ultmarc/ --cov-branch --cov-report=term-missing tests/batch/ultmarc/" + +[packages] +boto3 = "*" +PyMySQL = "*" +sqlalchemy = "*" +tenacity = "*" + +[dev-packages] +autopep8 = "*" +flake8 = "*" +pytest = "*" +pytest-cov = "*" +boto3 = "*" + +[requires] +python_version = "3.12" + +[pipenv] +allow_prereleases = true diff --git a/ecs/jskult-batch-ultmarc-io/Pipfile.lock b/ecs/jskult-batch-ultmarc-io/Pipfile.lock new file mode 100644 index 00000000..289ac1d4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/Pipfile.lock @@ -0,0 +1,443 @@ +{ + "_meta": { + "hash": { + "sha256": "aa2d1d97600fea225b7d249dae0d065190d00fdadbf85b20773e0c1d9862f5c1" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.12" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "boto3": { + "hashes": [ + "sha256:d57d8040d04b8fefb7439062529653701cc90d5b2734cc4f1144fedb75ba94a7", + "sha256:fdd69f23e6216a508bbc1fbda9486791c161f3ecd5933ac7090d7290f6f2d0f5" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==1.38.19" + }, + "botocore": { + "hashes": [ + "sha256:796b948c05017eb33385b798990cd91ed4af0e881eb9eb1ee6e17666be02abc9", + "sha256:f937a20e75889215a99280ea0fdd4e1716ffede23e4f9af7bc9c64af9bc63e61" + ], + "markers": "python_version >= '3.9'", + "version": "==1.38.19" + }, + "greenlet": { + "hashes": [ + "sha256:00cd814b8959b95a546e47e8d589610534cfb71f19802ea8a2ad99d95d702057", + "sha256:02a98600899ca1ca5d3a2590974c9e3ec259503b2d6ba6527605fcd74e08e207", + "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", + "sha256:055916fafad3e3388d27dd68517478933a97edc2fc54ae79d3bec827de2c64c4", + "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", + "sha256:1592a615b598643dbfd566bac8467f06c8c8ab6e56f069e573832ed1d5d528cc", + "sha256:1919cbdc1c53ef739c94cf2985056bcc0838c1f217b57647cbf4578576c63825", + "sha256:1e4747712c4365ef6765708f948acc9c10350719ca0545e362c24ab973017370", + "sha256:1e76106b6fc55fa3d6fe1c527f95ee65e324a13b62e243f77b48317346559708", + "sha256:1f72667cc341c95184f1c68f957cb2d4fc31eef81646e8e59358a10ce6689457", + "sha256:2593283bf81ca37d27d110956b79e8723f9aa50c4bcdc29d3c0543d4743d2763", + "sha256:2dc5c43bb65ec3669452af0ab10729e8fdc17f87a1f2ad7ec65d4aaaefabf6bf", + "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", + "sha256:354f67445f5bed6604e493a06a9a49ad65675d3d03477d38a4db4a427e9aad0e", + "sha256:3885f85b61798f4192d544aac7b25a04ece5fe2704670b4ab73c2d2c14ab740d", + "sha256:3ab7194ee290302ca15449f601036007873028712e92ca15fc76597a0aeb4c59", + "sha256:3aeca9848d08ce5eb653cf16e15bb25beeab36e53eb71cc32569f5f3afb2a3aa", + "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", + "sha256:45f9f4853fb4cc46783085261c9ec4706628f3b57de3e68bae03e8f8b3c0de51", + "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", + "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", + "sha256:6629311595e3fe7304039c67f00d145cd1d38cf723bb5b99cc987b23c1433d61", + "sha256:6fadd183186db360b61cb34e81117a096bff91c072929cd1b529eb20dd46e6c5", + "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", + "sha256:7409796591d879425997a518138889d8d17e63ada7c99edc0d7a1c22007d4907", + "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", + "sha256:7791dcb496ec53d60c7f1c78eaa156c21f402dda38542a00afc3e20cae0f480f", + "sha256:782743700ab75716650b5238a4759f840bb2dcf7bff56917e9ffdf9f1f23ec59", + "sha256:7c9896249fbef2c615853b890ee854f22c671560226c9221cfd27c995db97e5c", + "sha256:85f3e248507125bf4af607a26fd6cb8578776197bd4b66e35229cdf5acf1dfbf", + "sha256:89c69e9a10670eb7a66b8cef6354c24671ba241f46152dd3eed447f79c29fb5b", + "sha256:8cb8553ee954536500d88a1a2f58fcb867e45125e600e80f586ade399b3f8819", + "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", + "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", + "sha256:9ea5231428af34226c05f927e16fc7f6fa5e39e3ad3cd24ffa48ba53a47f4240", + "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", + "sha256:a8fa80665b1a29faf76800173ff5325095f3e66a78e62999929809907aca5659", + "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", + "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", + "sha256:b50a8c5c162469c3209e5ec92ee4f95c8231b11db6a04db09bbe338176723bb8", + "sha256:ba30e88607fb6990544d84caf3c706c4b48f629e18853fc6a646f82db9629418", + "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", + "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", + "sha256:c3cc1a3ed00ecfea8932477f729a9f616ad7347a5e55d50929efa50a86cb7be7", + "sha256:c49e9f7c6f625507ed83a7485366b46cbe325717c60837f7244fc99ba16ba9d6", + "sha256:d0cb7d47199001de7658c213419358aa8937df767936506db0db7ce1a71f4a2f", + "sha256:d8009ae46259e31bc73dc183e402f548e980c96f33a6ef58cc2e7865db012e13", + "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", + "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", + "sha256:decb0658ec19e5c1f519faa9a160c0fc85a41a7e6654b3ce1b44b939f8bf1325", + "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", + "sha256:eeb27bece45c0c2a5842ac4c5a1b5c2ceaefe5711078eed4e8043159fa05c834", + "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", + "sha256:fd9fb7c941280e2c837b603850efc93c999ae58aae2b40765ed682a6907ebbc5", + "sha256:fe46d4f8e94e637634d54477b0cfabcf93c53f29eedcbdeecaf2af32029b4421" + ], + "markers": "python_version < '3.14' and (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.2.2" + }, + "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:35b314d7d82865756edab59f7baebc6b477189e6ab4c53050e28c1de4d9cce18", + "sha256:8ac58bc1989a3fdb7c7f3ee0918a66b160d038a147c7b5db1500930a607e9a1c" + ], + "markers": "python_version >= '3.9'", + "version": "==0.12.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" + }, + "sqlalchemy": { + "hashes": [ + "sha256:023b3ee6169969beea3bb72312e44d8b7c27c75b347942d943cf49397b7edeb5", + "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", + "sha256:05132c906066142103b83d9c250b60508af556982a385d96c4eaa9fb9720ac2b", + "sha256:087b6b52de812741c27231b5a3586384d60c353fbd0e2f81405a814b5591dc8b", + "sha256:0b3dbf1e7e9bc95f4bac5e2fb6d3fb2f083254c3fdd20a1789af965caf2d2348", + "sha256:118c16cd3f1b00c76d69343e38602006c9cfb9998fa4f798606d28d63f23beda", + "sha256:1936af879e3db023601196a1684d28e12f19ccf93af01bf3280a3262c4b6b4e5", + "sha256:1e3f196a0c59b0cae9a0cd332eb1a4bda4696e863f4f1cf84ab0347992c548c2", + "sha256:23a8825495d8b195c4aa9ff1c430c28f2c821e8c5e2d98089228af887e5d7e29", + "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", + "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", + "sha256:34ea30ab3ec98355235972dadc497bb659cc75f8292b760394824fab9cf39826", + "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", + "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", + "sha256:4d44522480e0bf34c3d63167b8cfa7289c1c54264c2950cc5fc26e7850967e45", + "sha256:4eeb195cdedaf17aab6b247894ff2734dcead6c08f748e617bfe05bd5a218443", + "sha256:4f67766965996e63bb46cfbf2ce5355fc32d9dd3b8ad7e536a920ff9ee422e23", + "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", + "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", + "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", + "sha256:5e22575d169529ac3e0a120cf050ec9daa94b6a9597993d1702884f6954a7d71", + "sha256:60c578c45c949f909a4026b7807044e7e564adf793537fc762b2489d522f3d11", + "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", + "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", + "sha256:6854175807af57bdb6425e47adbce7d20a4d79bbfd6f6d6519cd10bb7109a7f8", + "sha256:6ab60a5089a8f02009f127806f777fca82581c49e127f08413a66056bd9166dd", + "sha256:725875a63abf7c399d4548e686debb65cdc2549e1825437096a0af1f7e374814", + "sha256:7492967c3386df69f80cf67efd665c0f667cee67032090fe01d7d74b0e19bb08", + "sha256:81965cc20848ab06583506ef54e37cf15c83c7e619df2ad16807c03100745dea", + "sha256:81c24e0c0fde47a9723c81d5806569cddef103aebbf79dbc9fcbb617153dea30", + "sha256:81eedafa609917040d39aa9332e25881a8e7a0862495fcdf2023a9667209deda", + "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", + "sha256:8280856dd7c6a68ab3a164b4a4b1c51f7691f6d04af4d4ca23d6ecf2261b7923", + "sha256:82ca366a844eb551daff9d2e6e7a9e5e76d2612c8564f58db6c19a726869c1df", + "sha256:8b4af17bda11e907c51d10686eda89049f9ce5669b08fbe71a29747f1e876036", + "sha256:90144d3b0c8b139408da50196c5cad2a6909b51b23df1f0538411cd23ffa45d3", + "sha256:906e6b0d7d452e9a98e5ab8507c0da791856b2380fdee61b765632bb8698026f", + "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", + "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", + "sha256:9a420a91913092d1e20c86a2f5f1fc85c1a8924dbcaf5e0586df8aceb09c9cc2", + "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", + "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", + "sha256:a373a400f3e9bac95ba2a06372c4fd1412a7cee53c37fc6c05f829bf672b8769", + "sha256:a62448526dd9ed3e3beedc93df9bb6b55a436ed1474db31a2af13b313a70a7e1", + "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", + "sha256:b1f09b6821406ea1f94053f346f28f8215e293344209129a9c0fcc3578598d7b", + "sha256:b2ac41acfc8d965fb0c464eb8f44995770239668956dc4cdf502d1b1ffe0d747", + "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", + "sha256:b50eab9994d64f4a823ff99a0ed28a6903224ddbe7fef56a6dd865eec9243440", + "sha256:bfc9064f6658a3d1cadeaa0ba07570b83ce6801a1314985bf98ec9b95d74e15f", + "sha256:c0b0e5e1b5d9f3586601048dd68f392dc0cc99a59bb5faf18aab057ce00d00b2", + "sha256:c153265408d18de4cc5ded1941dcd8315894572cddd3c58df5d5b5705b3fa28d", + "sha256:d4ae769b9c1c7757e4ccce94b0641bc203bbdf43ba7a2413ab2523d8d047d8dc", + "sha256:dc56c9788617b8964ad02e8fcfeed4001c1f8ba91a9e1f31483c0dffb207002a", + "sha256:dd5ec3aa6ae6e4d5b5de9357d2133c07be1aff6405b136dad753a16afb6717dd", + "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", + "sha256:ff8e80c4c4932c10493ff97028decfdb622de69cae87e0f127a7ebe32b4069c6" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==2.0.41" + }, + "tenacity": { + "hashes": [ + "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", + "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==9.1.2" + }, + "typing-extensions": { + "hashes": [ + "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", + "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef" + ], + "markers": "python_version >= '3.8'", + "version": "==4.13.2" + }, + "urllib3": { + "hashes": [ + "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", + "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813" + ], + "markers": "python_version >= '3.10'", + "version": "==2.4.0" + } + }, + "develop": { + "autopep8": { + "hashes": [ + "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758", + "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==2.3.2" + }, + "boto3": { + "hashes": [ + "sha256:d57d8040d04b8fefb7439062529653701cc90d5b2734cc4f1144fedb75ba94a7", + "sha256:fdd69f23e6216a508bbc1fbda9486791c161f3ecd5933ac7090d7290f6f2d0f5" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==1.38.19" + }, + "botocore": { + "hashes": [ + "sha256:796b948c05017eb33385b798990cd91ed4af0e881eb9eb1ee6e17666be02abc9", + "sha256:f937a20e75889215a99280ea0fdd4e1716ffede23e4f9af7bc9c64af9bc63e61" + ], + "markers": "python_version >= '3.9'", + "version": "==1.38.19" + }, + "coverage": { + "extras": [ + "toml" + ], + "hashes": [ + "sha256:042e7841a26498fff7a37d6fda770d17519982f5b7d8bf5278d140b67b61095f", + "sha256:04bfec25a8ef1c5f41f5e7e5c842f6b615599ca8ba8391ec33a9290d9d2db3a3", + "sha256:0915742f4c82208ebf47a2b154a5334155ed9ef9fe6190674b8a46c2fb89cb05", + "sha256:18c5ae6d061ad5b3e7eef4363fb27a0576012a7447af48be6c75b88494c6cf25", + "sha256:2931f66991175369859b5fd58529cd4b73582461877ecfd859b6549869287ffe", + "sha256:2e4b6b87bb0c846a9315e3ab4be2d52fac905100565f4b92f02c445c8799e257", + "sha256:3043ba1c88b2139126fc72cb48574b90e2e0546d4c78b5299317f61b7f718b78", + "sha256:379fe315e206b14e21db5240f89dc0774bdd3e25c3c58c2c733c99eca96f1ada", + "sha256:42421e04069fb2cbcbca5a696c4050b84a43b05392679d4068acbe65449b5c64", + "sha256:4dfd9a93db9e78666d178d4f08a5408aa3f2474ad4d0e0378ed5f2ef71640cb6", + "sha256:52a523153c568d2c0ef8826f6cc23031dc86cffb8c6aeab92c4ff776e7951b28", + "sha256:554fec1199d93ab30adaa751db68acec2b41c5602ac944bb19187cb9a41a8067", + "sha256:581a40c7b94921fffd6457ffe532259813fc68eb2bdda60fa8cc343414ce3733", + "sha256:5a26c0c795c3e0b63ec7da6efded5f0bc856d7c0b24b2ac84b4d1d7bc578d676", + "sha256:5a570cd9bd20b85d1a0d7b009aaf6c110b52b5755c17be6962f8ccd65d1dbd23", + "sha256:5aaeb00761f985007b38cf463b1d160a14a22c34eb3f6a39d9ad6fc27cb73008", + "sha256:5ac46d0c2dd5820ce93943a501ac5f6548ea81594777ca585bf002aa8854cacd", + "sha256:5c8a5c139aae4c35cbd7cadca1df02ea8cf28a911534fc1b0456acb0b14234f3", + "sha256:6b8af63b9afa1031c0ef05b217faa598f3069148eeee6bb24b79da9012423b82", + "sha256:769773614e676f9d8e8a0980dd7740f09a6ea386d0f383db6821df07d0f08545", + "sha256:771eb7587a0563ca5bb6f622b9ed7f9d07bd08900f7589b4febff05f469bea00", + "sha256:77af0f6447a582fdc7de5e06fa3757a3ef87769fbb0fdbdeba78c23049140a47", + "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501", + "sha256:821f7bcbaa84318287115d54becb1915eece6918136c6f91045bb84e2f88739d", + "sha256:89b1f4af0d4afe495cd4787a68e00f30f1d15939f550e869de90a86efa7e0814", + "sha256:8a1d96e780bdb2d0cbb297325711701f7c0b6f89199a57f2049e90064c29f6bd", + "sha256:8a40fcf208e021eb14b0fac6bdb045c0e0cab53105f93ba0d03fd934c956143a", + "sha256:8f99eb72bf27cbb167b636eb1726f590c00e1ad375002230607a844d9e9a2318", + "sha256:90e7fbc6216ecaffa5a880cdc9c77b7418c1dcb166166b78dbc630d07f278cc3", + "sha256:94ec0be97723ae72d63d3aa41961a0b9a6f5a53ff599813c324548d18e3b9e8c", + "sha256:95aa6ae391a22bbbce1b77ddac846c98c5473de0372ba5c463480043a07bff42", + "sha256:96121edfa4c2dfdda409877ea8608dd01de816a4dc4a0523356067b305e4e17a", + "sha256:a1f406a8e0995d654b2ad87c62caf6befa767885301f3b8f6f73e6f3c31ec3a6", + "sha256:a321c61477ff8ee705b8a5fed370b5710c56b3a52d17b983d9215861e37b642a", + "sha256:a5761c70c017c1b0d21b0815a920ffb94a670c8d5d409d9b38857874c21f70d7", + "sha256:a9abbccd778d98e9c7e85038e35e91e67f5b520776781d9a1e2ee9d400869487", + "sha256:ad80e6b4a0c3cb6f10f29ae4c60e991f424e6b14219d46f1e7d442b938ee68a4", + "sha256:b44674870709017e4b4036e3d0d6c17f06a0e6d4436422e0ad29b882c40697d2", + "sha256:b571bf5341ba8c6bc02e0baeaf3b061ab993bf372d982ae509807e7f112554e9", + "sha256:b8194fb8e50d556d5849753de991d390c5a1edeeba50f68e3a9253fbd8bf8ccd", + "sha256:b87eb6fc9e1bb8f98892a2458781348fa37e6925f35bb6ceb9d4afd54ba36c73", + "sha256:bbb5cc845a0292e0c520656d19d7ce40e18d0e19b22cb3e0409135a575bf79fc", + "sha256:be945402e03de47ba1872cd5236395e0f4ad635526185a930735f66710e1bd3f", + "sha256:bf13d564d310c156d1c8e53877baf2993fb3073b2fc9f69790ca6a732eb4bfea", + "sha256:cf60dd2696b457b710dd40bf17ad269d5f5457b96442f7f85722bdb16fa6c899", + "sha256:d1ba00ae33be84066cfbe7361d4e04dec78445b2b88bdb734d0d1cbab916025a", + "sha256:d39fc4817fd67b3915256af5dda75fd4ee10621a3d484524487e33416c6f3543", + "sha256:d766a4f0e5aa1ba056ec3496243150698dc0481902e2b8559314368717be82b1", + "sha256:dbf364b4c5e7bae9250528167dfe40219b62e2d573c854d74be213e1e52069f7", + "sha256:dd19608788b50eed889e13a5d71d832edc34fc9dfce606f66e8f9f917eef910d", + "sha256:e013b07ba1c748dacc2a80e69a46286ff145935f260eb8c72df7185bf048f502", + "sha256:e5d2b9be5b0693cf21eb4ce0ec8d211efb43966f6657807f6859aab3814f946b", + "sha256:e5ff52d790c7e1628241ffbcaeb33e07d14b007b6eb00a19320c7b8a7024c040", + "sha256:e75a2ad7b647fd8046d58c3132d7eaf31b12d8a53c0e4b21fa9c4d23d6ee6d3c", + "sha256:e7ac22a0bb2c7c49f441f7a6d46c9c80d96e56f5a8bc6972529ed43c8b694e27", + "sha256:ed2144b8a78f9d94d9515963ed273d620e07846acd5d4b0a642d4849e8d91a0c", + "sha256:f017a61399f13aa6d1039f75cd467be388d157cd81f1a119b9d9a68ba6f2830d", + "sha256:f1d8a2a57b47142b10374902777e798784abf400a004b14f1b0b9eaf1e528ba4", + "sha256:f2d32f95922927186c6dbc8bc60df0d186b6edb828d299ab10898ef3f40052fe", + "sha256:f319bae0321bc838e205bf9e5bc28f0a3165f30c203b610f17ab5552cff90323", + "sha256:f3c38e4e5ccbdc9198aecc766cedbb134b2d89bf64533973678dfcf07effd883", + "sha256:f9983d01d7705b2d1f7a95e10bbe4091fabc03a46881a256c2787637b087003f", + "sha256:fa260de59dfb143af06dcf30c2be0b200bed2a73737a8a59248fcb9fa601ef0f" + ], + "markers": "python_version >= '3.9'", + "version": "==7.8.0" + }, + "flake8": { + "hashes": [ + "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343", + "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==7.2.0" + }, + "iniconfig": { + "hashes": [ + "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", + "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" + ], + "markers": "python_version >= '3.8'", + "version": "==2.1.0" + }, + "jmespath": { + "hashes": [ + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, + "mccabe": { + "hashes": [ + "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", + "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e" + ], + "markers": "python_version >= '3.6'", + "version": "==0.7.0" + }, + "packaging": { + "hashes": [ + "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", + "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" + ], + "markers": "python_version >= '3.8'", + "version": "==25.0" + }, + "pluggy": { + "hashes": [ + "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", + "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" + ], + "markers": "python_version >= '3.9'", + "version": "==1.6.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", + "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae" + ], + "markers": "python_version >= '3.9'", + "version": "==2.13.0" + }, + "pyflakes": { + "hashes": [ + "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a", + "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b" + ], + "markers": "python_version >= '3.9'", + "version": "==3.3.2" + }, + "pytest": { + "hashes": [ + "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", + "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==8.3.5" + }, + "pytest-cov": { + "hashes": [ + "sha256:46935f7aaefba760e716c2ebfbe1c216240b9592966e7da99ea8292d4d3e2a0a", + "sha256:bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==6.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:35b314d7d82865756edab59f7baebc6b477189e6ab4c53050e28c1de4d9cce18", + "sha256:8ac58bc1989a3fdb7c7f3ee0918a66b160d038a147c7b5db1500930a607e9a1c" + ], + "markers": "python_version >= '3.9'", + "version": "==0.12.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.10'", + "version": "==2.4.0" + } + } +} diff --git a/ecs/jskult-batch-ultmarc-io/README.md b/ecs/jskult-batch-ultmarc-io/README.md new file mode 100644 index 00000000..144cf9b8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/README.md @@ -0,0 +1,292 @@ +# 実消化&アルトマーク 日次バッチ + +## 概要 + +実消化&アルトマークの日次バッチ処理。 + +## 環境情報 + +- 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 ` + - この手順で出力される仮想環境のパスは、後述する VSCode の設定手順で使用するため、控えておく + +- MySQL の環境構築 + - Windows の場合、以下のリンクからダウンロードする + - + - 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_daily.py」で行っている。 + +## 単体テスト(アルトマーク取込処理) + +アルトマーク取込処理は、単体テストコードを使用してテスト自動化を行う + +### テスト準備 + +- VSCodeで以下の拡張機能をインストールする + - Python + - Python Test Explorer for Visual Studio Code + - Test Explorer UI +- VSCode 上でショートカット「ctrl」+「shift」+「P」でコマンドパレットを開く +- コマンドパレットの検索窓に「Python」と入力し、「Python: テストを構成する」を押下する +- 現在のワークスペースを選び、「pytest」を選択する +- 「tests」フォルダを選択する +- バックグランドで、pytest モジュールのインストールが始まれば成功 + +### テスト用のサブコマンド一覧 + +- `pipenv run`のあとに、サブコマンドとしてユーザー定義スクリプトを実行できる + - `Pipfile`内の「scripts」セクションに宣言されている + +| コマンド | 概要 | +| ---------------- | -------------------------------------------------------------------------------------------- | +| test:ultmarc | tests/batch/ultmarc フォルダ配下のユニットテストを実行する | +| test:ultmarc:cov | tests/batch/ultmarc フォルダ配下のユニットテストを実行し、テストカバレッジを取得する(C0, C1) | + +### テスト共通関数の仕様 + +- tests/testing_utility.py内の共通関数の仕様について記載する + +#### create_ultmarc_test_data_from_csv + +- 引数 + - file_path: str +- 戻り値 + - src.batch.ultmarc.datfile.DatFileのインスタンス +- 処理概要 + - CSVファイルから、アルトマークのインプットデータを作成する + - データフォーマットは以下 + - 文字コード: UTF-8 + - 改行コード:LF + - ヘッダ: なし + - 値囲い: ダブルクォート + - アルトマークデータと文字コードを合わせるため、指定されたファイルを一時ディレクトリに、文字コード「cp932」で書き出してからテストデータとして読み込む + - テストデータそのものはUTF-8の文字コードで作成すること + +### create_db_data_from_csv + +- 引数 + - file_path: str +- 戻り値 + - テーブルのレコードに相当する辞書のリスト +- 処理概要 + - CSVファイルから、アルトマークテーブルに相当するテストデータを作成する + - テストの初期データ、期待値データを作成するのに利用する + - データフォーマットは以下 + - 文字コード: UTF-8 + - 改行コード:LF + - ヘッダ: なし + - 値囲い: ダブルクォート + - ファイル内の、以下の形式のデータを自動的に変換する + - `NULL` + - `None`に変換される + - `yyyy-mm-dd`もしくは、`yyyy/mm/dd`の文字 + - Date型に変換される + - `yyyy-mm-dd hh:mm:ss`もしくは、`yyyy/mm/dd hh:mm:ss`の文字 + - DateTime型に変換される + +### create_insert_sql_with_parameter + +- 引数 + - table_name: str テーブル名 + - column_names: list[str] カラム名のリスト + - test_data: list[str]: 値のリスト +- 戻り値 + - INSERT文とバインドパラメータ辞書 +- 処理概要 + - 引数を使用して、`src.db.Database#execute`メソッドで実行可能な形でINSERT文、バインドパラメータを作成する + +### create_delete_sql_with_parameter + +- 引数 + - table_name: str テーブル名 + - column_names: list[str] カラム名のリスト + - test_data: list[str]: 値のリスト +- 戻り値 + - DELETE文とバインドパラメータ辞書 +- 処理概要 + - 引数を使用して、`src.db.Database#execute`メソッドで実行可能な形でDELETE文、バインドパラメータを作成する + +### create_ultmarc_table_mapper_sut + +- 引数 + - line: src.batch.ultmarc.datfile.DatFileLine アルトマークデータファイルの1行 + - db: src.db.Database データベース操作クラス +- 戻り値 + - マッパークラス +- 処理概要 + - src.batch.ultmarc.utmp_tables.ultmarc_table_mapper_factory.UltmarcTableMapperFactoryを通じて、テスト対象のマッパークラスを生成して返す + +### assert_table_results + +- 引数 + - actual_rows: list[dict] テスト結果の辞書リスト + - expect_rows: list[dict] 期待値の辞書リスト + - ignore_col_name: list 比較を無視するDBのカラム名. Default None. +- 戻り値 + - なし +- 処理概要 + - テスト結果データと期待値データを突き合わせ、期待値どおりとなっているかを確認する + - ignore_col_nameに指定したカラムは、呼び出し元のテストコード内で個別に突き合わせする + + +## 単体テスト(実消化データ取込処理) + +実消化データは、単体テストコードを使用してテスト自動化を行う + +### テスト準備 + +※単体テスト(アルトマーク取込処理)と同じ + +### テスト用のサブコマンド一覧 + +- `pipenv run`のあとに、サブコマンドとしてユーザー定義スクリプトを実行できる + - `Pipfile`内の「scripts」セクションに宣言されている + +| コマンド | 概要 | +| ---------------- | -------------------------------------------------------------------------------------------- | +| test:vjsk | tests/batch/vjsk フォルダ配下のユニットテストを実行する | +| test:vjsk:cov | tests/batch/vjsk フォルダ配下のユニットテストを実行し、テストカバレッジを取得する(C0, C1) | + +### テスト共通関数の仕様 + +- tests/testing_vjsk_utility.py内の共通関数の仕様について記載する + +#### create_vjsk_assertion_list + +- 概要 + - DB登録期待値リストを作成する +- Args: + - file_path (str): DB登録期待値ファイル(tsvファイル)のパス + - memo: ※DB登録期待値ファイルの前提 + - memo: 受領データファイルと同じ + - memo: BOM付きtsv形式 + - memo: 一行目はカラム名になっているヘッダ行 + - Returns: + - List(dict) DB登録期待値辞書リスト + + +## フォルダ構成 + +```text +. +├── Pipfile -- Pythonモジュールの依存関係を管理するファイル +├── Dockerfile -- Dockerイメージを作成するためのファイル +├── Pipfile -- Pythonモジュールの依存関係を管理するファイル +├── Pipfile.lock -- Pythonモジュールの依存関係バージョン固定用ファイル +├── README.md -- 当ファイル +├── entrypoint.py -- バッチ処理のエントリーポイントになるpythonファイル +├── src -- ソースコードの保管場所 +│ ├── aws -- AWS関連処理 +│ │ └── s3.py -- S3クライアントとバケット処理 +│ ├── batch -- バッチ処理関連ソース置き場 +│ │ ├── batch_functions.py -- バッチ処理共通関数置き場 +│ │ ├── datachange -- 実績洗替関連ソース置き場 +│ │ │ └── emp_chg_inst_lau.py -- 施設担当者マスタ洗替 +│ │ └── jissekiaraigae.py -- 実績洗替処理のエントリーポイント +│ │ └── ultmarc -- アルトマーク関連処理 +│ │ ├── ultmarc_process.py -- アルトマーク関連処理のエントリーポイント +│ │ ├── datfile.py -- データファイル読込 +│ │ └── utmp_tables -- アルトマークテーブルへの登録関連 +│ │ ├── table_mapper -- テーブルへのデータマッピング処理 +│ │ │ ├── concrete -- テーブルマッパーのマッピング処理を行う具象クラス(全テーブル分) +│ │ │ │ ├── com_alma_mapper.py +│ │ │ │ ├── ... +│ │ │ │ └── null_mapper.py -- テスト用、空振りするマッパークラス +│ │ │ └── ultmarc_table_mapper.py -- テーブルへの登録処理を行う抽象クラス +│ │ ├── tables -- アルトマークデータのDTOクラス(全テーブル分) +│ │ │ ├── com_alma.py +│ │ │ ├── ... +│ │ │ └── ultmarc_table.py -- アルトマークテーブルの抽象クラス +│ │ └── ultmarc_table_mapper_factory.py -- テーブルマッパー生成クラス +│ ├── db +│ │ └── database.py -- データベース操作共通処理 +│ ├── error +│ │ └── exceptions.py -- カスタム例外 +│ ├── jobctrl_daily.py -- 日次バッチ処理のエントリーポイント。「entrypoint.py」 から呼ばれる。 +│ ├── logging +│ │ └── get_logger.py -- ログ出力の共通処理 +│ ├── system_var +│ │ └── environment.py -- 環境変数 +│ └── time +│ └── elapsed_time.py -- 実行時間計測用 +└── tests -- ユニットテストのルートディレクト + ├── batch + │ └── ultmarc -- アルトマーク関連のユニットテストを格納する + │ │ └── utmp_tables + │ │ └── table_mapper -- 以下、マッパークラス単位でフォルダを切る + │ │ └── com_alma + │ │ ├── test_com_alma_mapper.py -- テストコード本体 + │ │ ├── com_alma_insert.csv -- S3に配置される想定のテストCSVデータ。ケースごとに用意する。 + │ │ ... + │ │ ├── db_com_alma_before_update.csv -- テスト時に事前にDBに登録しておくデータ。CSVで用意する。 + │ │ ... + │ │ ├── expect_com_alma_insert.csv -- テストの期待値データ。CSVで用意する。 + │ │ ... + │ └─vjsk -- 実消化データ取込処理関連のユニットテストを格納する + │ │ + │ ├─vjsk_file_check -- 受領ファイルチェック処理関連のユニットテストを格納する + │ │ ├─conftest.py -- テスト内で共通利用できるフィクスチャの宣言 + │ │ └─test_vjsk_file_check.py -- テストクラス本体 + │ │ + │ └─vjsk_load -- 受領データ登録処理関連のユニットテストを格納する + │ │ conftest.py -- テスト内で共通利用できるフィクスチャの宣言 + │ │ test_vjsk_load.py -- テストクラス本体 + │ │ + │ └─testdata -- テストモジュールが使用するテストデータを格納する + │ │ bio_slip_data_202304280000.tsv -- 正常ケースの単体確認用 + │ │ ... -- *20230428* は新規4件の登録確認用 + │ │ whs_mst_202304290000.tsv -- *20230429* は更新2件+追加新規2件の登録確認用 + │ │ + │ ├─NoData -- 正常ケースの単体確認用 + │ │ bio_slip_data_nodatarecord.tsv -- ヘッダ行のみでデータが0件の動作確認用 + │ │ ... + │ │ whs_mst_nodatarecord.tsv + │ │ + │ ├─TestFormatErrorFile -- 異常ケースの単体確認用 + │ │ bio_slip_data_formaterror.tsv -- 末尾行のタブ数が想定と異なる(ファイル欠落がある)ときの動作確認用 + │ │ ... + │ │ whs_mst_formaterror.tsv + │ │ + │ ├─TestImportFileToDb -- 正常ケースの単体確認用 + │ │ bio_slip_data_202304270000.gz -- 対向元システムから送られてきた状態(gz圧縮)の受領データファイルの動作確認用 + │ │ ... + │ │ whs_mst_202304270000.gz + │ │ + │ └─UnzipError -- 異常ケースの単体確認用 + │ bio_slip_data_202304270000.gz -- gz圧縮ファイルが解凍できないときの動作確認用 + │ ... + │ whs_mst_202304270000.gz + │ + ├── conftest.py -- テスト内で共通利用できるフィクスチャを宣言する(執筆時点ではDBのみ) + ├── testing_utility.py -- テストの共通関数 + └── testing_vjsk_utility.py -- テストの共通関数(実消化データ取込処理関連) +``` + diff --git a/ecs/jskult-batch-ultmarc-io/entrypoint.py b/ecs/jskult-batch-ultmarc-io/entrypoint.py new file mode 100644 index 00000000..5a087eff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/entrypoint.py @@ -0,0 +1,10 @@ +"""実消化&アルトマーク 日次バッチのエントリーポイント""" +from src import main + +if __name__ == '__main__': + try: + exit(main.exec()) + except Exception: + # エラーが起きても、正常系のコードで返す。 + # エラーが起きた事実はbatch_process内でログを出す。 + exit(0) diff --git a/ecs/jskult-batch-ultmarc-io/pytest.ini b/ecs/jskult-batch-ultmarc-io/pytest.ini new file mode 100644 index 00000000..5dbe2661 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +log_format = %(levelname)s %(asctime)s %(message)s +log_date_format = %Y-%m-%d %H:%M:%S diff --git a/ecs/jskult-batch-ultmarc-io/src/__init__.py b/ecs/jskult-batch-ultmarc-io/src/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/aws/__init__.py b/ecs/jskult-batch-ultmarc-io/src/aws/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/aws/s3.py b/ecs/jskult-batch-ultmarc-io/src/aws/s3.py new file mode 100644 index 00000000..6203868d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/aws/s3.py @@ -0,0 +1,185 @@ +import gzip +import os +import os.path as path +import shutil +import tempfile + +import boto3 + +from src.system_var import environment + + +class S3Client: + __s3_client = boto3.client('s3') + _bucket_name: str + + def list_objects(self, bucket_name: str, folder_name: str): + response = self.__s3_client.list_objects_v2(Bucket=bucket_name, Prefix=folder_name) + if response['KeyCount'] == 0: + return [] + contents = response['Contents'] + # 末尾がスラッシュで終わるものはフォルダとみなしてスキップする + objects = [{'filename': content['Key'], 'size': content['Size']} + for content in contents if not content['Key'].endswith('/')] + return objects + + def copy(self, src_bucket: str, src_key: str, dest_bucket: str, dest_key: str) -> None: + copy_source = {'Bucket': src_bucket, 'Key': src_key} + self.__s3_client.copy(copy_source, dest_bucket, dest_key) + return + + def download_file(self, bucket_name: str, file_key: str, file): + self.__s3_client.download_fileobj( + Bucket=bucket_name, + Key=file_key, + Fileobj=file + ) + return + + def upload_file(self, local_file_path: str, bucket_name: str, file_key: str): + self.__s3_client.upload_file( + local_file_path, + Bucket=bucket_name, + Key=file_key + ) + + def delete_file(self, bucket_name: str, file_key: str): + self.__s3_client.delete_object( + Bucket=bucket_name, + Key=file_key + ) + + +class S3Bucket(): + _s3_client = S3Client() + _bucket_name: str = None + + +class UltmarcBucket(S3Bucket): + _bucket_name = environment.ULTMARC_DATA_BUCKET + _folder = environment.ULTMARC_DATA_FOLDER + + def list_dat_file(self): + return self._s3_client.list_objects(self._bucket_name, self._folder) + + def download_dat_file(self, dat_filename: str): + # 一時ファイルとして保存する + temporary_dir = tempfile.mkdtemp() + temporary_file_path = path.join(temporary_dir, f'{dat_filename.replace(f"{self._folder}/", "")}') + with open(temporary_file_path, mode='wb') as f: + self._s3_client.download_file(self._bucket_name, dat_filename, f) + f.seek(0) + return temporary_file_path + + def backup_dat_file(self, dat_file_key: str, datetime_key: str): + # バックアップバケットにコピー + ultmarc_backup_bucket = UltmarcBackupBucket() + backup_key = f'{ultmarc_backup_bucket._folder}/{datetime_key}/{dat_file_key.replace(f"{self._folder}/", "")}' + self._s3_client.copy(self._bucket_name, dat_file_key, ultmarc_backup_bucket._bucket_name, backup_key) + # コピー元のファイルを削除 + self._s3_client.delete_file(self._bucket_name, dat_file_key) + + +class ConfigBucket(S3Bucket): + _bucket_name = environment.JSKULT_CONFIG_BUCKET + + def download_holiday_list(self): + # 一時ファイルとして保存する + temporary_dir = tempfile.mkdtemp() + temporary_file_path = path.join(temporary_dir, environment.JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME) + holiday_list_key = f'{environment.JSKULT_CONFIG_CALENDAR_FOLDER}/{environment.JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME}' + with open(temporary_file_path, mode='wb') as f: + self._s3_client.download_file(self._bucket_name, holiday_list_key, f) + f.seek(0) + return temporary_file_path + + def download_wholesaler_stock_input_day_list(self): + # 一時ファイルとして保存する + temporary_dir = tempfile.mkdtemp() + temporary_file_path = path.join(temporary_dir, environment.JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILE_NAME) + wholesaler_stock_input_day_list_key = f'{environment.JSKULT_CONFIG_CALENDAR_FOLDER}/{environment.JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILE_NAME}' + with open(temporary_file_path, mode='wb') as f: + self._s3_client.download_file(self._bucket_name, wholesaler_stock_input_day_list_key, f) + f.seek(0) + return temporary_file_path + + def download_ultmarc_hex_convert_config(self): + # 一時ファイルとして保存する + temporary_dir = tempfile.mkdtemp() + temporary_file_path = path.join(temporary_dir, environment.JSKULT_ULTMARC_HEX_CONVERT_CONFIG_FILE_NAME) + hex_convert_config_key = f'{environment.JSKULT_CONFIG_CONVERT_FOLDER}/{environment.JSKULT_ULTMARC_HEX_CONVERT_CONFIG_FILE_NAME}' + with open(temporary_file_path, mode='wb') as f: + self._s3_client.download_file(self._bucket_name, hex_convert_config_key, f) + f.seek(0) + return temporary_file_path + + +class JskUltBackupBucket(S3Bucket): + _bucket_name = environment.JSKULT_BACKUP_BUCKET + + +class UltmarcBackupBucket(JskUltBackupBucket): + _folder = environment.ULTMARC_BACKUP_FOLDER + + +class VjskBackupBucket(JskUltBackupBucket): + _folder = environment.VJSK_BACKUP_FOLDER + + +class VjskReceiveBucket(S3Bucket): + _bucket_name = environment.VJSK_DATA_BUCKET + _recv_folder = environment.VJSK_DATA_RECEIVE_FOLDER + + _s3_file_list = None + + def get_s3_file_list(self): + self._s3_file_list = self._s3_client.list_objects(self._bucket_name, self._recv_folder) + return self._s3_file_list + + def download_data_file(self, data_filename: str): + temporary_dir = tempfile.mkdtemp() + temporary_file_path = path.join(temporary_dir, f'{data_filename.replace(f"{self._recv_folder}/", "")}') + with open(temporary_file_path, mode='wb') as f: + self._s3_client.download_file(self._bucket_name, data_filename, f) + f.seek(0) + return temporary_file_path + + def unzip_data_file(self, filename: str): + temp_dir = os.path.dirname(filename) + decompress_filename = os.path.basename(filename).replace('.gz', '') + decompress_file_path = os.path.join(temp_dir, decompress_filename) + with gzip.open(filename, 'rb') as gz: + with open(decompress_file_path, 'wb') as decompressed_file: + shutil.copyfileobj(gz, decompressed_file) + + ret = [decompress_file_path] + return ret + + def backup_dat_file(self, target_files: list, datetime_key: str): + jskult_backup_bucket = VjskBackupBucket() + for target_file in target_files: + backup_from_file_path = target_file.get("filename") + backup_to_filename = backup_from_file_path.replace(f"{self._recv_folder}/", "") + backup_key = f'{jskult_backup_bucket._folder}/{datetime_key}/{backup_to_filename}' + self._s3_client.copy(self._bucket_name, backup_from_file_path, + jskult_backup_bucket._bucket_name, backup_key) + self._s3_client.delete_file(self._bucket_name, backup_from_file_path) + + +class VjskSendBucket(S3Bucket): + _bucket_name = environment.VJSK_DATA_BUCKET + _send_folder = environment.VJSK_DATA_SEND_FOLDER + + def upload_inst_pharm_csv_file(self, vjsk_create_csv: str, csv_file_path: str): + # S3バケットにファイルを移動 + csv_file_name = f'{self._send_folder}/{vjsk_create_csv}' + s3_client = S3Client() + s3_client.upload_file(csv_file_path, self._bucket_name, csv_file_name) + return + + def backup_inst_pharm_csv_file(self, dat_file_key: str, datetime_key: str): + # バックアップバケットにコピー + vjsk_backup_bucket = VjskBackupBucket() + dat_key = f'{self._send_folder}/{dat_file_key}' + backup_key = f'{vjsk_backup_bucket._folder}/{self._send_folder}/{datetime_key}/{dat_file_key.replace(f"{self._send_folder}/", "")}' + self._s3_client.copy(self._bucket_name, dat_key, vjsk_backup_bucket._bucket_name, backup_key) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/batch_functions.py b/ecs/jskult-batch-ultmarc-io/src/batch/batch_functions.py new file mode 100644 index 00000000..43c4760c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/batch_functions.py @@ -0,0 +1,111 @@ +"""バッチ処理の共通関数""" +import logging +import textwrap +from datetime import datetime + +from src.db.database import Database +from src.error.exceptions import BatchOperationException, DBException +from src.system_var import constants + + +def get_batch_statuses() -> tuple[str, str, str]: + """日付テーブルから、以下を取得して返す。 + - 日次バッチ処理中フラグ + - dump取得状況区分 + - 処理日(YYYY/MM/DD) + + Raises: + BatchOperationException: 日付テーブルが取得できないとき、何らかのエラーが発生したとき + + Returns: + tuple[str, str]: [0]日次バッチ処理中フラグ、dump取得状況区分 + """ + db = Database.get_instance() + sql = 'SELECT bch_actf, dump_sts_kbn, src05.get_syor_date() AS syor_date FROM src05.hdke_tbl' + try: + db.connect() + hdke_tbl_result = db.execute_select(sql) + except DBException as e: + raise BatchOperationException(e) + finally: + db.disconnect() + + if len(hdke_tbl_result) == 0: + raise BatchOperationException('日付テーブルが取得できませんでした') + + # 必ず1件取れる + hdke_tbl_record = hdke_tbl_result[0] + batch_processing_flag = hdke_tbl_record['bch_actf'] + dump_status_kbn = hdke_tbl_record['dump_sts_kbn'] + syor_date = hdke_tbl_record['syor_date'] + # 処理日を文字列に変換する + syor_date_str = datetime.strftime(syor_date, '%Y/%m/%d') + + return batch_processing_flag, dump_status_kbn, syor_date_str + + +def update_batch_processing_flag_in_processing() -> None: + """バッチ処理中フラグを処理中に更新する + + Raises: + BatchOperationException: DB操作の何らかのエラー + """ + db = Database.get_instance() + sql = """\ + UPDATE src05.hdke_tbl + SET + bch_actf = :in_processing, + updater = CURRENT_USER(), + update_date = NOW() + """ + try: + db.connect() + db.to_jst() + db.execute(sql, {'in_processing': constants.BATCH_ACTF_BATCH_IN_PROCESSING}) + except DBException as e: + raise BatchOperationException(e) + finally: + db.disconnect() + + return + + +def update_batch_process_complete() -> None: + """バッチ処理を完了とし、処理日、バッチ処理中フラグ、dump処理状態区分を更新する + + Raises: + BatchOperationException: DB操作の何らかのエラー + """ + db = Database.get_instance() + sql = """\ + UPDATE src05.hdke_tbl + SET + bch_actf = :batch_complete, + dump_sts_kbn = :dump_unprocessed, + syor_date = DATE_FORMAT((src05.get_syor_date() + interval 1 day), '%Y%m%d'), -- +1日 + updater = CURRENT_USER(), + update_date = NOW() + """ + try: + db.connect() + db.to_jst() + db.execute(sql, { + 'batch_complete': constants.BATCH_ACTF_BATCH_UNPROCESSED, + 'dump_unprocessed': constants.DUMP_STATUS_KBN_UNPROCESSED + }) + except DBException as e: + raise BatchOperationException(e) + finally: + db.disconnect() + + return + + +def logging_sql(logger: logging.Logger, sql: str) -> None: + """SQL文をデバッグログで出力する + + Args: + logger (logging.Logger): ロガー + sql (str): SQL文 + """ + logger.debug(f'\n{"-" * 15}\n{textwrap.dedent(sql)[1:-1]}\n{"-" * 15}') diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/common/__init__.py b/ecs/jskult-batch-ultmarc-io/src/batch/common/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/common/batch_context.py b/ecs/jskult-batch-ultmarc-io/src/batch/common/batch_context.py new file mode 100644 index 00000000..8ca2a8e5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/common/batch_context.py @@ -0,0 +1,17 @@ +class BatchContext: + __instance = None + __syor_date: str # 処理日(yyyy/mm/dd形式) + + @classmethod + def get_instance(cls): + if cls.__instance is None: + cls.__instance = cls() + return cls.__instance + + @property + def syor_date(self): + return self.__syor_date + + @syor_date.setter + def syor_date(self, syor_date_str: str): + self.__syor_date = syor_date_str diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/__init__.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/datfile.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/datfile.py new file mode 100644 index 00000000..2631eaff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/datfile.py @@ -0,0 +1,60 @@ +import csv +from io import TextIOWrapper + + +class DatFileLine: + layout_class: str + records: list[str] + + def __init__(self, dat_line: list[str]) -> None: + self.layout_class = dat_line[0] + self.records = dat_line + + +class DatFile: + """アルトマークデータファイル""" + + lines: list[DatFileLine] + success_count: int = 0 + error_count: int = 0 + total_count: int = 0 + __i: int = 0 + + def __iter__(self): + return self + + def __next__(self) -> DatFileLine: + if self.__i == len(self.lines): + raise StopIteration() + line = self.lines[self.__i] + self.__i += 1 + return line + + def __init__(self, file: TextIOWrapper) -> None: + reader = csv.reader(file) + csv_rows = [DatFileLine(row) for row in reader] + + self.lines = csv_rows + self.total_count = len(csv_rows) + + def count_up_success(self): + self.success_count += 1 + + def count_up_error(self): + self.error_count += 1 + + @classmethod + def from_path(cls, local_file_path: str): + """アルトマークデータファイルを読み込み、新しいインスタンスを作成する + + Args: + local_file_path (str): ローカルのファイルパス + + Returns: + DatFile: このクラスのインスタンス + """ + # cp932(Shift-JIS Windows拡張)でファイルを読み込む + file = open(local_file_path, encoding='cp932') + instance = cls(file) + file.close() + return instance diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/import_ultmarc_process.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/import_ultmarc_process.py new file mode 100644 index 00000000..067b8b30 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/import_ultmarc_process.py @@ -0,0 +1,150 @@ +"""アルトマークデータ処理""" + +import json + +from src.aws.s3 import ConfigBucket, UltmarcBucket +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.datfile import DatFile +from src.batch.ultmarc.utmp_tables.ultmarc_table_mapper_factory import \ + UltmarcTableMapperFactory +from src.db.database import Database +from src.error.exceptions import BatchOperationException +from src.logging.get_logger import get_logger + +logger = get_logger('アルトマーク取込') +ultmarc_bucket = UltmarcBucket() +config_bucket = ConfigBucket() +batch_context = BatchContext.get_instance() + + +def exec_import(): + """アルトマーク取り込み処理""" + try: + logger.info('アルトマーク取込処理: 開始') + # datファイルをS3から取得する + dat_file_list = ultmarc_bucket.list_dat_file() + + # ファイルがない場合は処理せず、正常終了とする + if len(dat_file_list) == 0: + logger.info('取込ファイルがないため、アルトマーク取込処理をスキップします') + + # ファイルが複数ある場合はエラーとする + if len(dat_file_list) > 1: + raise BatchOperationException(f'複数の取込ファイルがあるため、異常終了 ファイル一覧:{dat_file_list}') + + # ファイルの件数は必ず1件になる + dat_file_info = dat_file_list[0] + # 0Byteの場合、 + if dat_file_info['size'] == 0: + logger.info(f'0Byteファイルのため、処理をスキップします。ファイル名={dat_file_info["filename"]}') + return + + dat_file_name = dat_file_info['filename'] + logger.info(f"{dat_file_name}を取り込みます") + # datファイルをダウンロード + local_file_path = ultmarc_bucket.download_dat_file(dat_file_name) + # 文字コード変換設定ファイルをダウンロード + convert_config_file_path = config_bucket.download_ultmarc_hex_convert_config() + # 文字コードを変換 + converted_file_path = _convert_character_hex(local_file_path, convert_config_file_path) + dat_file = DatFile.from_path(converted_file_path) + # アルトマーク取り込み実行 + _import_to_ultmarc_table(dat_file) + # 処理後ファイルをバックアップ + ultmarc_bucket.backup_dat_file(dat_file_name, batch_context.syor_date) + logger.info(f'取り込み処理が完了したため、datファイルをバックアップ。ファイル名={dat_file_name}') + # アルトマーク取込済をマーク + batch_context.is_ultmarc_imported = True + logger.info('アルトマーク取込処理: 終了') + except Exception as e: + raise BatchOperationException(e) + + +def _convert_character_hex(dat_file_path: str, config_file_path: str) -> str: + """_summary_ + アルトマークデータファイルを読み、バイトレベルで文字コードを変換して新しいファイルに書き出す。 + Args: + dat_file_path (str): 変換前のアルトマークデータファイル + config_file_path (str): 変換設定 + + Returns: + str: 文字コード変換後のアルトマークデータファイルのパス + """ + logger.debug('文字コード変換開始') + # 変換設定ファイルを読み込む + with open(config_file_path, 'r', encoding='utf-8') as f: + hex_convert_config_dict: dict = json.load(f) + with open(dat_file_path, 'rb') as org_file, open(f'{dat_file_path}.converted', 'wb') as dest_file: + while True: + first_byte = org_file.read(1) + # ファイルの末尾まで読んだらループ終了 + if not first_byte: + break + + # 読みだした1バイトが、Shift_JIS の日本語範囲(2バイト文字)に含まれる場合、もう1バイト読む + if 0x81 <= first_byte[0] <= 0x9F or 0xE0 <= first_byte[0] <= 0xFC: + second_byte = org_file.read(1) + # ファイルの末尾まで読んだらループ終了 + if not second_byte: + break + + # 2バイトを結合して、HEXの4桁(大文字)に変換 + japanese_bytes = first_byte + second_byte + japanese_hex = ''.join([hex(b)[2:].zfill(2).upper() for b in japanese_bytes]) + # 変換対象の文字を変換設定に基づいて変換する + processed_hex = hex_convert_config_dict.get(japanese_hex) + if processed_hex is None: + processed_hex = japanese_hex + + # HEXの4桁をバイト列に戻して書き出す + processed_bytes = bytes.fromhex(processed_hex) + dest_file.write(processed_bytes) + else: + # 1バイト文字はそのまま書き出す + dest_file.write(first_byte) + + logger.debug('文字コード変換終了') + + return f'{dat_file_path}.converted' + + +def _import_to_ultmarc_table(dat_file: DatFile): + db = Database.get_instance() + try: + # DB接続 + db.connect() + # ファイル単位でトランザクションを行う + db.begin() + mapper_factory = UltmarcTableMapperFactory() + # datファイルを1行ずつ処理し、各テーブルへ登録 + for line in dat_file: + try: + # 書き込み先のテーブルを特定 + mapper_class = mapper_factory.create( + line.layout_class, + line.records, + db + ) + mapper_class.make_query() + mapper_class.execute_queries() + dat_file.count_up_success() + except Exception as e: + logger.info(e) + record = line.records + log_message = ','.join([f'"{r}"' for r in record]) + logger.info(f'ERROR_LINE: {log_message}') + dat_file.count_up_error() + # 処理結果をログに出力する + logger.info(f'ultmarc import process RESULT') + logger.info(f'SUCCESS_COUNT={dat_file.success_count}') + logger.info(f'ERROR_COUNT={dat_file.error_count}') + logger.info(f'ALL_COUNT={dat_file.total_count}') + + # 1件でもエラーがあれば、通知用にログに出力する + if dat_file.error_count > 0: + logger.warning('取り込みに失敗した行があります。詳細は`ERROR_LINE:`の行を確認してください。') + finally: + # 終了時に必ずコミットする + db.commit() + db.disconnect() + return diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/output_dcf_dsf_data.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/output_dcf_dsf_data.py new file mode 100644 index 00000000..838dae34 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/output_dcf_dsf_data.py @@ -0,0 +1,271 @@ +"""output_vjsk_inst_pharm_data""" + +from src.aws.s3 import VjskSendBucket +from src.batch.common.batch_context import BatchContext + +from src.db.database import Database +from src.logging.get_logger import get_logger +import tempfile +import os.path as path +import csv + +logger = get_logger('V実消化用施設データ作成処理') + +sql_err_msg = "SQL実行エラーです。" + + +def exec(): + vjsk_csv_file_name = 'ComInst.csv' + + # バッチ共通設定を取得 + batch_context = BatchContext.get_instance() + + if not batch_context.is_ultmarc_imported: + logger.info('アルトマーク取込が行われていないため、V実消化用施設データ作成処理をスキップします。') + return + + db = Database.get_instance() + try: + logger.info('処理開始') + + try: + # DB接続 + db.connect() + except Exception as e: + logger.info('DB接続エラーです。') + raise e + + # CSVファイルの作成用のSQL実行(施設) + record_inst = select_inst_record(db) + # CSVファイルの作成用のSQL実行(薬局) + record_pharm = select_pharm_record(db) + # CSVファイル作成 + csv_file_path = make_csv_data(record_inst, record_pharm, vjsk_csv_file_name) + + vjsk_bucket = VjskSendBucket() + try: + # s3へデータ移動 + vjsk_bucket.upload_inst_pharm_csv_file(vjsk_csv_file_name, csv_file_path) + except Exception as e: + logger.info('S3バケットにCSVデータを作成できませんでした。') + raise e + + try: + # 処理後ファイルをバックアップ + vjsk_bucket.backup_inst_pharm_csv_file(vjsk_csv_file_name, batch_context.syor_date) + except Exception as e: + logger.info('バックアップバケットへCSVデータをコピーできませんでした。') + raise e + + csv_count = len(record_inst) + len(record_pharm) + logger.info(f'CSV出力件数: {csv_count}') + logger.info('正常終了') + except Exception as e: + raise e + finally: + db.disconnect() + return + + +def select_inst_record(db): + # CSVファイル作成用のSQL実行(施設) + try: + # 施設テーブル検索SQL + sql = """\ + SELECT dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + rltd_univ_prnt_cd, + bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + ward_abolish_flg, + inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + hp_assrt_cd, + dup_opp_cd, + insp_item_micrb, + insp_item_serum, + insp_item_blood, + insp_item_patho, + insp_item_paras, + insp_item_biochem, + insp_item_ri, + re_exam_cd, + prmit_bed_num_other, + prmit_bed_num_mental, + prmit_bed_num_tuber, + prmit_bed_num_infection, + prmit_bed_num_sum, + prmit_bed_num_gen, + prmit_bed_num_rcup, + prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + filler_1, + filler_2, + filler_3, + filler_4, + filler_5, + regist_date, + create_user, + update_date, + update_user, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + FROM src05.com_inst ORDER BY dcf_dsf_inst_cd + """ + return db.execute_select(sql) + except Exception as e: + logger.debug(sql_err_msg) + raise e + + +def select_pharm_record(db): + # CSVファイル作成用のSQL実行(薬局) + try: + # 薬局テーブル検索SQL + sql = """\ + SELECT dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + '' AS rltd_univ_prnt_cd, + '' AS bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + '' AS ward_abolish_flg, + '' AS inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + '' AS hp_assrt_cd, + dup_opp_cd, + '' AS insp_item_micrb, + '' AS insp_item_serum, + '' AS insp_item_blood, + '' AS insp_item_patho, + '' AS insp_item_paras, + '' AS insp_item_biochem, + '' AS insp_item_ri, + '' AS re_exam_cd, + '' AS prmit_bed_num_other, + '' AS prmit_bed_num_mental, + '' AS prmit_bed_num_tuber, + '' AS prmit_bed_num_infection, + '' AS prmit_bed_num_sum, + '' AS prmit_bed_num_gen, + '' AS prmit_bed_num_rcup, + '' AS prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + filler_1, + filler_2, + filler_3, + filler_4, + filler_5, + regist_date, + create_user, + update_date, + update_user, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + FROM src05.com_pharm ORDER BY dcf_dsf_inst_cd + """ + return db.execute_select(sql) + except Exception as e: + logger.debug(sql_err_msg) + raise e + + +def make_csv_data(record_inst: list, record_pharm: list, vjsk_csv_file_name: str): + # 一時ファイルとして保存する(CSVファイル) + try: + + temporary_dir = tempfile.mkdtemp() + csv_file_path = path.join(temporary_dir, vjsk_csv_file_name) + + head_str = ['DCF_DSF_INST_CD', 'INST_DIV_CD', 'ADDR_UNKNOWN_REASON_CD', 'FORM_INST_NAME_KANA', 'INST_NAME_KANA', + 'FORM_INST_NAME_KANJI', 'INST_NAME_KANJI', 'RLTD_UNIV_PRNT_CD', 'BED_NUM', 'CLOSE_FLG', 'ESTAB_SCHE_FLG', + 'CLOSE_START_YM', 'ESTAB_SCHE_YM', 'WARD_ABOLISH_FLG', 'INST_REPRE_CD', 'INST_REPRE_KANA', 'INST_REPRE', + 'PHONE_NUMBER_NON_FLG', 'UNCONF_FLG', 'INST_PHONE_NUMBER', 'INST_ADDR_KANA', 'INST_ADDR', 'POSTAL_NUMBER', + 'VILLAGE_CD', 'PREFC_CD', 'CITY_CD', 'ADDR_DISPLAY_NUMBER', 'ADDR_CNT_KANA', 'ADDR_CNT', 'MANAGE_CD', + 'DELETE_SCHE_REASON_CD', 'HP_ASSRT_CD', 'DUP_OPP_CD', 'INSP_ITEM_MICRB', 'INSP_ITEM_SERUM', 'INSP_ITEM_BLOOD', + 'INSP_ITEM_PATHO', 'INSP_ITEM_PARAS', 'INSP_ITEM_BIOCHEM', 'INSP_ITEM_RI', 'RE_EXAM_CD', 'PRMIT_BED_NUM_OTHER', + 'PRMIT_BED_NUM_MENTAL', 'PRMIT_BED_NUM_TUBER', 'PRMIT_BED_NUM_INFECTION', 'PRMIT_BED_NUM_SUM', 'PRMIT_BED_NUM_GEN', + 'PRMIT_BED_NUM_RCUP', 'PRMIT_BED_MAINT_YMD', 'INST_PHARM_DIV', 'ABOLISH_YMD', 'DELETE_FLG', 'FILLER_1', 'FILLER_2', + 'FILLER_3', 'FILLER_4', 'FILLER_5', 'REGIST_DATE', 'CREATE_USER', 'UPDATE_DATE', 'UPDATE_USER', 'SYS_REGIST_DATE', + 'REGIST_PRGM_ID', 'SYS_UPDATE_DATE', 'UPDATE_PRGM_ID'] + + with open(csv_file_path, mode='w', encoding='UTF-8') as csv_file: + # ヘッダ行書き込み(くくり文字をつけない為にwriterowではなく、writeを使用しています) + csv_file.write(f"{','.join(head_str)}\n") + + # Shift-JIS、CRLF、価囲いありで書き込む + writer = csv.writer(csv_file, delimiter=',', lineterminator='\n', + quotechar='"', doublequote=True, quoting=csv.QUOTE_ALL, + strict=True + ) + + # データ部分書き込み(施設) + for record_inst_data in record_inst: + record_inst_value = list(record_inst_data.values()) + csv_data = ['' if n is None else n for n in record_inst_value] + writer.writerow(csv_data) + + # データ部分書き込み(薬局) + for record_pharm_data in record_pharm: + record_pharm_value = list(record_pharm_data.values()) + csv_data = ['' if n is None else n for n in record_pharm_value] + writer.writerow(csv_data) + + except Exception as e: + logger.info('CSVデータの作成に失敗しました。') + raise e + + return csv_file_path diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/__init__.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py new file mode 100644 index 00000000..f083b9d1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py @@ -0,0 +1,107 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_alma_depart_disc import ComAlmaDepartDisc + + +class ComAlmaDepartDiscMapper(UltmarcTableMapper): + """レイアウト区分003: COM_出身校学部識別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_alma_depart_disc + ( + alma_cd, + depart_disc_cd, + estab_e, + estab_y, + alma_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :alma_cd, + :depart_disc_cd, + :estab_e, + :estab_y, + :alma_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_alma_depart_disc + SET + estab_e = :estab_e, + estab_y = :estab_y, + alma_name = :alma_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_alma_depart_disc + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + record: ComAlmaDepartDisc + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComAlmaDepartDisc) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py new file mode 100644 index 00000000..9e8189bc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py @@ -0,0 +1,92 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_alma import ComAlma + + +class ComAlmaMapper(UltmarcTableMapper): + """レイアウト区分004: COM_出身校 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_alma + WHERE + alma_cd = :alma_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_alma + ( + alma_cd, + alma, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :alma_cd, + :alma, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_alma + SET + alma = :alma, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_alma + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + """ + record: ComAlma + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComAlma) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_blng_sec_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_blng_sec_mapper.py new file mode 100644 index 00000000..e6738d07 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_blng_sec_mapper.py @@ -0,0 +1,105 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_blng_sec import ComBlngSec + + +class ComBlngSecMapper(UltmarcTableMapper): + """レイアウト区分008: COM_所属部科 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_blng_sec + WHERE + blng_sec_cd = :blng_sec_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_blng_sec + ( + blng_sec_cd, + blng_sec_kana, + blng_sec_name, + inst_category, + trt_category, + category_sort, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :blng_sec_cd, + :blng_sec_kana, + :blng_sec_name, + :inst_category, + :trt_category, + :category_sort, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_blng_sec + SET + blng_sec_kana = :blng_sec_kana, + blng_sec_name = :blng_sec_name, + inst_category = :inst_category, + trt_category = :trt_category, + category_sort = :category_sort, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + blng_sec_cd = :blng_sec_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_blng_sec + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + blng_sec_cd = :blng_sec_cd + """ + record: ComBlngSec + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComBlngSec) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py new file mode 100644 index 00000000..b1746e00 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py @@ -0,0 +1,108 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_cop_hp import ComCopHp + + +class ComCopHpMapper(UltmarcTableMapper): + """レイアウト区分112: COM_臨床研修病院 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_cop_hp + ( + dcf_dsf_inst_cd, + cophp_cd, + openyear, + sortkey, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :cophp_code, + :open_year, + :sort_key, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_cop_hp + SET + sortkey = :sort_key, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + record: ComCopHp + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComCopHp) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + # 更新する値が空の場合は、更新処理を行わない + if self.record.sort_key == '': + return None + else: + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py new file mode 100644 index 00000000..f19c10bd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py @@ -0,0 +1,480 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_dr import ComDr + + +class ComDrMapper(UltmarcTableMapper): + """レイアウト区分501: COM_医師 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr + ( + dcf_pcf_dr_cd, + dr_name_kana, + dr_name, + birthday_era, + birthday_year, + birthday_month, + birthday_day, + birthday, + hometown_cd, + estab_era, + estab_year, + estab_y, + home_phone_number, + home_addr_kana, + home_addr, + home_postal_number, + addr_village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + dr_circle_cd, + estab_div_cd, + sex_cd, + delete_sche_reason_cd, + addr_unknown_reason_cd, + alma_cd, + depart_disc_cd, + grad_era, + grad_year, + grad_y, + lump_regist_flg, + opp_dup_cd, + dr_ph_div, + use_stop_div, + use_stop_reason_cd, + use_stop_regist_ymd, + use_stop_cancel_ymd, + drday_era, + drday_year, + drday_y, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcf_pcf_dr_cd, + :dr_name_kana, + :dr_name, + :birthday_era, + :birthday_year, + :birthday_month, + :birthday_day, + :birth_day, + :home_town_code, + :pract_yearera, + :pract_year, + :estab_y, + :dr_tel, + :dr_addr_kana, + :dr_addr, + :dr_zip_code, + :addr_village_cd, + :pref_code, + :city_code, + :dr_addr_num, + :addr_cnt_kana, + :addr_cnt, + :medassoci_code, + :pract_class_code, + :sex_code, + :drdel_code, + :dr_addr_lost_code, + :graduniv_code, + :graduniv_dept_code, + :grad_yearera, + :grad_year, + :grad_y, + :bskregst_flag, + :opp_dup_code, + 1, + :use_stop_flag, + :use_stopc_ode, + :cre_stop_date, + :release_date, + :drda_yera, + :drday_year, + :drday_y, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_dr + SET + {update_columns} + dr_ph_div = 1, + abolish_ymd = NULL, + delete_flg = 0, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_dr + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 西暦取得SQL + YEAR_GET_QUERY = """\ + SELECT + year AS year + FROM + src05.com_era + WHERE + era_cd = :era_cd + """ + + # COM_医師診療科目の物理削除SQL + PHYSICAL_DELETE_QUERY_TRT = """\ + DELETE FROM + src05.com_dr_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # COM_医師診療科目の登録用SQL + INSERT_QUERY_TRT = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + sequence, + dcf_pcf_dr_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + {trt_course_code}, + {trt_sequence}, + :dcf_pcf_dr_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComDr + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDr) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # 西暦の取得 + self.__set_era() + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + return + + # 存在する場合ではUpdate + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + + update_columns = ','.join(self.__make_update_query()) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + self.queries.append(None) + return + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + return + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 削除予定理由 + if len(self.record.drdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :drdel_code') + + # 重複時相手先コード + if len(self.record.opp_dup_code) > 0: + set_clauses.append('opp_dup_cd = :opp_dup_code') + + # 医師名(漢字) + if len(self.record.dr_name) > 0: + set_clauses.append('dr_name = :dr_name') + + # 医師名(カナ) + if len(self.record.dr_name_kana) > 0: + set_clauses.append('dr_name_kana = :dr_name_kana') + + # 性別 + if len(self.record.sex_code) > 0: + set_clauses.append('sex_cd = :sex_code') + + # 生年月日 + if len(self.record.birthday_era + self.record.birthday_year + self.record.birthday_month + self.record.birthday_day) > 0: + set_clauses.append('birthday_era = :birthday_era') + set_clauses.append('birthday_year = :birthday_year') + set_clauses.append('birthday_month = :birthday_month') + set_clauses.append('birthday_day = :birthday_day') + set_clauses.append('birthday = :birth_day') + + # 出身都道府県コード + if len(self.record.home_town_code) > 0: + set_clauses.append('hometown_cd = :home_town_code') + + # 医師会コード + if len(self.record.medassoci_code) > 0: + set_clauses.append('dr_circle_cd = :medassoci_code') + + # 卒年 + if len(self.record.grad_yearera + self.record.grad_year) > 0: + set_clauses.append('grad_year = :grad_year') + set_clauses.append('grad_era = :grad_yearera') + set_clauses.append('grad_y = :grad_y') + + # 出身校コード + if len(self.record.graduniv_code) > 0: + set_clauses.append('alma_cd = :graduniv_code') + + # 出身校学部識別コード + if len(self.record.graduniv_dept_code) > 0: + set_clauses.append('depart_disc_cd = :graduniv_dept_code') + + # 登録年 + if len(self.record.drda_yera + self.record.drday_year) > 0: + set_clauses.append('drday_era = :drda_yera') + set_clauses.append('drday_year = :drday_year') + set_clauses.append('drday_y = :drday_y') + + # 住所不明 + if len(self.record.dr_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :dr_addr_lost_code') + + # 住所 + # 集合項目のいずれかに入力がある場合に更新 + if sum(len(item) for item in self.record.address_aggregation_items) > 0: + set_clauses.append('home_addr_kana = :dr_addr_kana') + set_clauses.append('home_addr = :dr_addr') + set_clauses.append('home_postal_number = :dr_zip_code') + set_clauses.append('addr_village_cd = :addr_village_cd') + set_clauses.append('prefc_cd = :pref_code') + set_clauses.append('city_cd = :city_code') + set_clauses.append('addr_display_number = :dr_addr_num') + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 自宅電話番号 + if len(self.record.dr_tel) > 0: + set_clauses.append('home_phone_number = :dr_tel') + + # 利用停止区分 + if len(self.record.use_stop_flag) > 0: + set_clauses.append('use_stop_div = :use_stop_flag') + + # 利用停止理由 + if len(self.record.use_stopc_ode) > 0: + set_clauses.append('use_stop_reason_cd = :use_stopc_ode') + + # 利用停止登録年月日 + if len(self.record.cre_stop_date) > 0: + set_clauses.append('use_stop_regist_ymd = :cre_stop_date') + + # 利用停止解除年月日 + if len(self.record.release_date) > 0: + set_clauses.append('use_stop_cancel_ymd = :release_date') + + # 開勤区分 + if len(self.record.pract_class_code) > 0: + set_clauses.append('estab_div_cd = :pract_class_code') + + # 開業年 + if len(self.record.pract_yearera + self.record.pract_year) > 0: + set_clauses.append('estab_era = :pract_yearera') + set_clauses.append('estab_year = :pract_year') + set_clauses.append('estab_y = :estab_y') + + # 一括登録フラグ + if len(self.record.bskregst_flag) > 0: + set_clauses.append('lump_regist_flg = :bskregst_flag') + + return set_clauses + + def __make_delete_insert_trt_query(self): + # 診療科目(集合項目)のいずれかに入力がある場合 + if sum(len(item) for item in self.record.medsbj_code_items) == 0: + return + + # 削除 + self.queries.append(self.PHYSICAL_DELETE_QUERY_TRT) + + # @マークの場合は、登録しない + if self.record.medsbj_code1 == '@': + return + + # 登録 + for num, m_code in enumerate(self.record.medsbj_code_items, start=1): + if len(m_code) > 0: + insert_trt_query = self.INSERT_QUERY_TRT.format( + trt_course_code=f':medsbj_code{num}', + trt_sequence=num + ) + self.queries.append(insert_trt_query) + + return + + def __set_era(self): + # 西暦の取得 + + # 生年月日(西暦) + western_year: str = "" + if self.record.birthday_era != "@" and len(self.record.birthday_era) > 0 and len(self.record.birthday_year) > 0: + self.query_parameter['era_cd'] = self.record.birthday_era + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + western_year = str(int(record_year[0]['year']) + int(self.record.birthday_year)) + + # 生年月日の設定 + self.query_parameter['birth_day'] = self.__set_birthday(western_year) + + # 開業年(西暦) + if self.record.pract_yearera != "@" and len(self.record.pract_yearera) > 0 and len(self.record.pract_year) > 0: + self.query_parameter['era_cd'] = self.record.pract_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['estab_y'] = str(int(record_year[0]['year']) + int(self.record.pract_year)) + + # 卒業年(西暦) + if self.record.grad_yearera != "@" and len(self.record.grad_yearera) > 0 and len(self.record.grad_year) > 0: + self.query_parameter['era_cd'] = self.record.grad_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['grad_y'] = str(int(record_year[0]['year']) + int(self.record.grad_year)) + + # 登録年(西暦) + if self.record.drda_yera != "@" and len(self.record.drda_yera) > 0 and len(self.record.drday_year) > 0: + self.query_parameter['era_cd'] = self.record.drda_yera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['drday_y'] = str(int(record_year[0]['year']) + int(self.record.drday_year)) + + return + + def __set_birthday(self, western_year: str = ""): + # 生年月日を設定 + + # 年(西暦)、月、日を連結 + birth_day = ''.join([western_year, self.record.birthday_month, self.record.birthday_day]) + + # 年(西暦)、月、日が全て揃っている場合 + if len(birth_day) == 8: + return birth_day + + # 西暦が空の場合、先頭に半角スペース4つで連結 + if len(western_year) == 0 and len(self.record.birthday_month) > 0 and len(self.record.birthday_day) > 0: + return f' {self.record.birthday_month}{self.record.birthday_day}' + + # 月日も空の場合、生年月日は空 + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py new file mode 100644 index 00000000..51ee1c63 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py @@ -0,0 +1,97 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_dr_sosiety import ComDrSosiety + + +class ComDrSosietyMapper(UltmarcTableMapper): + """レイアウト区分521: COM_所属学会 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr_sosiety + ( + sosiety_cd, + dcf_pcf_dr_cd, + sosiety_f, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :sosiety_cd, + :dcf_pcf_dr_cd, + :sosiety_f, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_dr_sosiety + SET + sosiety_f = :sosiety_f, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』SQL + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + record: ComDrSosiety + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDrSosiety) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』 + if self.record.maint_flag == 'B' and self.record.cont_flag == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_wrkplace_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_wrkplace_mapper.py new file mode 100644 index 00000000..fc47b278 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_wrkplace_mapper.py @@ -0,0 +1,281 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_dr_wrkplace import ComDrWrkplace + + +class ComDrWrkplaceMapper(UltmarcTableMapper): + """レイアウト区分502:COM_医師勤務先 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr_wrkplace + WHERE + dcf_pcf_dr_cd = :full_dcfdr_code + AND dcf_dsf_inst_cd = :full_hp_code + """ + # COM_所属部課から所属部科カナと所属部科名を取得するSQL + GET_NAME_FROM_COM_BLNG_SEC_QUERY = """\ + SELECT + blng_sec_kana, + blng_sec_name + FROM + src05.com_blng_sec + WHERE + blng_sec_cd = :sectcode + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr_wrkplace ( + dcf_dsf_inst_cd, + dcf_pcf_dr_cd, + blng_sec_cd, + post_cd, + identity_cd, + aply_start_ymd, + blng_sec_name_kana, + blng_sec_name, + notdm_flg, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :full_hp_code, + :full_dcfdr_code, + :sectcode, + :postcode, + :identitycode, + :syor_date, + :sectname_kana, + :sectname, + :notdm_flg, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_dr_wrkplace + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + DCF_PCF_DR_CD= :full_dcfdr_code + AND DCF_DSF_INST_CD = :full_hp_code + """ + + # 更新・削除の場合に該当のデータを履歴テーブルに退避するSQL + TO_HISTORY_QUERY = """\ + INSERT INTO src05.com_dr_wrkplace_his ( + dcf_dsf_inst_cd, + dcf_pcf_dr_cd, + blng_sec_cd, + post_cd, + identity_cd, + aply_start_ymd, + blng_sec_name_kana, + blng_sec_name, + notdm_flg, + aply_end_ymd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + SELECT + dcf_dsf_inst_cd, + dcf_pcf_dr_cd, + ( + CASE + WHEN blng_sec_cd = '' THEN '9999' + ELSE blng_sec_cd + END + ) AS blng_sec_cd, + ( + CASE + WHEN post_cd = '' THEN '999' + ELSE post_cd + END + ) AS post_cd, + ( + CASE + WHEN identity_cd = '' THEN '999' + ELSE identity_cd + END + ) AS identity_cd, + DATE_FORMAT(aply_start_ymd, '%Y%m%d'), + blng_sec_name_kana, + blng_sec_name, + notdm_flg, + ( + CASE + WHEN DATE_FORMAT(aply_start_ymd, '%Y%m%d') > DATE_FORMAT(DATE_SUB(:syor_date, INTERVAL 1 DAY), '%Y%m%d') THEN DATE_FORMAT(aply_start_ymd, '%Y%m%d') + ELSE DATE_FORMAT(DATE_SUB(:syor_date, INTERVAL 1 DAY), '%Y%m%d') + END + ) AS aply_end_ymd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + FROM + src05.com_dr_wrkplace + WHERE + dcf_pcf_dr_cd = :full_dcfdr_code + AND dcf_dsf_inst_cd = :full_hp_code + AND aply_start_ymd < :syor_date + """ + + # 退職レコードの場合、物理削除するSQL + PHYSICAL_DELETE_FOR_RETIREMENT_QUERY = """\ + DELETE FROM src05.com_dr_wrkplace + WHERE + dcf_pcf_dr_cd = :full_dcfdr_code + AND dcf_dsf_inst_cd = :full_hp_code + """ + + record: ComDrWrkplace + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDrWrkplace) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 所属部科を取得し、所属部科カナと所属部科名を設定する + self.__set_sect_name_and_sect_name_kana() + # 追加/更新クエリを生成 + # 履歴へのレコード登録もあるため、リストで返る + self.queries = self.__make_queries() + return + + def __set_sect_name_and_sect_name_kana(self): + # 所属部科を取得し、所属部科カナと所属部科名を設定する + com_blng_sec_records = self.db.execute_select(self.GET_NAME_FROM_COM_BLNG_SEC_QUERY, self.query_parameter) + if len(com_blng_sec_records) == 0: + return + # 必ず1件 + com_blng_sec_record = com_blng_sec_records[0] + if com_blng_sec_record['blng_sec_kana'] != '' and com_blng_sec_record['blng_sec_kana'] is not None: + self.record.sectname_kana = com_blng_sec_record['blng_sec_kana'] + self.query_parameter['sectname_kana'] = com_blng_sec_record['blng_sec_kana'] + + if com_blng_sec_record['blng_sec_name'] != '' and com_blng_sec_record['blng_sec_name'] is not None: + self.record.sectname = com_blng_sec_record['blng_sec_name'] + self.query_parameter['sectname'] = com_blng_sec_record['blng_sec_name'] + + def __make_queries(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return [self.INSERT_QUERY] + + # 存在する場合はUpdate + # 予備/退職異動区分が1(削除:退職)の場合、退職済みのレコードとして処理 + if self.record.drretflag == '1': + # 履歴への移動と、退職レコードの物理削除 + return [self.TO_HISTORY_QUERY, self.PHYSICAL_DELETE_FOR_RETIREMENT_QUERY] + + # 履歴への移動+更新クエリ生成 + return self.__make_update_query() + + def __make_update_query(self): + make_history_query = None + # 履歴レコード作成判断となる、UPDATE SET句を作成 + set_clauses_with_historical = self.__make_update_columns_with_historical() + # 履歴レコード作成判断とならない、UPDATE SET句 + set_clause_without_historical = [] + # DM不可フラグの値をセット + # 履歴レコード作成判断とならないため、後から設定 + if self.record.notdm_flg != '': + set_clause_without_historical.append(f'notdm_flg = :notdm_flg') + # 何かしら更新がある場合、履歴作成クエリを作成 + if len(set_clauses_with_historical) != 0: + make_history_query = self.TO_HISTORY_QUERY + + update_columns = ','.join(set_clauses_with_historical + set_clause_without_historical) + if len(update_columns) == 0: + update_query = None + else: + # 何かしら更新がある場合、末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + + return [make_history_query, update_query] + + def __make_update_columns_with_historical(self): + # 履歴レコードの作成有無を判断するカラムの更新設定 + # DM不可フラグは、履歴レコードの作成判断に使わないため、この関数の外で判定する + set_clauses = [] + # 役職コード + if self.record.postcode != '': + set_clauses.append('post_cd = :postcode') + # 大学順位 + if self.record.identitycode != '': + set_clauses.append('identity_cd = :identitycode') + # 所属部科(集合項目) + if self.record.sectcode != '': + # 所属部科コード + set_clauses.append('blng_sec_cd = :sectcode') + # 所属部科(カナ) + set_clauses.append(f'blng_sec_name_kana = :sectname_kana') + # 所属部科(漢字) + set_clauses.append(f'blng_sec_name = :sectname') + + # 何かしら更新がある場合、適用開始日をセットする + if len(set_clauses) != 0: + # 処理日はパラメータに設定済み + set_clauses.append("aply_start_ymd = DATE_FORMAT(:syor_date, '%Y%m%d')") + + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py new file mode 100644 index 00000000..089ef73d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py @@ -0,0 +1,95 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper + +from src.batch.ultmarc.utmp_tables.tables.com_forfront_med_equip import ComForfrontMedEquip + + +class ComForfrontMedEquipMapper(UltmarcTableMapper): + """レイアウト区分022: COM_先端医療機器 登録処理 """ + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_forfront_med_equip + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_forfront_med_equip + ( + forfront_med_equip_cd, + forfront_med_equip_name, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :hi_medicmach_code, + :hi_medicmach_name, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_forfront_med_equip + SET + forfront_med_equip_name = :hi_medicmach_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + # 削除年月日 ← システム日付 + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_forfront_med_equip + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + record: ComForfrontMedEquip + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComForfrontMedEquip) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py new file mode 100644 index 00000000..e0ffbaae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hamtec_mapper.py @@ -0,0 +1,96 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_hamtec import ComHamtec + + +class ComHamtecMapper(UltmarcTableMapper): + """レイアウト区分021: COM_高度先進医療 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_hamtec + WHERE + hamtec_cd = :hamtec_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_hamtec + ( + hamtec_cd, + hamtec_div, + hamtec_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :hamtec_cd, + :hamtec_div, + :hamtec_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_hamtec + SET + hamtec_div = :hamtec_div, + hamtec_name = :hamtec_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + hamtec_cd = :hamtec_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_hamtec + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + hamtec_cd = :hamtec_cd + """ + record: ComHamtec + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComHamtec) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py new file mode 100644 index 00000000..a5e3bbcd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py @@ -0,0 +1,93 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_hp_assrt import ComHpAssrt + + +class ComHpAssrtMapper(UltmarcTableMapper): + """レイアウト区分002: COM_病院種別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_hp_assrt + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_hp_assrt + ( + hp_assrt_cd, + hp_assrt_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :hp_assrt_cd, + :hp_assrt_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_hp_assrt + SET + hp_assrt_name = :hp_assrt_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_hp_assrt + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + record: ComHpAssrt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComHpAssrt) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py new file mode 100644 index 00000000..2954527e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -0,0 +1,1275 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst_att import ComInstAtt + + +class ComInstAttMapper(UltmarcTableMapper): + """レイアウト区分111: COM_施設属性 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst_att + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_inst_att + ( + dcf_dsf_inst_cd, + dpc_flag, + dpc_specday, + dpc_cancelday, + predpc_flag, + predpc_specday, + predpc_cancelday, + cancer_flag, + cancer_specday, + cancer_cancelday, + funchpflag, + funchpokdate, + funchpcandate, + areasuphpflag, + areasuphpintrate, + areasuphpokdate, + areasuphpcandate, + acuthpaddflag, + acuthpaddokdate, + acuthpaddcandate, + genadmisiionflag, + genadmisiionfokdate, + genadmisiionfcandate, + assistanceflag, + assistanceokdate, + assistancecandate, + diagnosistreatment_flag, + diagnosistreatment_specday, + diagnosistreatment_cancelday, + safety_flag, + safety_specday, + safety_cancelday, + highrisk_flag, + highrisk_specday, + highrisk_cancelday, + infantandholiday_flag, + infantandholiday_specday, + infantandholiday_cancelday, + ophpflag, + ophpokdate, + ophpcandate, + critical_flag, + critical_code01, + critical_code02, + critical_code03, + critical_code04, + critical_code05, + critical_code06, + critical_code07, + critical_code08, + critical_code09, + critical_code10, + critical_code11, + critical_code12, + critical_code13, + critical_code14, + critical_code15, + critical_code16, + critical_code17, + critical_code18, + critical_code19, + critical_code20, + drgmgthpflag, + drgmgthpokdate, + drgmgthpcandate, + imagediagnosis_flag, + imagediagnosis_specifiedday, + imagediagnosis_cancelday, + chemotherapy_flag, + chemotherapy_specday, + chemotherapy_cancelday, + rehabilitation_flag, + rehabilitation_code01, + rehabilitation_code02, + rehabilitation_code03, + rehabilitation_code04, + rehabilitation_code05, + rehabilitation_code06, + rehabilitation_code07, + rehabilitation_code08, + rehabilitation_code09, + rehabilitation_code10, + anesthetizingmanage_flag, + anesthetizingmanage_specday, + anesthetizingmanage_cancelday, + homerecuperation_flag, + homerecuperation_specday, + homerecuperation_cancelday, + synthesiswhenstaying_flag, + synthesiswhenstaying_specday, + synthesiswhenstaying_cancelday, + homelateflag, + homelateokday, + homelatecanday, + caremixkind, + fullmoveflag, + resthpflag, + resthpcarekind, + resthpbednum, + resthpokdate, + resthpcandate, + resthpcarenrskind, + resthpcarebednum, + resthpcareokdate, + resthpcarecandate, + resthpsbednum, + nrmhpflag, + nrmhpcarekind, + nrmhpbedtotalnum, + menthpflag, + menthpcarekind, + menthpbednum, + tubhpflag, + tubhpcarekind, + tubhpbednum, + infhpflag, + infhpflag1, + infhpflag2, + infhpbedflag, + infhpbednum, + hospiceflag, + hospicebednum, + hospiceokdate, + hospicecandate, + hpfuncestflag, + hpfuncestkind, + hpfuncestokdate, + hpfuncestcandate, + clolyhpkind, + clolyhpokdate, + clolyhpcandate, + clhpkind, + clhpokdate, + clhpcandate, + cldephpkind, + cldephpokdate, + cldephpcandate, + disasthpflag, + d1emerhpflag, + d2emerhpflag, + d3emerhpflag, + emergencyclinic, + trialcoreflag, + trialcore_div, + trialcoreokdate, + trialcorecandate, + dementiaflag, + dementiaokdate, + dementiacandate, + sphealth_exploration, + sphealth_guidance, + hiadhpflag, + hiadhpcode1, + hiadhpkind1, + hiadhpcode2, + hiadhpkind2, + hiadhpcode3, + hiadhpkind3, + hiadhpcode4, + hiadhpkind4, + hiadhpcode5, + hiadhpkind5, + hiadhpcode6, + hiadhpkind6, + hiadhpcode7, + hiadhpkind7, + hiadhpcode8, + hiadhpkind8, + hiadhpcode9, + hiadhpkind9, + hiadhpcode10, + hiadhpkind10, + hiadhpcode11, + hiadhpkind11, + hiadhpcode12, + hiadhpkind12, + hiadhpcode13, + hiadhpkind13, + hiadhpcode14, + hiadhpkind14, + hiadhpcode15, + hiadhpkind15, + hiadhpcode16, + hiadhpkind16, + hiadhpcode17, + hiadhpkind17, + hiadhpcode18, + hiadhpkind18, + hiadhpcode19, + hiadhpkind19, + hiadhpcode20, + hiadhpkind20, + hiadhpcode21, + hiadhpkind21, + hiadhpcode22, + hiadhpkind22, + hiadhpcode23, + hiadhpkind23, + hiadhpcode24, + hiadhpkind24, + hiadhpcode25, + hiadhpkind25, + hiadhpcode26, + hiadhpkind26, + hiadhpcode27, + hiadhpkind27, + hiadhpcode28, + hiadhpkind28, + hiadhpcode29, + hiadhpkind29, + hiadhpcode30, + hiadhpkind30, + hiadhpcode31, + hiadhpkind31, + hiadhpcode32, + hiadhpkind32, + hiadhpcode33, + hiadhpkind33, + hiadhpcode34, + hiadhpkind34, + hiadhpcode35, + hiadhpkind35, + hiadhpcode36, + hiadhpkind36, + hiadhpcode37, + hiadhpkind37, + hiadhpcode38, + hiadhpkind38, + hiadhpcode39, + hiadhpkind39, + hiadhpcode40, + hiadhpkind40, + hitechhpflag, + hitechhpkind1, + hitechhpkind2, + hitechhpkind3, + hitechhpkind4, + hitechhpkind5, + hitechhpkind6, + hitechhpkind7, + hitechhpkind8, + hitechhpkind9, + hitechhpkind10, + hitechhpkind11, + hitechhpkind12, + hitechhpkind13, + hitechhpkind14, + hitechhpkind15, + hitechhpkind16, + hitechhpkind17, + hitechhpkind18, + hitechhpkind19, + hitechhpkind20, + policymedical_flag, + policymedical_code01, + policymedical_content01, + policymedical_code02, + policymedical_content02, + policymedical_code03, + policymedical_content03, + policymedical_code04, + policymedical_content04, + policymedical_code05, + policymedical_content05, + policymedical_code06, + policymedical_content06, + policymedical_code07, + policymedical_content07, + policymedical_code08, + policymedical_content08, + policymedical_code09, + policymedical_content09, + policymedical_code10, + policymedical_content10, + policymedical_code11, + policymedical_content11, + policymedical_code12, + policymedical_content12, + policymedical_code13, + policymedical_content13, + policymedical_code14, + policymedical_content14, + policymedical_code15, + policymedical_content15, + policymedical_code16, + policymedical_content16, + policymedical_code17, + policymedical_content17, + policymedical_code18, + policymedical_content18, + policymedical_code19, + policymedical_content19, + policymedical_code20, + policymedical_content20, + visitcarestflag, + visitcarestation_id, + visitcarestation_code, + visitcarestation_yobi, + opendate, + regist_ymd, + update_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dpc_flag, + :dpc_spec_day, + :dpc_cancel_day, + :predpc_flag, + :predpc_spec_day, + :predpc_cancel_day, + :cancer_flag, + :cancer_spec_day, + :cancer_cancel_day, + :funchp_flag, + :funchp_ok_date, + :funchp_can_date, + :areasuphp_flag, + :areasuphp_intrate, + :areasuphp_ok_date, + :areasuphp_can_date, + :acuthp_add_flag, + :acuthp_add_ok_date, + :acuthp_add_can_date, + :genadmisiion_flag, + :genadmisiion_ok_date, + :genadmisiion_can_date, + :assistance_flag, + :assistance_ok_date, + :assistance_can_date, + :diagnosis_treatment_flag, + :diagnosis_treatment_spec_day, + :diagnosis_treatment_cancel_day, + :safety_flag, + :safety_spec_day, + :safety_cancel_day, + :highrisk_flag, + :highrisk_spec_day, + :highrisk_cancel_day, + :infant_and_holiday_flag, + :infant_and_holiday_spec_day, + :infant_and_holiday_cancel_day, + :ophp_flag, + :ophpok_date, + :ophpcan_date, + :critical_flag, + :critical_code01, + :critical_code02, + :critical_code03, + :critical_code04, + :critical_code05, + :critical_code06, + :critical_code07, + :critical_code08, + :critical_code09, + :critical_code10, + :critical_code11, + :critical_code12, + :critical_code13, + :critical_code14, + :critical_code15, + :critical_code16, + :critical_code17, + :critical_code18, + :critical_code19, + :critical_code20, + :drgmgthp_flag, + :drgmgthp_ok_date, + :drgmgthp_can_date, + :image_diagnosis_flag, + :image_diagnosis_specified_day, + :image_diagnosis_cancel_day, + :chemotherapy_flag, + :chemotherapy_spec_day, + :chemotherapy_cancel_day, + :rehabilitation_flag, + :rehabilitation_code01, + :rehabilitation_code02, + :rehabilitation_code03, + :rehabilitation_code04, + :rehabilitation_code05, + :rehabilitation_code06, + :rehabilitation_code07, + :rehabilitation_code08, + :rehabilitation_code09, + :rehabilitation_code10, + :anesthetizing_manage_flag, + :anesthetizing_manage_spec_day, + :anesthetizing_manage_can_day, + :home_recuperation_flag, + :home_recuperation_spec_day, + :home_recuperation_cancel_day, + :synthesis_when_staying_flag, + :synthesis_when_staying_spec_day, + :synthesis_when_staying_can_day, + :home_late_flag, + :home_late_ok_day, + :home_late_can_day, + :caremix_kind, + :fullmove_flag, + :resthp_flag, + :resthp_care_kind, + :resthp_bed_num, + :resthp_ok_date, + :resthp_can_date, + :resthp_care_nrs_kind, + :resthp_care_bed_num, + :resthp_care_ok_date, + :resthp_care_can_date, + :resthp_sbed_num, + :nrmhp_flag, + :nrmhp_care_kind, + :nrmhp_bed_total_num, + :menthp_flag, + :menthp_care_kind, + :menthp_bed_num, + :tubhp_flag, + :tubhp_care_kind, + :tubhp_bed_num, + :infhp_flag, + :infhp_flag1, + :infhp_flag2, + :infhp_bed_flag, + :infhp_bed_num, + :hospice_flag, + :hospice_bed_num, + :hospice_ok_date, + :hospice_can_date, + :hpfunce_st_flag, + :hpfunce_st_kind, + :hpfunce_st_ok_date, + :hpfunce_st_can_date, + :clolyhp_kind, + :clolyhp_ok_date, + :clolyhp_can_date, + :clhp_kind, + :clhp_ok_date, + :clhp_can_date, + :cldephp_kind, + :cldephp_ok_date, + :cldephp_can_date, + :disasthp_flag, + :d1emerhp_flag, + :d2emerhp_flag, + :d3emerhp_flag, + :emergency_clinic, + :trial_core_flag, + :trial_core_div, + :trial_core_ok_date, + :trial_core_can_date, + :dementia_flag, + :dementia_okd_ate, + :dementia_can_date, + :sphealth_exploration, + :sphealth_guidance, + :hiadhp_flag, + :hiadhpcode1, + :hiadhpkind1, + :hiadhpcode2, + :hiadhpkind2, + :hiadhpcode3, + :hiadhpkind3, + :hiadhpcode4, + :hiadhpkind4, + :hiadhpcode5, + :hiadhpkind5, + :hiadhpcode6, + :hiadhpkind6, + :hiadhpcode7, + :hiadhpkind7, + :hiadhpcode8, + :hiadhpkind8, + :hiadhpcode9, + :hiadhpkind9, + :hiadhpcode10, + :hiadhpkind10, + :hiadhpcode11, + :hiadhpkind11, + :hiadhpcode12, + :hiadhpkind12, + :hiadhpcode13, + :hiadhpkind13, + :hiadhpcode14, + :hiadhpkind14, + :hiadhpcode15, + :hiadhpkind15, + :hiadhpcode16, + :hiadhpkind16, + :hiadhpcode17, + :hiadhpkind17, + :hiadhpcode18, + :hiadhpkind18, + :hiadhpcode19, + :hiadhpkind19, + :hiadhpcode20, + :hiadhpkind20, + :hiadhpcode21, + :hiadhpkind21, + :hiadhpcode22, + :hiadhpkind22, + :hiadhpcode23, + :hiadhpkind23, + :hiadhpcode24, + :hiadhpkind24, + :hiadhpcode25, + :hiadhpkind25, + :hiadhpcode26, + :hiadhpkind26, + :hiadhpcode27, + :hiadhpkind27, + :hiadhpcode28, + :hiadhpkind28, + :hiadhpcode29, + :hiadhpkind29, + :hiadhpcode30, + :hiadhpkind30, + :hiadhpcode31, + :hiadhpkind31, + :hiadhpcode32, + :hiadhpkind32, + :hiadhpcode33, + :hiadhpkind33, + :hiadhpcode34, + :hiadhpkind34, + :hiadhpcode35, + :hiadhpkind35, + :hiadhpcode36, + :hiadhpkind36, + :hiadhpcode37, + :hiadhpkind37, + :hiadhpcode38, + :hiadhpkind38, + :hiadhpcode39, + :hiadhpkind39, + :hiadhpcode40, + :hiadhpkind40, + :hitechhp_flag, + :hitechhpkind1, + :hitechhpkind2, + :hitechhpkind3, + :hitechhpkind4, + :hitechhpkind5, + :hitechhpkind6, + :hitechhpkind7, + :hitechhpkind8, + :hitechhpkind9, + :hitechhpkind10, + :hitechhpkind11, + :hitechhpkind12, + :hitechhpkind13, + :hitechhpkind14, + :hitechhpkind15, + :hitechhpkind16, + :hitechhpkind17, + :hitechhpkind18, + :hitechhpkind19, + :hitechhpkind20, + :policy_medical_flag, + :policymedical_code01, + :policymedical_content01, + :policymedical_code02, + :policymedical_content02, + :policymedical_code03, + :policymedical_content03, + :policymedical_code04, + :policymedical_content04, + :policymedical_code05, + :policymedical_content05, + :policymedical_code06, + :policymedical_content06, + :policymedical_code07, + :policymedical_content07, + :policymedical_code08, + :policymedical_content08, + :policymedical_code09, + :policymedical_content09, + :policymedical_code10, + :policymedical_content10, + :policymedical_code11, + :policymedical_content11, + :policymedical_code12, + :policymedical_content12, + :policymedical_code13, + :policymedical_content13, + :policymedical_code14, + :policymedical_content14, + :policymedical_code15, + :policymedical_content15, + :policymedical_code16, + :policymedical_content16, + :policymedical_code17, + :policymedical_content17, + :policymedical_code18, + :policymedical_content18, + :policymedical_code19, + :policymedical_content19, + :policymedical_code20, + :policymedical_content20, + :visitcarest_flag, + :visitcarestation_id, + :visitcarestation_code, + :visitcarestation_yobi, + :open_date, + :execute_date_str_ymd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_inst_att + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_inst_att + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + record: ComInstAtt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInstAtt) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + return + + # 存在する場合はUpdate + self.queries.append(self.__make_update_query()) + return + + def __make_update_query(self): + set_clauses = [] + # DPC対象病院 + if len(self.record.dpc_flag) > 0: + set_clauses.append('dpc_flag = :dpc_flag') + set_clauses.append('dpc_specday = :dpc_spec_day') + set_clauses.append('dpc_cancelday = :dpc_cancel_day') + + # DPC準備病院 + if len(self.record.predpc_flag) > 0: + set_clauses.append('predpc_flag = :predpc_flag') + set_clauses.append('predpc_specday = :predpc_spec_day') + set_clauses.append('predpc_cancelday = :predpc_cancel_day') + + # がん診療連携拠点病院 + if len(self.record.cancer_flag) > 0: + set_clauses.append('cancer_flag = :cancer_flag') + set_clauses.append('cancer_specday = :cancer_spec_day') + set_clauses.append('cancer_cancelday = :cancer_cancel_day') + + # 特定機能病院 + if len(self.record.funchp_flag) > 0: + set_clauses.append('funchpflag = :funchp_flag') + set_clauses.append('funchpokdate = :funchp_ok_date') + set_clauses.append('funchpcandate = :funchp_can_date') + + # 地域医療支援病院 + if len(self.record.areasuphp_flag) > 0: + set_clauses.append('areasuphpflag = :areasuphp_flag') + set_clauses.append('areasuphpintrate = :areasuphp_intrate') + set_clauses.append('areasuphpokdate = :areasuphp_ok_date') + set_clauses.append('areasuphpcandate = :areasuphp_can_date') + + # 超急性期脳卒中加算 + if len(self.record.acuthp_add_flag) > 0: + set_clauses.append('acuthpaddflag = :acuthp_add_flag') + set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date') + set_clauses.append('acuthpaddcandate = :acuthp_add_can_date') + + # 総合入院体制加算 + if len(self.record.genadmisiion_flag) > 0: + set_clauses.append('genadmisiionflag = :genadmisiion_flag') + set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date') + set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date') + + # 医師事務作業補助体制加算 + if len(self.record.assistance_flag) > 0: + set_clauses.append('assistanceflag = :assistance_flag') + set_clauses.append('assistanceokdate = :assistance_ok_date') + set_clauses.append('assistancecandate = :assistance_can_date') + + # 診療録管理体制加算 + if len(self.record.diagnosis_treatment_flag) > 0: + set_clauses.append('diagnosistreatment_flag = :diagnosis_treatment_flag') + set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day') + set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day') + + # 医療安全対策加算 + if len(self.record.safety_flag) > 0: + set_clauses.append('safety_flag = :safety_flag') + set_clauses.append('safety_specday = :safety_spec_day') + set_clauses.append('safety_cancelday = :safety_cancel_day') + + # 褥瘡ハイリスク患者ケア加算 + if len(self.record.highrisk_flag) > 0: + set_clauses.append('highrisk_flag = :highrisk_flag') + set_clauses.append('highrisk_specday = :highrisk_spec_day') + set_clauses.append('highrisk_cancelday = :highrisk_cancel_day') + + # 地域連携小児夜間・休日診療料 + if len(self.record.infant_and_holiday_flag) > 0: + set_clauses.append('infantandholiday_flag = :infant_and_holiday_flag') + set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day') + set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day') + + # 開放型病院 + if len(self.record.ophp_flag) > 0: + set_clauses.append('ophpflag = :ophp_flag') + set_clauses.append('ophpokdate = :ophpok_date') + set_clauses.append('ophpcandate = :ophpcan_date') + + # 地域連携クリティカルパス + if len(self.record.critical_flag) > 0: + set_clauses.append('critical_flag = :critical_flag') + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i).zfill(2) # 2桁で0埋め + setting_item_name = f'critical_code{num}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') + + # 薬剤管理指導料 + if len(self.record.drgmgthp_flag) > 0: + set_clauses.append('drgmgthpflag = :drgmgthp_flag') + set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date') + set_clauses.append('drgmgthpcandate = :drgmgthp_can_date') + + # 画像診断管理加算 + if len(self.record.image_diagnosis_flag) > 0: + set_clauses.append('imagediagnosis_flag = :image_diagnosis_flag') + set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day') + set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day') + + # 外来化学療法加算 + if len(self.record.chemotherapy_flag) > 0: + set_clauses.append('chemotherapy_flag = :chemotherapy_flag') + set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day') + set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day') + + # 疾患別リハビリテーション料 + if len(self.record.rehabilitation_flag) > 0: + set_clauses.append('rehabilitation_flag = :rehabilitation_flag') + # 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 11): + num = str(i).zfill(2) # 2桁で0埋め + setting_item_name = f'rehabilitation_code{num}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') + + # 麻酔管理料 + if len(self.record.anesthetizing_manage_flag) > 0: + set_clauses.append('anesthetizingmanage_flag = :anesthetizing_manage_flag') + set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day') + set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day') + + # 在宅療養支援病院・診療所 + if len(self.record.home_recuperation_flag) > 0: + set_clauses.append('homerecuperation_flag = :home_recuperation_flag') + set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day') + set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day') + + # 在宅時医学総合管理料 + if len(self.record.synthesis_when_staying_flag) > 0: + set_clauses.append('synthesiswhenstaying_flag = :synthesis_when_staying_flag') + set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day') + set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day') + + # 在宅末期医療総合診療料 + if len(self.record.home_late_flag) > 0: + set_clauses.append('homelateflag = :home_late_flag') + set_clauses.append('homelateokday = :home_late_ok_day') + set_clauses.append('homelatecanday = :home_late_can_day') + + # ケアミックス区分 + if len(self.record.caremix_kind) > 0: + set_clauses.append('caremixkind = :caremix_kind') + + # 完全型・移行型区分 + if len(self.record.fullmove_flag) > 0: + set_clauses.append('fullmoveflag = :fullmove_flag') + + # 療養型病床群 + if sum(len(item) for item in self.record.resthp_items) > 0: + # 医療型 + set_clauses.append('resthpflag = :resthp_flag') + set_clauses.append('resthpcarekind = :resthp_care_kind') + set_clauses.append('resthpbednum = :resthp_bed_num') + set_clauses.append('resthpokdate = :resthp_ok_date') + set_clauses.append('resthpcandate = :resthp_can_date') + # 介護型 + set_clauses.append('resthpcarenrskind = :resthp_care_nrs_kind') + set_clauses.append('resthpcarebednum = :resthp_care_bed_num') + set_clauses.append('resthpcareokdate = :resthp_care_ok_date') + set_clauses.append('resthpcarecandate = :resthp_care_can_date') + # 合計 + set_clauses.append('resthpsbednum = :resthp_sbed_num') + + # 一般病棟 + if len(self.record.nrmhp_flag) > 0: + set_clauses.append('nrmhpflag = :nrmhp_flag') + set_clauses.append('nrmhpcarekind = :nrmhp_care_kind') + set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num') + + # 精神病棟 + if len(self.record.menthp_flag) > 0: + set_clauses.append('menthpflag = :menthp_flag') + set_clauses.append('menthpcarekind = :menthp_care_kind') + set_clauses.append('menthpbednum = :menthp_bed_num') + + # 結核病棟 + if len(self.record.tubhp_flag) > 0: + set_clauses.append('tubhpflag = :tubhp_flag') + set_clauses.append('tubhpcarekind = :tubhp_care_kind') + set_clauses.append('tubhpbednum = :tubhp_bed_num') + + # 感染症指定医療機関 + if len(self.record.infhp_flag) > 0: + set_clauses.append('infhpflag = :infhp_flag') + set_clauses.append('infhpflag1 = :infhp_flag1') + set_clauses.append('infhpflag2 = :infhp_flag2') + + # 感染症病床 + if len(self.record.infhp_bed_flag) > 0: + set_clauses.append('infhpbedflag = :infhp_bed_flag') + set_clauses.append('infhpbednum = :infhp_bed_num') + + # 緩和ケア病棟設置病院 + if len(self.record.hospice_flag) > 0: + set_clauses.append('hospiceflag = :hospice_flag') + set_clauses.append('hospicebednum = :hospice_bed_num') + set_clauses.append('hospiceokdate = :hospice_ok_date') + set_clauses.append('hospicecandate = :hospice_can_date') + + # 医療機能評価 + if len(self.record.hpfunce_st_flag) > 0: + set_clauses.append('hpfuncestflag = :hpfunce_st_flag') + set_clauses.append('hpfuncestkind = :hpfunce_st_kind') + set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date') + set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date') + + # 臨床研修指定病院 + if sum(len(item) for item in self.record.cl_items) > 0: + # 基幹型病院1 + set_clauses.append('clolyhpkind = :clolyhp_kind') + set_clauses.append('clolyhpokdate = :clolyhp_ok_date') + set_clauses.append('clolyhpcandate = :clolyhp_can_date') + # 基幹型病院2(群指定) + set_clauses.append('clhpkind = :clhp_kind') + set_clauses.append('clhpokdate = :clhp_ok_date') + set_clauses.append('clhpcandate = :clhp_can_date') + # 協力型病院(群指定) + set_clauses.append('cldephpkind = :cldephp_kind') + set_clauses.append('cldephpokdate = :cldephp_ok_date') + set_clauses.append('cldephpcandate = :cldephp_can_date') + + # 災害拠点病院 + if len(self.record.disasthp_flag) > 0: + set_clauses.append('disasthpflag = :disasthp_flag') + + # 救急医療 + if len(self.record.d1emerhp_flag) > 0: + set_clauses.append('d1emerhpflag = :d1emerhp_flag') + set_clauses.append('d2emerhpflag = :d2emerhp_flag') + set_clauses.append('d3emerhpflag = :d3emerhp_flag') + + # 救急告示診療所 + if len(self.record.emergency_clinic) > 0: + set_clauses.append('emergencyclinic = :emergency_clinic') + + # 治験中核病院 + if len(self.record.trial_core_flag) > 0: + set_clauses.append('trialcoreflag = :trial_core_flag') + set_clauses.append('trialcore_div = :trial_core_div') + set_clauses.append('trialcoreokdate = :trial_core_ok_date') + set_clauses.append('trialcorecandate = :trial_core_can_date') + + # 認知症疾患医療センター + if len(self.record.dementia_flag) > 0: + set_clauses.append('dementiaflag = :dementia_flag') + set_clauses.append('dementiaokdate = :dementia_okd_ate') + set_clauses.append('dementiacandate = :dementia_can_date') + + # 特定健康診査実施機関 + if len(self.record.sphealth_exploration) > 0: + set_clauses.append('sphealth_exploration = :sphealth_exploration') + + # 特定保健指導実施機関 + if len(self.record.sphealth_guidance) > 0: + set_clauses.append('sphealth_guidance = :sphealth_guidance') + + # 先進医療実施医療機関 + if len(self.record.hiadhp_flag) > 0: + set_clauses.append('hiadhpflag = :hiadhp_flag') + # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 41): + setting_item_name_code = f'hiadhpcode{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_kind} = :{setting_item_name_kind}') + + # 先端医療実施医療機関 + if len(self.record.hitechhp_flag) > 0: + set_clauses.append('hitechhpflag = :hitechhp_flag') + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + setting_item_name = f'hitechhpkind{i}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') + + # 政策医療 + if len(self.record.policy_medical_flag) > 0: + set_clauses.append('policymedical_flag = :policy_medical_flag') + # 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}' + set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}') + set_clauses.append(f'{setting_item_name_content} = :{setting_item_name_content}') + + # 訪問看護ステーション + if len(self.record.visitcarest_flag) > 0: + set_clauses.append('visitcarestflag = :visitcarest_flag') + set_clauses.append('visitcarestation_id = :visitcarestation_id') + set_clauses.append('visitcarestation_code = :visitcarestation_code') + set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi') + + # 開設年月 + if len(self.record.open_date) > 0: + set_clauses.append('opendate = :open_date') + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_div_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_div_mapper.py new file mode 100644 index 00000000..a8486689 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_div_mapper.py @@ -0,0 +1,93 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst_div import ComInstDiv + + +class ComInstDivMapper(UltmarcTableMapper): + """レイアウト区分011: COM_施設区分 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst_div + WHERE + inst_div_cd = :inst_div_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_inst_div + ( + inst_div_cd, + inst_div_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :inst_div_cd, + :inst_div_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_inst_div + SET + inst_div_name = :inst_div_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + inst_div_cd = :inst_div_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_inst_div + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + inst_div_cd = :inst_div_cd + """ + record: ComInstDiv + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInstDiv) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py new file mode 100644 index 00000000..cbf29145 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -0,0 +1,563 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst + + +class ComInstMapper(UltmarcTableMapper): + """レイアウト区分101: COM_施設 登録処理""" + + # レコード存在確認SQL(COM_施設) + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設) + INSERT_INST_QUERY = """\ + INSERT INTO src05.com_inst + ( + dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + rltd_univ_prnt_cd, + bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + ward_abolish_flg, + inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + hp_assrt_cd, + dup_opp_cd, + insp_item_micrb, + insp_item_serum, + insp_item_blood, + insp_item_patho, + insp_item_paras, + insp_item_biochem, + insp_item_ri, + re_exam_cd, + prmit_bed_num_other, + prmit_bed_num_mental, + prmit_bed_num_tuber, + prmit_bed_num_infection, + prmit_bed_num_sum, + prmit_bed_num_gen, + prmit_bed_num_rcup, + prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :hp_class_code, + :hp_addr_lost_code, + :hp_name_kana, + :hp_ryaku_name_kana, + :hp_name, + :hp_ryaku_name, + :univ_prnt_code, + :bed_num, + :close_flag, + :open_flag, + :close_year_month, + :open_year_month, + :close_flag2, + :inst_repre_code, + :president_kana, + :president, + :tel_nothing_flag, + :uncheck_flag, + :hp_tel, + :hp_addr_kana, + :hp_addr, + :hp_zip_code, + :village_code, + :pref_code, + :city_code, + :hp_addr_number, + :addr_cnt_kana, + :addr_cnt, + :mgt_class_code, + :hpdel_code, + :hp_kind_code, + :dup_opp_code, + :inspect_code1, + :inspect_code2, + :inspect_code3, + :inspect_code4, + :inspect_code5, + :inspect_code6, + :inspect_code7, + :reexam_flag, + :bed_num_gen, + :bed_num_psy, + :bed_num_tub, + :bed_num_epi, + :bed_num_sum, + :bed_num_gen2, + :bed_num_rest, + :bed_class_maint_date, + 1, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL(COM_施設) + UPDATE_INST_QUERY = """\ + UPDATE + src05.com_inst + SET + {update_columns} + abolish_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_inst + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設診療科目) + INSERT_INST_TRT_QUERY = """\ + INSERT INTO src05.com_inst_trt_course + ( + dcf_dsf_inst_cd, + trt_course_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + {trt_course_cd}, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ削除用SQL(COM_施設診療科目) + PHYSICAL_DELETE_TRT_QUERY = """\ + DELETE FROM + src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # レコード存在確認SQL(COM_特養医務室) + RECORD_EXISTS_SPCARE_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_spcare_med_office_dat + WHERE + dcf_chld_inst_cd = :dcfdsf_inst_code + """ + + # データ更新用SQL(COM_特養医務室) + UPDATE_SPCARE_QUERY = """\ + UPDATE + src05.com_spcare_med_office_dat + SET + dcf_prnt_inst_cd = :dcf_prnt_inst_code, + update_ymd = :execute_date_str_ymd, + delete_ymd = :delete_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_chld_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_特養医務室) + INSERT_SPCARE_QUERY = """\ + INSERT INTO src05.com_spcare_med_office_dat + ( + dcf_chld_inst_cd, + dcf_prnt_inst_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dcf_prnt_inst_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComInst + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInst) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # レコードの存在確認(施設) + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + if record_count[0]['count_num'] == 0: + # 存在しない場合はInsert + self.queries.append(self.INSERT_INST_QUERY) + else: + # 存在する場合はUpdate(施設) + self.__make_update_query() + + # 施設診療科目の削除挿入 + self.__make_delete_insert_trt_query() + + # 特養医務室の追加更新 + self.__make_upsert_spcare_query() + + return + + def __make_update_query(self): + # 存在する場合はUpdate(施設) + set_clauses = [] # 設定項目 + + # 施設区分コード + if len(self.record.hp_class_code) > 0: + set_clauses.append('inst_div_cd = :hp_class_code') + + # 正式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('form_inst_name_kana = :hp_name_kana') + + # 略式施設名(カナ) + if len(self.record.hp_ryaku_name_kana) > 0: + set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') + + # 正式施設名(漢字) + if len(self.record.hp_name) > 0: + set_clauses.append('form_inst_name_kanji = :hp_name') + + # 略式施設名(漢字) + if len(self.record.hp_ryaku_name) > 0: + set_clauses.append('inst_name_kanji = :hp_ryaku_name') + + # 施設住所カナ + if len(self.record.hp_addr_kana) > 0: + set_clauses.append('inst_addr_kana = :hp_addr_kana') + + # 施設住所 + if len(self.record.hp_addr) > 0: + set_clauses.append('inst_addr = :hp_addr') + + # 郵便番号 + if len(self.record.hp_zip_code) > 0: + set_clauses.append('postal_number = :hp_zip_code') + + # 町字コード・都道府県コード・市区町村コード + if len(self.record.village_code + self.record.pref_code + self.record.city_code) > 0: + set_clauses.append('village_cd = :village_code') + set_clauses.append('prefc_cd = :pref_code') + set_clauses.append('city_cd = :city_code') + + # 住所カウント + if len(self.record.pref_code) > 0: + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 住所表示番号 + if len(self.record.hp_addr_number) > 0: + set_clauses.append('addr_display_number = :hp_addr_number') + + # 経営体コード + if len(self.record.mgt_class_code) > 0: + set_clauses.append('manage_cd = :mgt_class_code') + + # 病院種別 + if len(self.record.hp_kind_code) > 0: + set_clauses.append('hp_assrt_cd = :hp_kind_code') + + # 再審査コード + if len(self.record.reexam_flag) > 0: + set_clauses.append('re_exam_cd = :reexam_flag') + + # 未確認フラグ + if len(self.record.uncheck_flag) > 0: + set_clauses.append('unconf_flg = :uncheck_flag') + + # 削除予定理由コード + if len(self.record.hpdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :hpdel_code') + + # 重複時相手先コード + if len(self.record.dup_opp_code) > 0: + set_clauses.append('dup_opp_cd = :dup_opp_code') + + # 住所不明理由コード + if len(self.record.hp_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code') + + # 電話番号なしフラグ + if len(self.record.tel_nothing_flag) > 0: + set_clauses.append('phone_number_non_flg = :tel_nothing_flag') + + # 電話番号 + if len(self.record.hp_tel) > 0: + set_clauses.append('inst_phone_number = :hp_tel') + + # 施設代表者コード + if len(self.record.inst_repre_code) > 0: + set_clauses.append('inst_repre_cd = :inst_repre_code') + + # 代表者(カナ) + if len(self.record.president_kana) > 0: + set_clauses.append('inst_repre_kana = :president_kana') + + # 代表者(漢字) ※「@」が大文字 + if len(self.record.president) > 0: + set_clauses.append('inst_repre = :president') + + # 開業予定フラグ・開業予定年月 + 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_ym = :open_year_month') + + # 休院フラグ・休院開始年月 + if len(self.record.close_flag + self.record.close_year_month) > 0: + set_clauses.append('close_flg = :close_flag') + set_clauses.append('close_start_ym = :close_year_month') + + # 関連大学親コード + if len(self.record.univ_prnt_code) > 0: + set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code') + + # 病棟閉鎖フラグ + if len(self.record.close_flag2) > 0: + set_clauses.append('ward_abolish_flg = :close_flag2') + + # 病床数(定員) + if self.record.bed_num is not None: + set_clauses.append('bed_num = :bed_num') + + # 許可病床メンテ日付 + if len(self.record.bed_class_maint_date) > 0: + set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date') + + # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) + if not self.record.prmit_bed.count(None) == len(self.record.prmit_bed): + set_clauses.append('prmit_bed_num_sum = :bed_num_sum') + set_clauses.append('prmit_bed_num_mental = :bed_num_psy') + set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') + set_clauses.append('prmit_bed_num_infection = :bed_num_epi') + 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_rcup = :bed_num_rest') + + # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) + if sum(len(item) for item in self.record.insp_item) > 0: + set_clauses.append('insp_item_micrb = :inspect_code1') + set_clauses.append('insp_item_serum = :inspect_code2') + set_clauses.append('insp_item_blood = :inspect_code3') + set_clauses.append('insp_item_patho = :inspect_code4') + set_clauses.append('insp_item_paras = :inspect_code5') + set_clauses.append('insp_item_biochem = :inspect_code6') + set_clauses.append('insp_item_ri = :inspect_code7') + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合は更新処理は行わない + if len(update_columns) == 0: + self.queries.append(None) + return + else: + update_columns += ',' + update_query = self.UPDATE_INST_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + + return + + def __make_delete_insert_trt_query(self): + # 施設診療科目の削除挿入 + # 診療科目(集合項目)のいずれも入力がない場合、何もしない + if sum(len(item) for item in self.record.medsbj_code) == 0: + return + + # 削除 + self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) + + # 診療科目の1つ目の値がクリアマーク(@)の場合、診療科目を登録しない + if self.record.medsbj_code[0] == "@": + return + + # 診療科目1~60 + for medsbj_code in self.record.medsbj_code: + if len(medsbj_code) > 0: + insert_query = self.INSERT_INST_TRT_QUERY.format( + trt_course_cd=f"'{medsbj_code}'" + ) + self.queries.append(insert_query) + return + + def __make_upsert_spcare_query(self): + # 特養医務室の追加、更新 + # DCF親施設コードがない場合、何もしない + if (self.record.dcf_prnt_inst_code == "00" or len(self.record.dcf_prnt_inst_code) == 0): + return + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + # 特養医務室の集合項目の値がクリアマーク(@)の場合、登録しない + if self.record.dcfhp_92id == "@": + return + + self.queries.append(self.INSERT_SPCARE_QUERY) + return + + # 存在する場合はUpdate + # 特養医務室の集合項目の値がクリアマーク(@)の場合、DCF親施設コードをクリアし、削除日を設定 + if self.record.dcfhp_92id == "@": + self.query_parameter['dcf_prnt_inst_code'] = None + self.query_parameter['delete_ymd'] = self.query_parameter['execute_date_str_ymd'] + else: + self.query_parameter['delete_ymd'] = None + + self.queries.append(self.UPDATE_SPCARE_QUERY) + + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_manage_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_manage_mapper.py new file mode 100644 index 00000000..87e9b267 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_manage_mapper.py @@ -0,0 +1,94 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_manage import ComManage + + +class ComManageMapper(UltmarcTableMapper): + """レイアウト区分007: COM_経営体 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_manage + WHERE + manage_cd = :manage_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_manage + ( + manage_cd, + manage_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :manage_cd, + :manage_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_manage + SET + manage_name = :manage_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + manage_cd = :manage_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_manage + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + manage_cd = :manage_cd + """ + + record: ComManage + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComManage) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py new file mode 100644 index 00000000..e046d558 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py @@ -0,0 +1,117 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_area_city import ComMedAreaCity + + +class ComMedAreaCityMapper(UltmarcTableMapper): + """レイアウト区分124: COM_医療圏都道府県市町村対応表 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_area_city + ( + prefc_cd, + med_sphe_cd, + jis_prefc_cd, + jis_city_cd, + zen_prefcode, + zen_medareacode, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :prefc_cd, + :med_sphe_cd, + :jis_prefc_cd, + :jis_city_cd, + :zen_prefcode, + :zen_medareacode, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_med_area_city + SET + zen_prefcode = :zen_prefcode, + zen_medareacode = :zen_medareacode, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + + record: ComMedAreaCity + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedAreaCity) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maintflag == 'B' and self.record.addDelDiv == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py new file mode 100644 index 00000000..ee643c6a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py @@ -0,0 +1,97 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_func_valuation import ComMedFuncValuation + + +class ComMedFuncValuationMapper(UltmarcTableMapper): + """レイアウト区分024: COM_医療機器評価 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_func_valuation + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_func_valuation + ( + med_func_valuation_cd, + med_func_valuation_name, + regist_ymd, + update_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + + ) + VALUES ( + :med_func_valuation_cd, + :med_func_valuation_name, + :execute_date_str_ymd, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_med_func_valuation + SET + med_func_valuation_name = :med_func_valuation_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_med_func_valuation + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + record: ComMedFuncValuation + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedFuncValuation) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py new file mode 100644 index 00000000..475a6b9a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py @@ -0,0 +1,129 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_prefc import ComMedPrefc + + +class ComMedPrefcMapper(UltmarcTableMapper): + """レイアウト区分121: COM_医療圏都道府県 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_prefc + WHERE + pref_code = :pref_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_prefc + ( + pref_code, + rev_date, + post_date, + psy_bednumtg, + psy_bednumgen, + psy_bednumdate, + psy_eqbednum, + tb_bednumtg, + tb_bednumgen, + tb_bednumdate, + tb_eqbednum, + inf_bednumtg, + inf_bednumgen, + inf_bednumdate, + inf_eqbednum, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :pref_code, + :rev_date, + :post_date, + :psy_bednum_tg, + :psy_bednum_gen, + :psy_bednum_date, + :psy_eqbed_num, + :tb_bednum_tg, + :tb_bednum_gen, + :tb_bednum_date, + :tb_eqbed_num, + :inf_bednum_tg, + :inf_bednum_gen, + :inf_bednum_date, + :inf_eqbed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_med_prefc + SET + rev_date = :rev_date, + post_date = :post_date, + psy_bednumtg = :psy_bednum_tg, + psy_bednumgen = :psy_bednum_gen, + psy_bednumdate = :psy_bednum_date, + psy_eqbednum = :psy_eqbed_num, + tb_bednumtg = :tb_bednum_tg, + tb_bednumgen = :tb_bednum_gen, + tb_bednumdate = :tb_bednum_date, + tb_eqbednum = :tb_eqbed_num, + inf_bednumtg = :inf_bednum_tg, + inf_bednumgen = :inf_bednum_gen, + inf_bednumdate = :inf_bednum_date, + inf_eqbednum = :inf_eqbed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + pref_code = :pref_code + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_med_prefc + WHERE + pref_code = :pref_code + """ + + record: ComMedPrefc + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedPrefc) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、物理削除 + if self.record.maintflag == 'C': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py new file mode 100644 index 00000000..37a4c889 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py @@ -0,0 +1,95 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_nurse_assrt import ComNurseAssrt + + +class ComNurseAssrtMapper(UltmarcTableMapper): + """レイアウト区分023: COM_看護種別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_nurse_assrt + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_nurse_assrt + ( + nurse_assrt_cd, + nurse_assrt_name, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :nurse_assrt_cd, + :nurse_assrt_name, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_nurse_assrt + SET + nurse_assrt_name = :nurse_assrt_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_nurse_assrt + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + record: ComNurseAssrt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComNurseAssrt) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はupdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_pharm_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_pharm_mapper.py new file mode 100644 index 00000000..640152d6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_pharm_mapper.py @@ -0,0 +1,327 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_pharm import ComPharm + + +class ComPharmMapper(UltmarcTableMapper): + """レイアウト区分102: COM_薬局 登録処理 """ + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_pharm + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_pharm + ( + dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + dup_opp_cd, + supervising_pharmacist, + supervising_pharmacist_kana, + franchise_hq_cd, + inst_pharm_div, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_cd, + :hpclass_code, + :hp_addr_lost_code, + :hp_name_kana, + :hp_ryaku_name_kana, + :hp_name, + :hp_ryaku_name, + :close_flg, + :open_flag, + :close_yearmonth, + :open_yearmonth, + :president_Kana, + :president, + :tel_nothing_flag, + :unconf_flg, + :tel_number, + :addr_kana, + :addr, + :zip_code, + :village_code, + :prefc_cd, + :city_cd, + :addr_number, + :addr_count_kana, + :addr_count, + :mgtclass_code, + :del_cd, + :dup_opp_cd, + :pharmacist, + :pharmacist_kana, + :franchise_hq_cd, + 2, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_pharm + SET + {update_columns} + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + # 廃業年月日 ← メンテナンス年月日 + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_pharm + SET + abolish_ymd = :maintdate, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_cd + """ + record: ComPharm + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPharm) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 更新の場合 + update_columns = ','.join(self.__make_update_query()) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + return update_query + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 設定項目の判定 + # DCFDSF施設コード(主キーなので更新対象外) + + # 施設区分コード + if self.record.hpclass_code != '': + set_clauses.append('inst_div_cd = :hpclass_code') + + # 住所不明理由コード + if self.record.hp_addr_lost_code != '': + set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code') + + # 正式施設名カナ + if self.record.hp_name_kana != '': + set_clauses.append('form_inst_name_kana = :hp_name_kana') + + # 施設名カナ + if self.record.hp_ryaku_name_kana != '': + set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') + + # 正式施設名(漢字) + if self.record.hp_name != '': + set_clauses.append('form_inst_name_kanji = :hp_name') + + # 施設名(漢字) + if self.record.hp_ryaku_name != '': + set_clauses.append('inst_name_kanji = :hp_ryaku_name') + + # 休院フラグ、休院予定年月 + if len(self.record.close_flg + self.record.close_yearmonth) > 0: + set_clauses.append('close_flg = :close_flg') + set_clauses.append('close_start_ym = :close_yearmonth') + + # 開業予定フラグ、開業予定年月 + if len(self.record.open_flag + self.record.open_yearmonth) > 0: + set_clauses.append('estab_sche_flg = :open_flag') + set_clauses.append('estab_sche_ym = :open_yearmonth') + + # 施設代表者カナ + if self.record.president_Kana != '': + set_clauses.append('inst_repre_kana = :president_Kana') + + # 施設代表者 + if self.record.president != '': + set_clauses.append('inst_repre = :president') + + # 電話番号なしフラグ + if self.record.tel_nothing_flag != '': + set_clauses.append('phone_number_non_flg = :tel_nothing_flag') + + # 未確認フラグ + if self.record.unconf_flg != '': + set_clauses.append('unconf_flg = :unconf_flg') + + # 施設電話番号 + if self.record.tel_number != '': + set_clauses.append('inst_phone_number = :tel_number') + + # 施設住所カナ + if self.record.addr_kana != '': + set_clauses.append('inst_addr_kana = :addr_kana') + + # 施設住所 + if self.record.addr != '': + set_clauses.append('inst_addr = :addr') + + # 郵便番号 + if self.record.zip_code != '': + set_clauses.append('postal_number = :zip_code') + + # 町字コード(住所コード) + if len(self.record.village_code) > 0: + set_clauses.append('village_cd = :village_code') # 住所コード + set_clauses.append('prefc_cd = :prefc_cd') # 都道府県コード + set_clauses.append('city_cd = :city_cd') # 市区町村コード + + # 住所表示番号 + if self.record.addr_number != '': + set_clauses.append('addr_display_number = :addr_number') + + # 住所カウント(集合項目である県コードが入っていればカウントをセットする) + if len(self.record.prefc_cd) > 0: + set_clauses.append('addr_cnt = :addr_count') # 住所カウント + set_clauses.append('addr_cnt_kana = :addr_count_kana') # 住所カウントカナ + + # 経営体コード + if self.record.mgtclass_code != '': + set_clauses.append('manage_cd = :mgtclass_code') + + # 削除予定理由コード + if self.record.del_cd != '': + set_clauses.append('delete_sche_reason_cd = :del_cd') + + # 重複時相手先コード + if self.record.dup_opp_cd != '': + set_clauses.append('dup_opp_cd = :dup_opp_cd') + + # 管理薬剤師名(漢字)※@が大文字 + if self.record.pharmacist != '': + set_clauses.append('supervising_pharmacist = :pharmacist') + + # 管理薬剤師名(カナ) + if self.record.pharmacist_kana != '': + set_clauses.append('supervising_pharmacist_kana = :pharmacist_kana') + + # チェーン店本部コード + if self.record.franchise_hq_id != '': + 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 == '@': + self.query_parameter['franchise_hq_cd'] = None + + return diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py new file mode 100644 index 00000000..0eba2a49 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py @@ -0,0 +1,96 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper + +from src.batch.ultmarc.utmp_tables.tables.com_policy_med import ComPolicyMed + + +class ComPolicyMedMapper(UltmarcTableMapper): + """レイアウト区分028: COM_政策医療 登録処理 """ + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_policy_med + WHERE + policy_med_cd = :policy_med_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_policy_med + ( + policy_med_cd, + field_name, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :policy_med_cd, + :field_name, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_policy_med + SET + field_name = :field_name, + update_ymd = :execute_date_str_ymd, + delete_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + policy_med_cd = :policy_med_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + # 削除年月日 ← システム日付 + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_policy_med + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + policy_med_cd = :policy_med_cd + """ + record: ComPolicyMed + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPolicyMed) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_post_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_post_mapper.py new file mode 100644 index 00000000..af13b51f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_post_mapper.py @@ -0,0 +1,92 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_post import ComPost + + +class ComPostMapper(UltmarcTableMapper): + """レイアウト区分005: COM_役職 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_post + WHERE + post_cd = :post_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_post + ( + post_cd, + form_post_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :post_cd, + :form_post_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_post + SET + form_post_name = :form_post_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + post_cd = :post_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_post + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + post_cd = :post_cd + """ + record: ComPost + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPost) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py new file mode 100644 index 00000000..db54cb40 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py @@ -0,0 +1,489 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_base import \ + ComPrefcMedBase + + +class ComPrefcMedBaseMapper(UltmarcTableMapper): + """レイアウト区分132: COM_都道府県医療機能情報(基本)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_base + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_base + ( + 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, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :info_date, + :home_page, + :hppre_flg, + :expre_flg, + :trial_flg, + :trial_cont_count, + :trial_whet_from, + :trial_whet_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, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_base + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_base + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + record: ComPrefcMedBase + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedBase) + program_name = __name__.split(".")[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter["program_name"] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = { + **self.query_parameter, + **self.record.to_sql_parameter(), + } + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == "B" and self.record.adddel_div == "1": + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # レコードの存在確認 + record_count = self.db.execute_select( + self.RECORD_EXISTS_QUERY, self.query_parameter + ) + # 存在しない場合はInsert + if record_count[0]["count_num"] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.__make_update_query() + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 情報年月日 + if len(self.record.info_date) > 0: + set_clauses.append("info_date = :info_date") + + # 案内用ホームページアドレス + if len(self.record.home_page) > 0: + set_clauses.append("home_page = :home_page") + + # 院内処方フラグ + if len(self.record.hppre_flg) > 0: + set_clauses.append("hppre_flg = :hppre_flg") + + # 院外処方フラグ + if len(self.record.expre_flg) > 0: + set_clauses.append("expre_flg = :expre_flg") + + # 治験の実施 + if len(self.record.trial_flg) > 0: + set_clauses.append("trial_flg = :trial_flg") + set_clauses.append("trial_contcount = :trial_cont_count") + set_clauses.append("trialwhet_from = :trial_whet_from") + set_clauses.append("trialwhet_to = :trial_whet_to") + + # 保有する施設設備フラグ + if len(self.record.equipment_flg) > 0: + set_clauses.append("equipment_flg = :equipment_flg") + + # 対応することができる疾患・治療の内容フラグ + if len(self.record.cos_disease_flg) > 0: + set_clauses.append("cos_disease_flg = :cos_disease_flg") + + # 対応することができる短期滞在手術フラグ + if len(self.record.cos_surgery) > 0: + set_clauses.append("cos_surgery = :cos_surgery") + + # 専門外来フラグ + if len(self.record.specialclinic_flg) > 0: + set_clauses.append("specialclinic_flg = :specialclinic_flg") + + # 地域医療連携体制_窓口設置フラグ + if len(self.record.establishment_flg) > 0: + set_clauses.append("establishment_flg = :establishment_flg") + + # 地域医療連携体制_地域連携パスフラグ + if len(self.record.critical_flg) > 0: + set_clauses.append("critical_flg = :critical_flg") + + # 入院診療計画策定時における院内の連携体制 + if len(self.record.cop_system) > 0: + set_clauses.append("cop_system = :cop_system") + + # オーダリングシステム + if len(self.record.sys_exists_flg) > 0: + set_clauses.append("sys_exists_flg = :sys_exists_flg") + set_clauses.append("sys_inspection = :sys_inspection") + set_clauses.append("sys_prescription = :sys_prescription") + set_clauses.append("sys_reserv = :sys_reserv") + + # ICDコード利用フラグ + if len(self.record.icduse_flg) > 0: + set_clauses.append("icduse_flg = :icduse_flg") + + # 電子カルテフラク + if len(self.record.echart_flg) > 0: + set_clauses.append("echart_flg = :echart_flg") + + # 専任従事者 + if len(self.record.fulltime_flg) > 0: + set_clauses.append("fulltime_flg = :fulltime_flg") + set_clauses.append("fulltime_count = :fulltime_count") + + # 病床患者数平均 + if len(self.record.ge_patient_avg) > 0: + set_clauses.append("ge_patient_avg = :ge_patient_avg") + set_clauses.append("mt_patient_avg = :mt_patient_avg") + set_clauses.append("mc_patient_avg = :mc_patient_avg") + set_clauses.append("ca_patient_avg = :ca_patient_avg") + set_clauses.append("pys_patient_avg = :pys_patient_avg") + set_clauses.append("tub_patient_avg = :inf_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_from = :patient_avg_from") + set_clauses.append("patient_avg_to = :patient_avg_to") + + # 患者数平均 + if len(self.record.cl_patient_avg) > 0: + 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_to = :cl_patient_avg_to") + + # 患者数平均 + if len(self.record.hm_patient_avg) > 0: + 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_to = :hm_patient_avg_to") + + # 患者数延数 + if len(self.record.ge_patient_ex) > 0: + set_clauses.append("ge_patient_ex = :ge_patient_ex") + set_clauses.append("mt_patient_ex = :mt_patient_ex") + set_clauses.append("mc_patient_ex = :mc_patient_ex") + set_clauses.append("ca_patient_ex = :ca_patient_ex") + set_clauses.append("pys_patient_ex = :pys_patient_ex") + set_clauses.append("tub_patient_ex = :tub_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_from = :patient_ex_from") + set_clauses.append("patient_ex_to = :patient_ex_to") + + # 患者数延数 + if len(self.record.cl_patient_ex) > 0: + 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_to = :cl_patient_ex_to") + + # 患者数延数 + if len(self.record.hm_patient_ex) > 0: + 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_to = :hm_patient_ex_to") + + # 平均在院日数 + if len(self.record.ge_stay_avg) > 0: + set_clauses.append("ge_stay_avg = :ge_stay_avg") + set_clauses.append("mt_stay_avg = :mt_stay_avg") + set_clauses.append("mc_stay_avg = :mc_stay_avg") + set_clauses.append("ca_stay_avg = :ca_stay_avg") + set_clauses.append("pys_stay_avg = :pys_stay_avg") + set_clauses.append("tub_stay_avg = :tub_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_from = :stay_avg_from") + set_clauses.append("stay_avg_to = :stay_avg_to") + + update_columns = ",".join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += "," + update_query = self.UPDATE_QUERY.format(update_columns=update_columns) + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py new file mode 100644 index 00000000..28c072a6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py @@ -0,0 +1,106 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import \ + ComPrefcMedDisTreat + + +class ComPrefcMedDisTreatMapper(UltmarcTableMapper): + """レイアウト区分134: COM_都道府県医療機能情報(疾患治療)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_dis_treat + ( + dcf_dsf_inst_cd, + treatment_code, + pre_num, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :treatment_code, + :pre_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_dis_treat + SET + pre_num = :pre_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + + record: ComPrefcMedDisTreat + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedDisTreat) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + 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) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + if self.record.is_pre_num_not_empty: + return self.UPDATE_QUERY + else: + return None diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py new file mode 100644 index 00000000..d48059af --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py @@ -0,0 +1,107 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import \ + ComPrefcMedEqupment + + +class ComPrefcMedEqupmentMapper(UltmarcTableMapper): + """レイアウト区分133: COM_都道府県医療機能情報(施設設備)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_equpment + ( + dcf_dsf_inst_cd, + equipment_code, + bednum, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :equipment_code, + :bed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_equpment + SET + bednum = :bed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + + record: ComPrefcMedEqupment + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedEqupment) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + 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) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + # 病床数が空の場合は更新しない + if self.record.is_bed_num_not_empty: + return self.UPDATE_QUERY + else: + return None diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py new file mode 100644 index 00000000..d1883e68 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py @@ -0,0 +1,95 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sojourn_ope import ComPrefcMedSojournOpe + + +class ComPrefcMedSojournOpeMapper(UltmarcTableMapper): + """レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_sojourn_ope + ( + dcf_dsf_inst_cd, + cos_surgery_code, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :cos_surgery_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_sojourn_ope + SET + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + + record: ComPrefcMedSojournOpe + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedSojournOpe) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py new file mode 100644 index 00000000..5c5f488f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py @@ -0,0 +1,133 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import ( + UltmarcTableMapper, +) +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sp_outpat import ( + ComPrefcMedSpOutpat, +) + + +class ComPrefcMedSpOutpatMapper(UltmarcTableMapper): + """レイアウト区分136: COM_都道府県医療機能情報(専門外来)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_sp_outpat + ( + dcf_dsf_inst_cd, + specialclinic_name, + sort_key, + sectsub_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :specialclinic_name, + :sort_key, + :sectsub_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_sp_outpat + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + + record: ComPrefcMedSpOutpat + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedSpOutpat) + program_name = __name__.split(".")[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter["program_name"] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = { + **self.query_parameter, + **self.record.to_sql_parameter(), + } + + def make_query(self): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == "B" and self.record.adddel_div == "1": + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # 修正のレコードだった場合はNULLに変換する + if self.record.sectsub_cd == "@": + self.query_parameter["sectsub_cd"] = None + + # レコードの存在確認 + record_count = self.db.execute_select( + self.RECORD_EXISTS_QUERY, self.query_parameter + ) + # 存在しない場合はInsert + if record_count[0]["count_num"] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.__make_update_query() + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # ソートキー + if len(self.record.sort_key) > 0: + set_clauses.append("sort_key = :sort_key") + + # 分類補助コード + if len(self.record.sectsub_cd) > 0: + set_clauses.append("sectsub_cd = :sectsub_cd") + + update_columns = ",".join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += "," + update_query = self.UPDATE_QUERY.format(update_columns=update_columns) + return update_query diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py new file mode 100644 index 00000000..925234fb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py @@ -0,0 +1,95 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_regn_critic_pass import ComRegnCriticPass + + +class ComRegnCriticPassMapper(UltmarcTableMapper): + """レイアウト区分026: COM_地域クリティカルパス 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_regn_critic_pass + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_regn_critic_pass + ( + regn_co_critic_pass_cd, + disease_name_kanji, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :regn_co_critic_pass_cd, + :disease_name_kanji, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_regn_critic_pass + SET + disease_name_kanji = :disease_name_kanji, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_regn_critic_pass + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + record: ComRegnCriticPass + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComRegnCriticPass) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py new file mode 100644 index 00000000..e0e981b3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py @@ -0,0 +1,94 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_rehabili import ComRehabili + + +class ComRehabiliMapper(UltmarcTableMapper): + """レイアウト区分027: COM_疾患別リハビリテーション科 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_rehabili + WHERE + rehabili_cd = :rehabili_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_rehabili + ( + rehabili_cd, + rehabili_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :rehabili_cd, + :rehabili_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_rehabili + SET + rehabili_name = :rehabili_name, + update_ymd = :execute_date_str_ymd, + delete_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + rehabili_cd = :rehabili_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_rehabili + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + rehabili_cd = :rehabili_cd + """ + record: ComRehabili + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComRehabili) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py new file mode 100644 index 00000000..c1c50269 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py @@ -0,0 +1,113 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_snd_med_sphe import ComSndMedSphe + + +class ComSndMedSpheMapper(UltmarcTableMapper): + """レイアウト区分123: COM_医療圏二次医療圏 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_snd_med_sphe + ( + prefc_cd, + med_sphe_cd, + thrd_cd, + snd_med_sphe_name, + requd_bed_or_equip_target, + exist_bed_num, + exist_bed_num_regist_ymd, + plsmns_bed_num, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :prefc_cd, + :med_sphe_cd, + :thrd_cd, + :snd_med_sphe_name, + :requd_bed_or_equip_target, + :exist_bed_num, + :exist_bed_num_regist_ymd, + :plsmns_bed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_snd_med_sphe + SET + thrd_cd = :thrd_cd, + snd_med_sphe_name = :snd_med_sphe_name, + requd_bed_or_equip_target = :requd_bed_or_equip_target, + exist_bed_num = :exist_bed_num, + exist_bed_num_regist_ymd = :exist_bed_num_regist_ymd, + plsmns_bed_num = :plsmns_bed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + + record: ComSndMedSphe + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSndMedSphe) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、物理削除 + if self.record.maintflag == 'C': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sosiety_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sosiety_mapper.py new file mode 100644 index 00000000..897dc15b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sosiety_mapper.py @@ -0,0 +1,93 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_sosiety import ComSosiety + + +class ComSosietyMapper(UltmarcTableMapper): + """レイアウト区分009: COM_学会 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_sosiety + WHERE + sosiety_cd = :sosiety_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_sosiety + ( + sosiety_cd, + sosiety_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :sosiety_cd, + :sosiety_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_sosiety + SET + sosiety_name = :sosiety_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + sosiety_cd = :sosiety_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_sosiety + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + sosiety_cd = :sosiety_cd + """ + record: ComSosiety + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSosiety) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py new file mode 100644 index 00000000..3c690403 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -0,0 +1,158 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_sp_field import ComSpField + + +class ComSpFieldMapper(UltmarcTableMapper): + """レイアウト区分511: COM_専門分野 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialist_cd = :specialist_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_sp_field + ( + dcf_pcf_dr_cd, + specialist_cd, + specialist_maint_div, + specialist_flg, + specialist_publsh_ymd, + ackn_med_flg, + ackn_med_publsh_ymd, + guide_med_flg, + guide_med_publsh_ymd, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcf_pcf_dr_cd, + :specialist_cd, + :specialist_maint_div, + :specialist_flg, + :specialist_publsh_ymd, + :ackn_med_flg, + :ackn_med_publsh_ymd, + :guide_med_flg, + :guide_med_publsh_ymd, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_sp_field + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialist_cd = :specialist_cd + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialist_cd = :specialist_cd + """ + record: ComSpField + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSpField) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.specialist_maint_div == '1': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + set_clauses = [] # 設定項目 + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + + # 「@」による項目クリアを設定 + self.__set_clearing_item() + + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + if len(self.record.specialist_maint_div) > 0: + set_clauses.append('specialist_maint_div = :specialist_maint_div') + + if len(self.record.specialist_flg) > 0: + set_clauses.append('specialist_flg = :specialist_flg') + set_clauses.append('specialist_publsh_ymd = :specialist_publsh_ymd') + + if len(self.record.ackn_med_flg) > 0: + set_clauses.append('ackn_med_flg = :ackn_med_flg') + set_clauses.append('ackn_med_publsh_ymd = :ackn_med_publsh_ymd') + + if len(self.record.guide_med_flg) > 0: + set_clauses.append('guide_med_flg = :guide_med_flg') + set_clauses.append('guide_med_publsh_ymd = :guide_med_publsh_ymd') + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + 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 diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_specialist_license_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_specialist_license_mapper.py new file mode 100644 index 00000000..2d3f7934 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_specialist_license_mapper.py @@ -0,0 +1,93 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_specialist_license import ComSpecialistLicense + + +class ComSpecialistLicenseMapper(UltmarcTableMapper): + """レイアウト区分010: COM_専門医資格 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_specialist_license + WHERE + specialist_cd = :specialist_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_specialist_license + ( + specialist_cd, + specialist_license_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :specialist_cd, + :specialist_license_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_specialist_license + SET + specialist_license_name = :specialist_license_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + specialist_cd = :specialist_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_specialist_license + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + specialist_cd = :specialist_cd + """ + record: ComSpecialistLicense + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSpecialistLicense) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py new file mode 100644 index 00000000..a51eb4be --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py @@ -0,0 +1,98 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_thrd_med import ComThrdMed + + +class ComThrdMedMapper(UltmarcTableMapper): + """レイアウト区分122: COM_医療圏3次マスタ 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_thrd_med + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_thrd_med + ( + prefcode, + thrd_cd, + thrd_med_sphe_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :pref_code, + :thrd_cd, + :thrd_med_sphe_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_thrd_med + SET + thrd_med_sphe_name = :thrd_med_sphe_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_thrd_med + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + + record: ComThrdMed + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComThrdMed) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、物理削除 + if self.record.maintflag == 'C': + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合はUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py new file mode 100644 index 00000000..b8d1dd52 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py @@ -0,0 +1,99 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_trt_course import ComTrtCourse + + +class ComTrtCourseMapper(UltmarcTableMapper): + """レイアウト区分001: COM_診療科目 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_trt_course + WHERE + trt_course_cd = :trt_course_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_trt_course + ( + trt_course_cd, + trt_course_name_kana, + trt_course_name_abb, + trt_course_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :trt_course_cd, + :trt_course_name_kana, + :trt_course_name_abb, + :trt_course_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_trt_course + SET + trt_course_name_kana = :trt_course_name_kana, + trt_course_name_abb = :trt_course_name_abb, + trt_course_name = :trt_course_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + trt_course_cd = :trt_course_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_trt_course + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + trt_course_cd = :trt_course_cd + """ + record: ComTrtCourse + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComTrtCourse) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/mst_prefc_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/mst_prefc_mapper.py new file mode 100644 index 00000000..299d0556 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/mst_prefc_mapper.py @@ -0,0 +1,96 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.mst_prefc import MstPrefc + + +class MstPrefcMapper(UltmarcTableMapper): + """レイアウト区分006: 都道府県マスタ 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.mst_prefc + WHERE + prefc_cd = :prefc_cd + """ + + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.mst_prefc + ( + prefc_cd, + prefc_name, + prefc_name_kana, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :prefc_cd, + :prefc_name, + '', + '0', + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.mst_prefc + SET + prefc_name = :prefc_name, + delete_flg = '0', + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.mst_prefc + SET + delete_flg = '1', + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + """ + record: MstPrefc + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, MstPrefc) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + return self.INSERT_QUERY + + # 存在する場合ではUpdate + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/null_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/null_mapper.py new file mode 100644 index 00000000..9b5d93a1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/concrete/null_mapper.py @@ -0,0 +1,8 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper + + +class NullMapper(UltmarcTableMapper): + + def make_query(self): + return super().make_query() diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/ultmarc_table_mapper.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/ultmarc_table_mapper.py new file mode 100644 index 00000000..7aa1f311 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/table_mapper/ultmarc_table_mapper.py @@ -0,0 +1,50 @@ +from abc import ABCMeta, abstractmethod +from datetime import datetime + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable +from src.db.database import Database + +# 処理日を使用するために、configを使用 +batch_context = BatchContext.get_instance() + + +class UltmarcTableMapper(metaclass=ABCMeta): + """アルトマークテーブルへの登録処理の抽象クラス""" + + record: UltmarcTable + db: Database + queries: list[str] + query_parameter: dict + + def __init__(self, record: list[str], db: Database, table_class: type[UltmarcTable]) -> None: + self.record = table_class(record) + self.db = db + + # 実行年月日(文字列)、実行年月日時分秒を設定 + now = datetime.now() + execute_date_str_ymd = now.strftime('%Y%m%d') + execute_datetime = now.strftime('%Y/%m/%d %H:%M:%S') + # クエリリストを初期化 + self.queries = [] + # 共通クエリパラメータを設定 + self.query_parameter = { + 'execute_date_str_ymd': execute_date_str_ymd, + 'execute_datetime': execute_datetime, + # バッチ共通設定から処理日を取得 + 'syor_date': batch_context.syor_date + } + + @abstractmethod + def make_query(self): + pass + + def execute_queries(self): + if len(self.queries) == 0: + raise Exception('make_queryを呼び出してから実行してください') + + for query in self.queries: + if query is None: + continue + + self.db.execute(query, self.query_parameter) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/__init__.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma.py new file mode 100644 index 00000000..80940b09 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComAlma(UltmarcTable): + """レイアウト区分004: COM_出身校""" + maint_flag: str # 修正区分 + alma_cd: str # 出身校コード + alma: str # 出身校 + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.alma_cd = record[1] + self.alma = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py new file mode 100644 index 00000000..ae508b35 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py @@ -0,0 +1,20 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComAlmaDepartDisc(UltmarcTable): + """レイアウト区分003: COM_出身校学部識別""" + alma_cd: str # 出身校コード + depart_disc_cd: str # 学部識別コード + estab_e: str # 創立元号 + estab_y: str # 創立年 + alma_name: str # 出身校名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.alma_cd = record[1] + self.depart_disc_cd = record[2] + self.maint_flag = record[3] + self.alma_name = record[6] + self.estab_e = record[7] + self.estab_y = record[8] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_blng_sec.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_blng_sec.py new file mode 100644 index 00000000..20395f9f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_blng_sec.py @@ -0,0 +1,22 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComBlngSec(UltmarcTable): + """レイアウト区分008: COM_所属部科""" + blng_sec_cd: str # 所属部科コード + blng_sec_kana: str # 所属部科カナ + blng_sec_name: str # 所属部科名 + inst_category: str # 分類補助コード(施設分類) + trt_category: str # 分類補助コード(診療分野分類) + category_sort: str # 分類補助コード(ソートコード) + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.blng_sec_cd = record[1] + self.maint_flag = record[2] + self.blng_sec_name = record[5] + self.blng_sec_kana = record[6] + self.inst_category = record[7] + self.trt_category = record[8] + self.category_sort = record[9] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py new file mode 100644 index 00000000..886b9dad --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py @@ -0,0 +1,36 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComCopHp(UltmarcTable): + """レイアウト区分112: COM_臨床研修病院""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + cophp_id: str # 協力型病院コード(ID) + cophp_code: str # 協力型病院コード(コード) + cophp_yobi: str # 協力型病院コード(予備) + open_year: str # 開始年度 + sort_key: str # ソートキー + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + cophp_code: str # 協力型病院コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3] + self.maint_flag = record[4] + self.cophp_id = record[5] + self.cophp_code = record[6] + self.cophp_yobi = record[7] + self.open_year = record[8] + self.adddel_div = record[9] + self.sort_key = record[12] + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) + # 協力型病院コード + self.cophp_code = ''.join([self.cophp_id, self.cophp_code, self.cophp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr.py new file mode 100644 index 00000000..6023d6f5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -0,0 +1,183 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComDr(UltmarcTable): + """レイアウト区分501: COM_医師""" + dcfdr_id: str # 個人コード(レコードID) + dcfdr_code: str # 個人コード(個人コード) + dcfd_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + drdel_code: str # 削除予定理由 + reptdr_id: str # 重複時相手先コード(レコードID) + reptdr_code: str # 重複時相手先コード(個人コード) + reptdr_yobi: str # 重複時相手先コード(予備) + dr_name: str # 医師名(漢字) + dr_name_kana: str # 医師名(カナ) + sex_code: str # 性別 + birthday_era: str # 生年月日(元号) + birthday_year: str # 生年月日(年) + birthday_month: str # 生年月日(月) + birthday_day: str # 生年月日(日) + home_town_code: str # 出身都道府県コード + medassoci_code: str # 医師会コード + grad_yearera: str # 卒年_元号 + grad_year: str # 卒年_年 + graduniv_code: str # 出身校コード + graduniv_dept_code: str # 出身校学部識別コード + drda_yera: str # 登録年_元号 + drday_year: str # 登録年_年 + medsbj_code1: str # 診療科目1 + medsbj_code2: str # 診療科目2 + medsbj_code3: str # 診療科目3 + medsbj_code4: str # 診療科目4 + medsbj_code5: str # 診療科目5 + dr_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + dr_zip_code: str # 郵便番号 + dr_addr: str # 自宅住所(漢字) + dr_addr_kana: str # 自宅住所(カナ) + dr_addr_num: str # 住所表示番号 + dr_addr_kanj_cnt1: str # 住所カウント_漢字(県) + dr_addr_kanj_cnt2: str # 住所カウント_漢字(市区町村) + dr_addr_kanj_cnt3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanj_cnt4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana_cnt1: str # 住所カウント_カナ(県) + dr_addr_kana_cnt2: str # 住所カウント_カナ(市区町村) + dr_addr_kana_cnt3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana_cnt4: str # 住所カウント_カナ(字・丁目) + dr_tel: str # 自宅電話番号 + use_stop_flag: str # 利用停止区分 + use_stopc_ode: str # 利用停止理由 + cre_stop_date: str # 利用停止登録年月日 + release_date: str # 利用停止解除年月日 + pract_class_code: str # 開勤区分 + pract_yearera: str # 開業年(元号) + pract_year: str # 開業年(年) + bskregst_flag: str # 一括登録フラグ + + dcf_pcf_dr_cd: str # DCFPCF医師コード + addr_village_cd: str # 住所(町字)コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + opp_dup_code: str # 相手先重複コード + + birth_day: str # 生年月日(西暦) + estab_y: str # 開業年(西暦) + grad_y: str # 卒業年(西暦) + drday_y: str # 登録年(西暦) + + era_cd: str # 元号コード + + # 住所(集合項目) + address_aggregation_items: list + + # 診療科目(集合項目) + medsbj_code_items: list + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfdr_id = record[1] + self.dcfdr_code = record[2] + self.dcfd_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.drdel_code = record[7].strip() + self.reptdr_id = record[8].strip() + self.reptdr_code = record[9].strip() + self.reptdr_yobi = record[10].strip() + self.dr_name = record[11].strip() + self.dr_name_kana = record[12].strip() + self.sex_code = record[13].strip() + self.birthday_era = record[14].strip() + self.birthday_year = record[15].strip() + self.birthday_month = record[16].strip() + self.birthday_day = record[17].strip() + self.home_town_code = record[18].strip() + self.medassoci_code = record[19].strip() + self.grad_yearera = record[20].strip() + self.grad_year = record[21].strip() + self.graduniv_code = record[22].strip() + self.graduniv_dept_code = record[23].strip() + self.drda_yera = record[24].strip() + self.drday_year = record[25].strip() + self.medsbj_code1 = record[26].strip() + self.medsbj_code2 = record[27].strip() + self.medsbj_code3 = record[28].strip() + self.medsbj_code4 = record[29].strip() + self.medsbj_code5 = record[30].strip() + self.dr_addr_lost_code = record[31].strip() + self.pref_code = record[32].strip() + self.city_code = record[33].strip() + self.addr_code1 = record[34].strip() + self.addr_code2 = record[35].strip() + self.dr_zip_code = record[36].strip() + self.dr_addr = record[37].strip() + self.dr_addr_kana = record[38].strip() + self.dr_addr_num = record[39] + self.dr_addr_kanj_cnt1 = record[40] + self.dr_addr_kanj_cnt2 = record[41] + self.dr_addr_kanj_cnt3 = record[42] + self.dr_addr_kanj_cnt4 = record[43] + self.dr_addr_kana_cnt1 = record[44] + self.dr_addr_kana_cnt2 = record[45] + self.dr_addr_kana_cnt3 = record[46] + self.dr_addr_kana_cnt4 = record[47] + self.dr_tel = record[48].strip() + self.use_stop_flag = record[49].strip() + self.use_stopc_ode = record[50].strip() + self.cre_stop_date = record[51].strip() + self.release_date = record[52].strip() + self.pract_class_code = record[53].strip() + self.pract_yearera = record[54].strip() + self.pract_year = record[55].strip() + self.bskregst_flag = record[56].strip() + + # DCFPCF医師コード + self.dcf_pcf_dr_cd = ''.join([self.dcfdr_id, self.dcfdr_code, self.dcfd_yobi]) + # 住所(町字)コード + self.addr_village_cd = ''.join([self.pref_code, self.city_code, self.addr_code1, self.addr_code2]) + # 住所カウントカナ + self.addr_cnt_kana = ''.join([self.dr_addr_kana_cnt1.zfill(2), self.dr_addr_kana_cnt2.zfill(2), self.dr_addr_kana_cnt3.zfill(2), self.dr_addr_kana_cnt4.zfill(2)]) + # 住所カウント + self.addr_cnt = ''.join([self.dr_addr_kanj_cnt1.zfill(2), self.dr_addr_kanj_cnt2.zfill(2), self.dr_addr_kanj_cnt3.zfill(2), self.dr_addr_kanj_cnt4.zfill(2)]) + # 相手先重複コード + self.opp_dup_code = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) + + self.birth_day = '' # 生年月日(西暦) + self.estab_y = '' # 開業年(西暦) + self.grad_y = '' # 卒業年(西暦) + self.drday_y = '' # 登録年(西暦) + self.era_cd = '' # 元号コード + + # 住所(集合項目) + self.address_aggregation_items = [ + self.pref_code, + self.city_code, + self.addr_code1, + self.addr_code2, + self.dr_zip_code, + self.dr_addr_kana, + self.dr_addr_num, + self.dr_addr_kanj_cnt1, + self.dr_addr_kanj_cnt2, + self.dr_addr_kanj_cnt3, + self.dr_addr_kanj_cnt4, + self.dr_addr_kana_cnt1, + self.dr_addr_kana_cnt2, + self.dr_addr_kana_cnt3, + self.dr_addr_kana_cnt4 + ] + + # 診療科目(集合項目) + self.medsbj_code_items = [ + self.medsbj_code1, + self.medsbj_code2, + self.medsbj_code3, + self.medsbj_code4, + self.medsbj_code5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py new file mode 100644 index 00000000..c2e44d8e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py @@ -0,0 +1,28 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComDrSosiety(UltmarcTable): + """レイアウト区分521: COM_所属学会""" + dcf_dr_id: str # レコードID + dcf_dr_code: str # 個人コード + dcf_dr_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + sosiety_cd: str # 学会コード + cont_flag: str # 予備/所属学会メンテ区分 + sosiety_f: str # 学会年度 + dcf_pcf_dr_cd: str # DCFPCF医師コード + +# メンテナンス年月日 と 予備/転送年月日 は未使用 + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcf_dr_id = record[1] + self.dcf_dr_code = record[2] + self.dcf_dr_yobi = record[3].strip() + self.maint_flag = record[4] + self.sosiety_cd = record[5] + self.cont_flag = record[6] + self.sosiety_f = record[9] + + # DCFPCF医師コード(レコードID + 個人コード + 個人コード(予備)) + self.dcf_pcf_dr_cd = ''.join([self.dcf_dr_id, self.dcf_dr_code, self.dcf_dr_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py new file mode 100644 index 00000000..421357b9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py @@ -0,0 +1,49 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComDrWrkplace(UltmarcTable): + """レイアウト区分502 :COM_医師勤務先""" + maint_flag: str # 修正区分 + dcfdr_id: str # 個人コード(ID) + dcfdr_code: str # 個人コード(個人コード) + dcfdr_yobi: str # 個人コード(予備) + hp_id: str # 施設コード(ID) + hp_code: str # 施設コード(施設コード) + hp_yobi: str # 施設コード(予備) + drretflag: str # 予備/退職異動区分 + maintdate: str # メンテナンス年月日 + trndate: str # 予備/転送年月日 + postcode: str # 役職コード + identitycode: str # 大学職位 + sectcode: str # 所属部科コード + sectname: str # 所属部科(漢字) + sectname_kana: str # 所属部科(カナ) + notdm_flg: str # DM不可フラグ + full_dcfdr_code: str # 個人ID+個人コード+個人コード予備 + full_hp_code: str # 施設ID+施設コード+施設コード予備 + + def __init__(self, record: list[str]): + super().__init__(record) + self.maintflag = record[4] + self.dcfdr_id = record[1] + self.dcfdr_code = record[2] + self.dcfdr_yobi = record[3].strip() + self.hp_id = record[5] + self.hp_code = record[6] + self.hp_yobi = record[7].strip() + self.drretflag = record[8] + self.maintdate = record[9] + self.trndate = record[10] + self.postcode = record[11].strip() + self.identitycode = record[12].strip() + + # 所属部科の集合項目 + self.sectcode = record[13].strip() + self.sectname = record[14].strip() + self.sectname_kana = record[15].strip() + + self.notdm_flg = record[16].strip() + + # ID、コード、予備を結合してフル桁コードに変換 + self.full_dcfdr_code = ''.join([self.dcfdr_id, self.dcfdr_code, self.dcfdr_yobi]) + self.full_hp_code = ''.join([self.hp_id, self.hp_code, self.hp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py new file mode 100644 index 00000000..a7559d0e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComForfrontMedEquip(UltmarcTable): + """レイアウト区分022: COM_先端医療機器""" + hi_medicmach_code: str # 先進医療機器コード + hi_medicmach_name: str # 先端医療機器名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.hi_medicmach_code = record[1] + self.hi_medicmach_name = record[5] + self.maint_flag = record[2] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hamtec.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hamtec.py new file mode 100644 index 00000000..0eb5ab1c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hamtec.py @@ -0,0 +1,16 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComHamtec(UltmarcTable): + """レイアウト区分021: COM_高度先進医療""" + maint_flag: str # 修正区分 + hamtec_cd: str # 高度先進医療コード + hamtec_div: str # 高度先進医療区分 + hamtec_name: str # 高度先進医療名 + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[3] + self.hamtec_cd = record[1] + self.hamtec_div = record[2] + self.hamtec_name = record[6] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py new file mode 100644 index 00000000..e47e6513 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComHpAssrt(UltmarcTable): + """レイアウト区分002: 病院種別""" + hp_assrt_cd: str # 病院種別コード + hp_assrt_name: str # 病院種別名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.hp_assrt_cd = record[1] + self.maint_flag = record[2] + self.hp_assrt_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst.py new file mode 100644 index 00000000..167480d2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -0,0 +1,230 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInst(UltmarcTable): + """レイアウト区分101: COM_施設""" + dcfhp_id: str # 施設コード(レコードID) + dcfhp_code: str # 施設コード(施設コード) + dcfh_yobi: str # 施設コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + uncheck_flag: str # 未確認フラグ + hpdel_code: str # 削除予定理由 + duphp_id: str # 重複時相手先コード(レコードID) + duphp_code: str # 重複時相手先コード(施設コード) + duphp_yobi: str # 重複時相手先コード(予備) + hp_name: str # 正式施設名(漢字) + hp_name_kana: str # 正式施設名(カナ) + hp_ryaku_name: str # 略式施設名(漢字) + hp_ryaku_name_kana: str # 略式施設名(カナ) + hp_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + hp_zip_code: str # 郵便番号 + hp_addr: str # 住所(漢字) + hp_addr_kana: str # 住所(カナ) + hp_addr_number: str # 住所表示番号 + dr_addr_kanji1: str # 住所カウント_漢字(県) + dr_addr_kanji2: str # 住所カウント_漢字(市区町村) + dr_addr_kanji3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanji4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana1: str # 住所カウント_カナ(県) + dr_addr_kana2: str # 住所カウント_カナ(市区町村) + dr_addr_kana3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana4: str # 住所カウント_カナ(字・丁目) + tel_nothing_flag: str # 電話番号なしフラグ + hp_tel: str # 電話番号 + mgt_class_code: str # 経営体 + hp_class_code: str # 施設区分 + president_id: str # 代表者コード(レコードID) + president_code: str # 代表者コード(個人コード) + president_yobi: str # 代表者コード(予備) + president: str # 代表者(漢字) + president_kana: str # 代表者(カナ) + open_flag: str # 開業予定フラグ + open_year_month: str # 開業予定年月 + close_flag: str # 休院フラグ + close_year_month: str # 休院開始年月 + medsbj_code: list # 診療科目1~60 + hp_kind_code: str # 病院種別 + reexam_flag: str # 再審査区分 + assoc_parrent_id: str # 関連大学親コード(レコードID) + assoc_parrent_code: str # 関連大学親コード(施設コード) + assoc_parrent_yobi: str # 関連大学親コード(予備) + close_flag2: str # 病棟閉鎖フラグ + bed_num: str # 病床数(定員) + bed_class_maint_date: str # 許可病床メンテ日付 + bed_num_sum: str # 許可病床数_合計 + bed_num_psy: str # 許可病床数_精神 + bed_num_tub: str # 許可病床数_結核 + bed_num_epi: str # 許可病床数_感染症 + bed_num_gen: str # 許可病床数_その他 + bed_num_gen2: str # 許可病床数_一般病床 + bed_num_rest: str # 許可病床数_療養病床 + inspect_code1: str # 検査項目_微生物 + inspect_code2: str # 検査項目_血清 + inspect_code3: str # 検査項目_血液 + inspect_code4: str # 検査項目_病理 + inspect_code5: str # 検査項目_寄生虫 + inspect_code6: str # 検査項目_生化 + inspect_code7: str # 検査項目_RI + dcfhp_92id: str # 特養医務室コード(レコードID) + dcfhp_92code: str # 特養医務室コード(施設コード) + dcfhp_92yobi: str # 特養医務室コード(予備) + + dcfdsf_inst_code: str # DCFDSF施設コード + univ_prnt_code: str # 関連大学親コード + inst_repre_code: str # 施設代表者コード + village_code: str # 町字コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + dup_opp_code: str # 重複時相手先コード + dcf_prnt_inst_code: str # DCF親施設コード + + prmit_bed: list # 許可ベッド(集合項目) + insp_item: list # 検査項目(集合項目) + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfh_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.uncheck_flag = record[7].strip() + self.hpdel_code = record[8].strip() + self.duphp_id = record[9] + self.duphp_code = record[10].strip() + self.duphp_yobi = record[11].strip() + self.hp_name = record[12].strip() + self.hp_name_kana = record[13].strip() + self.hp_ryaku_name = record[14].strip() + self.hp_ryaku_name_kana = record[15].strip() + self.hp_addr_lost_code = record[16].strip() + self.pref_code = record[17].strip() + self.city_code = record[18].strip() + self.addr_code1 = record[19].strip() + self.addr_code2 = record[20].strip() + self.hp_zip_code = record[21].strip() + self.hp_addr = record[22] + self.hp_addr_kana = record[23] + self.hp_addr_number = record[24] + self.dr_addr_kanji1 = record[25].strip() + self.dr_addr_kanji2 = record[26].strip() + self.dr_addr_kanji3 = record[27].strip() + self.dr_addr_kanji4 = record[28].strip() + self.dr_addr_kana1 = record[29].strip() + self.dr_addr_kana2 = record[30].strip() + self.dr_addr_kana3 = record[31].strip() + self.dr_addr_kana4 = record[32].strip() + self.tel_nothing_flag = record[33].strip() + self.hp_tel = record[34].strip() + self.mgt_class_code = record[35].strip() + self.hp_class_code = record[36].strip() + self.president_id = record[37] + self.president_code = record[38].strip() + self.president_yobi = record[39] + self.president = record[40].strip() + self.president_kana = record[41].strip() + self.open_flag = record[42].strip() + self.open_year_month = record[43].strip() + self.close_flag = record[44].strip() + self.close_year_month = record[45].strip() + + # 診療科目1~60(csvカラム番号 46 ~ 105) + # rangeの第2引数の数字はループに含まれないため、+1を指定する + self.medsbj_code = [] + for i in range(46, 106): + self.medsbj_code.append(str(record[i])) + + self.hp_kind_code = record[106].strip() + self.reexam_flag = record[107].strip() + self.assoc_parrent_id = record[108].strip() + self.assoc_parrent_code = record[109].strip() + self.assoc_parrent_yobi = record[110].strip() + self.close_flag2 = record[111].strip() + self.bed_num = record[112].strip() + self.bed_class_maint_date = record[113].strip() + self.bed_num_sum = record[114].strip() + self.bed_num_psy = record[115].strip() + self.bed_num_tub = record[116].strip() + self.bed_num_epi = record[117].strip() + self.bed_num_gen = record[118].strip() + self.bed_num_gen2 = record[119].strip() + self.bed_num_rest = record[120].strip() + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.bed_num = self.bed_num if len(self.bed_num) > 0 else None + self.bed_num_sum = self.bed_num_sum if len(self.bed_num_sum) > 0 else None + self.bed_num_psy = self.bed_num_psy if len(self.bed_num_psy) > 0 else None + self.bed_num_tub = self.bed_num_tub if len(self.bed_num_tub) > 0 else None + self.bed_num_epi = self.bed_num_epi if len(self.bed_num_epi) > 0 else None + self.bed_num_gen = self.bed_num_gen if len(self.bed_num_gen) > 0 else None + self.bed_num_gen2 = self.bed_num_gen2 if len(self.bed_num_gen2) > 0 else None + self.bed_num_rest = self.bed_num_rest if len(self.bed_num_rest) > 0 else None + + self.inspect_code1 = record[121].strip() + self.inspect_code2 = record[122].strip() + self.inspect_code3 = record[123].strip() + self.inspect_code4 = record[124].strip() + self.inspect_code5 = record[125].strip() + self.inspect_code6 = record[126].strip() + self.inspect_code7 = record[127].strip() + self.dcfhp_92id = record[128].strip() + self.dcfhp_92code = record[129].strip() + self.dcfhp_92yobi = record[130].strip() + + # 住所カウント_漢字の0埋め + self.dr_addr_kanji1 = self.dr_addr_kanji1.zfill(2) + self.dr_addr_kanji2 = self.dr_addr_kanji2.zfill(2) + self.dr_addr_kanji3 = self.dr_addr_kanji3.zfill(2) + self.dr_addr_kanji4 = self.dr_addr_kanji4.zfill(2) + + # 住所カウント_カナの0埋め + self.dr_addr_kana1 = self.dr_addr_kana1.zfill(2) + self.dr_addr_kana2 = self.dr_addr_kana2.zfill(2) + self.dr_addr_kana3 = self.dr_addr_kana3.zfill(2) + self.dr_addr_kana4 = self.dr_addr_kana4.zfill(2) + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfh_yobi + # 関連大学親コード + self.univ_prnt_code = self.assoc_parrent_id + self.assoc_parrent_code + self.assoc_parrent_yobi + # 施設代表者コード + self.inst_repre_code = self.president_id + self.president_code + self.president_yobi + # 町字コード + self.village_code = self.pref_code + self.city_code + self.addr_code1 + self.addr_code2 + # 住所カウントカナ + self.addr_cnt_kana = self.dr_addr_kana1 + self.dr_addr_kana2 + self.dr_addr_kana3 + self.dr_addr_kana4 + # 住所カウント + self.addr_cnt = self.dr_addr_kanji1 + self.dr_addr_kanji2 + self.dr_addr_kanji3 + self.dr_addr_kanji4 + # 重複時相手先コード + self.dup_opp_code = self.duphp_id + self.duphp_code + self.duphp_yobi + # DCF親施設コード + self.dcf_prnt_inst_code = self.dcfhp_92id + self.dcfhp_92code + self.dcfhp_92yobi + + # 許可ベッド(集合項目) + self.prmit_bed = [ + self.bed_num_sum, + self.bed_num_psy, + self.bed_num_tub, + self.bed_num_epi, + self.bed_num_gen, + self.bed_num_gen2, + self.bed_num_rest + ] + + # 検査項目(集合項目) + self.insp_item = [ + self.inspect_code1, + self.inspect_code2, + self.inspect_code3, + self.inspect_code4, + self.inspect_code5, + self.inspect_code6, + self.inspect_code7 + ] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py new file mode 100644 index 00000000..695b247f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py @@ -0,0 +1,703 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInstAtt(UltmarcTable): + """レイアウト区分111: COM_施設属性""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備)10/8asa + dpc_flag: str # DPC対象病院フラグ + dpc_spec_day: str # DPC対象病院指定年月日 + dpc_cancel_day: str # DPC対象病院取消年月日 + predpc_flag: str # DPC準備病院フラグ + predpc_spec_day: str # DPC準備病院承認年 + predpc_cancel_day: str # DPC準備病院取消年月日 + cancer_flag: str # がん診療連携拠点病院フラグ + cancer_spec_day: str # がん診療連携拠点病院指定年月日 + cancer_cancel_day: str # がん診療連携拠点病院取消年月日 + funchp_flag: str # 特定機能病院フラグ + funchp_ok_date: str # 特定機能病院承認年月日 + funchp_can_date: str # 特定機能病院取消年月日 + areasuphp_flag: str # 地域医療支援病院フラグ + areasuphp_intrate: str # 地域医療支援病院紹介率 + areasuphp_ok_date: str # 地域医療支援病院承認年月日 + areasuphp_can_date: str # 地域医療支援病院取消年月日 + acuthp_add_flag: str # 超急性期脳卒中加算フラグ + acuthp_add_ok_date: str # 超急性期脳卒中加算承認年月日 + acuthp_add_can_date: str # 超急性期脳卒中加算取消年月日 + genadmisiion_flag: str # 総合入院体制加算フラグ + genadmisiion_ok_date: str # 総合入院体制加算承認年月日 + genadmisiion_can_date: str # 総合入院体制加算取消年月日 + assistance_flag: str # 医師事務作業補助体制加算フラグ + assistance_ok_date: str # 医師事務作業補助体制加算承認年月日 + assistance_can_date: str # 医師事務作業補助体制加算取消年月日 + diagnosis_treatment_flag: str # 診療録管理体制加算フラグ + diagnosis_treatment_spec_day: str # 診療録管理体制加算承認年月日 + diagnosis_treatment_cancel_day: str # 診療録管理体制加算取消年月日 + safety_flag: str # 医療安全対策加算フラグ + safety_spec_day: str # 医療安全対策加算承認年月日 + safety_cancel_day: str # 医療安全対策加算取消年月日 + highrisk_flag: str # 褥瘡ハイリスク患者ケア加算フラグ + highrisk_spec_day: str # 褥瘡ハイリスク患者ケア加算承認年月日 + highrisk_cancel_day: str # 褥瘡ハイリスク患者ケア加算取消年月日 + infant_and_holiday_flag: str # 地域連携小児夜間・休日診療料フラグ + infant_and_holiday_spec_day: str # 地域連携小児夜間・休日診療料承認 + infant_and_holiday_cancel_day: str # 地域連携小児夜間・休日診療料取消 + ophp_flag: str # 開放型病院フラグ + ophpok_date: str # 開放型病院承認年月日 + ophpcan_date: str # 開放型病院取消年月日 + critical_flag: str # 地域連携クリティカルパスフラグ + critical_code01: str # 地域連携クリティカルパスコード1 + critical_code02: str # 地域連携クリティカルパスコード2 + critical_code03: str # 地域連携クリティカルパスコード3 + critical_code04: str # 地域連携クリティカルパスコード4 + critical_code05: str # 地域連携クリティカルパスコード5 + critical_code06: str # 地域連携クリティカルパスコード6 + critical_code07: str # 地域連携クリティカルパスコード7 + critical_code08: str # 地域連携クリティカルパスコード8 + critical_code09: str # 地域連携クリティカルパスコード9 + critical_code10: str # 地域連携クリティカルパスコード10 + critical_code11: str # 地域連携クリティカルパスコード11 + critical_code12: str # 地域連携クリティカルパスコード12 + critical_code13: str # 地域連携クリティカルパスコード13 + critical_code14: str # 地域連携クリティカルパスコード14 + critical_code15: str # 地域連携クリティカルパスコード15 + critical_code16: str # 地域連携クリティカルパスコード16 + critical_code17: str # 地域連携クリティカルパスコード17 + critical_code18: str # 地域連携クリティカルパスコード18 + critical_code19: str # 地域連携クリティカルパスコード19 + critical_code20: str # 地域連携クリティカルパスコード20 + drgmgthp_flag: str # 薬剤管理指導料フラグ + drgmgthp_ok_date: str # 薬剤管理指導料承認年月日 + drgmgthp_can_date: str # 薬剤管理指導料取消年月日 + image_diagnosis_flag: str # 画像診断管理加算フラグ + image_diagnosis_specified_day: str # 画像診断管理加算承認年月日 + image_diagnosis_cancel_day: str # 画像診断管理加算取消年月日 + chemotherapy_flag: str # 外来化学療法加算フラグ + chemotherapy_spec_day: str # 外来化学療法加算承認年月日 + chemotherapy_cancel_day: str # 外来化学療法加算取消年月日 + rehabilitation_flag: str # 疾患別リハビリテーション料フラグ + rehabilitation_code01: str # 疾患別リハビリテーション料コード1 + rehabilitation_code02: str # 疾患別リハビリテーション料コード2 + rehabilitation_code03: str # 疾患別リハビリテーション料コード3 + rehabilitation_code04: str # 疾患別リハビリテーション料コード4 + rehabilitation_code05: str # 疾患別リハビリテーション料コード5 + rehabilitation_code06: str # 疾患別リハビリテーション料コード6 + rehabilitation_code07: str # 疾患別リハビリテーション料コード7 + rehabilitation_code08: str # 疾患別リハビリテーション料コード8 + rehabilitation_code09: str # 疾患別リハビリテーション料コード9 + rehabilitation_code10: str # 疾患別リハビリテーション料コード10 + anesthetizing_manage_flag: str # 麻酔管理料フラグ + anesthetizing_manage_spec_day: str # 麻酔管理料承認年月日 + anesthetizing_manage_can_day: str # 麻酔管理料取消年月日 + home_recuperation_flag: str # 在宅療養支援病院・診療所フラグ + home_recuperation_spec_day: str # 在宅療養支援病院・診療所承認年月 + home_recuperation_cancel_day: str # 在宅療養支援病院・診療所取消年月 + synthesis_when_staying_flag: str # 在宅時医学総合管理料フラグ + synthesis_when_staying_spec_day: str # 在宅時医学総合管理料承認年月日 + synthesis_when_staying_can_day: str # 在宅時医学総合管理料取消年月日 + home_late_flag: str # 在宅末期医療総合診療料フラグ + home_late_ok_day: str # 在宅末期医療総合診療料承認年月日 + home_late_can_day: str # 在宅末期医療総合診療料取消年月日 + caremix_kind: str # ケアミックス区分 + fullmove_flag: str # 完全型・移行型区分 + resthp_flag: str # 療養型病床群フラグ + resthp_care_kind: str # 療養型病床群_医療型(看護種別) + resthp_bed_num: str # 療養型病床群_医療型(病床数) + resthp_ok_date: str # 療養型病床群_医療型(承認年月日) + resthp_can_date: str # 療養型病床群_医療型(取消年月日) + resthp_care_nrs_kind: str # 療養型病床群_介護型(看護種別) + resthp_care_bed_num: str # 療養型病床群_介護型(病床数) + resthp_care_ok_date: str # 療養型病床群_介護型(承認年月日) + resthp_care_can_date: str # 療養型病床群_介護型(取消年月日) + resthp_sbed_num: str # 療養型病床群_稼動数合計(病床数) + nrmhp_flag: str # 一般病棟フラグ + nrmhp_care_kind: str # 一般病棟看護種別 + nrmhp_bed_total_num: str # 一般病棟病床数 + menthp_flag: str # 精神病棟フラグ + menthp_care_kind: str # 精神病棟看護種別 + menthp_bed_num: str # 精神病棟病床数 + tubhp_flag: str # 結核病棟フラグ + tubhp_care_kind: str # 結核病棟看護種別 + tubhp_bed_num: str # 結核病棟病床数 + infhp_flag: str # 感染症特定 + infhp_flag1: str # 感染症1種 + infhp_flag2: str # 感染症2種 + infhp_bed_flag: str # 感染症病床フラグ + infhp_bed_num: str # 感染症病床病床数 + hospice_flag: str # 緩和ケア病棟設置病院フラグ + hospice_bed_num: str # 緩和ケア病棟設置病院病床数 + hospice_ok_date: str # 緩和ケア病棟設置病院承認年月日 + hospice_can_date: str # 緩和ケア病棟設置病院取消年月日 + hpfunce_st_flag: str # 医療機能評価フラグ + hpfunce_st_kind: str # 医療機能評価種別 + hpfunce_st_ok_date: str # 医療機能評価承認年月日 + hpfunce_st_can_date: str # 医療機能評価取消年月日 + clolyhp_kind: str # 臨床研修指定病院_基幹型病院1フラグ + clolyhp_ok_date: str # 臨床研修指定病院_基幹型病院1承認年月日 + clolyhp_can_date: str # 臨床研修指定病院_基幹型病院1取消年月日 + clhp_kind: str # 臨床研修指定病院_基幹型病院2(群指定)フラグ + clhp_ok_date: str # 臨床研修指定病院_基幹型病院2(群指定)承認 + clhp_can_date: str # 臨床研修指定病院_基幹型病院2(群指定)取消 + cldephp_kind: str # 臨床研修指定病院_協力型病院(群指定)フラグ + cldephp_ok_date: str # 臨床研修指定病院_協力型病院(群指定)承認年 + cldephp_can_date: str # 臨床研修指定病院_協力型病院(群指定)取消年 + disasthp_flag: str # 災害拠点病院 + d1emerhp_flag: str # 救急医療救急告示 + d2emerhp_flag: str # 救急医療2次救急 + d3emerhp_flag: str # 救急医療3次救急 + emergency_clinic: str # 救急告示診療所 + trial_core_flag: str # 治験中核病院フラグ + trial_core_div: str # 治験中核病院区分 + trial_core_ok_date: str # 治験中核病院承認年月日 + trial_core_can_date: str # 治験中核病院取消年月日 + dementia_flag: str # 認知症疾患医療センターフラグ + dementia_okd_ate: str # 認知症疾患医療センター承認年月日 + dementia_can_date: str # 認知症疾患医療センター取消年月日 + sphealth_exploration: str # 特定健康診査実施機 + sphealth_guidance: str # 特定保健指導実施機 + hiadhp_flag: str # 先端医療・高度医療技術実施医療機関フラグ + hiadhpcode1: str # 先端医療・高度医療技術実施医療機関1(コード) + hiadhpkind1: str # 先端医療・高度医療技術実施医療機関1(区分) + hiadhpcode2: str # 先端医療・高度医療技術実施医療機関2(コード) + hiadhpkind2: str # 先端医療・高度医療技術実施医療機関2(区分) + hiadhpcode3: str # 先端医療・高度医療技術実施医療機関3(コード) + hiadhpkind3: str # 先端医療・高度医療技術実施医療機関3(区分) + hiadhpcode4: str # 先端医療・高度医療技術実施医療機関4(コード) + hiadhpkind4: str # 先端医療・高度医療技術実施医療機関4(区分) + hiadhpcode5: str # 先端医療・高度医療技術実施医療機関5(コード) + hiadhpkind5: str # 先端医療・高度医療技術実施医療機関5(区分) + hiadhpcode6: str # 先端医療・高度医療技術実施医療機関6(コード) + hiadhpkind6: str # 先端医療・高度医療技術実施医療機関6(区分) + hiadhpcode7: str # 先端医療・高度医療技術実施医療機関7(コード) + hiadhpkind7: str # 先端医療・高度医療技術実施医療機関7(区分) + hiadhpcode8: str # 先端医療・高度医療技術実施医療機関8(コード) + hiadhpkind8: str # 先端医療・高度医療技術実施医療機関8(区分) + hiadhpcode9: str # 先端医療・高度医療技術実施医療機関9(コード) + hiadhpkind9: str # 先端医療・高度医療技術実施医療機関9(区分) + hiadhpcode10: str # 先端医療・高度医療技術実施医療機関10(コード) + hiadhpkind10: str # 先端医療・高度医療技術実施医療機関10(区分) + hiadhpcode11: str # 先端医療・高度医療技術実施医療機関11(コード) + hiadhpkind11: str # 先端医療・高度医療技術実施医療機関11(区分) + hiadhpcode12: str # 先端医療・高度医療技術実施医療機関12(コード) + hiadhpkind12: str # 先端医療・高度医療技術実施医療機関12(区分) + hiadhpcode13: str # 先端医療・高度医療技術実施医療機関13(コード) + hiadhpkind13: str # 先端医療・高度医療技術実施医療機関13(区分) + hiadhpcode14: str # 先端医療・高度医療技術実施医療機関14(コード) + hiadhpkind14: str # 先端医療・高度医療技術実施医療機関14(区分) + hiadhpcode15: str # 先端医療・高度医療技術実施医療機関15(コード) + hiadhpkind15: str # 先端医療・高度医療技術実施医療機関15(区分) + hiadhpcode16: str # 先端医療・高度医療技術実施医療機関16(コード) + hiadhpkind16: str # 先端医療・高度医療技術実施医療機関16(区分) + hiadhpcode17: str # 先端医療・高度医療技術実施医療機関17(コード) + hiadhpkind17: str # 先端医療・高度医療技術実施医療機関17(区分) + hiadhpcode18: str # 先端医療・高度医療技術実施医療機関18(コード) + hiadhpkind18: str # 先端医療・高度医療技術実施医療機関18(区分) + hiadhpcode19: str # 先端医療・高度医療技術実施医療機関19(コード) + hiadhpkind19: str # 先端医療・高度医療技術実施医療機関19(区分) + hiadhpcode20: str # 先端医療・高度医療技術実施医療機関20(コード) + hiadhpkind20: str # 先端医療・高度医療技術実施医療機関20(区分) + hiadhpcode21: str # 先端医療・高度医療技術実施医療機関21(コード) + hiadhpkind21: str # 先端医療・高度医療技術実施医療機関21(区分) + hiadhpcode22: str # 先端医療・高度医療技術実施医療機関22(コード) + hiadhpkind22: str # 先端医療・高度医療技術実施医療機関22(区分) + hiadhpcode23: str # 先端医療・高度医療技術実施医療機関23(コード) + hiadhpkind23: str # 先端医療・高度医療技術実施医療機関23(区分) + hiadhpcode24: str # 先端医療・高度医療技術実施医療機関24(コード) + hiadhpkind24: str # 先端医療・高度医療技術実施医療機関24(区分) + hiadhpcode25: str # 先端医療・高度医療技術実施医療機関25(コード) + hiadhpkind25: str # 先端医療・高度医療技術実施医療機関25(区分) + hiadhpcode26: str # 先端医療・高度医療技術実施医療機関26(コード) + hiadhpkind26: str # 先端医療・高度医療技術実施医療機関26(区分) + hiadhpcode27: str # 先端医療・高度医療技術実施医療機関27(コード) + hiadhpkind27: str # 先端医療・高度医療技術実施医療機関27(区分) + hiadhpcode28: str # 先端医療・高度医療技術実施医療機関28(コード) + hiadhpkind28: str # 先端医療・高度医療技術実施医療機関28(区分) + hiadhpcode29: str # 先端医療・高度医療技術実施医療機関29(コード) + hiadhpkind29: str # 先端医療・高度医療技術実施医療機関29(区分) + hiadhpcode30: str # 先端医療・高度医療技術実施医療機関30(コード) + hiadhpkind30: str # 先端医療・高度医療技術実施医療機関30(区分) + hiadhpcode31: str # 先端医療・高度医療技術実施医療機関31(コード) + hiadhpkind31: str # 先端医療・高度医療技術実施医療機関31(区分) + hiadhpcode32: str # 先端医療・高度医療技術実施医療機関32(コード) + hiadhpkind32: str # 先端医療・高度医療技術実施医療機関32(区分) + hiadhpcode33: str # 先端医療・高度医療技術実施医療機関33(コード) + hiadhpkind33: str # 先端医療・高度医療技術実施医療機関33(区分) + hiadhpcode34: str # 先端医療・高度医療技術実施医療機関34(コード) + hiadhpkind34: str # 先端医療・高度医療技術実施医療機関34(区分) + hiadhpcode35: str # 先端医療・高度医療技術実施医療機関35(コード) + hiadhpkind35: str # 先端医療・高度医療技術実施医療機関35(区分) + hiadhpcode36: str # 先端医療・高度医療技術実施医療機関36(コード) + hiadhpkind36: str # 先端医療・高度医療技術実施医療機関36(区分) + hiadhpcode37: str # 先端医療・高度医療技術実施医療機関37(コード) + hiadhpkind37: str # 先端医療・高度医療技術実施医療機関37(区分) + hiadhpcode38: str # 先端医療・高度医療技術実施医療機関38(コード) + hiadhpkind38: str # 先端医療・高度医療技術実施医療機関38(区分) + hiadhpcode39: str # 先端医療・高度医療技術実施医療機関39(コード) + hiadhpkind39: str # 先端医療・高度医療技術実施医療機関39(区分) + hiadhpcode40: str # 先端医療・高度医療技術実施医療機関40(コード) + hiadhpkind40: str # 先端医療・高度医療技術実施医療機関40(区分) + hitechhp_flag: str # 先端医療機器フラグ + hitechhpkind1: str # 先端医療機器1 + hitechhpkind2: str # 先端医療機器2 + hitechhpkind3: str # 先端医療機器3 + hitechhpkind4: str # 先端医療機器4 + hitechhpkind5: str # 先端医療機器5 + hitechhpkind6: str # 先端医療機器6 + hitechhpkind7: str # 先端医療機器7 + hitechhpkind8: str # 先端医療機器8 + hitechhpkind9: str # 先端医療機器9 + hitechhpkind10: str # 先端医療機器10 + hitechhpkind11: str # 先端医療機器11 + hitechhpkind12: str # 先端医療機器12 + hitechhpkind13: str # 先端医療機器13 + hitechhpkind14: str # 先端医療機器14 + hitechhpkind15: str # 先端医療機器15 + hitechhpkind16: str # 先端医療機器16 + hitechhpkind17: str # 先端医療機器17 + hitechhpkind18: str # 先端医療機器18 + hitechhpkind19: str # 先端医療機器19 + hitechhpkind20: str # 先端医療機器20 + policy_medical_flag: str # 政策医療フラグ + policymedical_code01: str # 政策医療1(コード) + policymedical_content01: str # 政策医療1(区分) + policymedical_code02: str # 政策医療2(コード) + policymedical_content02: str # 政策医療2(区分) + policymedical_code03: str # 政策医療3(コード) + policymedical_content03: str # 政策医療3(区分) + policymedical_code04: str # 政策医療4(コード) + policymedical_content04: str # 政策医療4(区分) + policymedical_code05: str # 政策医療5(コード) + policymedical_content05: str # 政策医療5(区分) + policymedical_code06: str # 政策医療6(コード) + policymedical_content06: str # 政策医療6(区分) + policymedical_code07: str # 政策医療7(コード) + policymedical_content07: str # 政策医療7(区分) + policymedical_code08: str # 政策医療8(コード) + policymedical_content08: str # 政策医療8(区分) + policymedical_code09: str # 政策医療9(コード) + policymedical_content09: str # 政策医療9(区分) + policymedical_code10: str # 政策医療10(コード) + policymedical_content10: str # 政策医療10(区分) + policymedical_code11: str # 政策医療11(コード) + policymedical_content11: str # 政策医療11(区分) + policymedical_code12: str # 政策医療12(コード) + policymedical_content12: str # 政策医療12(区分) + policymedical_code13: str # 政策医療13(コード) + policymedical_content13: str # 政策医療13(区分) + policymedical_code14: str # 政策医療14(コード) + policymedical_content14: str # 政策医療14(区分) + policymedical_code15: str # 政策医療15(コード) + policymedical_content15: str # 政策医療15(区分) + policymedical_code16: str # 政策医療16(コード) + policymedical_content16: str # 政策医療16(区分) + policymedical_code17: str # 政策医療17(コード) + policymedical_content17: str # 政策医療17(区分) + policymedical_code18: str # 政策医療18(コード) + policymedical_content18: str # 政策医療18(区分) + policymedical_code19: str # 政策医療19(コード) + policymedical_content19: str # 政策医療19(区分) + policymedical_code20: str # 政策医療20(コード) + policymedical_content20: str # 政策医療20(区分) + visitcarest_flag: str # 訪問看護ステーションフラグ + visitcarestation_id: str # 訪問看護ステーション_施設コード(レコードID) + visitcarestation_code: str # 訪問看護ステーション_施設コード(施設コード) + visitcarestation_yobi: str # 訪問看護ステーション_施設コード(予備) + open_date: str # 開設年月 + maint_flag: str # 修正区分 + adddel_div: str # 追加削除区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + resthp_items: list # 療養型病床リスト + cl_items: list # 臨床研修指定病院リスト + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + + self.maint_flag = record[4].strip() + self.adddel_div = record[5].strip() + + self.dpc_flag = record[8].strip() + self.dpc_spec_day = record[9].strip() + self.dpc_cancel_day = record[10].strip() + + self.predpc_flag = record[11].strip() + self.predpc_spec_day = record[12].strip() + self.predpc_cancel_day = record[13].strip() + + self.cancer_flag = record[14].strip() + self.cancer_spec_day = record[15].strip() + self.cancer_cancel_day = record[16].strip() + + self.funchp_flag = record[17].strip() + self.funchp_ok_date = record[18].strip() + self.funchp_can_date = record[19].strip() + + self.areasuphp_flag = record[20].strip() + self.areasuphp_intrate = record[21].strip() + self.areasuphp_ok_date = record[22].strip() + self.areasuphp_can_date = record[23].strip() + + self.acuthp_add_flag = record[24].strip() + self.acuthp_add_ok_date = record[25].strip() + self.acuthp_add_can_date = record[26].strip() + + self.genadmisiion_flag = record[27].strip() + self.genadmisiion_ok_date = record[28].strip() + self.genadmisiion_can_date = record[29].strip() + + self.assistance_flag = record[30].strip() + self.assistance_ok_date = record[31].strip() + self.assistance_can_date = record[32].strip() + + self.diagnosis_treatment_flag = record[33].strip() + self.diagnosis_treatment_spec_day = record[34].strip() + self.diagnosis_treatment_cancel_day = record[35].strip() + + self.safety_flag = record[36].strip() + self.safety_spec_day = record[37].strip() + self.safety_cancel_day = record[38].strip() + + self.highrisk_flag = record[39].strip() + self.highrisk_spec_day = record[40].strip() + self.highrisk_cancel_day = record[41].strip() + + self.infant_and_holiday_flag = record[42].strip() + self.infant_and_holiday_spec_day = record[43].strip() + self.infant_and_holiday_cancel_day = record[44].strip() + + self.ophp_flag = record[45].strip() + self.ophpok_date = record[46].strip() + self.ophpcan_date = record[47].strip() + self.critical_flag = record[48].strip() + + self.critical_code01 = record[49].strip() + self.critical_code02 = record[50].strip() + self.critical_code03 = record[51].strip() + self.critical_code04 = record[52].strip() + self.critical_code05 = record[53].strip() + self.critical_code06 = record[54].strip() + self.critical_code07 = record[55].strip() + self.critical_code08 = record[56].strip() + self.critical_code09 = record[57].strip() + self.critical_code10 = record[58].strip() + self.critical_code11 = record[59].strip() + self.critical_code12 = record[60].strip() + self.critical_code13 = record[61].strip() + self.critical_code14 = record[62].strip() + self.critical_code15 = record[63].strip() + self.critical_code16 = record[64].strip() + self.critical_code17 = record[65].strip() + self.critical_code18 = record[66].strip() + self.critical_code19 = record[67].strip() + self.critical_code20 = record[68].strip() + + self.drgmgthp_flag = record[69].strip() + self.drgmgthp_ok_date = record[70].strip() + self.drgmgthp_can_date = record[71].strip() + + self.image_diagnosis_flag = record[72].strip() + self.image_diagnosis_specified_day = record[73].strip() + self.image_diagnosis_cancel_day = record[74].strip() + + self.chemotherapy_flag = record[75].strip() + self.chemotherapy_spec_day = record[76].strip() + self.chemotherapy_cancel_day = record[77].strip() + + self.rehabilitation_flag = record[78].strip() + self.rehabilitation_code01 = record[79].strip() + self.rehabilitation_code02 = record[80].strip() + self.rehabilitation_code03 = record[81].strip() + self.rehabilitation_code04 = record[82].strip() + self.rehabilitation_code05 = record[83].strip() + self.rehabilitation_code06 = record[84].strip() + self.rehabilitation_code07 = record[85].strip() + self.rehabilitation_code08 = record[86].strip() + self.rehabilitation_code09 = record[87].strip() + self.rehabilitation_code10 = record[88].strip() + + self.anesthetizing_manage_flag = record[89].strip() + self.anesthetizing_manage_spec_day = record[90].strip() + self.anesthetizing_manage_can_day = record[91].strip() + + self.home_recuperation_flag = record[92].strip() + self.home_recuperation_spec_day = record[93].strip() + self.home_recuperation_cancel_day = record[94].strip() + + self.synthesis_when_staying_flag = record[95].strip() + self.synthesis_when_staying_spec_day = record[96].strip() + self.synthesis_when_staying_can_day = record[97].strip() + + self.home_late_flag = record[98].strip() + self.home_late_ok_day = record[99].strip() + self.home_late_can_day = record[100].strip() + + self.caremix_kind = record[101].strip() + self.fullmove_flag = record[102].strip() + + self.resthp_flag = record[103].strip() + self.resthp_care_kind = record[104].strip() + self.resthp_bed_num = record[105].strip() + self.resthp_ok_date = record[106].strip() + self.resthp_can_date = record[107].strip() + self.resthp_care_nrs_kind = record[108].strip() + self.resthp_care_bed_num = record[109].strip() + self.resthp_care_ok_date = record[110].strip() + self.resthp_care_can_date = record[111].strip() + self.resthp_sbed_num = record[112].strip() + + self.nrmhp_flag = record[113].strip() + self.nrmhp_care_kind = record[114].strip() + self.nrmhp_bed_total_num = record[115].strip() + + self.menthp_flag = record[116].strip() + self.menthp_care_kind = record[117].strip() + self.menthp_bed_num = record[118].strip() + + self.tubhp_flag = record[119].strip() + self.tubhp_care_kind = record[120].strip() + self.tubhp_bed_num = record[121].strip() + + self.infhp_flag = record[122].strip() + self.infhp_flag1 = record[123].strip() + self.infhp_flag2 = record[124].strip() + + self.infhp_bed_flag = record[125].strip() + self.infhp_bed_num = record[126].strip() + + self.hospice_flag = record[127].strip() + self.hospice_bed_num = record[128].strip() + self.hospice_ok_date = record[129].strip() + self.hospice_can_date = record[130].strip() + + self.hpfunce_st_flag = record[131].strip() + self.hpfunce_st_kind = record[132].strip() + self.hpfunce_st_ok_date = record[133].strip() + self.hpfunce_st_can_date = record[134].strip() + + self.clolyhp_kind = record[135].strip() + self.clolyhp_ok_date = record[136].strip() + self.clolyhp_can_date = record[137].strip() + self.clhp_kind = record[138].strip() + self.clhp_ok_date = record[139].strip() + self.clhp_can_date = record[140].strip() + self.cldephp_kind = record[141].strip() + self.cldephp_ok_date = record[142].strip() + self.cldephp_can_date = record[143].strip() + + self.disasthp_flag = record[144].strip() + + self.d1emerhp_flag = record[145].strip() + self.d2emerhp_flag = record[146].strip() + self.d3emerhp_flag = record[147].strip() + + self.emergency_clinic = record[148].strip() + + self.trial_core_flag = record[149].strip() + self.trial_core_div = record[150].strip() + self.trial_core_ok_date = record[151].strip() + self.trial_core_can_date = record[152].strip() + + self.dementia_flag = record[153].strip() + self.dementia_okd_ate = record[154].strip() + self.dementia_can_date = record[155].strip() + + self.sphealth_exploration = record[156].strip() + self.sphealth_guidance = record[157].strip() + + self.hiadhp_flag = record[158].strip() + self.hiadhpcode1 = record[159].strip() + self.hiadhpkind1 = record[160].strip() + self.hiadhpcode2 = record[161].strip() + self.hiadhpkind2 = record[162].strip() + self.hiadhpcode3 = record[163].strip() + self.hiadhpkind3 = record[164].strip() + self.hiadhpcode4 = record[165].strip() + self.hiadhpkind4 = record[166].strip() + self.hiadhpcode5 = record[167].strip() + self.hiadhpkind5 = record[168].strip() + self.hiadhpcode6 = record[169].strip() + self.hiadhpkind6 = record[170].strip() + self.hiadhpcode7 = record[171].strip() + self.hiadhpkind7 = record[172].strip() + self.hiadhpcode8 = record[173].strip() + self.hiadhpkind8 = record[174].strip() + self.hiadhpcode9 = record[175].strip() + self.hiadhpkind9 = record[176].strip() + self.hiadhpcode10 = record[177].strip() + self.hiadhpkind10 = record[178].strip() + self.hiadhpcode11 = record[179].strip() + self.hiadhpkind11 = record[180].strip() + self.hiadhpcode12 = record[181].strip() + self.hiadhpkind12 = record[182].strip() + self.hiadhpcode13 = record[183].strip() + self.hiadhpkind13 = record[184].strip() + self.hiadhpcode14 = record[185].strip() + self.hiadhpkind14 = record[186].strip() + self.hiadhpcode15 = record[187].strip() + self.hiadhpkind15 = record[188].strip() + self.hiadhpcode16 = record[189].strip() + self.hiadhpkind16 = record[190].strip() + self.hiadhpcode17 = record[191].strip() + self.hiadhpkind17 = record[192].strip() + self.hiadhpcode18 = record[193].strip() + self.hiadhpkind18 = record[194].strip() + self.hiadhpcode19 = record[195].strip() + self.hiadhpkind19 = record[196].strip() + self.hiadhpcode20 = record[197].strip() + self.hiadhpkind20 = record[198].strip() + self.hiadhpcode21 = record[199].strip() + self.hiadhpkind21 = record[200].strip() + self.hiadhpcode22 = record[201].strip() + self.hiadhpkind22 = record[202].strip() + self.hiadhpcode23 = record[203].strip() + self.hiadhpkind23 = record[204].strip() + self.hiadhpcode24 = record[205].strip() + self.hiadhpkind24 = record[206].strip() + self.hiadhpcode25 = record[207].strip() + self.hiadhpkind25 = record[208].strip() + self.hiadhpcode26 = record[209].strip() + self.hiadhpkind26 = record[210].strip() + self.hiadhpcode27 = record[211].strip() + self.hiadhpkind27 = record[212].strip() + self.hiadhpcode28 = record[213].strip() + self.hiadhpkind28 = record[214].strip() + self.hiadhpcode29 = record[215].strip() + self.hiadhpkind29 = record[216].strip() + self.hiadhpcode30 = record[217].strip() + self.hiadhpkind30 = record[218].strip() + self.hiadhpcode31 = record[219].strip() + self.hiadhpkind31 = record[220].strip() + self.hiadhpcode32 = record[221].strip() + self.hiadhpkind32 = record[222].strip() + self.hiadhpcode33 = record[223].strip() + self.hiadhpkind33 = record[224].strip() + self.hiadhpcode34 = record[225].strip() + self.hiadhpkind34 = record[226].strip() + self.hiadhpcode35 = record[227].strip() + self.hiadhpkind35 = record[228].strip() + self.hiadhpcode36 = record[229].strip() + self.hiadhpkind36 = record[230].strip() + self.hiadhpcode37 = record[231].strip() + self.hiadhpkind37 = record[232].strip() + self.hiadhpcode38 = record[233].strip() + self.hiadhpkind38 = record[234].strip() + self.hiadhpcode39 = record[235].strip() + self.hiadhpkind39 = record[236].strip() + self.hiadhpcode40 = record[237].strip() + self.hiadhpkind40 = record[238].strip() + + self.hitechhp_flag = record[239].strip() + self.hitechhpkind1 = record[240].strip() + self.hitechhpkind2 = record[241].strip() + self.hitechhpkind3 = record[242].strip() + self.hitechhpkind4 = record[243].strip() + self.hitechhpkind5 = record[244].strip() + self.hitechhpkind6 = record[245].strip() + self.hitechhpkind7 = record[246].strip() + self.hitechhpkind8 = record[247].strip() + self.hitechhpkind9 = record[248].strip() + self.hitechhpkind10 = record[249].strip() + self.hitechhpkind11 = record[250].strip() + self.hitechhpkind12 = record[251].strip() + self.hitechhpkind13 = record[252].strip() + self.hitechhpkind14 = record[253].strip() + self.hitechhpkind15 = record[254].strip() + self.hitechhpkind16 = record[255].strip() + self.hitechhpkind17 = record[256].strip() + self.hitechhpkind18 = record[257].strip() + self.hitechhpkind19 = record[258].strip() + self.hitechhpkind20 = record[259].strip() + + self.policy_medical_flag = record[260].strip() + self.policymedical_code01 = record[261].strip() + self.policymedical_content01 = record[262].strip() + self.policymedical_code02 = record[263].strip() + self.policymedical_content02 = record[264].strip() + self.policymedical_code03 = record[265].strip() + self.policymedical_content03 = record[266].strip() + self.policymedical_code04 = record[267].strip() + self.policymedical_content04 = record[268].strip() + self.policymedical_code05 = record[269].strip() + self.policymedical_content05 = record[270].strip() + self.policymedical_code06 = record[271].strip() + self.policymedical_content06 = record[272].strip() + self.policymedical_code07 = record[273].strip() + self.policymedical_content07 = record[274].strip() + self.policymedical_code08 = record[275].strip() + self.policymedical_content08 = record[276].strip() + self.policymedical_code09 = record[277].strip() + self.policymedical_content09 = record[278].strip() + self.policymedical_code10 = record[279].strip() + self.policymedical_content10 = record[280].strip() + self.policymedical_code11 = record[281].strip() + self.policymedical_content11 = record[282].strip() + self.policymedical_code12 = record[283].strip() + self.policymedical_content12 = record[284].strip() + self.policymedical_code13 = record[285].strip() + self.policymedical_content13 = record[286].strip() + self.policymedical_code14 = record[287].strip() + self.policymedical_content14 = record[288].strip() + self.policymedical_code15 = record[289].strip() + self.policymedical_content15 = record[290].strip() + self.policymedical_code16 = record[291].strip() + self.policymedical_content16 = record[292].strip() + self.policymedical_code17 = record[293].strip() + self.policymedical_content17 = record[294].strip() + self.policymedical_code18 = record[295].strip() + self.policymedical_content18 = record[296].strip() + self.policymedical_code19 = record[297].strip() + self.policymedical_content19 = record[298].strip() + self.policymedical_code20 = record[299].strip() + self.policymedical_content20 = record[300].strip() + + self.visitcarest_flag = record[301].strip() + self.visitcarestation_id = record[302].strip() + self.visitcarestation_code = record[303].strip() + self.visitcarestation_yobi = record[304].strip() + + self.open_date = record[305].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfhp_yobi + + # 療養型病床群 + self.resthp_items = [ + self.resthp_flag, + self.resthp_care_kind, + self.resthp_bed_num, + self.resthp_ok_date, + self.resthp_can_date, + self.resthp_care_nrs_kind, + self.resthp_care_bed_num, + self.resthp_care_ok_date, + self.resthp_care_can_date, + self.resthp_sbed_num + ] + + # 臨床研修指定病院リスト + self.cl_items = [ + self.clolyhp_kind, + self.clolyhp_ok_date, + self.clolyhp_can_date, + self.clhp_kind, + self.clhp_ok_date, + self.clhp_can_date, + self.cldephp_kind, + self.cldephp_ok_date, + self.cldephp_can_date + ] + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.areasuphp_intrate = self.areasuphp_intrate if len(self.areasuphp_intrate) > 0 else None + self.resthp_bed_num = self.resthp_bed_num if len(self.resthp_bed_num) > 0 else None + self.resthp_care_bed_num = self.resthp_care_bed_num if len(self.resthp_care_bed_num) > 0 else None + self.resthp_sbed_num = self.resthp_sbed_num if len(self.resthp_sbed_num) > 0 else None + self.nrmhp_bed_total_num = self.nrmhp_bed_total_num if len(self.nrmhp_bed_total_num) > 0 else None + self.menthp_bed_num = self.menthp_bed_num if len(self.menthp_bed_num) > 0 else None + self.tubhp_bed_num = self.tubhp_bed_num if len(self.tubhp_bed_num) > 0 else None + self.infhp_bed_num = self.infhp_bed_num if len(self.infhp_bed_num) > 0 else None + self.hospice_bed_num = self.hospice_bed_num if len(self.hospice_bed_num) > 0 else None diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_div.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_div.py new file mode 100644 index 00000000..a51e5e3b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_inst_div.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInstDiv(UltmarcTable): + """レイアウト区分011: COM_施設区分""" + inst_div_cd: str # 施設区分コード + inst_div_name: str # 施設区分名称 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.inst_div_cd = record[1] + self.maint_flag = record[2] + self.inst_div_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_manage.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_manage.py new file mode 100644 index 00000000..7d3bdefc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_manage.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComManage(UltmarcTable): + """レイアウト区分007: COM_経営体""" + manage_cd: str # 経営体コード + manage_name: str # 経営体名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.manage_cd = record[1] + self.maint_flag = record[2] + self.manage_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py new file mode 100644 index 00000000..a1e0e4cc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py @@ -0,0 +1,24 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedAreaCity(UltmarcTable): + """レイアウト区分124: COM_医療圏都道府県市町村対応表""" + prefc_cd: str # 県コード + med_sphe_cd: str # 医療圏コード + jis_prefc_cd: str # JIS都道府県コード + jis_city_cd: str # JIS市区町村コード + zen_prefcode: str # 移動元2次コード(都道府県) + zen_medareacode: str # 移動元2次コード(医療圏コード) + maintflag: str # 修正区分 + addDelDiv: str # 追加削除区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.prefc_cd = record[1] + self.med_sphe_cd = record[2] + self.maintflag = record[3] + self.jis_prefc_cd = record[4] + self.jis_city_cd = record[5] + self.addDelDiv = record[6] + self.zen_prefcode = record[9].strip() + self.zen_medareacode = record[10].strip() diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py new file mode 100644 index 00000000..9eab1f21 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedFuncValuation(UltmarcTable): + """レイアウト区分024: COM_医療機器評価""" + maint_flag: str # 修正区分 + med_func_valuation_cd: str # 医療機器評価コード + med_func_valuation_name: str # 医療機器評価名称(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.med_func_valuation_cd = record[1] + self.med_func_valuation_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py new file mode 100644 index 00000000..e08adc88 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py @@ -0,0 +1,48 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedPrefc(UltmarcTable): + """レイアウト区分121: COM_医療圏都道府県""" + pref_code: str # 都道府県コード + rev_date: str # 医療圏メンテナンス年月日 + post_date: str # 公示年月日 + psy_bednum_tg: str # 精神_基準病床数 or 整備目標数 + psy_bednum_gen: str # 精神_既存病床数(病床数) + psy_bednum_date: str # 精神_既存病床数(年月日) + psy_eqbed_num: str # 精神_過不足病床数(差引) + tb_bednum_tg: str # 結核_基準病床数 or 整備目標数 + tb_bednum_gen: str # 結核_既存病床数(病床数) + tb_bednum_date: str # 結核_既存病床数(年月日) + tb_eqbed_num: str # 結核_過不足病床数(差引) + inf_bednum_tg: str # 感染症_基準病床数 or 整備目標数 + inf_bednum_gen: str # 感染症_既存病床数(病床数) + inf_bednum_date: str # 感染症_既存病床数(年月日) + inf_eqbed_num: str # 感染症_過不足病床数(差引) + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.pref_code = record[1] + self.maintflag = record[2] + self.rev_date = record[5] + self.post_date = record[6] + self.psy_bednum_tg = record[7].strip() + self.psy_bednum_gen = record[8].strip() + self.psy_bednum_date = record[9] + self.psy_eqbed_num = record[10] + self.tb_bednum_tg = record[11].strip() + self.tb_bednum_gen = record[12].strip() + self.tb_bednum_date = record[13] + self.tb_eqbed_num = record[14] + self.inf_bednum_tg = record[15].strip() + self.inf_bednum_gen = record[16].strip() + self.inf_bednum_date = record[17] + self.inf_eqbed_num = record[18] + + # decimal型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.psy_bednum_tg = self.psy_bednum_tg if len(self.psy_bednum_tg) > 0 else None + self.psy_bednum_gen = self.psy_bednum_gen if len(self.psy_bednum_gen) > 0 else None + self.tb_bednum_tg = self.tb_bednum_tg if len(self.tb_bednum_tg) > 0 else None + self.tb_bednum_gen = self.tb_bednum_gen if len(self.tb_bednum_gen) > 0 else None + self.inf_bednum_tg = self.inf_bednum_tg if len(self.inf_bednum_tg) > 0 else None + self.inf_bednum_gen = self.inf_bednum_gen if len(self.inf_bednum_gen) > 0 else None diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py new file mode 100644 index 00000000..6a7fdb4e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComNurseAssrt(UltmarcTable): + """レイアウト区分023: COM_看護種別""" + nurse_assrt_cd: str # 看護種別コード + nurse_assrt_name: str # 看護種別名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.nurse_assrt_cd = record[1] + self.nurse_assrt_name = record[5] + self.maint_flag = record[2] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_pharm.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_pharm.py new file mode 100644 index 00000000..25e2887f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_pharm.py @@ -0,0 +1,139 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPharm(UltmarcTable): + """レイアウト区分102: COM_薬局""" + dcfhp_id: str # DCF コード(ID) + dcfhp_code: str # DCF コード(コード) + dcfhp_yobi: str # DCF コード(予備) + maint_flag: str # 修正区分 + maintdate: str # メンテナンス年月日 + pass # 予備/転送年月日(未使用) + unconf_flg: str # 未確認フラグ + del_cd: str # 削除予定理由 + duphp_id: str # 重複時相手先コード(レコードID) + duphp_cd: str # 重複時相手先コード(施設コード) + duphp_yobi: str # 重複時相手先コード(予備) + hp_name: str # 正式施設名(漢字) + hp_name_kana: str # 正式施設名(カナ) + hp_ryaku_name: str # 略式施設名(漢字) + hp_ryaku_name_kana: str # 略式施設名(カナ) + hp_addr_lost_code: str # 住所不明 + prefc_cd: str # 住所コード(県コード) + city_cd: str # 住所コード(市区町村コード) + addrcode1: str # 住所コード(大字・通称コード) + addrcode2: str # 住所コード(字・丁目コード) + zip_code: str # 郵便番号 + addr: str # 住所(漢字) + addr_kana: str # 住所(カナ) + addr_number: str # 住所表示番号 + addrkanjcnt1: str # 住所文字カウント:漢字(県) + addrkanjcnt2: str # 住所文字カウント:漢字(市区町村) + addrkanjcnt3: str # 住所文字カウント:漢字(大字・通称) + addrkanjcnt4: str # 住所文字カウント:漢字(字・丁目) + addrkanacnt1: str # 住所文字カウント:カナ(県) + addrkanacnt2: str # 住所文字カウント:カナ(市区町村) + addrkanacnt3: str # 住所文字カウント:カナ(大字・通称) + addrkanacnt4: str # 住所文字カウント:カナ(字・丁目) + tel_nothing_flag: str # 電話番号なしフラグ + tel_number: str # 電話番号 + mgtclass_code: str # 経営体 + hpclass_code: str # 施設区分 + president: str # 代表者(漢字) + president_Kana: str # 代表者(カナ) + open_flag: str # 開業予定(フラグ) + open_yearmonth: str # 開業予定(年月) + close_flg: str # 休院(休院フラグ) + close_yearmonth: str # 休院(開始年月) + pharmacist: str # 管理薬剤師名(漢字) + pharmacist_kana: str # 管理薬剤師名(カナ) + franchise_hq_id: str # チェーン店本部コード(レコードID) + franchise_hq_code: str # チェーン店本部コード(施設コード) + franchise_hq_yobi: str # チェーン店本部コード(予備) + + dcfdsf_inst_cd: str # 施設コード + village_code: str # 町字コード + addr_count_kana: str # 住所カウントカナ + addr_count: str # 住所カウント + dup_opp_cd: str # 重複時相手先コード + franchise_hq_cd: str # チェーン店本部コード + + def __init__(self, record: list[str]): + super().__init__(record) + + self.dcfhp_id = record[1] + self.dcfhp_cd = record[2] + self.dcfhp_yobi = record[3] + self.maint_flag = record[4] + self.maintdate = record[5] + self.unconf_flg = record[7].strip() + self.del_cd = record[8].strip() + self.duphp_id = record[9].strip() + self.duphp_cd = record[10].strip() + self.duphp_yobi = record[11].strip() + self.hp_name = record[12].strip() + self.hp_name_kana = record[13].strip() + self.hp_ryaku_name = record[14].strip() + self.hp_ryaku_name_kana = record[15].strip() + self.hp_addr_lost_code = record[16].strip() + self.prefc_cd = record[17].strip() + self.city_cd = record[18].strip() + self.addrcode1 = record[19].strip() + self.addrcode2 = record[20].strip() + self.zip_code = record[21].strip() + self.addr = record[22] + self.addr_kana = record[23] + self.addr_number = record[24] + self.addrkanjcnt1 = record[25].strip() + self.addrkanjcnt2 = record[26].strip() + self.addrkanjcnt3 = record[27].strip() + self.addrkanjcnt4 = record[28].strip() + self.addrkanacnt1 = record[29].strip() + self.addrkanacnt2 = record[30].strip() + self.addrkanacnt3 = record[31].strip() + self.addrkanacnt4 = record[32].strip() + self.tel_nothing_flag = record[33].strip() + self.tel_number = record[34].strip() + self.mgtclass_code = record[35].strip() + self.hpclass_code = record[36].strip() + self.president = record[37].strip() + self.president_Kana = record[38].strip() + self.open_flag = record[39].strip() + self.open_yearmonth = record[40].strip() + self.close_flg = record[41].strip() + self.close_yearmonth = record[42].strip() + self.pharmacist = record[43] + self.pharmacist_kana = record[44] + self.franchise_hq_id = record[45] + self.franchise_hq_code = record[46] + self.franchise_hq_yobi = record[47] + + # 住所カウント_漢字の0埋め + self.addrkanacnt1 = self.addrkanacnt1.zfill(2) + self.addrkanacnt2 = self.addrkanacnt2.zfill(2) + self.addrkanacnt3 = self.addrkanacnt3.zfill(2) + self.addrkanacnt4 = self.addrkanacnt4.zfill(2) + + # 住所カウント_カナの0埋め + self.addrkanjcnt1 = self.addrkanjcnt1.zfill(2) + self.addrkanjcnt2 = self.addrkanjcnt2.zfill(2) + self.addrkanjcnt3 = self.addrkanjcnt3.zfill(2) + self.addrkanjcnt4 = self.addrkanjcnt4.zfill(2) + + # 施設コード(2+3+4) + self.dcfdsf_inst_cd = ''.join([self.dcfhp_id, self.dcfhp_cd, self.dcfhp_yobi]) + + # 町字コード(18+19+20+21) + self.village_code = ''.join([self.prefc_cd, self.city_cd, self.addrcode1, self.addrcode2]) + + # 住所カウントカナ(30+31+32+33) + self.addr_count_kana = ''.join([self.addrkanacnt1, self.addrkanacnt2, self.addrkanacnt3, self.addrkanacnt4]) + + # 住所カウント(26+27+28+29) + self.addr_count = ''.join([self.addrkanjcnt1, self.addrkanjcnt2, self.addrkanjcnt3, self.addrkanjcnt4]) + + # 重複時相手先コード(10+11+12) + self.dup_opp_cd = ''.join([self.duphp_id, self.duphp_cd, self.duphp_yobi]) + + # チェーン店本部コード(46+47+48) + self.franchise_hq_cd = ''.join([self.franchise_hq_id, self.franchise_hq_code, self.franchise_hq_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py new file mode 100644 index 00000000..ee726ae6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPolicyMed(UltmarcTable): + """レイアウト区分028: COM_政策医療""" + policy_med_cd: str # 政策医療コード + field_name: str # 分野名称(漢字) + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.policy_med_cd = record[1] + self.field_name = record[5] + self.maint_flag = record[2] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_post.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_post.py new file mode 100644 index 00000000..e1095c51 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_post.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPost(UltmarcTable): + """レイアウト区分005: COM_役職""" + post_cd: str # 役職コード + form_post_name: str # 正式役職名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.post_cd = record[1] + self.maint_flag = record[2] + self.form_post_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py new file mode 100644 index 00000000..fd9342ff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py @@ -0,0 +1,157 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedBase(UltmarcTable): + """レイアウト区分132: COM_都道府県医療機能情報(基本)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + maint_flag: str # 修正区分 + adddel_div: str # 予備/追加削除区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + info_date: str # 情報年月日 + home_page: str # 案内用ホームページアドレス + hppre_flg: str # 院内処方フラグ + expre_flg: str # 院外処方フラグ + trial_flg: str # 治験の実施フラグ + trial_cont_count: str # 治験の実施_契約件数 + trial_whet_from: str # 治験の実施_期間自 + trial_whet_to: str # 治験の実施_期間至 + equipment_flg: str # 保有する施設設備フラグ + cos_disease_flg: str # 対応することができる疾患・治療の内容フラグ + cos_surgery: str # 対応することができる短期滞在手術フラグ + specialclinic_flg: str # 専門外来フラグ + establishment_flg: str # 地域医療連携体制_窓口設置フラグ + critical_flg: str # 地域医療連携体制_地域連携パスフラグ + cop_system: str # 入院診療計画策定時における院内の連携体制 + sys_exists_flg: str # オーダリングシステム_有無フラグ + sys_inspection: str # オーダリングシステム_検査 + sys_prescription: str # オーダリングシステム_処方 + sys_reserv: str # オーダリングシステム_予約 + icduse_flg: str # ICDコード利用フラグ + echart_flg: str # 電子カルテフラク + fulltime_flg: str # 専任従事者フラグ + fulltime_count: str # 専任従事者数 + ge_patient_avg: str # 病床患者数平均(一般) + mt_patient_avg: str # 病床患者数平均(療養) + mc_patient_avg: str # 病床患者数平均(療養(医療)) + ca_patient_avg: str # 病床患者数平均(療養(介護)) + pys_patient_avg: str # 病床患者数平均(精神) + tub_patient_avg: str # 病床患者数平均(結核) + inf_patient_avg: str # 病床患者数平均(感染症) + patient_avg_sum: str # 病床患者数平均(全体) + patient_avg_from: str # 病床患者数平均_期間自(病床種別) + patient_avg_to: str # 病床患者数平均_期間至(病床種別) + cl_patient_avg: str # 患者数平均(外来) + cl_patient_avg_from: str # 病床患者数平均_期間自(外来) + cl_patient_avg_to: str # 病床患者数平均_期間至(外来) + hm_patient_avg: str # 患者数平均(在宅) + hm_patient_avg_from: str # 病床患者数平均_期間自(在宅) + hm_patient_avg_to: str # 病床患者数平均_期間至(在宅) + ge_patient_ex: str # 患者数延数(一般) + mt_patient_ex: str # 患者数延数(療養) + mc_patient_ex: str # 病床患者数平均(療養(医療)) + ca_patient_ex: str # 病床患者数平均(療養(介護)) + pys_patient_ex: str # 患者数延数(精神) + tub_patient_ex: str # 患者数延数(結核) + inf_patient_ex: str # 患者数延数(感染症) + patient_ex_sum: str # 患者数延数(全体) + patient_ex_from: str # 患者数延数_期間自(病床種別) + patient_ex_to: str # 患者数延数_期間至(病床種別) + cl_patient_ex: str # 患者数延数(外来) + cl_patient_ex_from: str # 患者数延数_期間自(外来) + cl_patient_ex_to: str # 患者数延数_期間至(外来) + hm_patient_ex: str # 患者数延数(在宅) + hm_patient_ex_from: str # 患者数延数_期間自(在宅) + hm_patient_ex_to: str # 患者数延数_期間至(在宅) + ge_stay_avg: str # 平均在院日数(一般) + mt_stay_avg: str # 平均在院日数(療養) + mc_stay_avg: str # 平均在院日数(療養(医療)) + ca_stay_avg: str # 平均在院日数(療養(介護)) + pys_stay_avg: str # 平均在院日数(精神) + tub_stay_avg: str # 平均在院日数(結核) + inf_stay_avg: str # 平均在院日数(感染症) + stay_avg_sum: str # 平均在院日数(全体) + stay_avg_from: str # 平均在院日数_期間自 + stay_avg_to: str # 平均在院日数_期間至 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.adddel_div = record[5].strip() + self.maint_date = record[6].strip() + self.trn_date = record[7].strip() + self.info_date = record[8].strip() + self.home_page = record[9].strip() + self.hppre_flg = record[10].strip() + self.expre_flg = record[11].strip() + self.trial_flg = record[12].strip() + self.trial_cont_count = record[13].strip() + self.trial_whet_from = record[14].strip() + self.trial_whet_to = record[15].strip() + self.equipment_flg = record[16].strip() + self.cos_disease_flg = record[17].strip() + self.cos_surgery = record[18].strip() + self.specialclinic_flg = record[19].strip() + self.establishment_flg = record[20].strip() + self.critical_flg = record[21].strip() + self.cop_system = record[22].strip() + self.sys_exists_flg = record[23].strip() + self.sys_inspection = record[24].strip() + self.sys_prescription = record[25].strip() + self.sys_reserv = record[26].strip() + self.icduse_flg = record[27].strip() + self.echart_flg = record[28].strip() + self.fulltime_flg = record[29].strip() + self.fulltime_count = record[30].strip() + self.ge_patient_avg = record[31].strip() + self.mt_patient_avg = record[32].strip() + self.mc_patient_avg = record[33].strip() + self.ca_patient_avg = record[34].strip() + self.pys_patient_avg = record[35].strip() + self.tub_patient_avg = record[36].strip() + self.inf_patient_avg = record[37].strip() + self.patient_avg_sum = record[38].strip() + self.patient_avg_from = record[39].strip() + self.patient_avg_to = record[40].strip() + self.cl_patient_avg = record[41].strip() + self.cl_patient_avg_from = record[42].strip() + self.cl_patient_avg_to = record[43].strip() + self.hm_patient_avg = record[44].strip() + self.hm_patient_avg_from = record[45].strip() + self.hm_patient_avg_to = record[46].strip() + self.ge_patient_ex = record[47].strip() + self.mt_patient_ex = record[48].strip() + self.mc_patient_ex = record[49].strip() + self.ca_patient_ex = record[50].strip() + self.pys_patient_ex = record[51].strip() + self.tub_patient_ex = record[52].strip() + self.inf_patient_ex = record[53].strip() + self.patient_ex_sum = record[54].strip() + self.patient_ex_from = record[55].strip() + self.patient_ex_to = record[56].strip() + self.cl_patient_ex = record[57].strip() + self.cl_patient_ex_from = record[58].strip() + self.cl_patient_ex_to = record[59].strip() + self.hm_patient_ex = record[60].strip() + self.hm_patient_ex_from = record[61].strip() + self.hm_patient_ex_to = record[62].strip() + self.ge_stay_avg = record[63].strip() + self.mt_stay_avg = record[64].strip() + self.mc_stay_avg = record[65].strip() + self.ca_stay_avg = record[66].strip() + self.pys_stay_avg = record[67].strip() + self.tub_stay_avg = record[68].strip() + self.inf_stay_avg = record[69].strip() + self.stay_avg_sum = record[70].strip() + self.stay_avg_from = record[71].strip() + self.stay_avg_to = record[72].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py new file mode 100644 index 00000000..979e40a9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py @@ -0,0 +1,34 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedDisTreat(UltmarcTable): + """レイアウト区分134: COM_都道府県医療機能情報(疾患治療)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + treatment_code: str # 疾患治療コード + pre_num: str # 前年比 + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4] + self.treatment_code = record[5].strip() + self.adddel_div = record[6] + self.pre_num = record[9] + + # Update判断フラグ。数値が空の場合は更新しない。 + self.is_pre_num_not_empty = True + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + 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施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py new file mode 100644 index 00000000..c0d90d24 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py @@ -0,0 +1,34 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedEqupment(UltmarcTable): + """レイアウト区分133: COM_都道府県医療機能情報(施設設備)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + equipment_code: str # 施設設備コード + bed_num: str # 病床数 + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4] + self.equipment_code = record[5].strip() + self.adddel_div = record[6] + self.bed_num = record[9] + + # Update判断フラグ。数値が空の場合は更新しない。 + self.is_bed_num_not_empty = True + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + 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施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py new file mode 100644 index 00000000..4320bab2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py @@ -0,0 +1,25 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedSojournOpe(UltmarcTable): + """レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + cos_surgery_code: str # 短期滞在手術コード + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.cos_surgery_code = record[5].strip() + self.adddel_div = record[6].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py new file mode 100644 index 00000000..c26fc8e0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py @@ -0,0 +1,29 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedSpOutpat(UltmarcTable): + """レイアウト区分136: COM_都道府県医療機能情報(専門外来)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + specialclinic_name: str # 専門外来名 + sort_key: str # ソートキー + sectsub_cd: str # 分類補助コード + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.specialclinic_name = record[5].strip() + self.adddel_div = record[6].strip() + self.sort_key = record[9].strip() + self.sectsub_cd = record[10].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py new file mode 100644 index 00000000..ee950adb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComRegnCriticPass(UltmarcTable): + """レイアウト区分026: COM_地域クリティカルパス""" + maint_flag: str # 修正区分 + regn_co_critic_pass_cd: str # 地域クリティカルパスコード + disease_name_kanji: str # 疾患名(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.regn_co_critic_pass_cd = record[1] + self.disease_name_kanji = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py new file mode 100644 index 00000000..f1e13bb2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComRehabili(UltmarcTable): + """レイアウト区分027: COM_疾患別リハビリテーション科""" + maint_flag: str # 修正区分 + rehabili_cd: str # 疾患別リハビリコード + rehabili_name: str # リハビリテーション名称(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.rehabili_cd = record[1] + self.rehabili_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py new file mode 100644 index 00000000..b1b33e66 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py @@ -0,0 +1,30 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSndMedSphe(UltmarcTable): + """レイアウト区分123: COM_医療圏二次医療圏""" + prefc_cd: str # 県コード + med_sphe_cd: str # 医療圏コード + thrd_cd: str # 3次コード + snd_med_sphe_name: str # 2次医療圏名 + requd_bed_or_equip_target: str # 基準病床数 or 整備目標数 + exist_bed_num: str # 既存病床数(病床数) + exist_bed_num_regist_ymd: str # 既存病床数(年月日) + plsmns_bed_num: str # 過不足病床数 + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.prefc_cd = record[1] + self.med_sphe_cd = record[2] + self.maintflag = record[3] + self.snd_med_sphe_name = record[6] + self.thrd_cd = record[7] + self.requd_bed_or_equip_target = record[8].strip() + self.exist_bed_num = record[9].strip() + self.exist_bed_num_regist_ymd = record[10] + self.plsmns_bed_num = record[11] + + # decimal型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.requd_bed_or_equip_target = self.requd_bed_or_equip_target if len(self.requd_bed_or_equip_target) > 0 else None + self.exist_bed_num = self.exist_bed_num if len(self.exist_bed_num) > 0 else None diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sosiety.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sosiety.py new file mode 100644 index 00000000..556bef5b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sosiety.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSosiety(UltmarcTable): + """レイアウト区分009: COM_学会""" + sosiety_cd: str # 学会コード + sosiety_name: str # 学会名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.sosiety_cd = record[1] + self.maint_flag = record[2] + self.sosiety_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py new file mode 100644 index 00000000..d26fe53e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py @@ -0,0 +1,42 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSpField(UltmarcTable): + """レイアウト区分511: COM_専門分野""" + dcf_pcf_dr_cd: str # DCFPCF医師コード + dcf_dr_id: str # レコードID + dcf_dr_code: str # 個人コード + dcf_dr_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + specialist_cd: str # 専門医コード + specialist_maint_div: str # 予備/専門医メンテ区分 + specialist_flg: str # 専門医フラグ + specialist_publsh_ymd: str # 専門医掲載年月日 + ackn_med_flg: str # 認定医フラグ + ackn_med_publsh_ymd: str # 認定医掲載年月日 + guide_med_flg: str # 指導医フラグ + guide_med_publsh_ymd: str # 指導医掲載年月日 + +# メンテナンス年月日 と 予備/転送年月日 は未使用 + + def __init__(self, record: list[str]): + super().__init__(record) + + self.dcf_dr_id = record[1].strip() + self.dcf_dr_code = record[2].strip() + self.dcf_dr_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.specialist_cd = record[5].strip() + self.specialist_maint_div = record[6].strip() + + self.specialist_flg = record[9].strip() + self.specialist_publsh_ymd = record[10].strip() + + self.ackn_med_flg = record[11].strip() + self.ackn_med_publsh_ymd = record[12].strip() + + self.guide_med_flg = record[13].strip() + self.guide_med_publsh_ymd = record[14].strip() + + # DCFPCF医師コード(レコードID + 個人コード + 個人コード(予備)) + self.dcf_pcf_dr_cd = ''.join([self.dcf_dr_id, self.dcf_dr_code, self.dcf_dr_yobi]) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_specialist_license.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_specialist_license.py new file mode 100644 index 00000000..f79acceb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_specialist_license.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSpecialistLicense(UltmarcTable): + """レイアウト区分010: COM_専門医資格""" + specialist_cd: str # 専門医コード + specialist_license_name: str # 専門医資格名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.specialist_cd = record[1] + self.maint_flag = record[2] + self.specialist_license_name = record[5] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py new file mode 100644 index 00000000..600e1632 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py @@ -0,0 +1,16 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComThrdMed(UltmarcTable): + """レイアウト区分122: COM_医療圏3次マスタ""" + pref_code: str # 都道府県コード + thrd_cd: str # 3次コード + thrd_med_sphe_name: str # 3次医療圏名称 + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.pref_code = record[1] + self.thrd_cd = record[2] + self.maintflag = record[3] + self.thrd_med_sphe_name = record[6] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py new file mode 100644 index 00000000..0bc0612d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py @@ -0,0 +1,18 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComTrtCourse(UltmarcTable): + """レイアウト区分001: COM_診療科目""" + trt_course_cd: str # 診療科目コード + trt_course_name_kana: str # 診療科目名カナ + trt_course_name_abb: str # 診療科目名略称 + trt_course_name: str # 診療科目名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.trt_course_cd = record[1] + self.maint_flag = record[2] + self.trt_course_name_abb = record[5] + self.trt_course_name = record[6] + self.trt_course_name_kana = record[7] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/mst_prefc.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/mst_prefc.py new file mode 100644 index 00000000..ae8e48ce --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/mst_prefc.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class MstPrefc(UltmarcTable): + """レイアウト区分006: 都道府県マスタ""" + prefc_cd: str # 都道府県コード + prefc_name: str # 都道府県名称 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.prefc_name = record[5] + self.prefc_cd = record[6] diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/ultmarc_table.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/ultmarc_table.py new file mode 100644 index 00000000..ebbbc39d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/tables/ultmarc_table.py @@ -0,0 +1,9 @@ +class UltmarcTable: + """アルトマーク関連テーブルの抽象クラス""" + record: list + + def __init__(self, record: list): + self.record = record + + def to_sql_parameter(self): + return vars(self) diff --git a/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py new file mode 100644 index 00000000..ecd1f111 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -0,0 +1,174 @@ + +from src.db.database import Database +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_alma_mapper import \ + ComAlmaMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_wrkplace_mapper import \ + ComDrWrkplaceMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_forfront_med_equip_mapper import \ + ComForfrontMedEquipMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hamtec_mapper import \ + ComHamtecMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_mapper import \ + ComInstMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_nurse_assrt_mapper import \ + ComNurseAssrtMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_pharm_mapper import \ + ComPharmMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_sp_field_mapper import \ + ComSpFieldMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_policy_med_mapper import \ + ComPolicyMedMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_rehabili_mapper import \ + ComRehabiliMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_regn_critic_pass_mapper import \ + ComRegnCriticPassMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_func_valuation_mapper import \ + ComMedFuncValuationMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ + ComDrMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper import \ + ComDrSosietyMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_base_mapper import \ + ComPrefcMedBaseMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_equpment_mapper import \ + ComPrefcMedEqupmentMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_dis_treat_mapper import \ + ComPrefcMedDisTreatMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sojourn_ope_mapper import \ + ComPrefcMedSojournOpeMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sp_outpat_mapper import \ + ComPrefcMedSpOutpatMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_att_mapper import \ + ComInstAttMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \ + ComCopHpMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_trt_course_mapper import \ + ComTrtCourseMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hp_assrt_mapper import \ + ComHpAssrtMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_alma_depart_disc_mapper import \ + ComAlmaDepartDiscMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper import \ + ComMedPrefcMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper import \ + ComThrdMedMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_snd_med_sphe_mapper import \ + ComSndMedSpheMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_area_city_mapper import \ + ComMedAreaCityMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_post_mapper import \ + ComPostMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_manage_mapper import \ + ComManageMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.mst_prefc_mapper import \ + MstPrefcMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_blng_sec_mapper import \ + ComBlngSecMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_sosiety_mapper import \ + ComSosietyMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_specialist_license_mapper import \ + ComSpecialistLicenseMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_div_mapper import \ + ComInstDivMapper + +# テーブルとのマッピング +COM_TABLE_LIST = { + # レコードID固定 + # COM_医師学会 + "521": ComDrSosietyMapper, + # COM_施設属性 + "111": ComInstAttMapper, + # COM_臨床研修病院 + "112": ComCopHpMapper, + # COM_医師 + "501": ComDrMapper, + # COM_施設 + "101": ComInstMapper, + # COM_薬局 + "102": ComPharmMapper, + # COM_医師勤務先 + "502": ComDrWrkplaceMapper, + # COM_専門分野 + "511": ComSpFieldMapper, + # COM_都道府県医療機能情報(基本) + "132": ComPrefcMedBaseMapper, + # COM_都道府県医療機能情報(施設設備) + "133": ComPrefcMedEqupmentMapper, + # COM_都道府県医療機能情報(疾患治療) + "134": ComPrefcMedDisTreatMapper, + # COM_都道府県医療機能情報(短期滞在手術) + "135": ComPrefcMedSojournOpeMapper, + # COM_都道府県医療機能情報(専門外来) + "136": ComPrefcMedSpOutpatMapper, + # COM_診療科目 + "001": ComTrtCourseMapper, + # COM_病院種別 + "002": ComHpAssrtMapper, + # COM_出身校学部識別 + "003": ComAlmaDepartDiscMapper, + # COM_出身校 + "004": ComAlmaMapper, + # COM_役職 + "005": ComPostMapper, + # 都道府県マスタ + "006": MstPrefcMapper, + # COM_経営体 + "007": ComManageMapper, + # COM_所属部科 + "008": ComBlngSecMapper, + # COM_学会 + "009": ComSosietyMapper, + # COM_専門医資格 + "010": ComSpecialistLicenseMapper, + # COM_施設区分 + "011": ComInstDivMapper, + # COM_高度先進医療 + "021": ComHamtecMapper, + # COM_先端医療機器 + "022": ComForfrontMedEquipMapper, + # COM_看護種別 + "023": ComNurseAssrtMapper, + # COM_医療機能評価 + "024": ComMedFuncValuationMapper, + # COM_地域クリティカルパス + "026": ComRegnCriticPassMapper, + # COM_疾患別リハビリテーション科 + "027": ComRehabiliMapper, + # COM_政策医療 + "028": ComPolicyMedMapper, + # COM_医療圏都道府県 + "121": ComMedPrefcMapper, + # COM_医療圏3次マスタ + "122": ComThrdMedMapper, + # COM_二次医療圏 + "123": ComSndMedSpheMapper, + # COM_医療圏都道府県市町村対照表 + "124": ComMedAreaCityMapper +} + + +class UltmarcTableMapperFactory: + + def create(self, layout_class: str, records: list[str], db: Database) -> UltmarcTableMapper: + """レイアウト区分とレコードIDから、マッピング先のテーブルマッパーを特定する + + Args: + layout_class (str): レイアウト区分 + records (list[str]): アルトマークデータの1行 + db (Database): データベース操作クラス + + Raises: + Exception: レイアウトを特定できない場合 + + Returns: + UltmarcTableMapper: マッパークラス + """ + # レイアウト区分から、マッピング先のテーブルを特定 + mapper_class = COM_TABLE_LIST.get(layout_class) + # レイアウト区分が特定できない場合はエラーとする + if mapper_class is None: + raise Exception(f'マッピング先のテーブルを特定できませんでした。レイアウト区分={layout_class}') + + return mapper_class(records, db) diff --git a/ecs/jskult-batch-ultmarc-io/src/db/__init__.py b/ecs/jskult-batch-ultmarc-io/src/db/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/db/database.py b/ecs/jskult-batch-ultmarc-io/src/db/database.py new file mode 100644 index 00000000..5ddaba4e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/db/database.py @@ -0,0 +1,195 @@ +from sqlalchemy import (Connection, CursorResult, Engine, QueuePool, + create_engine, text) +from sqlalchemy.engine.url import URL +from tenacity import retry, stop_after_attempt, wait_exponential + +from src.error.exceptions import DBException +from src.logging.get_logger import get_logger +from src.system_var import environment + +logger = get_logger(__name__) + + +class Database: + """データベース操作クラス""" + __connection: Connection = None + __transactional_engine: Engine = None + __autocommit_engine: Engine = None + __host: str = None + __port: str = None + __username: str = None + __password: str = None + __schema: str = None + __autocommit: bool = None + __connection_string: str = None + + def __init__(self, username: str, password: str, host: str, port: int, schema: str, autocommit: bool = False) -> None: + """このクラスの新たなインスタンスを初期化します + + Args: + username (str): DBユーザー名 + password (str): DBパスワード + host (str): DBホスト名 + port (int): DBポート + schema (str): DBスキーマ名 + autocommit(bool): 自動コミットモードで接続するかどうか(Trueの場合、トランザクションの有無に限らず即座にコミットされる). Defaults to False. + """ + self.__username = username + self.__password = password + self.__host = host + self.__port = int(port) + self.__schema = schema + self.__autocommit = autocommit + + self.__connection_string = URL.create( + drivername='mysql+pymysql', + username=self.__username, + password=self.__password, + host=self.__host, + port=self.__port, + database=self.__schema, + query={"charset": "utf8mb4", "local_infile": "1"}, + ) + + self.__transactional_engine = create_engine( + self.__connection_string, + pool_timeout=5, + poolclass=QueuePool + ) + + self.__autocommit_engine = self.__transactional_engine.execution_options(isolation_level='AUTOCOMMIT') + + @classmethod + def get_instance(cls, autocommit=False): + """インスタンスを取得します + + Args: + autocommit (bool, optional): 自動コミットモードで接続するかどうか(Trueの場合、トランザクションの有無に限らず即座にコミットされる). Defaults to False. + Returns: + Database: DB操作クラスインスタンス + """ + return cls( + username=environment.DB_USERNAME, + password=environment.DB_PASSWORD, + host=environment.DB_HOST, + port=environment.DB_PORT, + schema=environment.DB_SCHEMA, + autocommit=autocommit + ) + + @retry( + wait=wait_exponential( + multiplier=environment.DB_CONNECTION_RETRY_INTERVAL_INIT, + min=environment.DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS, + max=environment.DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS + ), + stop=stop_after_attempt(environment.DB_CONNECTION_MAX_RETRY_ATTEMPT), + retry_error_cls=DBException + ) + def connect(self): + """ + DBに接続します。接続に失敗した場合、リトライします。\n + インスタンスのautocommitがTrueの場合、自動コミットモードで接続する。(明示的なトランザクションも無視される) + Raises: + DBException: 接続失敗 + """ + try: + self.__connection = ( + self.__autocommit_engine.connect() if self.__autocommit is True + else self.__transactional_engine.connect()) + except Exception as e: + raise DBException(e) + + def execute_select(self, select_query: str, parameters=None) -> list[dict]: + """SELECTクエリを実行します。 + + Args: + select_query (str): SELECT文 + parameters (dict, optional): クエリのプレースホルダーに埋め込む変数の辞書. Defaults to None. + + Raises: + DBException: DBエラー + + Returns: + list[dict]: カラム名: 値の辞書リスト + """ + if self.__connection is None: + raise DBException('DBに接続していません') + + result = None + try: + # トランザクションが開始している場合は、トランザクションを引き継ぐ + if self.__connection.in_transaction(): + result = self.__connection.execute(text(select_query), parameters) + else: + # トランザクションが明示的に開始していない場合は、クエリ単位でトランザクションをbegin-commitする。 + result = self.__execute_with_transaction(select_query, parameters) + except Exception as e: + raise DBException(f'SQL Error: {e}') + + result_rows = result.mappings().all() + return result_rows + + def execute(self, query: str, parameters=None) -> CursorResult: + """SQLクエリを実行します。 + + Args: + query (str): SQL文 + parameters (dict, optional): クエリのプレースホルダーに埋め込む変数の辞書. Defaults to None. + + Raises: + DBException: DBエラー + + Returns: + CursorResult: 取得結果 + """ + if self.__connection is None: + raise DBException('DBに接続していません') + + result = None + try: + # トランザクションが開始している場合は、トランザクションを引き継ぐ + if self.__connection.in_transaction(): + result = self.__connection.execute(text(query), parameters) + else: + # トランザクションが明示的に開始していない場合は、クエリ単位でトランザクションをbegin-commitする。 + result = self.__execute_with_transaction(query, parameters) + except Exception as e: + raise DBException(f'SQL Error: {e}') + + return result + + def begin(self): + """トランザクションを開始します。""" + if not self.__connection.in_transaction(): + self.__connection.begin() + + def commit(self): + """トランザクションをコミットします""" + if self.__connection.in_transaction(): + self.__connection.commit() + + def rollback(self): + """トランザクションをロールバックします""" + if self.__connection.in_transaction(): + self.__connection.rollback() + + def disconnect(self): + """DB接続を切断します。""" + if self.__connection is not None: + self.__connection.close() + self.__connection = None + + def to_jst(self): + self.execute('SET time_zone = "+9:00"') + + def __execute_with_transaction(self, query: str, parameters: dict): + # トランザクションを開始してクエリを実行する + with self.__connection.begin(): + try: + result = self.__connection.execute(text(query), parameters=parameters) + except Exception as e: + self.__connection.rollback() + raise e + # ここでコミットされる + return result diff --git a/ecs/jskult-batch-ultmarc-io/src/error/__init__.py b/ecs/jskult-batch-ultmarc-io/src/error/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/error/exceptions.py b/ecs/jskult-batch-ultmarc-io/src/error/exceptions.py new file mode 100644 index 00000000..055c24f6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/error/exceptions.py @@ -0,0 +1,10 @@ +class MeDaCaException(Exception): + pass + + +class DBException(MeDaCaException): + pass + + +class BatchOperationException(MeDaCaException): + pass diff --git a/ecs/jskult-batch-ultmarc-io/src/logging/get_logger.py b/ecs/jskult-batch-ultmarc-io/src/logging/get_logger.py new file mode 100644 index 00000000..f36f1199 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/logging/get_logger.py @@ -0,0 +1,37 @@ +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 diff --git a/ecs/jskult-batch-ultmarc-io/src/main.py b/ecs/jskult-batch-ultmarc-io/src/main.py new file mode 100644 index 00000000..04be35fb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/main.py @@ -0,0 +1,72 @@ +"""実消化&アルトマーク アルトマーク取込/データ出力処理""" + +from src.batch.batch_functions import ( + get_batch_statuses, update_batch_processing_flag_in_processing) +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc import import_ultmarc_process, output_dcf_dsf_data +from src.error.exceptions import BatchOperationException +from src.logging.get_logger import get_logger +from src.system_var import constants + +logger = get_logger('アルトマーク取込/データ出力') + +# バッチ共通設定を取得 +batch_context = BatchContext.get_instance() + + +def exec(): + try: + logger.info('アルトマーク取込/データ出力:開始') + try: + # 日次バッチ処置中フラグ、dump処理状態区分、処理日を取得 + batch_processing_flag, dump_status_kbn, syor_date = get_batch_statuses() + except BatchOperationException as e: + logger.exception(f'日付テーブル取得(異常終了){e}') + return constants.BATCH_EXIT_CODE_SUCCESS + + # 日次バッチ処理中の場合、後続の処理は行わない + if batch_processing_flag == constants.BATCH_ACTF_BATCH_IN_PROCESSING: + logger.error('日次バッチ処理中のため、日次バッチ処理を終了します。') + return constants.BATCH_EXIT_CODE_SUCCESS + + # dump取得が正常終了していない場合、後続の処理は行わない + if dump_status_kbn != constants.DUMP_STATUS_KBN_COMPLETE: + logger.error('dump取得が正常終了していないため、日次バッチ処理を終了します。') + return constants.BATCH_EXIT_CODE_SUCCESS + + logger.info(f'処理日={syor_date}') + # バッチ共通設定に処理日を追加 + batch_context.syor_date = syor_date + + # バッチ処理中に更新 + try: + update_batch_processing_flag_in_processing() + except BatchOperationException as e: + logger.exception(f'処理フラグ更新(未処理→処理中) エラー(異常終了){e}') + return constants.BATCH_EXIT_CODE_SUCCESS + + try: + logger.info('アルトマーク取込:起動') + import_ultmarc_process.exec_import() + logger.info('アルトマーク取込:終了') + except BatchOperationException as e: + logger.exception(f'アルトマーク取込処理エラー(異常終了){e}') + return constants.BATCH_EXIT_CODE_SUCCESS + + # 調査目的でアルトマーク取込が行われたかどうかをログ出力 + logger.debug(f'{"アルトマーク取込が行われました。" if batch_context.is_ultmarc_imported else "アルトマーク取込が行われませんでした。"}') + + try: + logger.info('V実消化用施設データ作成処理:起動') + output_dcf_dsf_data.exec() + logger.info('V実消化用施設データ作成処理:終了') + except BatchOperationException as e: + logger.exception(f'V実消化用施設データ作成処理エラー(異常終了){e}') + return constants.BATCH_EXIT_CODE_SUCCESS + + logger.info('アルトマーク取込/データ出力:終了') + return constants.BATCH_EXIT_CODE_SUCCESS + + except Exception as e: + logger.exception(f'日次バッチ処理中に想定外のエラーが発生しました {e}') + raise e diff --git a/ecs/jskult-batch-ultmarc-io/src/system_var/__init__.py b/ecs/jskult-batch-ultmarc-io/src/system_var/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/src/system_var/constants.py b/ecs/jskult-batch-ultmarc-io/src/system_var/constants.py new file mode 100644 index 00000000..d5538a80 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/system_var/constants.py @@ -0,0 +1,11 @@ +# バッチ正常終了コード +BATCH_EXIT_CODE_SUCCESS = 0 + +# バッチ処理中フラグ:未処理 +BATCH_ACTF_BATCH_UNPROCESSED = '0' +# バッチ処理中フラグ:処理中 +BATCH_ACTF_BATCH_IN_PROCESSING = '1' +# dump取得状態区分:未処理 +DUMP_STATUS_KBN_UNPROCESSED = '0' +# dump取得状態区分:dump取得正常終了 +DUMP_STATUS_KBN_COMPLETE = '2' diff --git a/ecs/jskult-batch-ultmarc-io/src/system_var/environment.py b/ecs/jskult-batch-ultmarc-io/src/system_var/environment.py new file mode 100644 index 00000000..0af7a118 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/src/system_var/environment.py @@ -0,0 +1,38 @@ +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 +ULTMARC_DATA_BUCKET = os.environ['ULTMARC_DATA_BUCKET'] +ULTMARC_DATA_FOLDER = os.environ['ULTMARC_DATA_FOLDER'] +JSKULT_BACKUP_BUCKET = os.environ['JSKULT_BACKUP_BUCKET'] +ULTMARC_BACKUP_FOLDER = os.environ['ULTMARC_BACKUP_FOLDER'] +VJSK_BACKUP_FOLDER = os.environ['VJSK_BACKUP_FOLDER'] +JSKULT_CONFIG_BUCKET = os.environ['JSKULT_CONFIG_BUCKET'] +JSKULT_CONFIG_CALENDAR_FOLDER = os.environ['JSKULT_CONFIG_CALENDAR_FOLDER'] +JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME = os.environ['JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME'] +VJSK_DATA_SEND_FOLDER = os.environ['VJSK_DATA_SEND_FOLDER'] +VJSK_DATA_BUCKET = os.environ['VJSK_DATA_BUCKET'] +JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILE_NAME = os.environ['JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILE_NAME'] +JSKULT_CONFIG_CONVERT_FOLDER = os.environ['JSKULT_CONFIG_CONVERT_FOLDER'] +JSKULT_ULTMARC_HEX_CONVERT_CONFIG_FILE_NAME = os.environ['JSKULT_ULTMARC_HEX_CONVERT_CONFIG_FILE_NAME'] +VJSK_DATA_RECEIVE_FOLDER = os.environ['VJSK_DATA_RECEIVE_FOLDER'] + +# 初期値がある環境変数 +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)) + +# 連携データ抽出期間 +SALES_LAUNDERING_EXTRACT_DATE_PERIOD = int(os.environ['SALES_LAUNDERING_EXTRACT_DATE_PERIOD']) +# 洗替対象テーブル名 +SALES_LAUNDERING_TARGET_TABLE_NAME = os.environ['SALES_LAUNDERING_TARGET_TABLE_NAME'] +# 卸実績洗替で作成するデータの期間(年単位) +SALES_LAUNDERING_TARGET_YEAR_OFFSET = os.environ['SALES_LAUNDERING_TARGET_YEAR_OFFSET'] diff --git a/ecs/jskult-batch-ultmarc-io/tests/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_delete.csv new file mode 100644 index 00000000..a437f7df --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_delete.csv @@ -0,0 +1,7 @@ +"004","001","A","20141113","20141114","北大" +"004","002","A","20141113","20141114","札幌医" +"004","003","A","20141113","20141114","弘大" +"004","004","A","20141113","20141114", +"004","005","A","20141113","20141114","東北大" +"004","006","C","20141113","20141114","福島医" +"004","007","A","20141113","20141114","群馬大" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_insert.csv new file mode 100644 index 00000000..4f37bb30 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_insert.csv @@ -0,0 +1,6 @@ +"004","001","A","20141113","20141114","北大" +"004","002","A","20141113","20141114","札幌医" +"004","003","A","20141113","20141114","弘大" +"004","004","A","20141113","20141114","岩手医" +"004","005","A","20141113","20141114","東北大" +"004","006","A","20141113","20141114","福島医" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_update.csv new file mode 100644 index 00000000..0599c239 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/com_alma_update.csv @@ -0,0 +1,7 @@ +"004","001","B","20141113","20141114","北大" +"004","002","B","20141113","20141114","札幌医" +"004","003","B","20141113","20141114","弘大" +"004","004","B","20141113","20141114", +"004","005","B","20141113","20141114","福島医" +"004","006","B","20141113","20141114","東北大" +"004","007","A","20141113","20141114","神大" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_delete.csv new file mode 100644 index 00000000..2aa73354 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_delete.csv @@ -0,0 +1,7 @@ +"alma_cd","alma","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","clsComAlma" +"002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","clsComAlma" +"003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","clsComAlma" +"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 11:35:27","clsComAlma" +"005","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","clsComAlma" +"006","福島医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","clsComAlma" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_update.csv new file mode 100644 index 00000000..5284785e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/db_com_alma_before_update.csv @@ -0,0 +1,7 @@ +"alma_cd","alma","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"002","札幌医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"003","弘大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"004","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"005","東北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"006","福島医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv new file mode 100644 index 00000000..6cb36d4b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv @@ -0,0 +1,8 @@ +"alma_cd","alma","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"005","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"006","福島医","20171020","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" +"007","群馬大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:43:15","com_alma_mapper","2017/10/20 10:43:15","com_alma_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_insert.csv new file mode 100644 index 00000000..8fafdb5f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_insert.csv @@ -0,0 +1,7 @@ +"alma_cd","alma","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" +"002","札幌医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" +"003","弘大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" +"004","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" +"005","東北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" +"006","福島医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:27:33","com_alma_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv new file mode 100644 index 00000000..f25889be --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv @@ -0,0 +1,8 @@ +"alma_cd","alma","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" +"002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" +"003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" +"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","com_alma_mapper" +"005","福島医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" +"006","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" +"007","神大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:35:27","com_alma_mapper" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py new file mode 100644 index 00000000..8390096f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_alma_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComAlmaMapper: + """レイアウト区分004: COM_出身校""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_出身校テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_insert.csv')) + primary_keys = [f"'{primary_key['alma_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_alma WHERE alma_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_出身校テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_alma_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_update.csv')) + primary_keys = [f"'{primary_key['alma_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_alma WHERE alma_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_出身校テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_alma_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_mapper.ComAlmaMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_mapper.ComAlmaMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_delete.csv')) + primary_keys = [f"'{primary_key['alma_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_alma WHERE alma_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv new file mode 100644 index 00000000..430eb8d2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv @@ -0,0 +1,7 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","","8","21" +"003","003","1","A","20141113","20141114","岩手医","8","21" +"003","004","1","C","20141113","20141114","弘大","8","21" +"003","004","2","A","20141113","20141114","岩手医","4","19" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv new file mode 100644 index 00000000..3525f111 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv @@ -0,0 +1,7 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","札幌医","3","20" +"003","003","1","A","20141113","20141114","弘大","3","19" +"003","004","1","A","20141113","20141114","岩手医","3","03" +"003","999","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお","1","99" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv new file mode 100644 index 00000000..7f9d64aa --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv @@ -0,0 +1,6 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","","8","21" +"003","003","1","A","20141113","20141114","岩手医","8","21" +"003","004","1","A","20141113","20141114","弘大","8","21" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv new file mode 100644 index 00000000..9b7b0649 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv @@ -0,0 +1,7 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","1","1","09","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"001","2","3","40","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"001","3","3","42","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"002","1","8","21","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"003","1","8","21","岩手医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"004","1","8","21","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv new file mode 100644 index 00000000..64e33084 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","1","1","09","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"001","2","3","40","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"001","3","3","42","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"002","1","3","20","札幌医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"003","1","3","19","弘大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"004","1","3","03","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv new file mode 100644 index 00000000..9774279b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"004","1","8","21","弘大","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"004","2","4","19","岩手医","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 10:22:05","com_alma_depart_disc_mapper","2023/05/14 10:22:05","com_alma_depart_disc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv new file mode 100644 index 00000000..23c77252 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","1","1","09","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"002","1","3","20","札幌医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"003","1","3","19","弘大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"004","1","3","03","岩手医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv new file mode 100644 index 00000000..69a09486 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"004","1","8","21","弘大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py new file mode 100644 index 00000000..b3881eac --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py @@ -0,0 +1,236 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_alma_depart_disc_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComAlmaDepartDiscMapper: + """レイアウト区分003: COM_出身校学部識別""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_出身校学部識別テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_depart_disc_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_depart_disc_insert.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_出身校学部識別テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_depart_disc_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_alma_depart_disc_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma_depart_disc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_depart_disc_update.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_出身校学部識別テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_alma_depart_disc_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_alma_depart_disc_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma_depart_disc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_alma_depart_disc_delete.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_delete.csv new file mode 100644 index 00000000..cbeb7eae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_delete.csv @@ -0,0 +1,7 @@ +"008","0067","A","20141113","20141114","","シヨウカキナイカ.ケツエキナイカ","1","A02","117" +"008","0068","A","20141113","20141114","緩和内科","カンワ","1","A79","030" +"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","2","L81","010" +"008","0070","C","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A08","052" +"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","020" +"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137" +"008","0073","A","20141113","20141114","内科(内分泌・代謝)","ナイカ(ナイブンピ.タイシヤ)","1","A05","144" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_insert.csv new file mode 100644 index 00000000..f9a527d2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_insert.csv @@ -0,0 +1,7 @@ +"008","0067","A","20141113","20141114","消化器内科・血液内科","シヨウカキナイカ.ケツエキナイカ","1","A02","117" +"008","0068","A","20141113","20141114","緩和内科","カンワナイカ","1","A79","030" +"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","1","L81","010" +"008","0070","A","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A07","052" +"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","019" +"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137" +"008","9999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオアイウエオアイウエオアイウエオアイウ","9","999","999" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_update.csv new file mode 100644 index 00000000..b2aff05b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/com_blng_sec_update.csv @@ -0,0 +1,6 @@ +"008","0067","A","20141113","20141114","","シヨウカキナイカ.ケツエキナイカ","1","A02","117" +"008","0068","A","20141113","20141114","緩和内科","カンワ","1","A79","030" +"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","2","L81","010" +"008","0070","A","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A08","052" +"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","020" +"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_delete.csv new file mode 100644 index 00000000..6637e500 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_delete.csv @@ -0,0 +1,7 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20171024","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" +"0068","カンワ","緩和内科","20171024","20171024","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" +"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20171024","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" +"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20171024","NULL","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" +"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20171024","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" +"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20171024","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_update.csv new file mode 100644 index 00000000..9e3d6b55 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/db_com_blng_sec_before_update.csv @@ -0,0 +1,8 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0067","シヨウカキナイカ.ケツエキナイカ","消化器内科・血液内科","20171024","NULL","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"0068","カンワナイカ","緩和内科","20171024","NULL","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","NULL","NULL","1","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","NULL","NULL","1","A07","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","NULL","NULL","1","A06","019","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" +"9999","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_delete.csv new file mode 100644 index 00000000..445e496f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_delete.csv @@ -0,0 +1,8 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20230515","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0068","カンワ","緩和内科","20171024","20230515","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20230515","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20171024","20230515","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20230515","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20230515","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper" +"0073","ナイカ(ナイブンピ.タイシヤ)","内科(内分泌・代謝)","20230515","NULL","NULL","1","A05","144","NULL","NULL","NULL","NULL","2023/05/15 11:10:31","com_blng_sec_mapper","2023/05/15 11:10:31","com_blng_sec_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_insert.csv new file mode 100644 index 00000000..501d4cdb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_insert.csv @@ -0,0 +1,8 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0067","シヨウカキナイカ.ケツエキナイカ","消化器内科・血液内科","20230515","NULL","NULL","1","A02","117","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"0068","カンワナイカ","緩和内科","20230515","NULL","NULL","1","A79","030","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20230515","NULL","NULL","1","L81","010","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20230515","NULL","NULL","1","A07","052","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20230515","NULL","NULL","1","A06","019","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20230515","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" +"9999","アイウエオアイウエオアイウエオアイウエオアイウ","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","9","999","999","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_update.csv new file mode 100644 index 00000000..9743e740 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/expect_com_blng_sec_update.csv @@ -0,0 +1,8 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20230515","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"0068","カンワ","緩和内科","20171024","20230515","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20230515","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20230515","NULL","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20230515","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20230515","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper" +"9999","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/test_com_blng_sec_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/test_com_blng_sec_mapper.py new file mode 100644 index 00000000..4825682e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_blng_sec/test_com_blng_sec_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_blng_sec_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComBlngSecMapper: + """レイアウト区分008: COM_所属部科""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_所属部科テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_blng_sec_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_insert.csv')) + primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_所属部科テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_blng_sec_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_blng_sec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_update.csv')) + primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_所属部科テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_blng_sec_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_blng_sec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_delete.csv')) + primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv new file mode 100644 index 00000000..bc912e04 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv @@ -0,0 +1,3 @@ +"112","00","9901649","","B","00","1101813","","2013","1","20170328","20170401","" +"112","00","9904439","","B","00","1101135","","2013","1","20170328","20170401","" +"112","00","9904439","","B","00","1101717","","2013","1","20170328","20170401","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv new file mode 100644 index 00000000..37706281 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv @@ -0,0 +1,7 @@ +"112","00","9901649","","A","00","1101813","","2013","2","20141113","20141114","1" +"112","00","9901649","","A","00","1101813","","2014","2","20141113","20141114","1" +"112","00","9904439","","A","00","1101135","","2013","2","20141113","20141114","2" +"112","00","9904439","","A","00","1101135","","2014","2","20141113","20141114","2" +"112","00","9904439","","A","00","1101717","","2013","2","20141113","20141114","1" +"112","00","9904439","","A","00","1101717","","2014","2","20141113","20141114","1" +"112","99","9999999","99","A","11","1111111","11","2023","0","20141113","20141114","1" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv new file mode 100644 index 00000000..cecbf3a3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv @@ -0,0 +1,4 @@ +"112","00","9901649","","B","00","1101813","","2013","3","20141113","20141114","1" +"112","00","9901649","","B","00","1101813","","2014","4","20141113","20141114","1" +"112","99","9999999","99","B","11","1111111","11","2014","4","20141113","20141114","123" +"112","99","9999999","00","B","11","1111111","11","2014","4","20141113","20141114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv new file mode 100644 index 00000000..536cd1c2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009901649","001101813","2014","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv new file mode 100644 index 00000000..42519300 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009901649","001101813","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999999","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999900","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv new file mode 100644 index 00000000..efcda970 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2014","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv new file mode 100644 index 00000000..8864ba3f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009901649","001101813","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"99999999999","11111111111","2023","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv new file mode 100644 index 00000000..0ab83cfa --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:49:28","com_cop_hp_mapper" +"009901649","001101813","2014","NULL","1","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:49:28","com_cop_hp_mapper" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999999","11111111111","2014","NULL","123","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:57:12","com_cop_hp_mapper" +"99999999900","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py new file mode 100644 index 00000000..553c4261 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py @@ -0,0 +1,250 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_cop_hp_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComCopHpMapper: + """レイアウト区分112: COM_臨床研修病院""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_臨床研修病院テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_cop_hp_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_cop_hp_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_臨床研修病院テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_cop_hp_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_cop_hp_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_cop_hp', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_cop_hp_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_臨床研修病院テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_cop_hp_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_cop_hp_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_cop_hp', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_cop_hp_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_cop_hp')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv new file mode 100644 index 00000000..6b3b6b3c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv @@ -0,0 +1,6 @@ +"501","01","222222","33","C","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997906","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","995783","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","999613","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997682","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv new file mode 100644 index 00000000..383ecb75 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv @@ -0,0 +1,7 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","A","20141113","20141114",,,,,"菅間 正気","カンマ セイキ","1","3","16","01","14","37","37","3","44","011","1","3","44","A01","C01","I01","K01","C04",,"14","104","094","000","231-0862","神奈川県横浜市中区山手町126-1 クレスト山手306","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","126-1-306","04","05","03","00","08","10","07","00","045-625-2067",,,,,"1",,, +"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","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","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv new file mode 100644 index 00000000..09c509fb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -0,0 +1,9 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","99","999999","99","A","20230425","20230426","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","994301","00","B","20170911","20170912","","01","998099","00","","","2","","","","","","","","","022","2","","","@","","","","","","13","102","022","002","103-0013","東京都中央区日本橋人形町2-7-10-10","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","2-7-10-10","09","09","09","09","09","09","09","09","045-999-9999","03","B06","20160831","20161125","","","","1" +"501","01","995783","00","B","20170921","20170922","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4","04","" +"501","01","997682","00","B","20170922","20170923","","","","","横浜 三紀子","ヨコハマ ミキコ","2","4","3","11","12","99","99","3","52","057","1","3","10","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","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" +"501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" +"501","99","999999","90","B","20230425","20230426","@","@","9","10","11","12","1","@","15","06","17","18","19","@","21","022","3","@","25","@","C27","I28","K29","L30","@","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","@","@","@","@","@","3","@","55","6" +"501","99","999999","00","A","20230425","20230426","","","","","","","","","","","","","","","","","","","","A01","","A03","","A05","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv new file mode 100644 index 00000000..6afe1981 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199790600","オカ モリマサ","丘 守正","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","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv new file mode 100644 index 00000000..1c34701d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -0,0 +1,10 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaaa" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126−1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1","","","011","1","3","44","1969","","NULL","1","","","","","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","","","NULL","","","","","00000000000","00","000","","00000000","00000000","55","2","1","","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","NULL","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","NULL","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"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","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"9999999990","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" +"9999999900","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv new file mode 100644 index 00000000..cf12270f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv new file mode 100644 index 00000000..f2497d92 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv @@ -0,0 +1,2 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv new file mode 100644 index 00000000..cf4d0ac7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv @@ -0,0 +1,16 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999900","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv new file mode 100644 index 00000000..c11243ae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv @@ -0,0 +1,6 @@ +era_cd","era_name","year","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","明治","1867","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT","2014/10/24 11:29:55","INIT" +"2","大正","1911","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"3","昭和","1925","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"4","平成","1988","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT","2014/10/24 11:29:57","INIT" +"5","令和","2018","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_support","2019/05/07 10:27:29","dwh_support" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv new file mode 100644 index 00000000..94734929 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","20230425","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","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","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv new file mode 100644 index 00000000..3d251803 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv @@ -0,0 +1,8 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37",,,,"045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126-1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1",,,"011","1","3","44","1969",,,"1",,,,,"3","44","1969","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" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53",,,,,,,,"00000000000","00","000",,"00000000","00000000","55","2","1",,"7","039","1","3","53","1978",,,"1","02","A05","20051003",,"3","53","1978","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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv new file mode 100644 index 00000000..900ee683 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv new file mode 100644 index 00000000..eb819263 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv @@ -0,0 +1,23 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199430100","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A11","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A21","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A31","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C01","0199430100","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199430100","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I01","0199430100","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K01","0199430100","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L01","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv new file mode 100644 index 00000000..6141d0cc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv @@ -0,0 +1,22 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A01","9999999900","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A03","9999999900","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" +"A05","9999999900","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv new file mode 100644 index 00000000..24ac98c0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37",,,"NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2-7-10-10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2",,,"022","2","3","44","1969","1","0199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992",,,,,"00000000000","00","000",,"00000000","00000000","55","2","1","5","7","039","1","3","53","1978",,"NULL","1","02","A05","20051003",,"3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99",,,"NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2",,,"057","1","3","52","1977","1","NULL","1",,,,,"3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","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",,"5","799","1","NULL","NULL","NULL",,"NULL","1",,,,,,,"NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37",,,"NULL",,"カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2-8-30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1",,,"NULL",,"0148106500","1",,,,,"NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"9999999990","12","11","NULL","NULL","NULL","NULL","NULL","18","NULL","NULL","NULL","NULL","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","NULL","NULL","022","3","NULL","NULL","NULL","6","NULL","1","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py new file mode 100644 index 00000000..528a8ef1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -0,0 +1,370 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_dr_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComDrMapper: + """レイアウト区分501: COM_医師""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医師テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_insert.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_insert.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_dr_trt_course')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医師テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_update.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_dr_trt_course')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医師テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_delete.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_delete.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv new file mode 100644 index 00000000..4e125d4b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv @@ -0,0 +1,9 @@ +"521","01","994301","00","B","027","1","20160826","20160903","" +"521","01","995783","00","B","027","1","20160826","20160903","" +"521","01","997682","00","B","027","1","20160826","20160903","" +"521","01","997906","00","B","008","1","20170331","20170408","" +"521","01","997906","00","B","223","1","20170407","20170415","" +"521","01","997906","00","B","116","1","20170407","20170415","" +"521","01","999613","00","B","027","1","20170414","20170422","" +"521","01","999613","00","B","223","1","20170414","20170422","" +"521","01","999999","00","B","999","1","20170414","20170422","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv new file mode 100644 index 00000000..7ef35de9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv @@ -0,0 +1,10 @@ +"521","01","994301","00","A","027","2","20141113","20141114","2003" +"521","01","994301","00","A","223","2","20141113","20141114","2002" +"521","01","995783","00","A","027","2","20141113","20141114","2003" +"521","01","997682","00","A","027","2","20141113","20141114","2014" +"521","01","997906","00","A","027","2","20141113","20141114","2003" +"521","01","997906","00","A","116","2","20141113","20141114","2002" +"521","01","997906","00","A","223","2","20141113","20141114","2002" +"521","01","999613","00","A","027","2","20141113","20141114","2003" +"521","01","999613","00","A","223","2","20141113","20141114","2002" +"521","01","999999","99","A","999","2","20141113","20141114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv new file mode 100644 index 00000000..b592b065 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv @@ -0,0 +1,3 @@ +"521","01","994301","00","B","027","2","20170826","20170903","2016" +"521","01","997906","00","B","008","2","20161113","20161114","2003" +"521","01","999999","99","B","999","2","20161113","20161114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv new file mode 100644 index 00000000..22213e4a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv @@ -0,0 +1,11 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2016","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/11 21:20:37","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"008","0199790600","2003","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 14:00:03","clsComDrSosiety","2017/10/11 21:20:37","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv new file mode 100644 index 00000000..0de14d99 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv @@ -0,0 +1,11 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"999","0199999999","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv new file mode 100644 index 00000000..b614477b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv @@ -0,0 +1,3 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv new file mode 100644 index 00000000..d4efb0c6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv @@ -0,0 +1,10 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199578300","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199768200","2014","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199790600","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199961300","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"116","0199790600","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"223","0199430100","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"223","0199790600","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"999","0199999999","","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv new file mode 100644 index 00000000..a4b0381c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv @@ -0,0 +1,12 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"008","0199790600","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/09 14:00:03","com_dr_sosiety_mapper","2023/04/09 14:00:03","com_dr_sosiety_mapper" +"027","0199430100","2016","20171008","20230426","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2023/04/09 14:00:03","com_dr_sosiety_mapper" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"999","0199999999","","20171008","20230426","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2023/04/08 20:57:12","com_dr_sosiety_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py new file mode 100644 index 00000000..4e8dbad8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py @@ -0,0 +1,244 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_dr_sosiety_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComDrSosietyMapper: + """レイアウト区分521: COM_所属学会""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_所属学会テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_sosiety_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_insert.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_sosiety_cd, param_dcf_pcf_dr_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_所属学会テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_sosiety_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_sosiety_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_update.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_dcf_pcf_dr_cd, param_sosiety_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_所属学会テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_sosiety_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_sosiety_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_dr_sosiety')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_dcf_pcf_dr_cd, param_sosiety_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_delete.csv new file mode 100644 index 00000000..d23ec8cc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_delete.csv @@ -0,0 +1,5 @@ +"502","01","997682","","B","00","5408060","","1","20141204","20141206","","","1512","","","" +"502","01","997906","","B","00","5409446","","1","20141128","20141206","","","6802","","","" +"502","01","997682","","B","00","5412977","","1","20141204","20141206","","","6720","","","" +"502","01","995783","","B","00","5414992","","1","20141204","20141206","","","1118","","","" +"502","01","997906","","B","00","5503358","","1","20141202","20141206","","","7212","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_insert.csv new file mode 100644 index 00000000..80592c3a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_insert.csv @@ -0,0 +1,11 @@ +"502","01","995783","","A","00","5414992","","2","20141113","20141114","501","","","","","" +"502","01","995783","","A","00","5507600","","2","20141113","20141114","133","144","9112","","","" +"502","01","997682","","A","00","5402984","","2","20141113","20141114","165","144","1512","","","" +"502","01","997682","","A","00","5408060","","2","20141113","20141114","","144","6802","","","" +"502","01","997682","","A","00","5412977","","2","20141113","20141114","","144","6720","","","" +"502","01","997906","","A","00","5409446","","2","20141113","20141114","501","","1118","","","" +"502","01","997906","","A","00","5503358","","2","20141113","20141114","172","144","1118","","","" +"502","01","997906","","A","00","5504428","","2","20141113","20141114","","144","7212","","","" +"502","01","997906","","A","00","5507600","","2","20141113","20141114","","144","9114","","","" +"502","01","999613","","A","00","5504428","","2","20141113","20141114","","144","5140","","","" +"502","01","995784","","B","00","5507600","","2","20170907","20170910","@","@","@","@","@","@" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_update.csv new file mode 100644 index 00000000..5cc42095 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/com_dr_wrkplace_update.csv @@ -0,0 +1,6 @@ +"502","01","997906","","B","00","5409446","","","20170906","20170910","","","","","","@" +"502","01","995783","","B","00","5507600","","","20170907","20170910","@","802","@","@","@","" +"502","01","997682","","A","00","5408060","","","20141113","20141114","","","","","","" +"502","01","997682","","B","00","5402984","","","20141113","20141114","165","@","","","","" +"502","01","999613","","B","00","5504428","","2","20170328","20170401","501","","9999","内分泌・骨代謝外来","ナイブンピ.ホネタイシヤガイライ","" +"502","01","999999","","B","00","5409446","","","20170906","20170910","","","","","","" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_delete.csv new file mode 100644 index 00000000..d37f092e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_delete.csv @@ -0,0 +1,6 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1512",,NULL,"20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2022-05-16 22:18:28","clsComBlngSec" +"6802","NULL",,"20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2022-05-30 22:18:48","clsComBlngSec" +"6720",,"NULL","20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2019-12-23 22:13:44","clsComBlngSec" +"1118","NULL",,"20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2016-05-17 00:13:18","clsComBlngSec" +"7212",,"NULL","20150818","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-18 00:12:58","clsComBlngSec","2021-01-11 22:15:40","clsComBlngSec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_insert.csv new file mode 100644 index 00000000..bb604b15 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_blng_sec_before_insert.csv @@ -0,0 +1,9 @@ +"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1512","シヨウカキゲカ","消化器外科","20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2022-05-16 22:18:28","clsComBlngSec" +"6802","シヨウカキゲカガク1","消化器外科学Ⅰ","20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2022-05-30 22:18:48","clsComBlngSec" +"6720","シヨウカキゲカガク","消化器外科学","20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2019-12-23 22:13:44","clsComBlngSec" +"1118","ケツエキナイカ","血液内科","20150825","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-25 00:10:58","clsComBlngSec","2016-05-17 00:13:18","clsComBlngSec" +"7212","ユケツ.サイボウチリヨウガク","輸血・細胞治療学","20150818","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-18 00:12:58","clsComBlngSec","2021-01-11 22:15:40","clsComBlngSec" +"5140","ヤクリガク","薬理学","20150818","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-18 00:12:58","clsComBlngSec","2022-08-22 22:23:47","clsComBlngSec" +"9112","ハツセイ.セイシヨクブモン","発生・生殖部門","20150818","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-18 00:12:58","clsComBlngSec","2022-08-01 22:23:53","clsComBlngSec" +"9114","サイボウイシヨクブモン","細胞移植部門","20150818","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2015-08-18 00:12:58","clsComBlngSec","2022-08-01 22:23:53","clsComBlngSec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_delete.csv new file mode 100644 index 00000000..d2432eb9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_delete.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01995783","9999",,"802","2020-02-23",,,,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" +"005402984","01997682","1512","165",,"2020-02-23","シヨウカキゲカ","消化器外科",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" +"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" +"005503358","01997906","1118","172","144","2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01999613","9999","501","144","2020-02-23","ナイブンピ.ホネタイシヤガイライ","内分泌・骨代謝外来",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_update.csv new file mode 100644 index 00000000..8113fcc1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_before_update.csv @@ -0,0 +1,12 @@ +"dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01995783","9112","133","144","2020-02-22","ハツセイ.セイシヨクブモン","発生・生殖部門","1","2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005402984","01997682","1512","165","144","2020-02-22","シヨウカキゲカ","消化器外科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科","1","2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005503358","01997906","1118","172","144","2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01999613","5140",,"144","2020-02-22","ヤクリガク","薬理学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005409446","01999999","1118",,,"2020-02-22","ケツエキナイカ","血液内科",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_his_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_his_before_delete.csv new file mode 100644 index 00000000..c0621a43 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/db_com_dr_wrkplace_his_before_delete.csv @@ -0,0 +1,4 @@ +"dr_wrkplace_his_key","dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","aply_end_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1482020","005507600","01995783","9112","133","144","20200222","ハツセイ.セイシヨクブモン","発生・生殖部門",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"1482021","005402984","01997682","1512","165","144","20200222","シヨウカキゲカ","消化器外科",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"1482022","005504428","01999613","5140","999","144","20200222","ヤクリガク","薬理学",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_delete.csv new file mode 100644 index 00000000..4f5049a2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_delete.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"005507600","01995783","9999",,"802","2020-02-23",,,,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" +"005402984","01997682","1512","165",,"2020-02-23","シヨウカキゲカ","消化器外科",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" +"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01999613","9999","501","144","2020-02-23","ナイブンピ.ホネタイシヤガイライ","内分泌・骨代謝外来",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","clsComDrWrk" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_delete.csv new file mode 100644 index 00000000..905de5b4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_delete.csv @@ -0,0 +1,9 @@ +"dr_wrkplace_his_key","dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","aply_end_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1482020","005507600","01995783","9112","133","144","20200222","ハツセイ.セイシヨクブモン","発生・生殖部門",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"1482021","005402984","01997682","1512","165","144","20200222","シヨウカキゲカ","消化器外科",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"1482022","005504428","01999613","5140","999","144","20200222","ヤクリガク","薬理学",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"1482023","005408060","01997682","6802","999","144","20200222","シヨウカキゲカガク1","消化器外科学Ⅰ",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 16:18:08","com_dr_wrkplace_mapper","2022-02-03 16:18:08","com_dr_wrkplace_mapper" +"1482024","005409446","01997906","1118","501","999","20200222","ケツエキナイカ","血液内科",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 16:18:08","com_dr_wrkplace_mapper","2022-02-03 16:18:08","com_dr_wrkplace_mapper" +"1482025","005412977","01997682","6720","999","144","20200222","シヨウカキゲカガク","消化器外科学",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 16:18:08","com_dr_wrkplace_mapper","2022-02-03 16:18:08","com_dr_wrkplace_mapper" +"1482026","005414992","01995783","9999","501","999","20200222",,,,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 16:18:08","com_dr_wrkplace_mapper","2022-02-03 16:18:08","com_dr_wrkplace_mapper" +"1482027","005503358","01997906","1118","172","144","20200222","ケツエキナイカ","血液内科",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 16:18:08","com_dr_wrkplace_mapper","2022-02-03 16:18:08","com_dr_wrkplace_mapper" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_update.csv new file mode 100644 index 00000000..532fb48a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_his_update.csv @@ -0,0 +1,4 @@ +"dr_wrkplace_his_key","dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","aply_end_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","005507600","01995783","9112","133","144","20200222","ハツセイ.セイシヨクブモン","発生・生殖部門","1","20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"2","005402984","01997682","1512","165","144","20200222","シヨウカキゲカ","消化器外科",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"3","005504428","01999613","5140","999","144","20200222","ヤクリガク","薬理学",,"20200229","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_insert.csv new file mode 100644 index 00000000..ee6de463 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_insert.csv @@ -0,0 +1,12 @@ +"dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 14:54:00","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005507600","01995783","9112","133","144","2020-02-22","ハツセイ.セイシヨクブモン","発生・生殖部門",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005402984","01997682","1512","165","144","2020-02-22","シヨウカキゲカ","消化器外科",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科",,"2022-02-02","NULL","NULL","NULL","NULL","NULL","2022-02-02 10:45:16","com_dr_wrkplace_mapper","2022-02-02 14:54:00","com_dr_wrkplace_mapper" +"005503358","01997906","1118","172","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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_update.csv new file mode 100644 index 00000000..2a82f63e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/expect_com_dr_wrkplace_update.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","dcf_pcf_dr_cd","blng_sec_cd","post_cd","identity_cd","aply_start_ymd","blng_sec_name_kana","blng_sec_name","notdm_flg","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01995783","9999",,"802","2020-03-01","NULL","NULL","1","2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"005402984","01997682","1512","165",,"2020-03-01","シヨウカキゲカ","消化器外科",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科","NULL","2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper" +"005503358","01997906","1118","172","144","2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk" +"005504428","01999613","9999","501","144","2020-03-01","ナイブンピ.ホネタイシヤガイライ","内分泌・骨代謝外来",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py new file mode 100644 index 00000000..bd521ad1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py @@ -0,0 +1,390 @@ +import os.path as path + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \ + com_dr_wrkplace_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComDrWrkplaceMapper: + """レイアウト区分502: COM_DCF医師勤務先""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @ pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_DCF医師勤務先テーブルにレコードを登録する + Arranges: + - CSVデータを用意する + - 追加対象となるレコードを削除する + Expects: + - COM_医師勤務先の登録内容が期待値と一致すること + - COM_医師勤務先履歴にデータが登録されないこと + """ + + # Arrange + # 処理日設定 + # 適用開始日と同値になる + self.batch_context.syor_date = '2020/02/22' + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_wrkplace_insert.csv')) + # 一旦全データをDBから削除 + # COM_医師勤務先 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_医師勤務先履歴 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace_his', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_所属部科 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # COM_所属部科を登録 + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_insert.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_blng_sec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_wrkplace_mapper.ComDrWrkplaceMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_wrkplace_mapper.ComDrWrkplaceMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_dr_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_dr_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_dr_data_list] + # 複合主キーのため、1件ずつ取得して期待値を作る + actual_dr_data_list = [] + actual_dr_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + actual_his_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace_his + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd): + # COM_医師勤務先の取得 + actual_dr_data = self.db.execute_select( + actual_dr_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_dr_data) == 1, '1件取得できていること' + actual_dr_data_list.append(actual_dr_data[0]) + + # COM_医師勤務先履歴の取得 + # 取得できないこと + actual_his_data = self.db.execute_select( + actual_his_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_his_data) == 0, '履歴が作成されていないこと' + + assert len(actual_dr_data_list) == len(expect_dr_data_list), 'COM_医師勤務先が期待値通りの件数作成されていること' + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_dr_data_list, expect_dr_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_DCF医師勤務先テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - COM_医師勤務先の登録内容が期待値と一致すること + - COM_医師勤務先履歴にデータが登録され、期待値と一致すること + """ + + # Arrange + # 処理日設定 + # 適用開始日と同値、適用終了日の+1日になる + self.batch_context.syor_date = '2020/03/01' + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_wrkplace_update.csv')) + # 一旦全データをDBから削除 + # COM_医師勤務先 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_医師勤務先履歴 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace_his', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_所属部科 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # COM_医師勤務先を登録 + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_wrkplace_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_wrkplace', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_wrkplace_mapper.ComDrWrkplaceMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_wrkplace_mapper.ComDrWrkplaceMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_dr_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_update.csv')) + expect_his_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_his_update.csv')) + # 複合主キーのため、1件ずつ取得して期待値を作る + actual_dr_data_list = [] + actual_his_data_list = [] + actual_dr_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + actual_his_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace_his + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + # COM_医師勤務先の取得 + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_dr_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_dr_data_list] + for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd): + actual_dr_data = self.db.execute_select( + actual_dr_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_dr_data) == 1, '1件取得できていること' + actual_dr_data_list.append(actual_dr_data[0]) + + # COM_医師勤務先履歴の取得 + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_his_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_his_data_list] + for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd): + actual_his_data = self.db.execute_select( + actual_his_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_dr_data) == 1, '1件取得できていること' + actual_his_data_list.append(actual_his_data[0]) + + assert len(actual_his_data_list) == len(expect_his_data_list), 'COM_医師勤務先が期待値通りの件数作成されていること' + assert len(actual_his_data_list) == len(expect_his_data_list), 'COM_医師勤務先履歴が期待値通りの件数作成されていること' + + # 期待値検査 + # COM_医師勤務先 + dr_ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_dr_data_list, expect_dr_data_list, ignore_col_name=dr_ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in dr_ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # COM_医師勤務先履歴 + his_ignore_columns = ['dr_wrkplace_his_key', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_his_data_list, expect_his_data_list, ignore_col_name=his_ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in his_ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_delete_record(self): + """ + Cases: + COM_DCF医師勤務先テーブルのレコードを削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - COM_医師勤務先の登録内容が期待値と一致すること + - COM_医師勤務先履歴にデータが登録されないこと + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = '2020/03/01' + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_wrkplace_delete.csv')) + # 一旦全データをDBから削除 + # COM_医師勤務先 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_医師勤務先履歴 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace_his', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # COM_所属部科 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # COM_医師勤務先を登録 + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_wrkplace_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_wrkplace', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # COM_医師勤務先履歴を登録 + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_wrkplace_his_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_wrkplace_his', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # COM_所属部科を登録 + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_blng_sec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_wrkplace_mapper.ComDrWrkplaceMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_wrkplace_mapper.ComDrWrkplaceMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_dr_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_delete.csv')) + expect_his_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_his_delete.csv')) + # 複合主キーのため、1件ずつ取得して期待値を作る + actual_dr_data_list = [] + actual_his_data_list = [] + actual_dr_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + actual_his_select_sql = """\ + SELECT * FROM src05.com_dr_wrkplace_his + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # COM_医師勤務先の取得 + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_dr_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_dr_data_list] + for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd): + actual_dr_data = self.db.execute_select( + actual_dr_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_dr_data) == 1, '1件取得できていること' + actual_dr_data_list.append(actual_dr_data[0]) + + # COM_医師勤務先履歴の取得 + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_his_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_his_data_list] + for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd): + # COM_医師勤務先履歴の取得 + actual_his_data = self.db.execute_select( + actual_his_select_sql, + {**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd}) + assert len(actual_his_data) == 1, '1件取得できていること' + actual_his_data_list.append(actual_his_data[0]) + + assert len(actual_dr_data_list) == len(expect_dr_data_list), 'COM_医師勤務先が期待値通りの件数作成されていること' + assert len(actual_his_data_list) == len(expect_his_data_list), 'COM_医師勤務先履歴が期待値通りの件数作成されていること' + + # 期待値検査 + # COM_医師勤務先 + dr_ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_dr_data_list, expect_dr_data_list, ignore_col_name=dr_ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in dr_ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # COM_医師勤務先履歴 + his_ignore_columns = ['dr_wrkplace_his_key', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_his_data_list, expect_his_data_list, ignore_col_name=his_ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in his_ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv new file mode 100644 index 00000000..36459b1c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv @@ -0,0 +1,8 @@ +"022","11","A","20141113","20141114","" +"022","12","A","20141113","20141114","X線CT" +"022","13","A","20141113","20141114","CR" +"022","14","C","20141113","20141114","血管造影システム" +"022","15","A","20141113","20141114","アンガー型カメラ" +"022","16","A","20141113","20141114","SPECT" +"022","99","C",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" +"022","98","C","20141113","20141114","血管造影システム" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv new file mode 100644 index 00000000..fe5ae507 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv @@ -0,0 +1,7 @@ +"022","11","A","20141113","20141114","MRI" +"022","12","A","20141113","20141114","X線CT" +"022","13","A","20141113","20141114","CR" +"022","14","A","20141113","20141114","血管造影システム" +"022","15","A","20141113","20141114","SPECT" +"022","16","A","20141113","20141114","アンガー型カメラ" +"022","99","A",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv new file mode 100644 index 00000000..5ae8452f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv @@ -0,0 +1,7 @@ +"022","11","B","20141113","20141114","" +"022","12","B","20141113","20141114","X線CT" +"022","13","B","20141113","20141114","CR" +"022","14","B","20141113","20141114","血管造影システム" +"022","15","B","20141113","20141114","アンガー型カメラ" +"022","16","B","20141113","20141114","SPECT" +"022","99","B",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv new file mode 100644 index 00000000..e9b7e50d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv @@ -0,0 +1,8 @@ +"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"11","MRI","20171023","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","clsComForfrontMedEqu" +"12","X線CT","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"13","CR","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"14","血管造影システム","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"15","アンガー型カメラ","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"16","SPECT","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv new file mode 100644 index 00000000..716c01cc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv @@ -0,0 +1,9 @@ +"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"12","X線CT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"13","CR","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"15","SPECT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"16","アンガー型カメラ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv new file mode 100644 index 00000000..0642d2d5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv @@ -0,0 +1,8 @@ +"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"11","","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","com_forfront_med_equip_mapper" +"12","X線CT","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"13","CR","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"14","血管造影システム","20171023","20171023","20230421","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:14:25","com_forfront_med_equip_mapper" +"15","アンガー型カメラ","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"16","SPECT","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230421","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv new file mode 100644 index 00000000..4c37e0fd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv @@ -0,0 +1,8 @@ +"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"12","X線CT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"13","CR","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"15","SPECT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"16","アンガー型カメラ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv new file mode 100644 index 00000000..3b8e7904 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv @@ -0,0 +1,9 @@ +"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"11","","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 10:07:41","com_forfront_med_equip_mapper" +"12","X線CT","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"13","CR","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"15","アンガー型カメラ","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"16","SPECT","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py new file mode 100644 index 00000000..873d70c6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_forfront_med_equip_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComForfrontMedEquipMapper: + """ レイアウト区分022: COM_先端医療機器 """ + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """ テスト実行前後処理 """ + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_先端医療機器テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_forfront_med_equip_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_forfront_med_equip_insert.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_先端医療機器テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_forfront_med_equip_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_forfront_med_equip_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_forfront_med_equip', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_forfront_med_equip_update.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_先端医療機器テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_forfront_med_equip_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_forfront_med_equip_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_forfront_med_equip', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_forfront_med_equip_delete.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_delete.csv new file mode 100644 index 00000000..18531d8d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_delete.csv @@ -0,0 +1,7 @@ +"021","001","","A","20141113","20141114","" +"021","002","1","A","20141113","20141114","電磁波温熱療法(放射線療法と併用しないもの)" +"021","003","2","A","20141113","20141114","微小銅線による脳血管性病変に対しての電気的凝固治療" +"021","004","1","C","20141113","20141114","顔面骨、頭蓋骨の観血的移動術" +"021","005","1","A","20141113","20141114","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)" +"021","006","1","A","20141113","20141114","造血器腫瘍のDNA診断" +"021","007","2","A","20141113","20141114","重症肥満の外科治療法" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_insert.csv new file mode 100644 index 00000000..31e575d3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_insert.csv @@ -0,0 +1,6 @@ +"021","001","2","A","20141113","20141114","直流電流による骨電気治療法" +"021","002","1","A","20141113","20141114","電磁波温熱療法(放射線療法と併用しないもの)" +"021","003","2","A","20141113","20141114","微小銅線による脳血管性病変に対しての電気的凝固治療" +"021","004","1","A","20141113","20141114","顔面骨、頭蓋骨の観血的移動術" +"021","005","1","A","20141113","20141114","造血器腫瘍のDNA診断" +"021","006","1","A","20141113","20141114","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_update.csv new file mode 100644 index 00000000..90620670 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/com_hamtec_update.csv @@ -0,0 +1,6 @@ +"021","001","","B","20141113","20141114","" +"021","002","1","B","20141113","20141114","電磁波温熱療法(放射線療法と併用しないもの)" +"021","003","2","B","20141113","20141114","微小銅線による脳血管性病変に対しての電気的凝固治療" +"021","004","1","B","20141113","20141114","顔面骨、頭蓋骨の観血的移動術" +"021","005","1","B","20141113","20141114","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)" +"021","006","1","B","20141113","20141114","造血器腫瘍のDNA診断" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_delete.csv new file mode 100644 index 00000000..ac7de33a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_delete.csv @@ -0,0 +1,7 @@ +"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","2","直流電流による骨電気治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","clsComHamtec" +"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"005","1","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"006","1","造血器腫瘍のDNA診断","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_update.csv new file mode 100644 index 00000000..f6d16401 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/db_com_hamtec_before_update.csv @@ -0,0 +1,7 @@ +"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","2","直流電流による骨電気治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","clsComHamtec" +"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"005","1","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" +"006","1","造血器腫瘍のDNA診断","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","clsComHamtec" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_delete.csv new file mode 100644 index 00000000..e41f75a8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_delete.csv @@ -0,0 +1,8 @@ +"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001",,,"20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","com_hamtec_mapper" +"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper" +"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper" +"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","20171018","20171018","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper" +"005","1","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper" +"006","1","造血器腫瘍のDNA診断","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper" +"007","2","重症肥満の外科治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:21:01","com_hamtec_mapper","2017/10/18 17:21:01","com_hamtec_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_insert.csv new file mode 100644 index 00000000..35b58442 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_insert.csv @@ -0,0 +1,7 @@ +"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","2","直流電流による骨電気治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" +"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" +"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" +"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" +"005","1","造血器腫瘍のDNA診断","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" +"006","1","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 16:24:26","com_hamtec_mapper","2017/10/18 16:24:26","com_hamtec_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_update.csv new file mode 100644 index 00000000..fcdce90b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/expect_com_hamtec_update.csv @@ -0,0 +1,7 @@ +"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","","","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","com_hamtec_mapper" +"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper" +"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper" +"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper" +"005","1","培養細胞による先天性代謝異常診断(胎児又は新生児に係るものに限る)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper" +"006","1","造血器腫瘍のDNA診断","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper" \ No newline at end of file diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/test_com_hamtec_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/test_com_hamtec_mapper.py new file mode 100644 index 00000000..c7434739 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hamtec/test_com_hamtec_mapper.py @@ -0,0 +1,198 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \ + com_hamtec_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComHamtecMapper: + """レイアウト区分021: COM_高度先進医療""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_高度先進医療テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hamtec_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hamtec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hamtec_insert.csv')) + primary_keys = [f"'{primary_key['hamtec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hamtec WHERE hamtec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + line_number = 0 + # 動的日付項目の個別確認 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_高度先進医療テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hamtec_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hamtec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_hamtec_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hamtec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hamtec_update.csv')) + primary_keys = [f"'{primary_key['hamtec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hamtec WHERE hamtec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + line_number = 0 + # 動的日付項目の個別確認 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_高度先進医療テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hamtec_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hamtec', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_hamtec_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hamtec', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hamtec_mapper.ComHamtecMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hamtec_mapper.ComHamtecMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hamtec_delete.csv')) + primary_keys = [f"'{primary_key['hamtec_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hamtec WHERE hamtec_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv new file mode 100644 index 00000000..fa9dfadd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv @@ -0,0 +1,7 @@ +"002","1","A","20141113","20141114","" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","C","20141113","20141114","歯科" +"002","6","A","20141113","20141114","伝染" +"002","7","A","20141113","20141114","診療所" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv new file mode 100644 index 00000000..e2ee7c48 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv @@ -0,0 +1,7 @@ +"002","1","A","20141113","20141114","一般" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","A","20141113","20141114","伝染" +"002","6","A","20141113","20141114","歯科" +"002","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv new file mode 100644 index 00000000..6d0fe490 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv @@ -0,0 +1,6 @@ +"002","1","A","20141113","20141114","" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","A","20141113","20141114","歯科" +"002","6","A","20141113","20141114","伝染" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv new file mode 100644 index 00000000..68440eee --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv @@ -0,0 +1,7 @@ +"hp_assrt_cd","hp_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"2","精神","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"3","結核","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"4","ハンセン","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"5","歯科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"6","伝染","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv new file mode 100644 index 00000000..79619900 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","一般","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"2","精神","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"3","結核","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"4","ハンセン","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"5","伝染","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"6","歯科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv new file mode 100644 index 00000000..54dc2039 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv @@ -0,0 +1,7 @@ +"hp_assrt_cd","hp_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"5","歯科","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv new file mode 100644 index 00000000..c4343da0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","一般","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"2","精神","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"3","結核","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"4","ハンセン","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"5","伝染","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"6","歯科","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv new file mode 100644 index 00000000..fe04619b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"5","歯科","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py new file mode 100644 index 00000000..08f02dec --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_hp_assrt_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComHpAssrtMapper: + """レイアウト区分002: COM_病院種別""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_病院種別テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hp_assrt_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hp_assrt_insert.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_病院種別テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hp_assrt_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_hp_assrt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hp_assrt', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hp_assrt_update.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_病院種別テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_hp_assrt_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_hp_assrt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hp_assrt', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_hp_assrt_delete.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv new file mode 100644 index 00000000..5c588736 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv @@ -0,0 +1,5 @@ +"101","22","33333","44","C","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","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","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","00","9900146","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901649","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901679","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9904439","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv new file mode 100644 index 00000000..432c8f24 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv @@ -0,0 +1,8 @@ +"101","22","33333","44","A","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","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","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","00","9900146","","A","20141113","20141114","","","","","","医療法人敬老会森岡内科","イリヨウホウジンケイロウカイモリオカナイカ","森岡内科 医療","モリオカナイカ イリヨウ","","36","201","117","002","770-0854","徳島県徳島市徳島本町2-31","トクシマケン トクシマシ トクシマホンチヨウ 2-31","2-31","03","03","04","02","07","06","10","02","","088-623-6161","431","10","01","092029","","板東 章二","バンドウ シヨウジ","","","1","201410","A01","A11","C04","E02","A23","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20130729","0","0","0","0","0","0","0","","","","","","","","","","" +"101","00","9900194","","A","20141113","20141114","1","9","","","","一期崎医院","イチゴザキイイン","一期崎医院","イチゴザキイイン","6","43","101","059","000","860-0844","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","1-27-2D","03","06","3","","07","13","09","00","1","","472","10","","","","","","","","","","O01","O02","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20090430","0","0","0","0","0","0","0","","","","","","","","","","" +"101","00","9901649","","A","20141113","20141114","","","","","","社会福祉法人明和会特別養護老人ホームあづき","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","あづき(特養) 社福","アヅキ シヤフク","","37","322","000","000","761-4100","香川県小豆郡土庄町字半ノ池甲1360-143","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","","03","06","00","00","07","18","00","00","","0879-62-7707","435","41","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9","9","","","","","50","","","","","","","","","","","","","","","","00","7201648","" +"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","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv new file mode 100644 index 00000000..2a13c00e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv @@ -0,0 +1,10 @@ +"101","22","33333","44","B","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","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","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","22","33333","99","B","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","99","33333","44","B","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","99","99999","99","B","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" +"101","00","9900146","","B","20170401","20170404","","2","00","3631462","","","テストイリヨウホウジンケイロウカイモリオカナイカ","","","","","","","","","","","","","","","","","","","","","","221","","","","","","","","","@","","@","A11","C04","E02","A23","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","@","","","@","@","@","@","","","","","","","","","","","","","","0","9912345","" +"101","00","9900194","","B","20170401","20170404","@","@","@","","","","","","","@","11","222","333","444","106-0045","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","1-5-18-10-3","3","2","4","2","7","5","13","2","","","","","","","","","","","","","","U21","U23","U18","U15","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901649","","B","20170401","20170404","","","","","","","","あづき(てすと)","","","","","","","","","","","","","","","","","","","","","","60","","","","","","1","201801","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","@","","" +"101","00","9901679","","B","20170401","20170404","","","","","","","","","カゴシマテスト","","","","","","","","","","","","","","","","","","","@","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","@","","","","","","","","","" +"101","00","9904439","","B","20170401","20170404","","","","","","川崎市立テスト病院","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","11","1234567","","","","","","","","","","","","3","","1","","2","","3","","","" +"101","00","9929798","","B","20170401","20170404","","","","","","","","","","6","","","","","","","","","","","","","","","","","@","","","","@","","","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","91","92","93","94","95","96","97","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv new file mode 100644 index 00000000..6e20eb7b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"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","aaaa","2023/04/12 00:00:00","aaaa" +"009900146","10","","テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","","","","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462","","","","","","","","3","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","10","","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","0","","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","60","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)","","50","","1","","201801","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","1","","","","","","","","","9","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","1","01148013","カイエダ タケル","海江田 健","","","","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","","","","","","","","9","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","3","","1","","2","","3","3","343","0","27","0","370","343","0","20140811","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","","","","","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","95","92","93","94","91","96","97","20130415","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv new file mode 100644 index 00000000..0b1ad996 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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" +"223333399","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" +"993333344","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","aaaa","2023/04/12 00:00:00","aaaa" +"999999999","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","aaaa","2023/04/12 00:00:00","aaaa" +"009900146","10","","イリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","1","0","1","","201410","","1","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","431","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130729","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","10","6","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","1","","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","860-0844","43101059000","43","101","1-27-2D","07130900","03060300","472","9","7","003631463","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009901649","41","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(特養) 社福","","50","","","","","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","9","","","","","","","","","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","","01148013","カイエダ タケル","海江田 健","","","099-226-8827","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","1","1","1","1","1","1","1","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"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","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"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","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv new file mode 100644 index 00000000..cc988dcc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv @@ -0,0 +1,4 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"009900146","09912345","20220201","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 11:08:29","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","NULL","20220131","20220201","20220201","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv new file mode 100644 index 00000000..9bc1f8ff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv @@ -0,0 +1,5 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"009901649","007201648","20220131","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 11:38:27","clsComInstInfo","2023/05/01 11:38:27","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv new file mode 100644 index 00000000..557be371 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv @@ -0,0 +1,66 @@ +"dcf_dsf_inst_cd","trt_course_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" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900146","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv new file mode 100644 index 00000000..0873cb36 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv @@ -0,0 +1,48 @@ +"dcf_dsf_inst_cd","trt_course_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" +"223333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"009900146","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","A11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","A23","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","O02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009929798","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A12","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A34","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A41","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A56","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A58","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A61","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A65","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A81","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B31","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","C01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C05","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","D02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F08","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","G06","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","H02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","J01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","K01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","M01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","N03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv new file mode 100644 index 00000000..b2dde439 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","10","","テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","","","","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462","","","","","","","","3","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009900194","10","","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","0","","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","60","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)","","50","","1","","201801","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","1","","","","","","","","","9","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","1","01148013","カイエダ タケル","海江田 健","","","","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","","","","","","","","9","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","3","","1","","2","","3","3","343","0","27","0","370","343","0","20140811","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","","","","","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","95","92","93","94","91","96","97","20130415","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" +"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","20230606","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv new file mode 100644 index 00000000..e79b6d77 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","10","","イリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","1","","201410","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","431","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130729","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009900194","10","6","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","1","","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","860-0844","43101059000","43","101","1-27-2D","07130900","03060300","472","9","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009901649","41","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(特養) 社福","","50","","","","","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","9","","","","","","","","","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","","01148013","カイエダ タケル","海江田 健","","","099-226-8827","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","1","1","1","1","1","1","1","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv new file mode 100644 index 00000000..3353e7ae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","10",,"テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","NULL","NULL","NULL",,"NULL",,"NULL","01092029","バンドウ シヨウジ","板東 章二",,,"088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462",,,,,,,,"3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:28","com_inst_mapper" +"009900194","10","NULL","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院",,"0",,,,,,,,,"1","NULL",,"トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","NULL","7","NULL",,,,,,,,"6","0","0","0","0","0","0","0","20090430","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009901649","60",,"シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)",,"50",,"1",,"201801",,,,,,,"0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322",,"07180000","03060000","435",,"1",,,,,,,,,"9",,,,,,,,,"1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009901679","60",,"カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター",,"0",,"NULL",,"NULL","1","01148013","カイエダ タケル","海江田 健",,,"NULL","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470",,"9",,"NULL","NULL","NULL","NULL","NULL","NULL","NULL","9",,,,,,,,,"1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009904439","01",,"カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370",,,,,,,,,,,"044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221",,"1",,"3",,"1",,"2",,"3","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","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL",,"0",,,,,,"NULL","NULL","NULL","NULL",,,"トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472",,"7",,,,,,,,,"6","95","92","93","94","91","96","97","20130415","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 11:08:30","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" +"223333399","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" +"993333344","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","aaaa","2023/04/12 00:00:00","aaaa" +"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","aaaa","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv new file mode 100644 index 00000000..9cede581 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv @@ -0,0 +1,4 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","09912345","20220201","20220201","NULL","NULL","NULL","NULL","NULL","2022/02/01 11:08:29","clsComInstInfo","2022/02/01 14:52:43","clsComInstInfo" +"009901649","NULL","20220131","20220201","20220201","NULL","NULL","NULL","NULL","2022/01/31 11:38:27","clsComInstInfo","2022/02/01 14:52:43","clsComInstInfo" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv new file mode 100644 index 00000000..a07ed27d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv @@ -0,0 +1,3 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","007201648","20220131","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv new file mode 100644 index 00000000..4b14fe3d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv @@ -0,0 +1,7 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","09912345","20220201","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 11:08:29","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009901649","NULL","20220131","20230508","20230508","NULL","NULL","NULL","NULL","2023/05/01 11:38:27","clsComInstInfo","2023/05/01 14:52:43","com_inst_mapper" +"223333344","9933333311","20230508","20230508","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333399","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","NULL","20230508","20230508","20230508","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv new file mode 100644 index 00000000..bfd476b6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv @@ -0,0 +1,66 @@ +"dcf_dsf_inst_cd","trt_course_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" +"009900146","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv new file mode 100644 index 00000000..78a3a2de --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv @@ -0,0 +1,105 @@ +"dcf_dsf_inst_cd","trt_course_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" +"009900146","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009929798","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009900146","A11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A12","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","A22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","A23","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A34","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","A41","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A56","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009929798","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A58","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A61","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A65","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A81","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","B01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","B04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B31","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","C01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","C05","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","D02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","F01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","F08","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","G06","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","H02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009929798","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","J01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","K01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","M01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","N03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900194","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900194","O02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","P02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","P03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv new file mode 100644 index 00000000..9adf2bb7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv @@ -0,0 +1,103 @@ +"dcf_dsf_inst_cd","trt_course_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" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009904439","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A12","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A34","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A41","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A56","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A58","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A61","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A65","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A81","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B31","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","C01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C05","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","D02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F08","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","G06","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","H02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","J01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","K01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","M01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","N03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py new file mode 100644 index 00000000..a3554692 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -0,0 +1,425 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComInstMapper: + """レイアウト区分101: COM_施設""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + smallint_columns = [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup' + ] + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_施設テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(施設) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_insert.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_inst_trt_course')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + 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] + 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) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_施設テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # テストデータをDBに登録 + # DBデータを読み込む(施設) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(施設診療科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(特養医務室) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_spcare_med_office_dat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(施設) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_update.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_inst_trt_course')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_update.csv')) + 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_data_list = self.db.execute_select(actual_select_sql) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_施設テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(施設) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(施設診療科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(特養医務室) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_spcare_med_office_dat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(施設) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_delete.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_delete.csv')) + 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_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv new file mode 100644 index 00000000..baf15d84 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv @@ -0,0 +1,6 @@ +"111","123","456789","99","B","1","NULL","NULL","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" +"111","00","9900146","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900615","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9901806","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9901918","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9904136","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv new file mode 100644 index 00000000..7dd0af30 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv @@ -0,0 +1,21 @@ +"111","123","456789","99","A","0","NULL","NULL","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" +"111","00","9900146","","A","2","20141113","20141114","1","20080701","","","","","1","20100401","","","","","1","","20011022","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","","","20081130","1","20130501","","1","99","","","","","","","","","","","","","","","","","","","","1","20130501","","1","20140401","","1","20130501","","1","01","02","03","04","","","","","","","1","20130501","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","4","","","","","","","","","","","20040229","1","20031030","","1","20050914","","1","1","","1","","","","","","1","20090401","","","","1","217","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195604" +"111","00","9900194","","A","2","20141113","20141114","1","20060501","","","","","","","","","","","","","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204" +"111","00","9900615","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900631","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","","","","6","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900700","","A","2","20141113","20141114","1","20100701","","","","","1","20100401","","","","","1","","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","4","","","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310" +"111","00","9901649","","A","2","20141113","20141114","","","","1","2009","","","","","","","","","","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","","","","43","1","B999","120","","","","","","","","","","","","","","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004" +"111","00","9901806","","A","2","20141113","20141114","1","20090401","","","","","1","20100401","","","","","1","","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","8","","","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011" +"111","00","9901820","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","","","","4101","116","20090501","","116","1","B999","40","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405" +"111","00","9901918","","A","2","20141113","20141114","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","","","","84","1","B999","177","","","","","","","","","","","","","","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601" +"111","00","9902043","","A","2","20141113","20141114","1","20140401","","","","20140331","","","","","","","","","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004" +"111","00","9902175","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704" +"111","00","9902728","","A","2","20141113","20141114","1","20090401","","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","","","20040430","","","","20040430","","","","","","","","","","","","","","","","","","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005" +"111","00","9903500","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","","","","26","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912" +"111","00","9904136","","A","2","20141113","20141114","1","20080701","","","","","","","","","","","1","","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","1","1","10","","","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208" +"111","00","9904439","","A","2","20141113","20141114","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","","","20040930","54","1","B999","450","","","","","","","","","","","","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812" +"111","00","9906696","","A","2","20141113","20141114","1","20060601","","","","","","","","","","","1","","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708" +"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","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","@" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv new file mode 100644 index 00000000..ad999396 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv @@ -0,0 +1,5 @@ +"111","123","456789","99","A","0","NULL","NULL","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" +"111","00","9900631","","B","","20141113","20141114","1","20171009","","1","2017","20171009","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","@","","","","","","","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","" +"111","00","9901649","","B","","20141113","20141114","","","","1","2009","20171010","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710" +"111","00","9990146","","B","","20171113","20171114","@","","","@","","","@","","","@","","","@","","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","","","","","","","","","","","","","","","","","","","@","","","@","","","@","","","@","","","","","","","","","","","@","","","@","","","@","","","@","","","@","@","@","","","","","","","","","","@","","","@","","","@","","","@","","","@","","@","","","","@","","","","@","","","","","","","","","@","@","","","@","@","","","","@","","","@","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","@" +"111","99","9999999","99","B","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv new file mode 100644 index 00000000..ba1b07af --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv @@ -0,0 +1,23 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"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" +"99999999999","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" +"009900146","1","20171009","20171009","2","2017","20171009","3","20171009","20171009","4","19940928","20171009","5","99.9","20171009","20171009","6","20120401","20171009","7","20171009","20171009","8","20171009","20171009","9","20121201","20171009","A","20090701","20171009","B","20061101","20171009","C","20171009","20171009","D","20171009","20171009","E","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","F","20100401","20171009","G","20140401","20171009","H","20140401","20171009","I","01","02","03","04","05","06","07","08","09","10","J","20140401","20171009","K","20171009","20171009","L","20171009","20171009","M","20171009","20171009","N","O","P","1234","9999","20171009","20171009","2234","8888","20171009","20171009","7777","Q","3234","6666","R","4234","5555","S","5234","4444","T","T","T","U","3333","V","2222","20171009","20171009","W","08","20100402","20171009","X","20171009","20060331","1","20041001","20171009","1","20040331","20171009","Y","Z","Z","Z","1","2","2","20070702","20171009","3","20171009","20171009","4","5","6","001","1","002","1","003","1","004","1","005","1","006","1","007","1","008","1","009","1","010","1","011","1","012","1","013","1","014","1","015","1","016","1","017","1","018","1","019","1","020","1","021","1","022","1","023","1","024","1","025","1","026","1","027","1","028","1","029","1","030","1","031","1","032","1","033","1","034","1","035","1","036","1","037","1","038","1","039","1","040","1","7","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","8","A1","1","A2","1","A3","1","A4","1","A5","1","A6","1","A7","1","A8","1","A9","1","B0","1","B1","1","B2","1","B3","1","B4","1","B5","1","B6","1","B7","1","B8","1","B9","1","C0","1","9","00","1234567","","192202","20171008","20171009","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/09 18:23:21","clsComInstAtt" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900615","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009901806","1","20090401","","","","","1","20100401","","","","","1","NULL","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","8","","NULL","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901918","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","NULL","","","84","1","B999","177","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904136","1","20080701","","","","","","","","","","","1","NULL","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","1","1","1","1","10","","NULL","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"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","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"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","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv new file mode 100644 index 00000000..b867c731 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"12345678999","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900631","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","NULL","","","6","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","1","20171009","20171009","2","2017","20171009","3","20171009","20171009","4","19940928","20171009","5","99.9","20171009","20171009","6","20120401","20171009","7","20171009","20171009","8","20171009","20171009","9","20121201","20171009","A","20090701","20171009","B","20061101","20171009","C","20171009","20171009","D","20171009","20171009","E","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","F","20100401","20171009","G","20140401","20171009","H","20140401","20171009","I","01","02","03","04","05","06","07","08","09","10","J","20140401","20171009","K","20171009","20171009","L","20171009","20171009","M","20171009","20171009","N","O","P","1234","9999","20171009","20171009","2234","8888","20171009","20171009","7777","Q","3234","6666","R","4234","5555","S","5234","4444","T","T","T","U","3333","V","2222","20171009","20171009","W","08","20100402","20171009","X","20171009","20060331","1","20041001","20171009","1","20040331","20171009","Y","Z","Z","Z","1","2","2","20070702","20171009","3","20171009","20171009","4","5","6","001","1","002","1","003","1","004","1","005","1","006","1","007","1","008","1","009","1","010","1","011","1","012","1","013","1","014","1","015","1","016","1","017","1","018","1","019","1","020","1","021","1","022","1","023","1","024","1","025","1","026","1","027","1","028","1","029","1","030","1","031","1","032","1","033","1","034","1","035","1","036","1","037","1","038","1","039","1","040","1","7","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","8","A1","1","A2","1","A3","1","A4","1","A5","1","A6","1","A7","1","A8","1","A9","1","B0","1","B1","1","B2","1","B3","1","B4","1","B5","1","B6","1","B7","1","B8","1","B9","1","C0","1","9","00","1234567","","192202","20171009","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/09 18:31:09","clsComInstAtt" +"99999999999","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","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","aaaa","2023/05/09 10:10:10","aaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv new file mode 100644 index 00000000..9c17fa45 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv @@ -0,0 +1,17 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"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","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"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","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"99999999999","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv new file mode 100644 index 00000000..fa54041d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv @@ -0,0 +1,21 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","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","1","20080701","","","","","1","20100401","","","","","1","NULL","20011022","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","","","20081130","1","20130501","","1","99","","","","","","","","","","","","","","","","","","","","1","20130501","","1","20140401","","1","20130501","","1","01","02","03","04","","","","","","","1","20130501","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","","","","20040229","1","20031030","","1","20050914","","1","1","","1","","","","","","1","20090401","","","","1","217","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195604","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" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","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" +"009900615","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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" +"009900631","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","NULL","","","6","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","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" +"009901649","","","","1","2009","","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004","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" +"009901806","1","20090401","","","","","1","20100401","","","","","1","NULL","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","8","","NULL","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011","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" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","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" +"009901918","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","NULL","","","84","1","B999","177","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601","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" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","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" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","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" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","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" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","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" +"009904136","1","20080701","","","","","","","","","","","1","NULL","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","1","1","1","1","10","","NULL","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208","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" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","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" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv new file mode 100644 index 00000000..ecb59fbf --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","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","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","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","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2023/05/09 10:10:10","com_inst_att_mapper" +"99999999999","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","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","aaaa","2023/05/09 10:10:10","aaaa" + diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py new file mode 100644 index 00000000..ac83cbcf --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py @@ -0,0 +1,234 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_att_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComInstAttMapper: + """レイアウト区分111: COM_施設属性""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # smallint型のカラム群 + smallint_columns = [ + 'areasuphpintrate', + 'resthpbednum', + 'resthpcarebednum', + 'resthpsbednum', + 'nrmhpbedtotalnum', + 'menthpbednum', + 'tubhpbednum', + 'infhpbednum', + 'hospicebednum' + ] + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_施設属性テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_att_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_att_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_施設属性テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_att_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_att_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_att', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_att_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_施設属性テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_att_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_att_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_att', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_att_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_inst_att')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_delete.csv new file mode 100644 index 00000000..904e9593 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_delete.csv @@ -0,0 +1,7 @@ +"011","01","A","20141113","20141114","" +"011","02","A","20141113","20141114","大学附属病院" +"011","03","A","20141113","20141114","大学附属病院分院" +"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)" +"011","05","C","20141113","20141114","国立療養所" +"011","06","A","20141113","20141114","高次救急医療機関" +"011","07","A","20141113","20141114","社会福祉施設附属病院" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_insert.csv new file mode 100644 index 00000000..7d7d994d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_insert.csv @@ -0,0 +1,7 @@ +"011","01","A","20141113","20141114","病院(大学HP以外)" +"011","02","A","20141113","20141114","大学附属病院" +"011","03","A","20141113","20141114","大学附属病院分院" +"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)" +"011","05","A","20141113","20141114","高次救急医療機関" +"011","06","A","","","国立療養所" +"011","99","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_update.csv new file mode 100644 index 00000000..b220b54f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/com_inst_div_update.csv @@ -0,0 +1,6 @@ +"011","01","A","20141113","20141114","" +"011","02","A","20141113","20141114","大学附属病院" +"011","03","A","20141113","20141114","大学附属病院分院" +"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)" +"011","05","A","20141113","20141114","国立療養所" +"011","06","A","20141113","20141114","高次救急医療機関" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_delete.csv new file mode 100644 index 00000000..b5d0a632 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_delete.csv @@ -0,0 +1,7 @@ +"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" +"02","大学附属病院","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" +"03","大学附属病院分院","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" +"04","歯科病院(歯学部附属病院)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" +"05","国立療養所","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" +"06","高次救急医療機関","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_update.csv new file mode 100644 index 00000000..96935038 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/db_com_inst_div_before_update.csv @@ -0,0 +1,8 @@ +"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","病院(大学HP以外)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"02","大学附属病院","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"03","大学附属病院分院","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"04","歯科病院(歯学部附属病院)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"05","高次救急医療機関","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"06","国立療養所","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" +"99","ああああ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_delete.csv new file mode 100644 index 00000000..8928715b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_delete.csv @@ -0,0 +1,8 @@ +"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper" +"02","大学附属病院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper" +"03","大学附属病院分院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper" +"04","歯科病院(歯学部附属病院)","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:30:16","com_inst_div_mapper" +"05","国立療養所","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper" +"06","高次救急医療機関","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper" +"07","社会福祉施設附属病院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:30:16","com_inst_div_mapper","2023/05/15 17:30:16","com_inst_div_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_insert.csv new file mode 100644 index 00000000..b482c0bf --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_insert.csv @@ -0,0 +1,8 @@ +"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","病院(大学HP以外)","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"02","大学附属病院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"03","大学附属病院分院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"04","歯科病院(歯学部附属病院)","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"05","高次救急医療機関","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"06","国立療養所","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_update.csv new file mode 100644 index 00000000..1f416568 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/expect_com_inst_div_update.csv @@ -0,0 +1,8 @@ +"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"02","大学附属病院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"03","大学附属病院分院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"04","歯科病院(歯学部附属病院)","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"05","国立療養所","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"06","高次救急医療機関","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper" +"99","ああああ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/test_com_inst_div_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/test_com_inst_div_mapper.py new file mode 100644 index 00000000..17091505 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_div/test_com_inst_div_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_div_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComInstDivMapper: + """レイアウト区分011: COM_施設区分""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_施設区分テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_div_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_insert.csv')) + primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_施設区分テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_div_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_div_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_div', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_update.csv')) + primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_施設区分テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_div_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_div_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_div', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_delete.csv')) + primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_delete.csv new file mode 100644 index 00000000..51b1ac36 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_delete.csv @@ -0,0 +1,7 @@ +"007","101","A","20141113","20141114","" +"007","102","C","20141113","20141114","文部" +"007","103","A","20141113","20141114","財務" +"007","104","A","20141113","20141114","警察" +"007","105","A","20141113","20141114","総務" +"007","106","A","20141113","20141114","防衛" +"007","107","A","20141113","20141114","独法国" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_insert.csv new file mode 100644 index 00000000..8f21e4df --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_insert.csv @@ -0,0 +1,7 @@ +"007","101","A","20141113","20141114","厚生" +"007","102","A","20141113","20141114","文部" +"007","103","A","20141113","20141114","財務" +"007","104","A","20141113","20141114","総務" +"007","105","A","20141113","20141114","警察" +"007","106","A","20141113","20141114","防衛" +"007","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_update.csv new file mode 100644 index 00000000..a4bc1313 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/com_manage_update.csv @@ -0,0 +1,6 @@ +"007","101","A","20141113","20141114","" +"007","102","A","20141113","20141114","文部" +"007","103","A","20141113","20141114","財務" +"007","104","A","20141113","20141114","警察" +"007","105","A","20141113","20141114","総務" +"007","106","A","20141113","20141114","防衛" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_delete.csv new file mode 100644 index 00000000..d992c162 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_delete.csv @@ -0,0 +1,7 @@ +"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"101","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" +"102","文部","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" +"103","財務","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" +"104","警察","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" +"105","総務","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" +"106","防衛","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_update.csv new file mode 100644 index 00000000..1b73e668 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/db_com_manage_before_update.csv @@ -0,0 +1,8 @@ +"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"101","厚生","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"102","文部","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"103","財務","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"104","総務","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"105","警察","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"106","防衛","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" +"999","あいうえおかきくけこ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_delete.csv new file mode 100644 index 00000000..05318030 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_delete.csv @@ -0,0 +1,8 @@ +"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"101","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"102","文部","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"103","財務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"104","警察","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"105","総務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"106","防衛","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper" +"107","独法国","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:51:00","com_manage_mapper","2023/05/14 15:51:00","com_manage_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_insert.csv new file mode 100644 index 00000000..9041fe17 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_insert.csv @@ -0,0 +1,8 @@ +"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"101","厚生","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"102","文部","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"103","財務","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"104","総務","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"105","警察","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"106","防衛","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" +"999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_update.csv new file mode 100644 index 00000000..4e2a7c7c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/expect_com_manage_update.csv @@ -0,0 +1,8 @@ +"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"101","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"102","文部","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"103","財務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"104","警察","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"105","総務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"106","防衛","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper" +"999","あいうえおかきくけこ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/test_com_manage_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/test_com_manage_mapper.py new file mode 100644 index 00000000..b27092a9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_manage/test_com_manage_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_manage_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComManageMapper: + """レイアウト区分007: COM_経営体""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_経営体テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_manage_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_insert.csv')) + primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_経営体テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_manage_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_manage_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_manage', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_update.csv')) + primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_経営体テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_manage_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_manage_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_manage', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_delete.csv')) + primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv new file mode 100644 index 00000000..631fe4f9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv @@ -0,0 +1,3 @@ +"124","01","01","B","01","202","1","20141113","20141114","","" +"124","01","01","B","01","900","1","20141113","20141114","01","02" +"124","01","01","B","01","331","1","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv new file mode 100644 index 00000000..e8bf727d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv @@ -0,0 +1,3 @@ +"124","01","01","A","01","202","2","20141113","20141114","01","03" +"124","01","01","A","01","236","2","20141113","20141114","","" +"124","01","01","B","01","331","2","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv new file mode 100644 index 00000000..7ec208ae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv @@ -0,0 +1,3 @@ +"124","01","01","A","01","202","2","20141113","20141114","","" +"124","01","01","A","01","236","2","20141113","20141114","01","02" +"124","01","01","B","01","331","2","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv new file mode 100644 index 00000000..756a99ce --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","","","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" +"01","01","01","236","01","02","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" +"01","01","01","331","01","01","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv new file mode 100644 index 00000000..dc0c8280 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","01","03","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" +"01","01","01","236","","","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" +"01","01","01","331","01","01","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv new file mode 100644 index 00000000..378928e3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv @@ -0,0 +1,2 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","236","01","02","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv new file mode 100644 index 00000000..35406b92 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","01","03","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" +"01","01","01","236","","","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" +"01","01","01","331","01","01","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv new file mode 100644 index 00000000..e45e2614 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","","","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" +"01","01","01","236","01","02","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" +"01","01","01","331","01","01","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py new file mode 100644 index 00000000..0b208ab0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py @@ -0,0 +1,271 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_med_area_city_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComMedAreaCityMapper: + """レイアウト区分124: COM_医療圏都道府県市町村対応表""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医療圏都道府県市町村対応表テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_area_city_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_area_city_insert.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏都道府県市町村対応表テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_area_city_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_area_city_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_area_city', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_area_city_update.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_医療圏都道府県市町村対応表テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_area_city_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_area_city_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_area_city', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_area_city_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_med_area_city')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv new file mode 100644 index 00000000..5543c107 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv @@ -0,0 +1,8 @@ +"024","01","A","20141113","20141114","" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","C","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院B" +"024","06","A","20141113","20141114","複合病院A" +"024","07","A","20141113","20141114","長期療養病院" +"024","99","C","20141113","20141114","精神病院B" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv new file mode 100644 index 00000000..904b15f6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv @@ -0,0 +1,7 @@ +"024","01","A","20141113","20141114","一般病院A" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","A","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院A" +"024","06","A","20141113","20141114","複合病院B" +"024","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv new file mode 100644 index 00000000..6a92676f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv @@ -0,0 +1,6 @@ +"024","01","A","20141113","20141114","" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","A","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院B" +"024","06","A","20141113","20141114","複合病院A" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv new file mode 100644 index 00000000..28ec2538 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"03","精神病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"04","精神病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"05","複合病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"06","複合病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv new file mode 100644 index 00000000..0dec3123 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"03","精神病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"04","精神病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"05","複合病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"06","複合病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv new file mode 100644 index 00000000..ec7302e3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv @@ -0,0 +1,8 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","com_med_func_valuation_mapper" +"02","一般病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"03","精神病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"04","精神病院B","20171024","20171024","20230424","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2023/04/23 10:22:50","com_med_func_valuation_mapper" +"05","複合病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"06","複合病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"07","長期療養病院","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:22:50","com_med_func_valuation_mapper","2017/10/24 10:22:50","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv new file mode 100644 index 00000000..ca00954e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv @@ -0,0 +1,8 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"02","一般病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"03","精神病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"04","精神病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"05","複合病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"06","複合病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv new file mode 100644 index 00000000..b5292152 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","com_med_func_valuation_mapper" +"02","一般病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"03","精神病院A","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"04","精神病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"05","複合病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"06","複合病院A","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py new file mode 100644 index 00000000..b21789a6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_med_func_valuation_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComMedFuncValuationMapper: + """レイアウト区分024: COM_医療機器評価 """ + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医療機器評価テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_func_valuation_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_func_valuation_insert.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療機器評価テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_func_valuation_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_func_valuation_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_func_valuation', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_func_valuation_update.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医療機器評価テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_func_valuation_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_func_valuation_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_func_valuation', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_func_valuation_delete.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv new file mode 100644 index 00000000..2416d338 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv @@ -0,0 +1,3 @@ +"121","01","C","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","09","C","20141118","20141122","","","","","","","","","","","","","","" +"121","03","C","20141118","20141122","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv new file mode 100644 index 00000000..0f161d10 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv @@ -0,0 +1,4 @@ +"121","01","A","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","02","A","20141118","20141122","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12" +"121","03","A","20141118","20141122","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0" +"121","99","A","","","20140101","20130329","123456","123456","20120930","1234567","123456","123456","20120930","1234567","123456","123465","20120930","1234567" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv new file mode 100644 index 00000000..0c5f5b39 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv @@ -0,0 +1,3 @@ +"121","01","A","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","02","A","20141118","20141122","","","","","","","","","","","","","","" +"121","03","B","20141118","20141122","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv new file mode 100644 index 00000000..892066e1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" +"03","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv new file mode 100644 index 00000000..d5ea9119 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" +"02","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" +"03","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv new file mode 100644 index 00000000..891196ec --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv @@ -0,0 +1,2 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv new file mode 100644 index 00000000..a6b694f7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv @@ -0,0 +1,5 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"02","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"03","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"99","20140101","20130329","123456","123456","20120930","1234567","123456","123456","20120930","1234567","123456","123465","20120930","1234567","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv new file mode 100644 index 00000000..7d595e49 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" +"03","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py new file mode 100644 index 00000000..02424dbd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py @@ -0,0 +1,222 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_med_prefc_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComMedPrefcMapper: + """レイアウト区分121: COM_医療圏都道府県""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # decimal型のカラム群 + decimal_columns = [ + 'psy_bednumtg', + 'psy_bednumgen', + 'tb_bednumtg', + 'tb_bednumgen', + 'inf_bednumtg', + 'inf_bednumgen' + ] + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医療圏都道府県テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_prefc_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_prefc_insert.csv')) + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏都道府県テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_prefc_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_prefc_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_prefc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_prefc_update.csv')) + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_医療圏都道府県テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_prefc_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_med_prefc_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_prefc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_prefc_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_med_prefc')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv new file mode 100644 index 00000000..a89aed2c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv @@ -0,0 +1,8 @@ +"023","3991","A","20141113","20141114","" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","C","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","4105","A","20141113","20141114","療養型介護療養施設サービス費" +"023","9999","C","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv new file mode 100644 index 00000000..b12393f2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv @@ -0,0 +1,7 @@ +"023","3991","A","20141113","20141114","診療所療養型種別不明" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","A","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","9999","A","20141113","20141114","ああああああああああいいいいいいいいいいううううううううううええええええええええおおおおおおか" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv new file mode 100644 index 00000000..2eac2208 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv @@ -0,0 +1,6 @@ +"023","3991","A","20141113","20141114","" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","A","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv new file mode 100644 index 00000000..de1019b7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv new file mode 100644 index 00000000..de1019b7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv new file mode 100644 index 00000000..97e10546 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv @@ -0,0 +1,8 @@ +"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"3991","","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","com_nurse_assrt_mapper" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","20230421","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4105","療養型介護療養施設サービス費","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:31:18","com_nurse_assrt_mapper","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv new file mode 100644 index 00000000..564adfff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv @@ -0,0 +1,8 @@ +"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"3991","診療所療養型種別不明","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4101","療養型介護療養施設サービス費(Ⅰ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費(Ⅳ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費種別不明","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"9999","ああああああああああいいいいいいいいいいううううううううううええええええええええおおおおおおか","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv new file mode 100644 index 00000000..82c4ee0a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"3991","","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","com_nurse_assrt_mapper" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py new file mode 100644 index 00000000..49bf7c8f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py @@ -0,0 +1,198 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \ + com_nurse_assrt_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComNurseAssrtMapper: + """レイアウト区分023: COM_看護種別""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_出身校テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_nurse_assrt_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_nurse_assrt_insert.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_出身校テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_nurse_assrt_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_nurse_assrt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_nurse_assrt', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_nurse_assrt_update.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_出身校テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_nurse_assrt_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_nurse_assrt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_nurse_assrt', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_nurse_assrt_delete.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_assrt_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_delete.csv new file mode 100644 index 00000000..fddb0e94 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_delete.csv @@ -0,0 +1,3 @@ +"102","03","3673010",,"C","20121128","20121129",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","9","9","9","C","200501","200601","7","0","9","10","11","12","13","14","15","6","17","18","19","20","221-000","22","23","24","25","26","27","28","29","30","31","32","3","34","35","2","37","38","9","204001","1","204201","43","44","45","46","47" +"102","99","1234567",,"C","20121128","20121129",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_insert.csv new file mode 100644 index 00000000..0f6a5751 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_insert.csv @@ -0,0 +1,120 @@ +"102","12","345678","3","A","200501","200601","7","8","123","456","78901","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾","アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ","亜居宇絵尾亜居宇絵尾亜居宇絵尾","アイウエオアイウエオアイウエオアイウエオ","6","17","189","19","2099","221-0001","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾","アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ","1.23457E+12","25","26","27","28","29","30","31","32","3","0120-1234-12345","353","22","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾","アイウエオアイウエオ","9","204001","1","204201","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾","アイウエオアイウエオ","12","3456","78901" +"102","03","3673000",,"A","20121127","20121128",,,,,,"正式店舗名03","セイシキテンポメイ03","略式03","リヤクシキ03",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03","2-45-1-03","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673001",,"A","20121128","20121129",,,,,,"正式店舗名03A01a","セイシキテンポメイ03A01A","略式03A01a","リヤクシキ03A01A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A01a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01A","2-45-1-03A01A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673002",,"A","20121127","20121128",,,,,,"正式店舗名03A01b-01","セイシキテンポメイ03A01B-01","略式03A01b-01","リヤクシキ03A01B-01",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A01b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","2-45-1-03A01B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673003",,"A","20121128","20121129",,,,,,"正式店舗名03A01b-02","セイシキテンポメイ03A01B-02","略式03A01b-02","リヤクシキ03A01B-02",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A01b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","2-45-1-03A01B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673004",,"A","20121128","20121129",,,,,,"正式店舗名03A01c","セイシキテンポメイ03A01C","略式03A01c","リヤクシキ03A01C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A01c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01C","2-45-1-03A01C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,"1","201212",,,,,,, +"102","03","3673005",,"A","20121128","20121129","1",,,,,"正式店舗名03A01d","セイシキテンポメイ03A01D","略式03A01d","リヤクシキ03A01D",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A01d","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01D","2-45-1-03A01D","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673010",,"A","20121127","20121128",,"1",,,,"正式店舗名03A02a","セイシキテンポメイ03A02A","略式03A02a","リヤクシキ03A02A","6","13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03A02a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","2-45-1-03A02A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673011",,"A","20121127","20121128","1",,,,,"正式店舗名03B01a","セイシキテンポメイ03B01A","略式03B01a","リヤクシキ03B01A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B01a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B01A","2-45-1-03B01A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673012",,"A","20121127","20121128",,,,,,"正式店舗名03B02a","セイシキテンポメイ03B02A","略式03B02a","リヤクシキ03B02A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02A","2-45-1-03B02A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673013",,"A","20121127","20121128",,"1",,,,"正式店舗名03B02b","セイシキテンポメイ03B02B","略式03B02b","リヤクシキ03B02B","6","13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02B","2-45-1-03B02B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673014",,"A","20121127","20121128",,,,,,"正式店舗名03B02c-01","セイシキテンポメイ03B02C-01","略式03B02c-01","リヤクシキ03B02C-01",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","2-45-1-03B02C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673015",,"A","20121128","20121129",,,,,,"正式店舗名03B02c-02","セイシキテンポメイ03B02C-02","略式03B02c-02","リヤクシキ03B02C-02",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","2-45-1-03B02C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673016",,"A","20121127","20121128",,,,,,"正式店舗名03B02d-01","セイシキテンポメイ03B02D-01","略式03B02d-01","リヤクシキ03B02D-01",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02d","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","2-45-1-03B02D","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673020",,"A","20121127","20121128",,,,,,"正式店舗名03B02d-02","セイシキテンポメイ03B02D-02","略式03B02d-02","リヤクシキ03B02D-02",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02d","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","2-45-1-03B02D","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673021",,"A","20121128","20121129",,,,,,"正式店舗名03B02d-03","セイシキテンポメイ03B02D-03","略式03B02d-03","リヤクシキ03B02D-03",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02d","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","2-45-1-03B02D","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673022",,"A","20121127","20121128",,"1",,,,"正式店舗名03B02e","セイシキテンポメイ03B02E","略式03B02e","リヤクシキ03B02E","6","13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B02e","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02E","2-45-1-03B02E","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673023",,"A","20121127","20121128",,,,,,"正式店舗名03B03a全件","セイシキテンポメイ03B03Aゼンケン","略式03B03a全件","リヤクシキ03B03Aゼンケン",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B03a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03A","2-45-1-03B03A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673024",,"A","20121127","20121128",,,,,,"正式店舗名03B03b","セイシキテンポメイ03B03B","略式03B03b","リヤクシキ03B03B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B03b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03B","2-45-1-03B03B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673025",,"A","20121127","20121128",,,,,,"正式店舗名03B04a","セイシキテンポメイ03B04A","略式03B04a","リヤクシキ03B04A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B04a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04A","2-45-1-03B04A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673026",,"A","20121127","20121128",,,,,,"正式店舗名03B04b","セイシキテンポメイ03B04B","略式03B04b","リヤクシキ03B04B","1","13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B04b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04B","2-45-1-03B04B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673030",,"A","20121127","20121128",,,,,,"正式店舗名03B04c","セイシキテンポメイ03B04C","略式03B04c","リヤクシキ03B04C","1","13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B04c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04C","2-45-1-03B04C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673031",,"A","20121127","20121128",,,,,,"正式店舗名03B05a","セイシキテンポメイ03B05A","略式03B05a","リヤクシキ03B05A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B05a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05A","2-45-1-03B05A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673032",,"A","20121127","20121128",,,,,,"正式店舗名03B05b","セイシキテンポメイ03B05B","略式03B05b","リヤクシキ03B05B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B05b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05B","2-45-1-03B05B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673033",,"A","20121127","20121128",,,,,,"正式店舗名03B06a","セイシキテンポメイ03B06A","略式03B06a","リヤクシキ03B06A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B06a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06A","2-45-1-03B06A","3","3","5","2","7","7","12","2","1",,"471","85",,,,,,,,,,, +"102","03","3673034",,"A","20121127","20121128",,,,,,"正式店舗名03B06b","セイシキテンポメイ03B06B","略式03B06b","リヤクシキ03B06B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B06b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06B","2-45-1-03B06B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673035",,"A","20121127","20121128",,,,,,"正式店舗名03B06c","セイシキテンポメイ03B06C","略式03B06c","リヤクシキ03B06C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B06c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06C","2-45-1-03B06C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673036",,"A","20121127","20121128",,,,,,"正式店舗名03B07a","セイシキテンポメイ03B07A","略式03B07a","リヤクシキ03B07A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B07a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B07A","2-45-1-03B07A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673040",,"A","20121127","20121128",,,,,,"正式店舗名03B08a","セイシキテンポメイ03B08A","略式03B08a","リヤクシキ03B08A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B08a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B08A","2-45-1-03B08A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673041",,"A","20121127","20121128",,,,,,"正式店舗名03B09a","セイシキテンポメイ03B09A","略式03B09a","リヤクシキ03B09A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B09a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09A","2-45-1-03B09A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673042",,"A","20121127","20121128",,,,,,"正式店舗名03B09b","セイシキテンポメイ03B09B","略式03B09b","リヤクシキ03B09B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B09b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09B","2-45-1-03B09B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","代表者名 03B09b","ダイヒヨウシヤメイ 03B09B",,,,,,,,, +"102","03","3673043",,"A","20121127","20121128",,,,,,"正式店舗名03B09c","セイシキテンポメイ03B09C","略式03B09c","リヤクシキ03B09C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B09c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09C","2-45-1-03B09C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","代表者名 03B09c","ダイヒヨウシヤメイ 03B09C",,,,,,,,, +"102","03","3673044",,"A","20121127","20121128",,,,,,"正式店舗名03B10a","セイシキテンポメイ03B10A","略式03B10a","リヤクシキ03B10A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B10a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10A","2-45-1-03B10A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,"1","201212",,,,,,, +"102","03","3673045",,"A","20121127","20121128",,,,,,"正式店舗名03B10b","セイシキテンポメイ03B10B","略式03B10b","リヤクシキ03B10B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B10b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10B","2-45-1-03B10B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,"1","201210",,,,,,, +"102","03","3673046",,"A","20121127","20121128",,,,,,"正式店舗名03B11a","セイシキテンポメイ03B11A","略式03B11a","リヤクシキ03B11A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B11a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11A","2-45-1-03B11A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673047",,"A","20121127","20121128",,,,,,"正式店舗名03B11b","セイシキテンポメイ03B11B","略式03B11b","リヤクシキ03B11B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B11b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11B","2-45-1-03B11B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,"1","201210",,,,, +"102","03","3673048",,"A","20121127","20121128",,,,,,"正式店舗名03B11c","セイシキテンポメイ03B11C","略式03B11c","リヤクシキ03B11C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B11c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11C","2-45-1-03B11C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,"1","201210",,,,, +"102","03","3673051",,"A","20121127","20121128",,,,,,"正式店舗名03B12a","セイシキテンポメイ03B12A","略式03B12a","リヤクシキ03B12A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B12a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12A","2-45-1-03B12A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673052",,"A","20121127","20121128",,,,,,"正式店舗名03B12b","セイシキテンポメイ03B12B","略式03B12b","リヤクシキ03B12B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B12b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12B","2-45-1-03B12B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,"管理薬剤師名 03B12b","カンリヤクザイシメイ 03B12B",,, +"102","03","3673053",,"A","20121127","20121128",,,,,,"正式店舗名03B12c","セイシキテンポメイ03B12C","略式03B12c","リヤクシキ03B12C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B12c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12C","2-45-1-03B12C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,"管理薬剤師名 03B12c","カンリヤクザイシメイ 03B12C",,, +"102","03","3673054",,"A","20121127","20121128",,,,,,"正式店舗名03B13a","セイシキテンポメイ03B13A","略式03B13a","リヤクシキ03B13A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","2-45-1-03B13A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","89",,,,,,,,,,, +"102","03","3673055",,"A","20121127","20121128",,,,,,"正式店舗名03B13a","セイシキテンポメイ03B13A","略式03B13a","リヤクシキ03B13A",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13a","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","2-45-1-03B13A","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,,, +"102","03","3673056",,"A","20121127","20121128",,,,,,"正式店舗名03B13b","セイシキテンポメイ03B13B","略式03B13b","リヤクシキ03B13B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13B","2-45-1-03B13B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","89",,,,,,,,,,, +"102","03","3673060",,"A","20121127","20121128",,,,,,"正式店舗名03B13b","セイシキテンポメイ03B13B","略式03B13b","リヤクシキ03B13B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13B","2-45-1-03B13B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","89",,,,,,,,,,, +"102","03","3673061",,"A","20121127","20121128",,,,,,"正式店舗名03B13b","セイシキテンポメイ03B13B","略式03B13b","リヤクシキ03B13B",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13b","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13B","2-45-1-03B13B","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,"3","3673056", +"102","03","3673062",,"A","20121127","20121128",,,,,,"正式店舗名03B13c","セイシキテンポメイ03B13C","略式03B13c","リヤクシキ03B13C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13C","2-45-1-03B13C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","89",,,,,,,,,,, +"102","03","3673063",,"A","20121127","20121128",,,,,,"正式店舗名03B13c","セイシキテンポメイ03B13C","略式03B13c","リヤクシキ03B13C",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 03B13c","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13C","2-45-1-03B13C","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85",,,,,,,,,"3","3673062", +"102","03","3673801",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ1","□","リヤクシキモジ1",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ1","2-45-1-1","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ1 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ1 タロウ",,, +"102","03","3673802",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ2","□","リヤクシキモジ2",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ2","2-45-1-2","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ2 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ2 タロウ",,, +"102","03","3673803",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ3","□","リヤクシキモジ3",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ3","2-45-1-3","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ3 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ3 タロウ",,, +"102","03","3673804",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ4","","リヤクシキモジ4",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ4","2-45-1-4","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ4 タロウ",,,,," 太郎","カンリヤクザイシメイモジ4 タロウ",,, +"102","03","3673805",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ5","","リヤクシキモジ5",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ5","2-45-1-5","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ5 タロウ",,,,," 太郎","カンリヤクザイシメイモジ5 タロウ",,, +"102","03","3673806",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ6","","リヤクシキモジ6",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ6","2-45-1-6","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ6 タロウ",,,,," 太郎","カンリヤクザイシメイモジ6 タロウ",,, +"102","03","3673807",,"A","20121127","20121128",,,,,,"□□□□□","セイシキテンポメイモジ7","□□□□□","リヤクシキモジ7",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ7","2-45-1-7","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□ 太郎","ダイヒヨウシヤメイモジ7 タロウ",,,,,"□□□□□ 太郎","カンリヤクザイシメイモジ7 タロウ",,, +"102","03","3673808",,"A","20121127","20121128",,,,,,"□□□□□","セイシキテンポメイモジ8","□□□□□","リヤクシキモジ8",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ8","2-45-1-8","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□ 太郎","ダイヒヨウシヤメイモジ8 タロウ",,,,,"□□□□□ 太郎","カンリヤクザイシメイモジ8 タロウ",,, +"102","03","3673809",,"A","20121127","20121128",,,,,,"□□□□□□□□","セイシキテンポメイモジ9","□□□□□□□□","リヤクシキモジ9",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ9","2-45-1-9","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ9 タロウ",,,,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ9 タロウ",,, +"102","03","3673810",,"A","20121127","20121128",,,,,,"□□□□□□□□","セイシキテンポメイモジ10","□□□□□□□□","リヤクシキモジ10",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ10","2-45-1-10","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ10 タロウ",,,,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ10 タロウ",,, +"102","03","3673811",,"A","20121127","20121128",,,,,,"□□□□□□","セイシキテンポメイモジ11","□□□□□□","リヤクシキモジ11",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ11","2-45-1-11","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□ 太郎","ダイヒヨウシヤメイモジ11 タロウ",,,,,"□□□□□□ 太郎","カンリヤクザイシメイモジ11 タロウ",,, +"102","03","3673812",,"A","20121127","20121128",,,,,,"□□□□□□□","セイシキテンポメイモジ12","□□□□□□□","リヤクシキモジ12",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ12","2-45-1-12","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□ 太郎","ダイヒヨウシヤメイモジ12 タロウ",,,,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ12 タロウ",,, +"102","03","3673813",,"A","20121127","20121128",,,,,,"□□□□□□□□","セイシキテンポメイモジ13","□□□□□□□□","リヤクシキモジ13",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ13","2-45-1-13","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ13 タロウ",,,,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ13 タロウ",,, +"102","03","3673814",,"A","20121127","20121128",,,,,,"□□□□□□□□","セイシキテンポメイモジ14","□□□□□□□□","リヤクシキモジ14",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ14","2-45-1-14","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ14 タロウ",,,,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ14 タロウ",,, +"102","03","3673815",,"A","20121127","20121128",,,,,,"□□□□","セイシキテンポメイモジ15","□□□□","リヤクシキモジ15",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ15","2-45-1-15","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□ 太郎","ダイヒヨウシヤメイモジ15 タロウ",,,,,"□□□□ 太郎","カンリヤクザイシメイモジ15 タロウ",,, +"102","03","3673816",,"A","20121127","20121128",,,,,,"□□□□□□□","セイシキテンポメイモジ16","□□□□□□□","リヤクシキモジ16",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ16","2-45-1-16","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□ 太郎","ダイヒヨウシヤメイモジ16 タロウ",,,,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ16 タロウ",,, +"102","03","3673817",,"A","20121127","20121128",,,,,,"□□□□□□□","セイシキテンポメイモジ17","□□□□□□□","リヤクシキモジ17",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ17","2-45-1-17","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□ 太郎","ダイヒヨウシヤメイモジ17 タロウ",,,,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ17 タロウ",,, +"102","03","3673818",,"A","20121127","20121128",,,,,,"□□□□□□□","セイシキテンポメイモジ18","□□□□□□□","リヤクシキモジ18",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ18","2-45-1-18","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□ 太郎","ダイヒヨウシヤメイモジ18 タロウ",,,,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ18 タロウ",,, +"102","03","3673819",,"A","20121127","20121128",,,,,,"□□□□□□□□□□","セイシキテンポメイモジ19","□□□□□□□□□□","リヤクシキモジ19",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ19","2-45-1-19","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ19 タロウ",,,,,"□□□□□□□□□□ 太郎","カンリヤクザイシメイモジ19 タロウ",,, +"102","03","3673820",,"A","20121127","20121128",,,,,,"□□□□□□□□□□","セイシキテンポメイモジ20","□□□□□□□□□□","リヤクシキモジ20",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ20","2-45-1-20","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ20 タロウ",,,,,"□□□□□□□□□□ 太郎","カンリヤクザイシメイモジ20 タロウ",,, +"102","03","3673821",,"A","20121127","20121128",,,,,,"□□□□□□□□","セイシキテンポメイモジ21","□□□□□□□□","リヤクシキモジ21",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□□□□□□□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ21","2-45-1-21","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□□□□□□□ 太郎","ダイヒヨウシヤメイモジ21 タロウ",,,,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ21 タロウ",,, +"102","03","3673822",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ22","","リヤクシキモジ22",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ22","2-45-1-22","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ22 タロウ",,,,," 太郎","カンリヤクザイシメイモジ22 タロウ",,, +"102","03","3673823",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ23","","リヤクシキモジ23",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ23","2-45-1-23","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ23 タロウ",,,,," 太郎","カンリヤクザイシメイモジ23 タロウ",,, +"102","03","3673824",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ24","","リヤクシキモジ24",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ24","2-45-1-24","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ24 タロウ",,,,," 太郎","カンリヤクザイシメイモジ24 タロウ",,, +"102","03","3673825",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ25","","リヤクシキモジ25",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ25","2-45-1-25","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ25 タロウ",,,,," 太郎","カンリヤクザイシメイモジ25 タロウ",,, +"102","03","3673826",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ26","□","リヤクシキモジ26",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ26","2-45-1-26","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ26 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ26 タロウ",,, +"102","03","3673827",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ27","","リヤクシキモジ27",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ27","2-45-1-27","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ27 タロウ",,,,," 太郎","カンリヤクザイシメイモジ27 タロウ",,, +"102","03","3673828",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ28","","リヤクシキモジ28",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ28","2-45-1-28","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ28 タロウ",,,,," 太郎","カンリヤクザイシメイモジ28 タロウ",,, +"102","03","3673829",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ29","","リヤクシキモジ29",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ29","2-45-1-29","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ29 タロウ",,,,," 太郎","カンリヤクザイシメイモジ29 タロウ",,, +"102","03","3673830",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ30","□","リヤクシキモジ30",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ30","2-45-1-30","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ30 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ30 タロウ",,, +"102","03","3673831",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ31","","リヤクシキモジ31",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ31","2-45-1-31","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ31 タロウ",,,,," 太郎","カンリヤクザイシメイモジ31 タロウ",,, +"102","03","3673832",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ32","","リヤクシキモジ32",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ32","2-45-1-32","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ32 タロウ",,,,," 太郎","カンリヤクザイシメイモジ32 タロウ",,, +"102","03","3673833",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ33","","リヤクシキモジ33",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ33","2-45-1-33","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ33 タロウ",,,,," 太郎","カンリヤクザイシメイモジ33 タロウ",,, +"102","03","3673834",,"A","20121127","20121128",,,,,,"□□","セイシキテンポメイモジ34","□□","リヤクシキモジ34",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ34","2-45-1-34","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□ 太郎","ダイヒヨウシヤメイモジ34 タロウ",,,,,"□□ 太郎","カンリヤクザイシメイモジ34 タロウ",,, +"102","03","3673835",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ35","","リヤクシキモジ35",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ35","2-45-1-35","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ35 タロウ",,,,," 太郎","カンリヤクザイシメイモジ35 タロウ",,, +"102","03","3673836",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ36","","リヤクシキモジ36",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ36","2-45-1-36","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ36 タロウ",,,,," 太郎","カンリヤクザイシメイモジ36 タロウ",,, +"102","03","3673837",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ37","","リヤクシキモジ37",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ37","2-45-1-37","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ37 タロウ",,,,," 太郎","カンリヤクザイシメイモジ37 タロウ",,, +"102","03","3673838",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ38","□","リヤクシキモジ38",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ38","2-45-1-38","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ38 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ38 タロウ",,, +"102","03","3673839",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ39","","リヤクシキモジ39",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ39","2-45-1-39","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ39 タロウ",,,,," 太郎","カンリヤクザイシメイモジ39 タロウ",,, +"102","03","3673840",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ40","","リヤクシキモジ40",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ40","2-45-1-40","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ40 タロウ",,,,," 太郎","カンリヤクザイシメイモジ40 タロウ",,, +"102","03","3673841",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ41","","リヤクシキモジ41",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ41","2-45-1-41","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ41 タロウ",,,,," 太郎","カンリヤクザイシメイモジ41 タロウ",,, +"102","03","3673842",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ42","","リヤクシキモジ42",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ42","2-45-1-42","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ42 タロウ",,,,," 太郎","カンリヤクザイシメイモジ42 タロウ",,, +"102","03","3673843",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ43","","リヤクシキモジ43",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ43","2-45-1-43","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ43 タロウ",,,,," 太郎","カンリヤクザイシメイモジ43 タロウ",,, +"102","03","3673844",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ44","","リヤクシキモジ44",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ44","2-45-1-44","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ44 タロウ",,,,," 太郎","カンリヤクザイシメイモジ44 タロウ",,, +"102","03","3673845",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ45","","リヤクシキモジ45",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ45","2-45-1-45","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ45 タロウ",,,,," 太郎","カンリヤクザイシメイモジ45 タロウ",,, +"102","03","3673846",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ46","","リヤクシキモジ46",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ46","2-45-1-46","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ46 タロウ",,,,," 太郎","カンリヤクザイシメイモジ46 タロウ",,, +"102","03","3673847",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ47","□","リヤクシキモジ47",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ47","2-45-1-47","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ47 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ47 タロウ",,, +"102","03","3673848",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ48","□","リヤクシキモジ48",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ48","2-45-1-48","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ48 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ48 タロウ",,, +"102","03","3673849",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ49","","リヤクシキモジ49",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ49","2-45-1-49","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ49 タロウ",,,,," 太郎","カンリヤクザイシメイモジ49 タロウ",,, +"102","03","3673850",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ50","□","リヤクシキモジ50",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ50","2-45-1-50","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ50 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ50 タロウ",,, +"102","03","3673851",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ51","","リヤクシキモジ51",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ51","2-45-1-51","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ51 タロウ",,,,," 太郎","カンリヤクザイシメイモジ51 タロウ",,, +"102","03","3673852",,"A","20121127","20121128",,,,,,"□","セイシキテンポメイモジ52","□","リヤクシキモジ52",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ52","2-45-1-52","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□ 太郎","ダイヒヨウシヤメイモジ52 タロウ",,,,,"□ 太郎","カンリヤクザイシメイモジ52 タロウ",,, +"102","03","3673853",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ53","","リヤクシキモジ53",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ53","2-45-1-53","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ53 タロウ",,,,," 太郎","カンリヤクザイシメイモジ53 タロウ",,, +"102","03","3673854",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ54","","リヤクシキモジ54",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ54","2-45-1-54","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ54 タロウ",,,,," 太郎","カンリヤクザイシメイモジ54 タロウ",,, +"102","03","3673855",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ55","","リヤクシキモジ55",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ55","2-45-1-55","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ55 タロウ",,,,," 太郎","カンリヤクザイシメイモジ55 タロウ",,, +"102","03","3673856",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ56","","リヤクシキモジ56",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ56","2-45-1-56","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ56 タロウ",,,,," 太郎","カンリヤクザイシメイモジ56 タロウ",,, +"102","03","3673857",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ57","","リヤクシキモジ57",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ57","2-45-1-57","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ57 タロウ",,,,," 太郎","カンリヤクザイシメイモジ57 タロウ",,, +"102","03","3673858",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ58","","リヤクシキモジ58",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ58","2-45-1-58","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ58 タロウ",,,,," 太郎","カンリヤクザイシメイモジ58 タロウ",,, +"102","03","3673859",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ59","","リヤクシキモジ59",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ59","2-45-1-59","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ59 タロウ",,,,," 太郎","カンリヤクザイシメイモジ59 タロウ",,, +"102","03","3673860",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ60","","リヤクシキモジ60",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ60","2-45-1-60","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ60 タロウ",,,,," 太郎","カンリヤクザイシメイモジ60 タロウ",,, +"102","03","3673861",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ61","","リヤクシキモジ61",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ61","2-45-1-61","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ61 タロウ",,,,," 太郎","カンリヤクザイシメイモジ61 タロウ",,, +"102","03","3673862",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ62","","リヤクシキモジ62",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ62","2-45-1-62","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ62 タロウ",,,,," 太郎","カンリヤクザイシメイモジ62 タロウ",,, +"102","03","3673863",,"A","20121127","20121128",,,,,,"","セイシキテンポメイモジ63","","リヤクシキモジ63",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 ","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ63","2-45-1-63","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85"," 太郎","ダイヒヨウシヤメイモジ63 タロウ",,,,," 太郎","カンリヤクザイシメイモジ63 タロウ",,, +"102","03","3673864",,"A","20121127","20121128",,,,,,"□□","セイシキテンポメイモジ64","□□","リヤクシキモジ64",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ64","2-45-1-64","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□ 太郎","ダイヒヨウシヤメイモジ64 タロウ",,,,,"□□ 太郎","カンリヤクザイシメイモジ64 タロウ",,, +"102","03","3673865",,"A","20121127","20121128",,,,,,"□□","セイシキテンポメイモジ65","□□","リヤクシキモジ65",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 □□","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ65","2-45-1-65","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","□□ 太郎","ダイヒヨウシヤメイモジ65 タロウ",,,,,"□□ 太郎","カンリヤクザイシメイモジ65 タロウ",,, +"102","03","3673866",,"A","20121127","20121128",,,,,,"鯵鰺鴬鶯蛎蠣撹攪竃竈","セイシキテンポメイモジ66","鯵鰺鴬鶯蛎蠣撹攪竃竈","リヤクシキモジ66",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 鯵鰺鴬鶯蛎蠣撹攪竃竈","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ66","2-45-1-66","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","鯵鰺鴬鶯蛎蠣撹攪竃竈 太郎","ダイヒヨウシヤメイモジ66 タロウ",,,,,"鯵鰺鴬鶯蛎蠣撹攪竃竈 太郎","カンリヤクザイシメイモジ66 タロウ",,, +"102","03","3673867",,"A","20121127","20121128",,,,,,"潅灌諌諫頚頸砿礦蕊蘂","セイシキテンポメイモジ67","潅灌諌諫頚頸砿礦蕊蘂","リヤクシキモジ67",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 潅灌諌諫頚頸砿礦蕊蘂","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ67","2-45-1-67","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","潅灌諌諫頚頸砿礦蕊蘂 太郎","ダイヒヨウシヤメイモジ67 タロウ",,,,,"潅灌諌諫頚頸砿礦蕊蘂 太郎","カンリヤクザイシメイモジ67 タロウ",,, +"102","03","3673868",,"A","20121127","20121128",,,,,,"靭靱賎賤壷壺砺礪梼檮","セイシキテンポメイモジ68","靭靱賎賤壷壺砺礪梼檮","リヤクシキモジ68",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 靭靱賎賤壷壺砺礪梼檮","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ68","2-45-1-68","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","靭靱賎賤壷壺砺礪梼檮 太郎","ダイヒヨウシヤメイモジ68 タロウ",,,,,"靭靱賎賤壷壺砺礪梼檮 太郎","カンリヤクザイシメイモジ68 タロウ",,, +"102","03","3673869",,"A","20121127","20121128",,,,,,"涛濤迩邇蝿蠅桧檜侭儘","セイシキテンポメイモジ69","涛濤迩邇蝿蠅桧檜侭儘","リヤクシキモジ69",,"13","102","24","2","103-0007","東京都中央区日本橋浜町2-45-1 涛濤迩邇蝿蠅桧檜侭儘","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ69","2-45-1-69","3","3","5","2","7","7","12","2",,"03-3249-8231","471","85","涛濤迩邇蝿蠅桧檜侭儘 太郎","ダイヒヨウシヤメイモジ69 タロウ",,,,,"涛濤迩邇蝿蠅桧檜侭儘 太郎","カンリヤクザイシメイモジ69 タロウ",,, +"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","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_update.csv new file mode 100644 index 00000000..8d55aa75 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/com_pharm_update.csv @@ -0,0 +1,37 @@ +"102","1","2","3","B",,,"6",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"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","7","8","9","B",200501,200601,"6",@,@,,,正漢字,正カナ,略漢字,略カナ,@,61,62,63,64,001-6234,住所漢字,住所カナ,@,1,2,3,4,5,6,7,8,@,@,471,66,@,@,@,,@,,@,@,@,,, +"102","03","3673002",,"B",20121128,20121129,,5,03,3673003,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673011",,"B",20121128,20121129,"@",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673012",,"B",20121128,20121129,,1,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673013",,"B",20121128,20121129,,2,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673014",,"B",20121128,20121129,,5,03,3673015,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673016",,"B",20121128,20121129,,7,03,3673021,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673020",,"B",20121128,20121129,,7,03,3673021,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673022",,"B",20121128,20121129,,@,,,,,,,,@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673023",,"B",20121128,20121129,,,,,,正式店舗名03B03a差分,セイシキテンポメイ03B03Aサブン,略式03B03a差分,リヤクシキ03B03Aサブン,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673024",,"B",20121128,20121129,,,,,,正式店舗名03B03b---+----2----+----3----+----4----+----5,セイシキテンポメイ03B03B---2----+----3----+----4----+----5----+----6----+----7----+----8,略式03B03b-1----+,リヤクシキ03B03B---+----2----+----3----+----4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673025",,"B",20121128,20121129,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673026",,"B",20121128,20121129,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673030",,"B",20121128,20121129,,,,,,,,,,@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"102","03","3673031",,"B",20121128,20121129,,,,,,,,,,,13,205,007,010,198-0036,東京都青梅市河辺町10-45-1 03B05a,トウキヨウト オウメシ カベマチ 10-45-1 03B05A,10-45-1-03B05,3,3,3,3,7,5,6,3,,,,,,,,,,,,,,,, +"102","03","3673032",,"B",20121128,20121129,,,,,,,,,,,13,102,024,002,103-0007,東京都中央区日本橋浜町2-45-1 03B05b+----3----+----4----+----5,トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05B4----+----5----+----6,2-45-1-03B05B,3,3,5,2,7,7,12,2,,,,,,,,,,,,,,,, +"102","03","3673033",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,@,03-3249-8231,,,,,,,,,,,,,, +"102","03","3673034",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,03-3249-8232,,,,,,,,,,,,,, +"102","03","3673035",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,1,@,,,,,,,,,,,,,, +"102","03","3673036",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,472,,,,,,,,,,,,, +"102","03","3673040",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,86,,,,,,,,,,,, +"102","03","3673041",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,代表者名 03B09a,ダイヒヨウシヤメイ 03B09A,,,,,,,,,, +"102","03","3673042",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,代表者名 03B09b---+----2,ダイヒヨウシヤメイ 03B09B--2,,,,,,,,,, +"102","03","3673043",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@,@,,,,,,,,,, +"102","03","3673044",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,201301,,,,,,,, +"102","03","3673045",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@,,,,,,,,, +"102","03","3673046",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,201210,,,,,, +"102","03","3673047",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,201209,,,,,, +"102","03","3673048",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@,,,,,,, +"102","03","3673051",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,管理薬剤師名 03B12a,カンリヤクザイシメイ 03B12A,,,, +"102","03","3673052",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,管理薬剤師名 03B12b-+----2,カンリヤクザイシメイ 03B12B-2,,,, +"102","03","3673053",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@,@,,,, +"102","03","3673055",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,03,3673054,, +"102","03","3673061",,"B",20121128,20121129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,03,3673060,, diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_delete.csv new file mode 100644 index 00000000..75421028 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","dup_opp_cd","supervising_pharmacist","supervising_pharmacist_kana","franchise_hq_cd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"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" +"033673010","85","6","セイシキテンポメイ03A02A","リヤクシキ03A02A","正式店舗名03A02a","略式03A02a","","","","","","","","","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","東京都中央区日本橋浜町2-45-1 03A02a","103-0007","13102242","13","102","2-45-1-03A02A","77122","3352","471","1","","","","","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" +"033673011","85","6","セイシキテンポメイ03A02A","リヤクシキ03A02A","正式店舗名03A02a","略式03A02a","","","","","","","","","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","東京都中央区日本橋浜町2-45-1 03A02a","103-0007","13102242","13","102","2-45-1-03A02A","77122","3352","471","1","","","","","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_update.csv new file mode 100644 index 00000000..429a4ded --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/db_com_pharm_before_update.csv @@ -0,0 +1,38 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","dup_opp_cd","supervising_pharmacist","supervising_pharmacist_kana","franchise_hq_cd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"123","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" +"456","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/4/18 10:27:00","com_pharm_mapper","2023/4/18 10:27:00","com_pharm_mapper" +"789","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/4/18 10:27","com_pharm_mapper","2023/4/18 10:27","com_pharm_mapper" +"033673002","85",,"セイシキテンポメイ03A01B-01","リヤクシキ03A01B-01","正式店舗名03A01b-01","略式03A01b-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","東京都中央区日本橋浜町2-45-1 03A01b","103-0007","13102242","13","102","2-45-1-03A01B","07071202","03030502","471",,,,,,"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" +"033673011","85",,"セイシキテンポメイ03B01A","リヤクシキ03B01A","正式店舗名03B01a","略式03B01a",,,,,,,,"1","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B01A","東京都中央区日本橋浜町2-45-1 03B01a","103-0007","13102242","13","102","2-45-1-03B01A","07071202","03030502","471",,,,,,"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" +"033673012","85",,"セイシキテンポメイ03B02A","リヤクシキ03B02A","正式店舗名03B02a","略式03B02a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02A","東京都中央区日本橋浜町2-45-1 03B02a","103-0007","13102242","13","102","2-45-1-03B02A","07071202","03030502","471",,,,,,"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" +"033673013","85","6","セイシキテンポメイ03B02B","リヤクシキ03B02B","正式店舗名03B02b","略式03B02b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02B","東京都中央区日本橋浜町2-45-1 03B02b","103-0007","13102242","13","102","2-45-1-03B02B","07071202","03030502","471","1",,,,,"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" +"033673014","85",,"セイシキテンポメイ03B02C-01","リヤクシキ03B02C-01","正式店舗名03B02c-01","略式03B02c-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","東京都中央区日本橋浜町2-45-1 03B02c","103-0007","13102242","13","102","2-45-1-03B02C","07071202","03030502","471",,,,,,"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" +"033673016","85",,"セイシキテンポメイ03B02D-01","リヤクシキ03B02D-01","正式店舗名03B02d-01","略式03B02d-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471",,,,,,"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" +"033673020","85",,"セイシキテンポメイ03B02D-02","リヤクシキ03B02D-02","正式店舗名03B02d-02","略式03B02d-02",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471",,,,,,"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" +"033673022","85","6","セイシキテンポメイ03B02E","リヤクシキ03B02E","正式店舗名03B02e","略式03B02e",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02E","東京都中央区日本橋浜町2-45-1 03B02e","103-0007","13102242","13","102","2-45-1-03B02E","07071202","03030502","471","1",,,,,"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" +"033673023","85",,"セイシキテンポメイ03B03Aゼンケン","リヤクシキ03B03Aゼンケン","正式店舗名03B03a全件","略式03B03a全件",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03A","東京都中央区日本橋浜町2-45-1 03B03a","103-0007","13102242","13","102","2-45-1-03B03A","07071202","03030502","471",,,,,,"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" +"033673024","85",,"セイシキテンポメイ03B03B","リヤクシキ03B03B","正式店舗名03B03b","略式03B03b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03B","東京都中央区日本橋浜町2-45-1 03B03b","103-0007","13102242","13","102","2-45-1-03B03B","07071202","03030502","471",,,,,,"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" +"033673025","85",,"セイシキテンポメイ03B04A","リヤクシキ03B04A","正式店舗名03B04a","略式03B04a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04A","東京都中央区日本橋浜町2-45-1 03B04a","103-0007","13102242","13","102","2-45-1-03B04A","07071202","03030502","471",,,,,,"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" +"033673026","85","1","セイシキテンポメイ03B04B","リヤクシキ03B04B","正式店舗名03B04b","略式03B04b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04B","東京都中央区日本橋浜町2-45-1 03B04b","103-0007","13102242","13","102","2-45-1-03B04B","07071202","03030502","471",,,,,,"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" +"033673030","85","1","セイシキテンポメイ03B04C","リヤクシキ03B04C","正式店舗名03B04c","略式03B04c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04C","東京都中央区日本橋浜町2-45-1 03B04c","103-0007","13102242","13","102","2-45-1-03B04C","07071202","03030502","471",,,,,,"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" +"033673031","85",,"セイシキテンポメイ03B05A","リヤクシキ03B05A","正式店舗名03B05a","略式03B05a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05A","東京都中央区日本橋浜町2-45-1 03B05a","103-0007","13102242","13","102","2-45-1-03B05A","07071202","03030502","471",,,,,,"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" +"033673032","85",,"セイシキテンポメイ03B05B","リヤクシキ03B05B","正式店舗名03B05b","略式03B05b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05B","東京都中央区日本橋浜町2-45-1 03B05b","103-0007","13102242","13","102","2-45-1-03B05B","07071202","03030502","471",,,,,,"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" +"033673033","85",,"セイシキテンポメイ03B06A","リヤクシキ03B06A","正式店舗名03B06a","略式03B06a",,,,,,,"1",,,"トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06A","東京都中央区日本橋浜町2-45-1 03B06a","103-0007","13102242","13","102","2-45-1-03B06A","07071202","03030502","471",,,,,,"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" +"033673034","85",,"セイシキテンポメイ03B06B","リヤクシキ03B06B","正式店舗名03B06b","略式03B06b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06B","東京都中央区日本橋浜町2-45-1 03B06b","103-0007","13102242","13","102","2-45-1-03B06B","07071202","03030502","471",,,,,,"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" +"033673035","85",,"セイシキテンポメイ03B06C","リヤクシキ03B06C","正式店舗名03B06c","略式03B06c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06C","東京都中央区日本橋浜町2-45-1 03B06c","103-0007","13102242","13","102","2-45-1-03B06C","07071202","03030502","471",,,,,,"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" +"033673036","85",,"セイシキテンポメイ03B07A","リヤクシキ03B07A","正式店舗名03B07a","略式03B07a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B07A","東京都中央区日本橋浜町2-45-1 03B07a","103-0007","13102242","13","102","2-45-1-03B07A","07071202","03030502","471",,,,,,"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" +"033673040","85",,"セイシキテンポメイ03B08A","リヤクシキ03B08A","正式店舗名03B08a","略式03B08a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B08A","東京都中央区日本橋浜町2-45-1 03B08a","103-0007","13102242","13","102","2-45-1-03B08A","07071202","03030502","471",,,,,,"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" +"033673041","85",,"セイシキテンポメイ03B09A","リヤクシキ03B09A","正式店舗名03B09a","略式03B09a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09A","東京都中央区日本橋浜町2-45-1 03B09a","103-0007","13102242","13","102","2-45-1-03B09A","07071202","03030502","471",,,,,,"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" +"033673042","85",,"セイシキテンポメイ03B09B","リヤクシキ03B09B","正式店舗名03B09b","略式03B09b",,,,,"ダイヒヨウシヤメイ 03B09B","代表者名 03B09b",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09B","東京都中央区日本橋浜町2-45-1 03B09b","103-0007","13102242","13","102","2-45-1-03B09B","07071202","03030502","471",,,,,,"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" +"033673043","85",,"セイシキテンポメイ03B09C","リヤクシキ03B09C","正式店舗名03B09c","略式03B09c",,,,,"ダイヒヨウシヤメイ 03B09C","代表者名 03B09c",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09C","東京都中央区日本橋浜町2-45-1 03B09c","103-0007","13102242","13","102","2-45-1-03B09C","07071202","03030502","471",,,,,,"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" +"033673044","85",,"セイシキテンポメイ03B10A","リヤクシキ03B10A","正式店舗名03B10a","略式03B10a",,"1",,"201212",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10A","東京都中央区日本橋浜町2-45-1 03B10a","103-0007","13102242","13","102","2-45-1-03B10A","07071202","03030502","471",,,,,,"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" +"033673045","85",,"セイシキテンポメイ03B10B","リヤクシキ03B10B","正式店舗名03B10b","略式03B10b",,"1",,"201210",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10B","東京都中央区日本橋浜町2-45-1 03B10b","103-0007","13102242","13","102","2-45-1-03B10B","07071202","03030502","471",,,,,,"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" +"033673046","85",,"セイシキテンポメイ03B11A","リヤクシキ03B11A","正式店舗名03B11a","略式03B11a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11A","東京都中央区日本橋浜町2-45-1 03B11a","103-0007","13102242","13","102","2-45-1-03B11A","07071202","03030502","471",,,,,,"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" +"033673047","85",,"セイシキテンポメイ03B11B","リヤクシキ03B11B","正式店舗名03B11b","略式03B11b","1",,"201210",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11B","東京都中央区日本橋浜町2-45-1 03B11b","103-0007","13102242","13","102","2-45-1-03B11B","07071202","03030502","471",,,,,,"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" +"033673048","85",,"セイシキテンポメイ03B11C","リヤクシキ03B11C","正式店舗名03B11c","略式03B11c","1",,"201210",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11C","東京都中央区日本橋浜町2-45-1 03B11c","103-0007","13102242","13","102","2-45-1-03B11C","07071202","03030502","471",,,,,,"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" +"033673051","85",,"セイシキテンポメイ03B12A","リヤクシキ03B12A","正式店舗名03B12a","略式03B12a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12A","東京都中央区日本橋浜町2-45-1 03B12a","103-0007","13102242","13","102","2-45-1-03B12A","07071202","03030502","471",,,,,,"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" +"033673052","85",,"セイシキテンポメイ03B12B","リヤクシキ03B12B","正式店舗名03B12b","略式03B12b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12B","東京都中央区日本橋浜町2-45-1 03B12b","103-0007","13102242","13","102","2-45-1-03B12B","07071202","03030502","471",,,"管理薬剤師名 03B12b","カンリヤクザイシメイ 03B12B",,"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" +"033673053","85",,"セイシキテンポメイ03B12C","リヤクシキ03B12C","正式店舗名03B12c","略式03B12c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12C","東京都中央区日本橋浜町2-45-1 03B12c","103-0007","13102242","13","102","2-45-1-03B12C","07071202","03030502","471",,,"管理薬剤師名 03B12c","カンリヤクザイシメイ 03B12C",,"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" +"033673055","85",,"セイシキテンポメイ03B13A","リヤクシキ03B13A","正式店舗名03B13a","略式03B13a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","東京都中央区日本橋浜町2-45-1 03B13a","103-0007","13102242","13","102","2-45-1-03B13A","07071202","03030502","471",,,,,,"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",,,,,"33673056","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_delete.csv new file mode 100644 index 00000000..85f84a5c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","dup_opp_cd","supervising_pharmacist","supervising_pharmacist_kana","franchise_hq_cd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"033673010","85","6","セイシキテンポメイ03A02A","リヤクシキ03A02A","正式店舗名03A02a","略式03A02a","","","","","","","","","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","東京都中央区日本橋浜町2-45-1 03A02a","103-0007","13102242","13","102","2-45-1-03A02A","77122","3352","471","1","","","","","2","20121128","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" +"033673011","85","6","セイシキテンポメイ03A02A","リヤクシキ03A02A","正式店舗名03A02a","略式03A02a","","","","","","","","","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","東京都中央区日本橋浜町2-45-1 03A02a","103-0007","13102242","13","102","2-45-1-03A02A","77122","3352","471","1","","","","","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" +"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","200501","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/18 10:27:33","com_pharm_mapper","2023/04/18 00:00:00","com_pharm_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_insert.csv new file mode 100644 index 00000000..e4d10126 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_insert.csv @@ -0,0 +1,120 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","dup_opp_cd","supervising_pharmacist","supervising_pharmacist_kana","franchise_hq_cd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"033673000","85",,"セイシキテンポメイ03","リヤクシキ03","正式店舗名03","略式03",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03","東京都中央区日本橋浜町2-45-1 03","103-0007","13102242","13","102","2-45-1-03","07071202","03030502","471",,,,,,"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" +"033673001","85",,"セイシキテンポメイ03A01A","リヤクシキ03A01A","正式店舗名03A01a","略式03A01a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01A","東京都中央区日本橋浜町2-45-1 03A01a","103-0007","13102242","13","102","2-45-1-03A01A","07071202","03030502","471",,,,,,"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" +"033673002","85",,"セイシキテンポメイ03A01B-01","リヤクシキ03A01B-01","正式店舗名03A01b-01","略式03A01b-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","東京都中央区日本橋浜町2-45-1 03A01b","103-0007","13102242","13","102","2-45-1-03A01B","07071202","03030502","471",,,,,,"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" +"033673003","85",,"セイシキテンポメイ03A01B-02","リヤクシキ03A01B-02","正式店舗名03A01b-02","略式03A01b-02",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","東京都中央区日本橋浜町2-45-1 03A01b","103-0007","13102242","13","102","2-45-1-03A01B","07071202","03030502","471",,,,,,"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" +"033673004","85",,"セイシキテンポメイ03A01C","リヤクシキ03A01C","正式店舗名03A01c","略式03A01c",,"1",,"201212",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01C","東京都中央区日本橋浜町2-45-1 03A01c","103-0007","13102242","13","102","2-45-1-03A01C","07071202","03030502","471",,,,,,"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" +"033673005","85",,"セイシキテンポメイ03A01D","リヤクシキ03A01D","正式店舗名03A01d","略式03A01d",,,,,,,,"1","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01D","東京都中央区日本橋浜町2-45-1 03A01d","103-0007","13102242","13","102","2-45-1-03A01D","07071202","03030502","471",,,,,,"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" +"033673010","85","6","セイシキテンポメイ03A02A","リヤクシキ03A02A","正式店舗名03A02a","略式03A02a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A02A","東京都中央区日本橋浜町2-45-1 03A02a","103-0007","13102242","13","102","2-45-1-03A02A","07071202","03030502","471","1",,,,,"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" +"033673011","85",,"セイシキテンポメイ03B01A","リヤクシキ03B01A","正式店舗名03B01a","略式03B01a",,,,,,,,"1","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B01A","東京都中央区日本橋浜町2-45-1 03B01a","103-0007","13102242","13","102","2-45-1-03B01A","07071202","03030502","471",,,,,,"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" +"033673012","85",,"セイシキテンポメイ03B02A","リヤクシキ03B02A","正式店舗名03B02a","略式03B02a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02A","東京都中央区日本橋浜町2-45-1 03B02a","103-0007","13102242","13","102","2-45-1-03B02A","07071202","03030502","471",,,,,,"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" +"033673013","85","6","セイシキテンポメイ03B02B","リヤクシキ03B02B","正式店舗名03B02b","略式03B02b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02B","東京都中央区日本橋浜町2-45-1 03B02b","103-0007","13102242","13","102","2-45-1-03B02B","07071202","03030502","471","1",,,,,"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" +"033673014","85",,"セイシキテンポメイ03B02C-01","リヤクシキ03B02C-01","正式店舗名03B02c-01","略式03B02c-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","東京都中央区日本橋浜町2-45-1 03B02c","103-0007","13102242","13","102","2-45-1-03B02C","07071202","03030502","471",,,,,,"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" +"033673015","85",,"セイシキテンポメイ03B02C-02","リヤクシキ03B02C-02","正式店舗名03B02c-02","略式03B02c-02",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","東京都中央区日本橋浜町2-45-1 03B02c","103-0007","13102242","13","102","2-45-1-03B02C","07071202","03030502","471",,,,,,"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" +"033673016","85",,"セイシキテンポメイ03B02D-01","リヤクシキ03B02D-01","正式店舗名03B02d-01","略式03B02d-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471",,,,,,"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" +"033673020","85",,"セイシキテンポメイ03B02D-02","リヤクシキ03B02D-02","正式店舗名03B02d-02","略式03B02d-02",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471",,,,,,"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" +"033673021","85",,"セイシキテンポメイ03B02D-03","リヤクシキ03B02D-03","正式店舗名03B02d-03","略式03B02d-03",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471",,,,,,"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" +"033673022","85","6","セイシキテンポメイ03B02E","リヤクシキ03B02E","正式店舗名03B02e","略式03B02e",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02E","東京都中央区日本橋浜町2-45-1 03B02e","103-0007","13102242","13","102","2-45-1-03B02E","07071202","03030502","471","1",,,,,"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" +"033673023","85",,"セイシキテンポメイ03B03Aゼンケン","リヤクシキ03B03Aゼンケン","正式店舗名03B03a全件","略式03B03a全件",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03A","東京都中央区日本橋浜町2-45-1 03B03a","103-0007","13102242","13","102","2-45-1-03B03A","07071202","03030502","471",,,,,,"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" +"033673024","85",,"セイシキテンポメイ03B03B","リヤクシキ03B03B","正式店舗名03B03b","略式03B03b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03B","東京都中央区日本橋浜町2-45-1 03B03b","103-0007","13102242","13","102","2-45-1-03B03B","07071202","03030502","471",,,,,,"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" +"033673025","85",,"セイシキテンポメイ03B04A","リヤクシキ03B04A","正式店舗名03B04a","略式03B04a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04A","東京都中央区日本橋浜町2-45-1 03B04a","103-0007","13102242","13","102","2-45-1-03B04A","07071202","03030502","471",,,,,,"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" +"033673026","85","1","セイシキテンポメイ03B04B","リヤクシキ03B04B","正式店舗名03B04b","略式03B04b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04B","東京都中央区日本橋浜町2-45-1 03B04b","103-0007","13102242","13","102","2-45-1-03B04B","07071202","03030502","471",,,,,,"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" +"033673030","85","1","セイシキテンポメイ03B04C","リヤクシキ03B04C","正式店舗名03B04c","略式03B04c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04C","東京都中央区日本橋浜町2-45-1 03B04c","103-0007","13102242","13","102","2-45-1-03B04C","07071202","03030502","471",,,,,,"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" +"033673031","85",,"セイシキテンポメイ03B05A","リヤクシキ03B05A","正式店舗名03B05a","略式03B05a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05A","東京都中央区日本橋浜町2-45-1 03B05a","103-0007","13102242","13","102","2-45-1-03B05A","07071202","03030502","471",,,,,,"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" +"033673032","85",,"セイシキテンポメイ03B05B","リヤクシキ03B05B","正式店舗名03B05b","略式03B05b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05B","東京都中央区日本橋浜町2-45-1 03B05b","103-0007","13102242","13","102","2-45-1-03B05B","07071202","03030502","471",,,,,,"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" +"033673033","85",,"セイシキテンポメイ03B06A","リヤクシキ03B06A","正式店舗名03B06a","略式03B06a",,,,,,,"1",,,"トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06A","東京都中央区日本橋浜町2-45-1 03B06a","103-0007","13102242","13","102","2-45-1-03B06A","07071202","03030502","471",,,,,,"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" +"033673034","85",,"セイシキテンポメイ03B06B","リヤクシキ03B06B","正式店舗名03B06b","略式03B06b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06B","東京都中央区日本橋浜町2-45-1 03B06b","103-0007","13102242","13","102","2-45-1-03B06B","07071202","03030502","471",,,,,,"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" +"033673035","85",,"セイシキテンポメイ03B06C","リヤクシキ03B06C","正式店舗名03B06c","略式03B06c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06C","東京都中央区日本橋浜町2-45-1 03B06c","103-0007","13102242","13","102","2-45-1-03B06C","07071202","03030502","471",,,,,,"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" +"033673036","85",,"セイシキテンポメイ03B07A","リヤクシキ03B07A","正式店舗名03B07a","略式03B07a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B07A","東京都中央区日本橋浜町2-45-1 03B07a","103-0007","13102242","13","102","2-45-1-03B07A","07071202","03030502","471",,,,,,"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" +"033673040","85",,"セイシキテンポメイ03B08A","リヤクシキ03B08A","正式店舗名03B08a","略式03B08a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B08A","東京都中央区日本橋浜町2-45-1 03B08a","103-0007","13102242","13","102","2-45-1-03B08A","07071202","03030502","471",,,,,,"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" +"033673041","85",,"セイシキテンポメイ03B09A","リヤクシキ03B09A","正式店舗名03B09a","略式03B09a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09A","東京都中央区日本橋浜町2-45-1 03B09a","103-0007","13102242","13","102","2-45-1-03B09A","07071202","03030502","471",,,,,,"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" +"033673042","85",,"セイシキテンポメイ03B09B","リヤクシキ03B09B","正式店舗名03B09b","略式03B09b",,,,,"ダイヒヨウシヤメイ 03B09B","代表者名 03B09b",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09B","東京都中央区日本橋浜町2-45-1 03B09b","103-0007","13102242","13","102","2-45-1-03B09B","07071202","03030502","471",,,,,,"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" +"033673043","85",,"セイシキテンポメイ03B09C","リヤクシキ03B09C","正式店舗名03B09c","略式03B09c",,,,,"ダイヒヨウシヤメイ 03B09C","代表者名 03B09c",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09C","東京都中央区日本橋浜町2-45-1 03B09c","103-0007","13102242","13","102","2-45-1-03B09C","07071202","03030502","471",,,,,,"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" +"033673044","85",,"セイシキテンポメイ03B10A","リヤクシキ03B10A","正式店舗名03B10a","略式03B10a",,"1",,"201212",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10A","東京都中央区日本橋浜町2-45-1 03B10a","103-0007","13102242","13","102","2-45-1-03B10A","07071202","03030502","471",,,,,,"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" +"033673045","85",,"セイシキテンポメイ03B10B","リヤクシキ03B10B","正式店舗名03B10b","略式03B10b",,"1",,"201210",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10B","東京都中央区日本橋浜町2-45-1 03B10b","103-0007","13102242","13","102","2-45-1-03B10B","07071202","03030502","471",,,,,,"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" +"033673046","85",,"セイシキテンポメイ03B11A","リヤクシキ03B11A","正式店舗名03B11a","略式03B11a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11A","東京都中央区日本橋浜町2-45-1 03B11a","103-0007","13102242","13","102","2-45-1-03B11A","07071202","03030502","471",,,,,,"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" +"033673047","85",,"セイシキテンポメイ03B11B","リヤクシキ03B11B","正式店舗名03B11b","略式03B11b","1",,"201210",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11B","東京都中央区日本橋浜町2-45-1 03B11b","103-0007","13102242","13","102","2-45-1-03B11B","07071202","03030502","471",,,,,,"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" +"033673048","85",,"セイシキテンポメイ03B11C","リヤクシキ03B11C","正式店舗名03B11c","略式03B11c","1",,"201210",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11C","東京都中央区日本橋浜町2-45-1 03B11c","103-0007","13102242","13","102","2-45-1-03B11C","07071202","03030502","471",,,,,,"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" +"033673051","85",,"セイシキテンポメイ03B12A","リヤクシキ03B12A","正式店舗名03B12a","略式03B12a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12A","東京都中央区日本橋浜町2-45-1 03B12a","103-0007","13102242","13","102","2-45-1-03B12A","07071202","03030502","471",,,,,,"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" +"033673052","85",,"セイシキテンポメイ03B12B","リヤクシキ03B12B","正式店舗名03B12b","略式03B12b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12B","東京都中央区日本橋浜町2-45-1 03B12b","103-0007","13102242","13","102","2-45-1-03B12B","07071202","03030502","471",,,"管理薬剤師名 03B12b","カンリヤクザイシメイ 03B12B",,"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" +"033673053","85",,"セイシキテンポメイ03B12C","リヤクシキ03B12C","正式店舗名03B12c","略式03B12c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12C","東京都中央区日本橋浜町2-45-1 03B12c","103-0007","13102242","13","102","2-45-1-03B12C","07071202","03030502","471",,,"管理薬剤師名 03B12c","カンリヤクザイシメイ 03B12C",,"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" +"033673054","89",,"セイシキテンポメイ03B13A","リヤクシキ03B13A","正式店舗名03B13a","略式03B13a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","東京都中央区日本橋浜町2-45-1 03B13a","103-0007","13102242","13","102","2-45-1-03B13A","07071202","03030502","471",,,,,,"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" +"033673055","85",,"セイシキテンポメイ03B13A","リヤクシキ03B13A","正式店舗名03B13a","略式03B13a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","東京都中央区日本橋浜町2-45-1 03B13a","103-0007","13102242","13","102","2-45-1-03B13A","07071202","03030502","471",,,,,,"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" +"033673056","89",,"セイシキテンポメイ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",,,,,,"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" +"033673060","89",,"セイシキテンポメイ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",,,,,,"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",,,,,"33673056","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" +"033673062","89",,"セイシキテンポメイ03B13C","リヤクシキ03B13C","正式店舗名03B13c","略式03B13c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13C","東京都中央区日本橋浜町2-45-1 03B13c","103-0007","13102242","13","102","2-45-1-03B13C","07071202","03030502","471",,,,,,"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" +"033673063","85",,"セイシキテンポメイ03B13C","リヤクシキ03B13C","正式店舗名03B13c","略式03B13c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13C","東京都中央区日本橋浜町2-45-1 03B13c","103-0007","13102242","13","102","2-45-1-03B13C","07071202","03030502","471",,,,,"33673062","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" +"033673801","85",,"セイシキテンポメイモジ1","リヤクシキモジ1","□","□",,,,,"ダイヒヨウシヤメイモジ1 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ1","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-1","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ1 タロウ",,"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" +"033673802","85",,"セイシキテンポメイモジ2","リヤクシキモジ2","□","□",,,,,"ダイヒヨウシヤメイモジ2 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ2","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-2","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ2 タロウ",,"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" +"033673803","85",,"セイシキテンポメイモジ3","リヤクシキモジ3","□","□",,,,,"ダイヒヨウシヤメイモジ3 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ3","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-3","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ3 タロウ",,"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" +"033673804","85",,"セイシキテンポメイモジ4","リヤクシキモジ4","","",,,,,"ダイヒヨウシヤメイモジ4 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ4","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-4","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ4 タロウ",,"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" +"033673805","85",,"セイシキテンポメイモジ5","リヤクシキモジ5","","",,,,,"ダイヒヨウシヤメイモジ5 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ5","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-5","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ5 タロウ",,"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" +"033673806","85",,"セイシキテンポメイモジ6","リヤクシキモジ6","","",,,,,"ダイヒヨウシヤメイモジ6 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ6","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-6","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ6 タロウ",,"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" +"033673807","85",,"セイシキテンポメイモジ7","リヤクシキモジ7","□□□□□","□□□□□",,,,,"ダイヒヨウシヤメイモジ7 タロウ","□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ7","東京都中央区日本橋浜町2-45-1 □□□□□","103-0007","13102242","13","102","2-45-1-7","07071202","03030502","471",,,"□□□□□ 太郎","カンリヤクザイシメイモジ7 タロウ",,"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" +"033673808","85",,"セイシキテンポメイモジ8","リヤクシキモジ8","□□□□□","□□□□□",,,,,"ダイヒヨウシヤメイモジ8 タロウ","□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ8","東京都中央区日本橋浜町2-45-1 □□□□□","103-0007","13102242","13","102","2-45-1-8","07071202","03030502","471",,,"□□□□□ 太郎","カンリヤクザイシメイモジ8 タロウ",,"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" +"033673809","85",,"セイシキテンポメイモジ9","リヤクシキモジ9","□□□□□□□□","□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ9 タロウ","□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ9","東京都中央区日本橋浜町2-45-1 □□□□□□□□","103-0007","13102242","13","102","2-45-1-9","07071202","03030502","471",,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ9 タロウ",,"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" +"033673810","85",,"セイシキテンポメイモジ10","リヤクシキモジ10","□□□□□□□□","□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ10 タロウ","□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ10","東京都中央区日本橋浜町2-45-1 □□□□□□□□","103-0007","13102242","13","102","2-45-1-10","07071202","03030502","471",,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ10 タロウ",,"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" +"033673811","85",,"セイシキテンポメイモジ11","リヤクシキモジ11","□□□□□□","□□□□□□",,,,,"ダイヒヨウシヤメイモジ11 タロウ","□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ11","東京都中央区日本橋浜町2-45-1 □□□□□□","103-0007","13102242","13","102","2-45-1-11","07071202","03030502","471",,,"□□□□□□ 太郎","カンリヤクザイシメイモジ11 タロウ",,"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" +"033673812","85",,"セイシキテンポメイモジ12","リヤクシキモジ12","□□□□□□□","□□□□□□□",,,,,"ダイヒヨウシヤメイモジ12 タロウ","□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ12","東京都中央区日本橋浜町2-45-1 □□□□□□□","103-0007","13102242","13","102","2-45-1-12","07071202","03030502","471",,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ12 タロウ",,"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" +"033673813","85",,"セイシキテンポメイモジ13","リヤクシキモジ13","□□□□□□□□","□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ13 タロウ","□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ13","東京都中央区日本橋浜町2-45-1 □□□□□□□□","103-0007","13102242","13","102","2-45-1-13","07071202","03030502","471",,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ13 タロウ",,"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" +"033673814","85",,"セイシキテンポメイモジ14","リヤクシキモジ14","□□□□□□□□","□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ14 タロウ","□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ14","東京都中央区日本橋浜町2-45-1 □□□□□□□□","103-0007","13102242","13","102","2-45-1-14","07071202","03030502","471",,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ14 タロウ",,"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" +"033673815","85",,"セイシキテンポメイモジ15","リヤクシキモジ15","□□□□","□□□□",,,,,"ダイヒヨウシヤメイモジ15 タロウ","□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ15","東京都中央区日本橋浜町2-45-1 □□□□","103-0007","13102242","13","102","2-45-1-15","07071202","03030502","471",,,"□□□□ 太郎","カンリヤクザイシメイモジ15 タロウ",,"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" +"033673816","85",,"セイシキテンポメイモジ16","リヤクシキモジ16","□□□□□□□","□□□□□□□",,,,,"ダイヒヨウシヤメイモジ16 タロウ","□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ16","東京都中央区日本橋浜町2-45-1 □□□□□□□","103-0007","13102242","13","102","2-45-1-16","07071202","03030502","471",,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ16 タロウ",,"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" +"033673817","85",,"セイシキテンポメイモジ17","リヤクシキモジ17","□□□□□□□","□□□□□□□",,,,,"ダイヒヨウシヤメイモジ17 タロウ","□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ17","東京都中央区日本橋浜町2-45-1 □□□□□□□","103-0007","13102242","13","102","2-45-1-17","07071202","03030502","471",,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ17 タロウ",,"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" +"033673818","85",,"セイシキテンポメイモジ18","リヤクシキモジ18","□□□□□□□","□□□□□□□",,,,,"ダイヒヨウシヤメイモジ18 タロウ","□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ18","東京都中央区日本橋浜町2-45-1 □□□□□□□","103-0007","13102242","13","102","2-45-1-18","07071202","03030502","471",,,"□□□□□□□ 太郎","カンリヤクザイシメイモジ18 タロウ",,"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" +"033673819","85",,"セイシキテンポメイモジ19","リヤクシキモジ19","□□□□□□□□□□","□□□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ19 タロウ","□□□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ19","東京都中央区日本橋浜町2-45-1 □□□□□□□□□□","103-0007","13102242","13","102","2-45-1-19","07071202","03030502","471",,,"□□□□□□□□□□ 太郎","カンリヤクザイシメイモジ19 タロウ",,"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" +"033673820","85",,"セイシキテンポメイモジ20","リヤクシキモジ20","□□□□□□□□□□","□□□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ20 タロウ","□□□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ20","東京都中央区日本橋浜町2-45-1 □□□□□□□□□□","103-0007","13102242","13","102","2-45-1-20","07071202","03030502","471",,,"□□□□□□□□□□ 太郎","カンリヤクザイシメイモジ20 タロウ",,"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" +"033673821","85",,"セイシキテンポメイモジ21","リヤクシキモジ21","□□□□□□□□","□□□□□□□□",,,,,"ダイヒヨウシヤメイモジ21 タロウ","□□□□□□□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ21","東京都中央区日本橋浜町2-45-1 □□□□□□□□","103-0007","13102242","13","102","2-45-1-21","07071202","03030502","471",,,"□□□□□□□□ 太郎","カンリヤクザイシメイモジ21 タロウ",,"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" +"033673822","85",,"セイシキテンポメイモジ22","リヤクシキモジ22","","",,,,,"ダイヒヨウシヤメイモジ22 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ22","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-22","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ22 タロウ",,"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" +"033673823","85",,"セイシキテンポメイモジ23","リヤクシキモジ23","","",,,,,"ダイヒヨウシヤメイモジ23 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ23","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-23","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ23 タロウ",,"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" +"033673824","85",,"セイシキテンポメイモジ24","リヤクシキモジ24","","",,,,,"ダイヒヨウシヤメイモジ24 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ24","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-24","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ24 タロウ",,"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" +"033673825","85",,"セイシキテンポメイモジ25","リヤクシキモジ25","","",,,,,"ダイヒヨウシヤメイモジ25 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ25","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-25","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ25 タロウ",,"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" +"033673826","85",,"セイシキテンポメイモジ26","リヤクシキモジ26","□","□",,,,,"ダイヒヨウシヤメイモジ26 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ26","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-26","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ26 タロウ",,"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" +"033673827","85",,"セイシキテンポメイモジ27","リヤクシキモジ27","","",,,,,"ダイヒヨウシヤメイモジ27 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ27","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-27","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ27 タロウ",,"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" +"033673828","85",,"セイシキテンポメイモジ28","リヤクシキモジ28","","",,,,,"ダイヒヨウシヤメイモジ28 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ28","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-28","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ28 タロウ",,"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" +"033673829","85",,"セイシキテンポメイモジ29","リヤクシキモジ29","","",,,,,"ダイヒヨウシヤメイモジ29 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ29","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-29","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ29 タロウ",,"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" +"033673830","85",,"セイシキテンポメイモジ30","リヤクシキモジ30","□","□",,,,,"ダイヒヨウシヤメイモジ30 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ30","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-30","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ30 タロウ",,"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" +"033673831","85",,"セイシキテンポメイモジ31","リヤクシキモジ31","","",,,,,"ダイヒヨウシヤメイモジ31 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ31","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-31","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ31 タロウ",,"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" +"033673832","85",,"セイシキテンポメイモジ32","リヤクシキモジ32","","",,,,,"ダイヒヨウシヤメイモジ32 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ32","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-32","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ32 タロウ",,"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" +"033673833","85",,"セイシキテンポメイモジ33","リヤクシキモジ33","","",,,,,"ダイヒヨウシヤメイモジ33 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ33","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-33","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ33 タロウ",,"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" +"033673834","85",,"セイシキテンポメイモジ34","リヤクシキモジ34","□□","□□",,,,,"ダイヒヨウシヤメイモジ34 タロウ","□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ34","東京都中央区日本橋浜町2-45-1 □□","103-0007","13102242","13","102","2-45-1-34","07071202","03030502","471",,,"□□ 太郎","カンリヤクザイシメイモジ34 タロウ",,"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" +"033673835","85",,"セイシキテンポメイモジ35","リヤクシキモジ35","","",,,,,"ダイヒヨウシヤメイモジ35 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ35","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-35","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ35 タロウ",,"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" +"033673836","85",,"セイシキテンポメイモジ36","リヤクシキモジ36","","",,,,,"ダイヒヨウシヤメイモジ36 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ36","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-36","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ36 タロウ",,"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" +"033673837","85",,"セイシキテンポメイモジ37","リヤクシキモジ37","","",,,,,"ダイヒヨウシヤメイモジ37 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ37","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-37","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ37 タロウ",,"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" +"033673838","85",,"セイシキテンポメイモジ38","リヤクシキモジ38","□","□",,,,,"ダイヒヨウシヤメイモジ38 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ38","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-38","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ38 タロウ",,"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" +"033673839","85",,"セイシキテンポメイモジ39","リヤクシキモジ39","","",,,,,"ダイヒヨウシヤメイモジ39 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ39","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-39","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ39 タロウ",,"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" +"033673840","85",,"セイシキテンポメイモジ40","リヤクシキモジ40","","",,,,,"ダイヒヨウシヤメイモジ40 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ40","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-40","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ40 タロウ",,"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" +"033673841","85",,"セイシキテンポメイモジ41","リヤクシキモジ41","","",,,,,"ダイヒヨウシヤメイモジ41 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ41","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-41","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ41 タロウ",,"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" +"033673842","85",,"セイシキテンポメイモジ42","リヤクシキモジ42","","",,,,,"ダイヒヨウシヤメイモジ42 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ42","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-42","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ42 タロウ",,"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" +"033673843","85",,"セイシキテンポメイモジ43","リヤクシキモジ43","","",,,,,"ダイヒヨウシヤメイモジ43 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ43","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-43","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ43 タロウ",,"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" +"033673844","85",,"セイシキテンポメイモジ44","リヤクシキモジ44","","",,,,,"ダイヒヨウシヤメイモジ44 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ44","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-44","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ44 タロウ",,"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" +"033673845","85",,"セイシキテンポメイモジ45","リヤクシキモジ45","","",,,,,"ダイヒヨウシヤメイモジ45 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ45","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-45","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ45 タロウ",,"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" +"033673846","85",,"セイシキテンポメイモジ46","リヤクシキモジ46","","",,,,,"ダイヒヨウシヤメイモジ46 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ46","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-46","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ46 タロウ",,"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" +"033673847","85",,"セイシキテンポメイモジ47","リヤクシキモジ47","□","□",,,,,"ダイヒヨウシヤメイモジ47 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ47","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-47","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ47 タロウ",,"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" +"033673848","85",,"セイシキテンポメイモジ48","リヤクシキモジ48","□","□",,,,,"ダイヒヨウシヤメイモジ48 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ48","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-48","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ48 タロウ",,"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" +"033673849","85",,"セイシキテンポメイモジ49","リヤクシキモジ49","","",,,,,"ダイヒヨウシヤメイモジ49 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ49","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-49","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ49 タロウ",,"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" +"033673850","85",,"セイシキテンポメイモジ50","リヤクシキモジ50","□","□",,,,,"ダイヒヨウシヤメイモジ50 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ50","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-50","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ50 タロウ",,"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" +"033673851","85",,"セイシキテンポメイモジ51","リヤクシキモジ51","","",,,,,"ダイヒヨウシヤメイモジ51 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ51","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-51","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ51 タロウ",,"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" +"033673852","85",,"セイシキテンポメイモジ52","リヤクシキモジ52","□","□",,,,,"ダイヒヨウシヤメイモジ52 タロウ","□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ52","東京都中央区日本橋浜町2-45-1 □","103-0007","13102242","13","102","2-45-1-52","07071202","03030502","471",,,"□ 太郎","カンリヤクザイシメイモジ52 タロウ",,"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" +"033673853","85",,"セイシキテンポメイモジ53","リヤクシキモジ53","","",,,,,"ダイヒヨウシヤメイモジ53 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ53","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-53","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ53 タロウ",,"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" +"033673854","85",,"セイシキテンポメイモジ54","リヤクシキモジ54","","",,,,,"ダイヒヨウシヤメイモジ54 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ54","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-54","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ54 タロウ",,"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" +"033673855","85",,"セイシキテンポメイモジ55","リヤクシキモジ55","","",,,,,"ダイヒヨウシヤメイモジ55 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ55","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-55","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ55 タロウ",,"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" +"033673856","85",,"セイシキテンポメイモジ56","リヤクシキモジ56","","",,,,,"ダイヒヨウシヤメイモジ56 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ56","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-56","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ56 タロウ",,"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" +"033673857","85",,"セイシキテンポメイモジ57","リヤクシキモジ57","","",,,,,"ダイヒヨウシヤメイモジ57 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ57","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-57","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ57 タロウ",,"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" +"033673858","85",,"セイシキテンポメイモジ58","リヤクシキモジ58","","",,,,,"ダイヒヨウシヤメイモジ58 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ58","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-58","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ58 タロウ",,"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" +"033673859","85",,"セイシキテンポメイモジ59","リヤクシキモジ59","","",,,,,"ダイヒヨウシヤメイモジ59 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ59","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-59","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ59 タロウ",,"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" +"033673860","85",,"セイシキテンポメイモジ60","リヤクシキモジ60","","",,,,,"ダイヒヨウシヤメイモジ60 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ60","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-60","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ60 タロウ",,"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" +"033673861","85",,"セイシキテンポメイモジ61","リヤクシキモジ61","","",,,,,"ダイヒヨウシヤメイモジ61 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ61","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-61","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ61 タロウ",,"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" +"033673862","85",,"セイシキテンポメイモジ62","リヤクシキモジ62","","",,,,,"ダイヒヨウシヤメイモジ62 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ62","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-62","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ62 タロウ",,"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" +"033673863","85",,"セイシキテンポメイモジ63","リヤクシキモジ63","","",,,,,"ダイヒヨウシヤメイモジ63 タロウ"," 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ63","東京都中央区日本橋浜町2-45-1 ","103-0007","13102242","13","102","2-45-1-63","07071202","03030502","471",,," 太郎","カンリヤクザイシメイモジ63 タロウ",,"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" +"033673864","85",,"セイシキテンポメイモジ64","リヤクシキモジ64","□□","□□",,,,,"ダイヒヨウシヤメイモジ64 タロウ","□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ64","東京都中央区日本橋浜町2-45-1 □□","103-0007","13102242","13","102","2-45-1-64","07071202","03030502","471",,,"□□ 太郎","カンリヤクザイシメイモジ64 タロウ",,"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" +"033673865","85",,"セイシキテンポメイモジ65","リヤクシキモジ65","□□","□□",,,,,"ダイヒヨウシヤメイモジ65 タロウ","□□ 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ65","東京都中央区日本橋浜町2-45-1 □□","103-0007","13102242","13","102","2-45-1-65","07071202","03030502","471",,,"□□ 太郎","カンリヤクザイシメイモジ65 タロウ",,"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" +"033673866","85",,"セイシキテンポメイモジ66","リヤクシキモジ66","鯵鰺鴬鶯蛎蠣撹攪竃竈","鯵鰺鴬鶯蛎蠣撹攪竃竈",,,,,"ダイヒヨウシヤメイモジ66 タロウ","鯵鰺鴬鶯蛎蠣撹攪竃竈 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ66","東京都中央区日本橋浜町2-45-1 鯵鰺鴬鶯蛎蠣撹攪竃竈","103-0007","13102242","13","102","2-45-1-66","07071202","03030502","471",,,"鯵鰺鴬鶯蛎蠣撹攪竃竈 太郎","カンリヤクザイシメイモジ66 タロウ",,"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" +"033673867","85",,"セイシキテンポメイモジ67","リヤクシキモジ67","潅灌諌諫頚頸砿礦蕊蘂","潅灌諌諫頚頸砿礦蕊蘂",,,,,"ダイヒヨウシヤメイモジ67 タロウ","潅灌諌諫頚頸砿礦蕊蘂 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ67","東京都中央区日本橋浜町2-45-1 潅灌諌諫頚頸砿礦蕊蘂","103-0007","13102242","13","102","2-45-1-67","07071202","03030502","471",,,"潅灌諌諫頚頸砿礦蕊蘂 太郎","カンリヤクザイシメイモジ67 タロウ",,"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" +"033673868","85",,"セイシキテンポメイモジ68","リヤクシキモジ68","靭靱賎賤壷壺砺礪梼檮","靭靱賎賤壷壺砺礪梼檮",,,,,"ダイヒヨウシヤメイモジ68 タロウ","靭靱賎賤壷壺砺礪梼檮 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ68","東京都中央区日本橋浜町2-45-1 靭靱賎賤壷壺砺礪梼檮","103-0007","13102242","13","102","2-45-1-68","07071202","03030502","471",,,"靭靱賎賤壷壺砺礪梼檮 太郎","カンリヤクザイシメイモジ68 タロウ",,"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" +"033673869","85",,"セイシキテンポメイモジ69","リヤクシキモジ69","涛濤迩邇蝿蠅桧檜侭儘","涛濤迩邇蝿蠅桧檜侭儘",,,,,"ダイヒヨウシヤメイモジ69 タロウ","涛濤迩邇蝿蠅桧檜侭儘 太郎",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 モジ69","東京都中央区日本橋浜町2-45-1 涛濤迩邇蝿蠅桧檜侭儘","103-0007","13102242","13","102","2-45-1-69","07071202","03030502","471",,,"涛濤迩邇蝿蠅桧檜侭儘 太郎","カンリヤクザイシメイモジ69 タロウ",,"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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_update.csv new file mode 100644 index 00000000..c9dc8e9e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/expect_com_pharm_update.csv @@ -0,0 +1,37 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","dup_opp_cd","supervising_pharmacist","supervising_pharmacist_kana","franchise_hq_cd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"033673002","85","6","セイシキテンポメイ03A01B-01","リヤクシキ03A01B-01","正式店舗名03A01b-01","略式03A01b-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03A01B","東京都中央区日本橋浜町2-45-1 03A01b","103-0007","13102242","13","102","2-45-1-03A01B","07071202","03030502","471","5","033673003",,,,"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" +"033673011","85",,"セイシキテンポメイ03B01A","リヤクシキ03B01A","正式店舗名03B01a","略式03B01a",,,,,,,,"NULL","03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B01A","東京都中央区日本橋浜町2-45-1 03B01a","103-0007","13102242","13","102","2-45-1-03B01A","07071202","03030502","471",,,,,,"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" +"033673012","85","6","セイシキテンポメイ03B02A","リヤクシキ03B02A","正式店舗名03B02a","略式03B02a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02A","東京都中央区日本橋浜町2-45-1 03B02a","103-0007","13102242","13","102","2-45-1-03B02A","07071202","03030502","471","1",,,,,"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" +"033673013","85","6","セイシキテンポメイ03B02B","リヤクシキ03B02B","正式店舗名03B02b","略式03B02b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02B","東京都中央区日本橋浜町2-45-1 03B02b","103-0007","13102242","13","102","2-45-1-03B02B","07071202","03030502","471","2",,,,,"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" +"033673014","85","6","セイシキテンポメイ03B02C-01","リヤクシキ03B02C-01","正式店舗名03B02c-01","略式03B02c-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02C","東京都中央区日本橋浜町2-45-1 03B02c","103-0007","13102242","13","102","2-45-1-03B02C","07071202","03030502","471","5","033673015",,,,"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" +"033673016","85","6","セイシキテンポメイ03B02D-01","リヤクシキ03B02D-01","正式店舗名03B02d-01","略式03B02d-01",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471","7","033673021",,,,"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" +"033673020","85","6","セイシキテンポメイ03B02D-02","リヤクシキ03B02D-02","正式店舗名03B02d-02","略式03B02d-02",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02D","東京都中央区日本橋浜町2-45-1 03B02d","103-0007","13102242","13","102","2-45-1-03B02D","07071202","03030502","471","7","033673021",,,,"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" +"033673022","85","NULL","セイシキテンポメイ03B02E","リヤクシキ03B02E","正式店舗名03B02e","略式03B02e",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B02E","東京都中央区日本橋浜町2-45-1 03B02e","103-0007","13102242","13","102","2-45-1-03B02E","07071202","03030502","471","NULL",,,,,"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" +"033673023","85",,"セイシキテンポメイ03B03Aサブン","リヤクシキ03B03Aサブン","正式店舗名03B03a差分","略式03B03a差分",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03A","東京都中央区日本橋浜町2-45-1 03B03a","103-0007","13102242","13","102","2-45-1-03B03A","07071202","03030502","471",,,,,,"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" +"033673024","85",,"セイシキテンポメイ03B03B---2----+----3----+----4----+----5----+----6----+----7----+----8","リヤクシキ03B03B---+----2----+----3----+----4","正式店舗名03B03b---+----2----+----3----+----4----+----5","略式03B03b-1----+",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B03B","東京都中央区日本橋浜町2-45-1 03B03b","103-0007","13102242","13","102","2-45-1-03B03B","07071202","03030502","471",,,,,,"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" +"033673025","85","1","セイシキテンポメイ03B04A","リヤクシキ03B04A","正式店舗名03B04a","略式03B04a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04A","東京都中央区日本橋浜町2-45-1 03B04a","103-0007","13102242","13","102","2-45-1-03B04A","07071202","03030502","471",,,,,,"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" +"033673026","85","2","セイシキテンポメイ03B04B","リヤクシキ03B04B","正式店舗名03B04b","略式03B04b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04B","東京都中央区日本橋浜町2-45-1 03B04b","103-0007","13102242","13","102","2-45-1-03B04B","07071202","03030502","471",,,,,,"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" +"033673030","85","NULL","セイシキテンポメイ03B04C","リヤクシキ03B04C","正式店舗名03B04c","略式03B04c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B04C","東京都中央区日本橋浜町2-45-1 03B04c","103-0007","13102242","13","102","2-45-1-03B04C","07071202","03030502","471",,,,,,"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" +"033673032","85",,"セイシキテンポメイ03B05B","リヤクシキ03B05B","正式店舗名03B05b","略式03B05b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B05B4----+----5----+----6","東京都中央区日本橋浜町2-45-1 03B05b+----3----+----4----+----5","103-0007","13102024002","13","102","2-45-1-03B05B","07071202","03030502","471",,,,,,"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" +"033673033","85",,"セイシキテンポメイ03B06A","リヤクシキ03B06A","正式店舗名03B06a","略式03B06a",,,,,,,"NULL",,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06A","東京都中央区日本橋浜町2-45-1 03B06a","103-0007","13102242","13","102","2-45-1-03B06A","07071202","03030502","471",,,,,,"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" +"033673034","85",,"セイシキテンポメイ03B06B","リヤクシキ03B06B","正式店舗名03B06b","略式03B06b",,,,,,,,,"03-3249-8232","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06B","東京都中央区日本橋浜町2-45-1 03B06b","103-0007","13102242","13","102","2-45-1-03B06B","07071202","03030502","471",,,,,,"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" +"033673035","85",,"セイシキテンポメイ03B06C","リヤクシキ03B06C","正式店舗名03B06c","略式03B06c",,,,,,,"1",,"NULL","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B06C","東京都中央区日本橋浜町2-45-1 03B06c","103-0007","13102242","13","102","2-45-1-03B06C","07071202","03030502","471",,,,,,"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" +"033673036","85",,"セイシキテンポメイ03B07A","リヤクシキ03B07A","正式店舗名03B07a","略式03B07a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B07A","東京都中央区日本橋浜町2-45-1 03B07a","103-0007","13102242","13","102","2-45-1-03B07A","07071202","03030502","472",,,,,,"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" +"033673040","86",,"セイシキテンポメイ03B08A","リヤクシキ03B08A","正式店舗名03B08a","略式03B08a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B08A","東京都中央区日本橋浜町2-45-1 03B08a","103-0007","13102242","13","102","2-45-1-03B08A","07071202","03030502","471",,,,,,"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" +"033673041","85",,"セイシキテンポメイ03B09A","リヤクシキ03B09A","正式店舗名03B09a","略式03B09a",,,,,"ダイヒヨウシヤメイ 03B09A","代表者名 03B09a",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09A","東京都中央区日本橋浜町2-45-1 03B09a","103-0007","13102242","13","102","2-45-1-03B09A","07071202","03030502","471",,,,,,"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" +"033673042","85",,"セイシキテンポメイ03B09B","リヤクシキ03B09B","正式店舗名03B09b","略式03B09b",,,,,"ダイヒヨウシヤメイ 03B09B--2","代表者名 03B09b---+----2",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09B","東京都中央区日本橋浜町2-45-1 03B09b","103-0007","13102242","13","102","2-45-1-03B09B","07071202","03030502","471",,,,,,"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" +"033673043","85",,"セイシキテンポメイ03B09C","リヤクシキ03B09C","正式店舗名03B09c","略式03B09c",,,,,"NULL","NULL",,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B09C","東京都中央区日本橋浜町2-45-1 03B09c","103-0007","13102242","13","102","2-45-1-03B09C","07071202","03030502","471",,,,,,"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" +"033673044","85",,"セイシキテンポメイ03B10A","リヤクシキ03B10A","正式店舗名03B10a","略式03B10a",,"1",,"201301",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10A","東京都中央区日本橋浜町2-45-1 03B10a","103-0007","13102242","13","102","2-45-1-03B10A","07071202","03030502","471",,,,,,"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" +"033673045","85",,"セイシキテンポメイ03B10B","リヤクシキ03B10B","正式店舗名03B10b","略式03B10b",,"NULL",,"NULL",,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B10B","東京都中央区日本橋浜町2-45-1 03B10b","103-0007","13102242","13","102","2-45-1-03B10B","07071202","03030502","471",,,,,,"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" +"033673046","85",,"セイシキテンポメイ03B11A","リヤクシキ03B11A","正式店舗名03B11a","略式03B11a","1",,"201210",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11A","東京都中央区日本橋浜町2-45-1 03B11a","103-0007","13102242","13","102","2-45-1-03B11A","07071202","03030502","471",,,,,,"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" +"033673047","85",,"セイシキテンポメイ03B11B","リヤクシキ03B11B","正式店舗名03B11b","略式03B11b","1",,"201209",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11B","東京都中央区日本橋浜町2-45-1 03B11b","103-0007","13102242","13","102","2-45-1-03B11B","07071202","03030502","471",,,,,,"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" +"033673048","85",,"セイシキテンポメイ03B11C","リヤクシキ03B11C","正式店舗名03B11c","略式03B11c","NULL",,"NULL",,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B11C","東京都中央区日本橋浜町2-45-1 03B11c","103-0007","13102242","13","102","2-45-1-03B11C","07071202","03030502","471",,,,,,"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" +"033673051","85",,"セイシキテンポメイ03B12A","リヤクシキ03B12A","正式店舗名03B12a","略式03B12a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12A","東京都中央区日本橋浜町2-45-1 03B12a","103-0007","13102242","13","102","2-45-1-03B12A","07071202","03030502","471",,,"管理薬剤師名 03B12a","カンリヤクザイシメイ 03B12A",,"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" +"033673052","85",,"セイシキテンポメイ03B12B","リヤクシキ03B12B","正式店舗名03B12b","略式03B12b",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12B","東京都中央区日本橋浜町2-45-1 03B12b","103-0007","13102242","13","102","2-45-1-03B12B","07071202","03030502","471",,,"管理薬剤師名 03B12b-+----2","カンリヤクザイシメイ 03B12B-2",,"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" +"033673053","85",,"セイシキテンポメイ03B12C","リヤクシキ03B12C","正式店舗名03B12c","略式03B12c",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B12C","東京都中央区日本橋浜町2-45-1 03B12c","103-0007","13102242","13","102","2-45-1-03B12C","07071202","03030502","471",,,"NULL","NULL",,"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" +"033673055","85",,"セイシキテンポメイ03B13A","リヤクシキ03B13A","正式店舗名03B13a","略式03B13a",,,,,,,,,"03-3249-8231","トウキヨウト チユウオウク ニホンバシハマチヨウ 2-45-1 03B13A","東京都中央区日本橋浜町2-45-1 03B13a","103-0007","13102242","13","102","2-45-1-03B13A","07071202","03030502","471",,,,,"033673054","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" +"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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/test_com_pharm_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/test_com_pharm_mapper.py new file mode 100644 index 00000000..15d046e4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_pharm/test_com_pharm_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_pharm_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPharmMapper: + """ レイアウト区分102: COM_薬局 """ + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """ テスト実行前後処理 """ + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_薬局テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_pharm_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_pharm', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_pharm_mapper.ComPharmMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_pharm_mapper.ComPharmMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_pharm_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_pharm WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_薬局テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_pharm_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_pharm', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_pharm_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_pharm', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_pharm_mapper.ComPharmMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_pharm_mapper.ComPharmMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_pharm_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_pharm WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_薬局テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_pharm_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_pharm', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_pharm_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_pharm', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_pharm_mapper.ComPharmMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_pharm_mapper.ComPharmMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_pharm_delete.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_pharm WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv new file mode 100644 index 00000000..ca4cadce --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv @@ -0,0 +1,8 @@ +"028","01","A","20141113","20141114","" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","C","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","成育" +"028","06","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","07","A","20141113","20141114","心臓病" +"028","99","C","20141113","20141114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv new file mode 100644 index 00000000..dc5032cd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv @@ -0,0 +1,7 @@ +"028","01","A","20141113","20141114","がん" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","A","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","成育" +"028","06","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv new file mode 100644 index 00000000..700df5d8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv @@ -0,0 +1,7 @@ +"028","01","A","20141113","20141114","" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","A","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","06","A","20141113","20141114","成育" +"028","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv new file mode 100644 index 00000000..6b9e4adf --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv @@ -0,0 +1,7 @@ +"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"03","精神疾患","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"04","神経・筋疾患(筋ジスを含む)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"05","呼吸器疾患(結核を含む)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"06","成育","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv new file mode 100644 index 00000000..8595b154 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"03","精神疾患","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"04","神経・筋疾患(筋ジスを含む)","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"05","成育","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"06","呼吸器疾患(結核を含む)","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"99","あああ","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv new file mode 100644 index 00000000..8863326e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 15:06:43","com_policy_med_mapper" +"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20171019","20171019","20230425","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"05","成育","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"06","呼吸器疾患(結核を含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"07","心臓病","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:21:20","com_policy_med_mapper","2022/10/20 17:36:27","com_policy_med_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv new file mode 100644 index 00000000..84587999 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","がん","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"02","循環器病","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"03","精神疾患","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"05","成育","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"06","呼吸器疾患(結核を含む)","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv new file mode 100644 index 00000000..b0d08781 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:06:43","com_policy_med_mapper" +"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"05","呼吸器疾患(結核を含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"06","成育","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py new file mode 100644 index 00000000..e0729d17 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_policy_med_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPolicyMedpMapper: + """ レイアウト区分028: COM_政策医療 """ + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """ テスト実行前後処理 """ + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_政策医療テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_policy_med_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_policy_med_insert.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_政策医療テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_policy_med_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_policy_med_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_policy_med', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_policy_med_update.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_政策医療テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_policy_med_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_policy_med_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_policy_med', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_policy_med_delete.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_delete.csv new file mode 100644 index 00000000..ee22668f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_delete.csv @@ -0,0 +1,7 @@ +"005","011","A","20141113","20141114","理事長" +"005","012","A","20141113","20141114","理事" +"005","013","A","20141113","20141114","副理事" +"005","014","A","20141113","20141114","" +"005","015","A","20141113","20141114","常任理" +"005","016","C","20141113","20141114","誉理事" +"005","021","A","20141113","20141114","誉会長" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_insert.csv new file mode 100644 index 00000000..b5b7efa5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_insert.csv @@ -0,0 +1,7 @@ +"005","011","A","20141113","20141114","理事長" +"005","012","A","20141113","20141114","理事" +"005","013","A","20141113","20141114","副理事" +"005","014","A","20141113","20141114","常務理" +"005","015","A","20141113","20141114","常任理" +"005","016","A","20141113","20141114","誉理事" +"005","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_update.csv new file mode 100644 index 00000000..c27a867d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/com_post_update.csv @@ -0,0 +1,6 @@ +"005","011","A","20141113","20141114","理事" +"005","012","A","20141113","20141114","理事長" +"005","013","A","20141113","20141114","副理事" +"005","014","A","20141113","20141114","" +"005","015","A","20141113","20141114","常任理" +"005","016","A","20141113","20141114","誉理事" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_delete.csv new file mode 100644 index 00000000..ceb7e085 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_delete.csv @@ -0,0 +1,7 @@ +"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"011","理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" +"012","理事長","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" +"013","副理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" +"014","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" +"015","常任理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" +"016","誉理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_update.csv new file mode 100644 index 00000000..ffb77574 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/db_com_post_before_update.csv @@ -0,0 +1,7 @@ +"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"011","理事長","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" +"012","理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" +"013","副理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" +"014","常務理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" +"015","常任理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" +"016","誉理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_delete.csv new file mode 100644 index 00000000..8ea72f18 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_delete.csv @@ -0,0 +1,8 @@ +"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"011","理事長","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"012","理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"013","副理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"014","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"015","常任理","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"016","誉理事","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper" +"021","誉会長","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 11:00:25","com_post_mapper","2023/05/14 11:00:25","com_post_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_insert.csv new file mode 100644 index 00000000..e1ccea70 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_insert.csv @@ -0,0 +1,8 @@ +"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"011","理事長","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"012","理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"013","副理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"014","常務理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"015","常任理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"016","誉理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" +"999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_update.csv new file mode 100644 index 00000000..0b2e436d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/expect_com_post_update.csv @@ -0,0 +1,7 @@ +"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"011","理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" +"012","理事長","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" +"013","副理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" +"014","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" +"015","常任理","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" +"016","誉理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/test_com_post_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/test_com_post_mapper.py new file mode 100644 index 00000000..e440dbb7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_post/test_com_post_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_post_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPostMapper: + """レイアウト区分005: COM_役職""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_役職テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_post_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_insert.csv')) + primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_役職テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_post_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_post_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_post', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_update.csv')) + primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_役職テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_post_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_post_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_post', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_delete.csv')) + primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv new file mode 100644 index 00000000..fc160243 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv @@ -0,0 +1,3 @@ +"132","00","9900194","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","00","9901649","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","00","9929798","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv new file mode 100644 index 00000000..de5f5b03 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv @@ -0,0 +1,8 @@ +"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","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","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",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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv new file mode 100644 index 00000000..7c7c790a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv @@ -0,0 +1,6 @@ +"132","00","9900146","","B","","20141113","20141114","@","http://yahoo.co.jp/","@","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","","55.5","66.6","","","","","","","" +"132","00","9900194","","B","","20141113","20141114","20121101","http://www.hospital.misawa.aomori.jp/","","","@","","","","","","","","@","","@","@","","","","","","","","@","","","","","","","","","","@","","","@","","","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","@","","","","","","","","","" +"132","00","9901679","","B","","20141113","20141114","20171009","","","","","","","","@","@","@","@","","","","","1","2","3","5","4","@","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","" +"132","99","9999999","99","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","99","9999999","00","A","2","20141113","20141114","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@" +"132","99","9999999","11","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv new file mode 100644 index 00000000..71ec28ac --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv @@ -0,0 +1,6 @@ +"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","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","NULL","NULL","NULL","NULL","1","1","1","1","NULL","1","NULL","NULL","NULL","NULL","NULL","1","1","1","3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv new file mode 100644 index 00000000..36e197b0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv @@ -0,0 +1,9 @@ +"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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"99999999900","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","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" +"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","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" +"99999999911","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv new file mode 100644 index 00000000..8c2f6318 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv @@ -0,0 +1,3 @@ +"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","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv new file mode 100644 index 00000000..f9da8a45 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv @@ -0,0 +1,9 @@ +"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" +"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" +"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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv new file mode 100644 index 00000000..032b6891 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv @@ -0,0 +1,9 @@ +"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","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 11:49:28","com_prefc_med_base_mapper" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","NULL","NULL","NULL","NULL","1","1","1","1","NULL","1","NULL","NULL","NULL","NULL","NULL","1","1","1","3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 14:52:00","com_prefc_med_base_mapper" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 11:49:28","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","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"99999999900","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","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","20230510","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","com_prefc_med_base_mapper" +"99999999911","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","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","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","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py new file mode 100644 index 00000000..84905c02 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py @@ -0,0 +1,198 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_base_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPrefcMedBaseMapper: + """レイアウト区分132: COM_都道府県医療機能情報(基本)""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_都道府県医療機能情報(基本)テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_base_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_base_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(基本)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_base_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_base_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_base', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_base_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(基本)テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_base_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_base_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_base', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_base_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_prefc_med_base')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv new file mode 100644 index 00000000..7c1bb46d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv @@ -0,0 +1,4 @@ +"134","00","9901679","","B","2201","1","20141205","20141213","" +"134","00","9901679","","B","2203","1","20141205","20141213","" +"134","00","9901679","","B","2205","1","20141205","20141213","" +"134","00","9901679","","B","2206","1","20141205","20141213","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv new file mode 100644 index 00000000..8091022c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv @@ -0,0 +1,9 @@ +"134","00","9901649","","A","1001","2","20141113","20141114","" +"134","00","9901679","","A","2201","2","20141113","20141114","" +"134","00","9901679","","A","2203","2","20141113","20141114","2789" +"134","00","9901679","","A","2205","2","20141113","20141114","2033" +"134","00","9901679","","A","2206","2","20141113","20141114","0" +"134","00","9929798","","A","0902","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","1235","2","20141113","20141114","@" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv new file mode 100644 index 00000000..4def216a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv @@ -0,0 +1,7 @@ +"134","00","9901649","","B","1001","2","20141113","20141114","0" +"134","00","9901679","","B","2203","2","20141113","20141114","@" +"134","00","9901679","","B","2205","2","20141113","20141114","1987" +"134","00","9901679","","B","2206","2","20141113","20141114","@" +"134","00","9929798","","B","0902","2","20141113","20141114","0" +"134","00","9929798","","B","0915","2","20141113","20141114","543" +"134","99","9999999","99","B","1234","2","20141113","20141114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv new file mode 100644 index 00000000..ee268b92 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2205","1987","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2206","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0902","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0915","543","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv new file mode 100644 index 00000000..aad1b86e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","2789","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2205","2033","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2206","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009929798","0902","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009929798","0915","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"99999999999","1234","1111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv new file mode 100644 index 00000000..d1d53673 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0902","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0915","543","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv new file mode 100644 index 00000000..4e56268a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","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" +"009901679","2201","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" +"009901679","2203","2789","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" +"009901679","2205","2033","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" +"009901679","2206","0","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","0902","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","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv new file mode 100644 index 00000000..baecab69 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2205","1987","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2206","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009929798","0902","0","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009929798","0915","543","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"99999999999","1234","1111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py new file mode 100644 index 00000000..003b87b1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py @@ -0,0 +1,253 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_dis_treat_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPrefcMedDisTreatMapper: + """レイアウト区分134: COM_都道府県医療機能情報(疾患治療)""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_都道府県医療機能情報(疾患治療)テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_dis_treat_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_dis_treat_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(疾患治療)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_dis_treat_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_dis_treat_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_dis_treat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_dis_treat_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(疾患治療)テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_dis_treat_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_dis_treat_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_dis_treat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_dis_treat_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_prefc_med_dis_treat')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv new file mode 100644 index 00000000..826055ac --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv @@ -0,0 +1,3 @@ +"133","00","9900194","","B","008","1","20141211","20141213","" +"133","00","9901649","","B","009","1","20141211","20141213","" +"133","00","9901679","","B","015","1","20141211","20141213","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv new file mode 100644 index 00000000..83362ab7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv @@ -0,0 +1,6 @@ +"133","00","9900146","","A","012","2","20141113","20141114","0" +"133","00","9900194","","A","008","2","20141113","20141114","32" +"133","00","9901649","","A","009","2","20141113","20141114","3" +"133","00","9901679","","A","015","2","20141113","20141114","" +"133","00","9904439","","A","006","2","20141113","20141114","" +"133","00","9929798","","A","010","2","20141113","20141114","@" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv new file mode 100644 index 00000000..24111866 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv @@ -0,0 +1,7 @@ +"133","99","9999999","99","B","111","2","20141113","20141114","" +"133","00","9900146","","B","012","2","20141113","20141114","@" +"133","00","9900194","","B","008","2","20141113","20141114","@" +"133","00","9901649","","B","009","2","20141113","20141114","6" +"133","00","9901679","","B","015","2","20141113","20141114","@" +"133","00","9904439","","B","006","2","20141113","20141114","10" +"133","00","9929798","","B","010","2","20141113","20141114","9" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv new file mode 100644 index 00000000..94330b4f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","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","012","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009900194","008","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009901649","009","6","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009901679","015","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009904439","006","10","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009929798","010","9","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv new file mode 100644 index 00000000..c75a3f89 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","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","012","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009900194","008","32","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009901649","009","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009901679","015","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009904439","006","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009929798","010","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"99999999999","111","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv new file mode 100644 index 00000000..32074199 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","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","012","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009904439","006","10","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009929798","010","9","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv new file mode 100644 index 00000000..caad9918 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","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","012","0","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009900194","008","32","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009901649","009","3","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009901679","015","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009904439","006","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009929798","010","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv new file mode 100644 index 00000000..88bc0809 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","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","012","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009900194","008","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009901649","009","6","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009901679","015","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009904439","006","10","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009929798","010","9","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"99999999999","111","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py new file mode 100644 index 00000000..5372b7cd --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py @@ -0,0 +1,252 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_equpment_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPrefcMedEqupmentMapper: + """レイアウト区分133: COM_都道府県医療機能情報(施設設備)""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_都道府県医療機能情報(施設設備)テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_equpment_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_equpment_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(施設設備)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_equpment_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_equpment_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_equpment', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_equpment_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(施設設備)テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_equpment_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_equpment_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_equpment', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_equpment_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_prefc_med_equpment')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', 'regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv new file mode 100644 index 00000000..0e25331e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv @@ -0,0 +1,3 @@ +"135","00","9901679","","B","101","1","20141210","20141213" +"135","00","9901679","","B","102","1","20141209","20141213" +"135","00","9901679","","B","111","1","20141208","20141213" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv new file mode 100644 index 00000000..daf6f1f9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv @@ -0,0 +1,7 @@ +"135","00","9900146","","A","213","2","20141113","20141114" +"135","00","9900146","","A","214","2","20141113","20141114" +"135","00","9900146","","A","215","2","20141113","20141114" +"135","00","9901679","","A","101","2","20141113","20141114" +"135","00","9901679","","A","102","2","20141113","20141114" +"135","00","9929798","","A","110","2","20141113","20141114" +"135","00","9929798","","A","111","2","20141113","20141114" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv new file mode 100644 index 00000000..5c75d14c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv @@ -0,0 +1,4 @@ +"135","00","9901679","","B","101","2","20141113","20141114" +"135","00","9901679","","B","111","2","20141113","20141114" +"135","00","9929798","","B","111","2","20141113","20141114" +"135","00","9929798","","B","211","2","20141113","20141114" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv new file mode 100644 index 00000000..90f5e825 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv @@ -0,0 +1,10 @@ +"dcf_dsf_inst_cd","cos_surgery_code","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","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","111","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv new file mode 100644 index 00000000..72dda2ae --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cos_surgery_code","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","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv new file mode 100644 index 00000000..5adfd71e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","cos_surgery_code","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","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv new file mode 100644 index 00000000..995277be --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cos_surgery_code","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","213","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009900146","214","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009900146","215","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009901679","101","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009901679","102","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009929798","110","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009929798","111","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv new file mode 100644 index 00000000..d4377bc4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv @@ -0,0 +1,10 @@ +"dcf_dsf_inst_cd","cos_surgery_code","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","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","111","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009929798","211","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py new file mode 100644 index 00000000..f08193a6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py @@ -0,0 +1,240 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_sojourn_ope_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPrefcMedSojournOpeMapper: + """レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_都道府県医療機能情報(短期滞在手術)テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(短期滞在手術)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sojourn_ope_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sojourn_ope', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(短期滞在手術)テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sojourn_ope_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sojourn_ope', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_prefc_med_sojourn_ope')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv new file mode 100644 index 00000000..4ce0fddb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv @@ -0,0 +1 @@ +"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","20141211","20141213","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv new file mode 100644 index 00000000..49cdc733 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv @@ -0,0 +1,8 @@ +"136","99","9999999","88","A","あいうえお","2","20141113","20141114","123","@" +"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","7","019" +"136","00","9904439","","A","テスト 禁煙専門外来","2","20141113","20141114","2","001" +"136","00","9904439","","A","テスト 糖尿病外来","2","20141113","20141114","7","006" +"136","00","9929798","","A","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","014" +"136","99","9999999","99","A","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","2","20141113","20141114","111","222" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv new file mode 100644 index 00000000..e157aee6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv @@ -0,0 +1,6 @@ +"136","00","9901649","","B","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","019" +"136","00","9904439","","B","テスト 禁煙専門外来","2","20141113","20141114","2","@" +"136","00","9904439","","B","テスト 糖尿病外来","2","20141113","20141114","7","001" +"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","@" +"136","99","9999999","11","B","あいうえお","2","20141113","20141114","","999" +"136","99","9999999","99","B","あいうえお","2","20141113","20141114","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv new file mode 100644 index 00000000..6e0c952c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv @@ -0,0 +1,7 @@ +"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" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv new file mode 100644 index 00000000..3266575e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv @@ -0,0 +1,9 @@ +"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" +"009901649","テスト 小児 内分泌・腎臓外来","5","030","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","001","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","006","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"99999999911","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv new file mode 100644 index 00000000..6184e1ce --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv @@ -0,0 +1,6 @@ +"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" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv new file mode 100644 index 00000000..86c95e0f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv @@ -0,0 +1,9 @@ +"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" +"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","テスト 禁煙専門外来","2","001","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","006","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" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","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" +"99999999999","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","111","222","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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv new file mode 100644 index 00000000..33d5e48f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv @@ -0,0 +1,9 @@ +"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" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009904439","テスト 糖尿病外来","7","001","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"99999999911","あいうえお","123","999","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:57:12","com_prefc_med_sp_outpat_mapper" +"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py new file mode 100644 index 00000000..54d034a3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py @@ -0,0 +1,240 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_sp_outpat_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComPrefcMedSpOutpatMapper: + """レイアウト区分136: COM_都道府県医療機能情報(専門外来)""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_都道府県医療機能情報(専門外来)テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(専門外来)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sp_outpat_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sp_outpat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(専門外来)テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sp_outpat_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sp_outpat', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_prefc_med_sp_outpat')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv new file mode 100644 index 00000000..4c50f5fc --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv @@ -0,0 +1,4 @@ +"026","01","C","20141113","20141114","" +"026","99","A","20141113","20141114","不明" +"026","02","A","20141113","20141114","骨折" +"026","98","C","20141113","20141114","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv new file mode 100644 index 00000000..09a4e485 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv @@ -0,0 +1,3 @@ +"026","01","A","20141113","20141114","大腿骨頸部骨折" +"026","99","A","20141113","20141114","不明" +"026","55","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv new file mode 100644 index 00000000..7b84a0ff --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv @@ -0,0 +1,3 @@ +"026","01","A","20141113","20141114","頸部骨折" +"026","99","A","20141113","20141114","" +"026","55","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv new file mode 100644 index 00000000..bd263ca7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv @@ -0,0 +1,3 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:17","clsComRegnCriticPass" +"99","不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:51","clsComRegnCriticPass" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv new file mode 100644 index 00000000..e8c2ba1e --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","clsComRegnCriticPass" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv new file mode 100644 index 00000000..12548de0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20171019","NULL","20230420","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:17","com_regn_critic_pass_mapper" +"02","骨折","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:18:53","com_regn_critic_pass_mapper","2017/10/19 11:18:53","com_regn_critic_pass_mapper" +"99","不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:51","com_regn_critic_pass_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv new file mode 100644 index 00000000..81ce5d4b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv new file mode 100644 index 00000000..35151deb --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","頸部骨折","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","","20171024","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","com_regn_critic_pass_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py new file mode 100644 index 00000000..738d7ea4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_regn_critic_pass_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComRegnCriticPassMapper: + """レイアウト区分026: COM_地域連携クリティカルパス""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_地域連携クリティカルパス校テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_regn_critic_pass_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_regn_critic_pass_insert.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_地域連携クリティカルパス校テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_regn_critic_pass_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_regn_critic_pass_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_regn_critic_pass', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_regn_critic_pass_update.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_地域連携クリティカルパス校テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_regn_critic_pass_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_regn_critic_pass_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_regn_critic_pass', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_regn_critic_pass_delete.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv new file mode 100644 index 00000000..85d5cb95 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv @@ -0,0 +1,7 @@ +"027","01","A","20141113","20141114","" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","C","20141113","20141114","廃用症候群リハビリテーション" +"027","05","A","20141113","20141114","心大血管疾患リハビリテーション" +"027","06","A","20141113","20141114","糖尿病リハビリテーション" +"027","99","C","20141113","20141114","糖尿病リハビリテーション" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv new file mode 100644 index 00000000..a3d3096b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv @@ -0,0 +1,6 @@ +"027","01","A","20141113","20141114","脳血管疾患等リハビリテーション" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","A","20141113","20141114","心大血管疾患リハビリテーション" +"027","05","A","20141113","20141114","廃用症候群リハビリテーション" +"027","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv new file mode 100644 index 00000000..a9450b84 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv @@ -0,0 +1,5 @@ +"027","01","A","20141113","20141114","" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","A","20141113","20141114","廃用症候群リハビリテーション" +"027","05","A","20141113","20141114","心大血管疾患リハビリテーション" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv new file mode 100644 index 00000000..50610683 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"03","呼吸器リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"04","廃用症候群リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"05","心大血管疾患リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv new file mode 100644 index 00000000..5990cb40 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"03","呼吸器リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"04","心大血管疾患リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"05","廃用症候群リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv new file mode 100644 index 00000000..e2554dc6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv @@ -0,0 +1,7 @@ +"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","com_rehabili_mapper" +"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"04","廃用症候群リハビリテーション","20171019","20171019","20230423","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"05","心大血管疾患リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"06","糖尿病リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:01:11","com_rehabili_mapper","2022/10/19 15:01:11","com_rehabili_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv new file mode 100644 index 00000000..1e292c75 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv @@ -0,0 +1,7 @@ +"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","脳血管疾患等リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"02","運動器リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"04","心大血管疾患リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"05","廃用症候群リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv new file mode 100644 index 00000000..00891218 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","com_rehabili_mapper" +"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"04","廃用症候群リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"05","心大血管疾患リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py new file mode 100644 index 00000000..29d44f4b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_rehabili_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComRehabiliMapper: + """レイアウト区分027: COM_疾患別リハビリテーション科""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_疾患別リハビリテーション科テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_rehabili_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_rehabili_insert.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_疾患別リハビリテーション科テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_rehabili_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_rehabili_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_rehabili', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_rehabili_update.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_疾患別リハビリテーション科テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_rehabili_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_rehabili_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_rehabili', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_rehabili_delete.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv new file mode 100644 index 00000000..61c5c614 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv @@ -0,0 +1,3 @@ +"123","01","01","C","20141113","20141114","","","","","","" +"123","01","02","C","20141113","20141114","南檜山圏","1","213","216","20130201","3" +"123","01","09","C","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv new file mode 100644 index 00000000..690a500f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv @@ -0,0 +1,4 @@ +"123","01","01","A","20141113","20141114","南渡島圏","1","4475","5020","20130201","545" +"123","01","02","A","20141113","20141114","","","","","","" +"123","01","03","B","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" +"123","99","99","A","","","あいうえおかきくけこあいうえおかきくけこ","9","123456","123456","20130201","1234567" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv new file mode 100644 index 00000000..348ff11c --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv @@ -0,0 +1,3 @@ +"123","01","01","A","20141113","20141114","","","","","","" +"123","01","02","A","20141113","20141114","南檜山圏","1","213","216","20130201","3" +"123","01","03","B","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv new file mode 100644 index 00000000..8fab7f4b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","","","NULL","NULL","","","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" +"01","02","1","南檜山圏","213","216","20130201","3","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv new file mode 100644 index 00000000..23b503f5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","1","南渡島圏","4475","5020","20130201","545","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" +"01","02","","","NULL","NULL","","","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv new file mode 100644 index 00000000..3ec5fff5 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv @@ -0,0 +1,2 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv new file mode 100644 index 00000000..f5a43770 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv @@ -0,0 +1,5 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","1","南渡島圏","4475","5020","20130201","545","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"01","02","","","NULL","NULL","","","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"99","99","9","あいうえおかきくけこあいうえおかきくけこ","123456","123456","20130201","1234567","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv new file mode 100644 index 00000000..6e212e05 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","","","NULL","NULL","","","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" +"01","02","1","南檜山圏","213","216","20130201","3","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py new file mode 100644 index 00000000..82e12baa --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py @@ -0,0 +1,257 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_snd_med_sphe_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComSndMedSphe: + """レイアウト区分123: COM_医療圏二次医療圏""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # decimal型のカラム群 + decimal_columns = [ + 'requd_bed_or_equip_target', + 'exist_bed_num' + ] + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医療圏二次医療圏テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_snd_med_sphe_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_snd_med_sphe_insert.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏二次医療圏テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_snd_med_sphe_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_snd_med_sphe_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_snd_med_sphe', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_snd_med_sphe_update.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_医療圏二次医療圏テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_snd_med_sphe_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_snd_med_sphe_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_snd_med_sphe', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_snd_med_sphe_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_snd_med_sphe')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_delete.csv new file mode 100644 index 00000000..97dbe515 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_delete.csv @@ -0,0 +1,7 @@ +"009","001","A","20141113","20141114","" +"009","002","A","20141113","20141114","解剖" +"009","003","A","20141113","20141114","生理" +"009","004","C","20141113","20141114","生化" +"009","005","A","20141113","20141114","病理" +"009","006","A","20141113","20141114","薬理" +"009","007","A","20141113","20141114","癌" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_insert.csv new file mode 100644 index 00000000..ebdea438 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_insert.csv @@ -0,0 +1,7 @@ +"009","001","A","20141113","20141114","医史" +"009","002","A","20141113","20141114","解剖" +"009","003","A","20141113","20141114","生理" +"009","004","A","20141113","20141114","生化" +"009","005","A","20141113","20141114","薬理" +"009","006","A","20141113","20141114","病理" +"009","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_update.csv new file mode 100644 index 00000000..bb8eb3ba --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/com_sosiety_update.csv @@ -0,0 +1,6 @@ +"009","001","A","20141113","20141114","" +"009","002","A","20141113","20141114","解剖" +"009","003","A","20141113","20141114","生理" +"009","004","A","20141113","20141114","生化" +"009","005","A","20141113","20141114","病理" +"009","006","A","20141113","20141114","薬理" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_delete.csv new file mode 100644 index 00000000..87bee255 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_delete.csv @@ -0,0 +1,7 @@ +"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" +"002","解剖","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" +"003","生理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" +"004","生化","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" +"005","病理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" +"006","薬理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_update.csv new file mode 100644 index 00000000..5447e8b3 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/db_com_sosiety_before_update.csv @@ -0,0 +1,8 @@ +"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","医史","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"002","解剖","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"003","生理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"004","生化","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"005","薬理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"006","病理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" +"999","あいう","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_delete.csv new file mode 100644 index 00000000..ff96fbec --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_delete.csv @@ -0,0 +1,8 @@ +"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"002","解剖","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"003","生理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"004","生化","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"005","病理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"006","薬理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper" +"007","癌","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:50:50","com_sosiety_mapper","2023/05/15 16:50:50","com_sosiety_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_insert.csv new file mode 100644 index 00000000..8da80c1a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_insert.csv @@ -0,0 +1,8 @@ +"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","医史","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"002","解剖","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"003","生理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"004","生化","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"005","薬理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"006","病理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" +"999","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_update.csv new file mode 100644 index 00000000..d8c4d20a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/expect_com_sosiety_update.csv @@ -0,0 +1,8 @@ +"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"001","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"002","解剖","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"003","生理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"004","生化","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"005","病理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"006","薬理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper" +"999","あいう","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/test_com_sosiety_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/test_com_sosiety_mapper.py new file mode 100644 index 00000000..1fd345b0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sosiety/test_com_sosiety_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_sosiety_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComSosietyMapper: + """レイアウト区分009: COM_学会""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_学会テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sosiety_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_insert.csv')) + primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_学会テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sosiety_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sosiety_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_update.csv')) + primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_学会テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sosiety_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sosiety_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_delete.csv')) + primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv new file mode 100644 index 00000000..11bd1155 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv @@ -0,0 +1,5 @@ +"511","01","994301","00","B","0003","1","20141211","20141213","","","","","","" +"511","01","995783","00","B","0003","1","20141211","20141213","","","","","","" +"511","01","997682","00","B","0004","1","20141211","20141213","","","","","","" +"511","01","997906","00","B","0032","1","20141211","20141213","","","","","","" +"511","01","999613","00","B","0056","1","20141211","20141213","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv new file mode 100644 index 00000000..b68e46d0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv @@ -0,0 +1,8 @@ +"511","01","994301","00","A","0003","2","20141113","20141114","","","1","20140401","","" +"511","01","995783","00","A","0003","2","20141113","20141114","","","1","20140401","","" +"511","01","997682","00","A","0004","2","20141113","20141114","1","20131112","","","","" +"511","01","997906","00","A","0032","2","20141113","20141114","1","20130821","","","1","20130821" +"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","99","999999","99","A","9999","2","","","1","20220628","1","20230425","1","20230425" +"511","01","999988","99","A","9999","2",,,"@","20220628","@","20230425","@","20230425" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv new file mode 100644 index 00000000..b7585d8d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv @@ -0,0 +1,5 @@ +"511","01","994301","00","B","0003","2","20161113","20161114","1","20170401","@","","","" +"511","01","995783","00","B","0003","2","20161113","20161114","1","20170221","1","20140810","","" +"511","01","997906","00","B","0032","2","20170330","20170401","@","","","","@","" +"511","01","999613","00","B","0056","2","20161113","20161114","1","20180706","1","20170101","1","20180706" +"511","01","999613","00","B","9999","","","","","","","","","" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv new file mode 100644 index 00000000..978f2a55 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","specialist_cd","specialist_maint_div","specialist_flg","specialist_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0199430100","0003","2","1","20170401","NULL","NULL","","","20171008","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/11 21:20:37","clsComSpField" +"0199578300","0003","2","1","20170221","1","20140810","","","20171008","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/11 21:20:37","clsComSpField" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","NULL","NULL","","","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/11 21:20:37","clsComSpField" +"0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/11 21:20:37","clsComSpField" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv new file mode 100644 index 00000000..5c48b4e0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","specialist_cd","specialist_maint_div","specialist_flg","specialist_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0199430100","0003","2","","","1","20140401","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199578300","0003","2","","","1","20140401","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","1","20130821","","","1","20130821","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199961300","0056","2","1","20140706","","","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv new file mode 100644 index 00000000..f5423592 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv @@ -0,0 +1,2 @@ +"dcf_pcf_dr_cd","specialist_cd","specialist_maint_div","specialist_flg","specialist_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv new file mode 100644 index 00000000..8b5f1ad2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","specialist_cd","specialist_maint_div","specialist_flg","specialist_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0199430100","0003","2","","","1","20140401","","","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" +"0199578300","0003","2","","","1","20140401","","","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" +"0199768200","0004","2","1","20131112","","","","","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" +"0199790600","0032","2","1","20130821","","","1","20130821","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" +"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" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv new file mode 100644 index 00000000..83316e37 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv @@ -0,0 +1,6 @@ +"dcf_pcf_dr_cd","specialist_cd","specialist_maint_div","specialist_flg","specialist_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0199430100","0003","2","1","20170401","NULL","NULL","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199578300","0003","2","1","20170221","1","20140810","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","NULL","NULL","","","NULL","NULL","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py new file mode 100644 index 00000000..3f9a4d1f --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py @@ -0,0 +1,238 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_sp_field_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComSpFieldMapper: + """レイアウト区分511: COM_専門分野""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_専門分野テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sp_field_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_insert.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialist_cd = [{'specialist_cd': columns['specialist_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialist_cd = :specialist_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialist_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialist_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialist_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_専門分野テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sp_field_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sp_field_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sp_field', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_update.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialist_cd = [{'specialist_cd': columns['specialist_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialist_cd = :specialist_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialist_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialist_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialist_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_専門分野テーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_sp_field_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sp_field_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sp_field', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_sp_field')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialist_cd = [{'specialist_cd': columns['specialist_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialist_cd = :specialist_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialist_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialist_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialist_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_delete.csv new file mode 100644 index 00000000..79d312c4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_delete.csv @@ -0,0 +1,7 @@ +"010","0001","A","20141113","20141114","" +"010","0002","A","20141113","20141114","整形外科専門医" +"010","0003","A","20141113","20141114","麻酔科専門医" +"010","0004","A","20141113","20141114","産婦人科専門医" +"010","0005","C","20141113","20141114","放射線科専門医" +"010","0006","A","20141113","20141114","眼科専門医" +"010","0007","A","20141113","20141114","耳鼻咽喉科専門医" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_insert.csv new file mode 100644 index 00000000..34854679 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_insert.csv @@ -0,0 +1,7 @@ +"010","0001","A","20141113","20141114","皮膚科専門医" +"010","0002","A","20141113","20141114","整形外科専門医" +"010","0003","A","20141113","20141114","麻酔科専門医" +"010","0004","A","20141113","20141114","産婦人科専門医" +"010","0005","A","20141113","20141114","眼科専門医" +"010","0006","A","20141113","20141114","放射線科専門医" +"010","9999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_update.csv new file mode 100644 index 00000000..f598cab6 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/com_specialist_license_update.csv @@ -0,0 +1,6 @@ +"010","0001","A","20141113","20141114","" +"010","0002","A","20141113","20141114","整形外科専門医" +"010","0003","A","20141113","20141114","麻酔科専門医" +"010","0004","A","20141113","20141114","産婦人科専門医" +"010","0005","A","20141113","20141114","放射線科専門医" +"010","0006","A","20141113","20141114","眼科専門医" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_delete.csv new file mode 100644 index 00000000..b1732476 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_delete.csv @@ -0,0 +1,7 @@ +"specialist_cd","specialist_license_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0001","","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" +"0002","整形外科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" +"0003","麻酔科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" +"0004","産婦人科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" +"0005","放射線科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" +"0006","眼科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_update.csv new file mode 100644 index 00000000..bac063fe --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/db_com_specialist_license_before_update.csv @@ -0,0 +1,8 @@ +"specialist_cd","specialist_license_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0001","皮膚科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"0002","整形外科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"0003","麻酔科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"0004","産婦人科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"0005","眼科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"0006","放射線科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" +"9999","ああああ","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_delete.csv new file mode 100644 index 00000000..74e4b021 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_delete.csv @@ -0,0 +1,8 @@ +"specialist_cd","specialist_license_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0001","","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0002","整形外科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0003","麻酔科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0004","産婦人科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0005","放射線科専門医","20171024","20171024","20230515","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0006","眼科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialist_license_mapper" +"0007","耳鼻咽喉科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:47:40","com_specialist_license_mapper","2023/05/15 12:47:40","com_specialist_license_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_insert.csv new file mode 100644 index 00000000..92acbfc8 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_insert.csv @@ -0,0 +1,8 @@ +"specialist_cd","specialist_license_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0001","皮膚科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"0002","整形外科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"0003","麻酔科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"0004","産婦人科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"0005","眼科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"0006","放射線科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" +"9999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialist_license_mapper","2023/05/15 12:03:03","com_specialist_license_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_update.csv new file mode 100644 index 00000000..6a33cc35 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/expect_com_specialist_license_update.csv @@ -0,0 +1,8 @@ +"specialist_cd","specialist_license_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0001","","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"0002","整形外科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"0003","麻酔科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"0004","産婦人科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"0005","放射線科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"0006","眼科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialist_license_mapper" +"9999","ああああ","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/test_com_specialist_license_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/test_com_specialist_license_mapper.py new file mode 100644 index 00000000..857e1c65 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_specialist_license/test_com_specialist_license_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_specialist_license_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComSpecialistLicenseMapper: + """レイアウト区分010: COM_専門医資格""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_専門医資格テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_specialist_license_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialist_license', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_specialist_license_mapper.ComSpecialistLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_specialist_license_mapper.ComSpecialistLicenseMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_specialist_license_insert.csv')) + primary_keys = [f"'{primary_key['specialist_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_specialist_license WHERE specialist_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_専門医資格テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_specialist_license_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialist_license', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_specialist_license_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_specialist_license', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_specialist_license_mapper.ComSpecialistLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_specialist_license_mapper.ComSpecialistLicenseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_specialist_license_update.csv')) + primary_keys = [f"'{primary_key['specialist_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_specialist_license WHERE specialist_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_専門医資格テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_specialist_license_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialist_license', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_specialist_license_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_specialist_license', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_specialist_license_mapper.ComSpecialistLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_specialist_license_mapper.ComSpecialistLicenseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_specialist_license_delete.csv')) + primary_keys = [f"'{primary_key['specialist_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_specialist_license WHERE specialist_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv new file mode 100644 index 00000000..39844d66 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv @@ -0,0 +1,3 @@ +"122","01","1","C","20141118","20141122","" +"122","01","2","C","20141118","20141122","オホーツク" +"122","01","9","C","20141118","20141122","道北" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv new file mode 100644 index 00000000..6c299222 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv @@ -0,0 +1,4 @@ +"122","01","1","A","20141118","20141122","道南" +"122","01","2","A","20141118","20141122","" +"122","01","3","A","20141118","20141122","道北" +"122","99","12345678","A","","","あいうえおかきくけこあいうえおかきくけこ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv new file mode 100644 index 00000000..3050ce0d --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv @@ -0,0 +1,3 @@ +"122","01","1","A","20141118","20141122","" +"122","01","2","A","20141118","20141122","オホーツク" +"122","01","3","B","20141118","20141122","道北" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv new file mode 100644 index 00000000..475396aa --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" +"01","2","オホーツク","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" +"01","3","道北","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv new file mode 100644 index 00000000..5c15d8c0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","道南","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" +"01","2","","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" +"01","3","道北","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv new file mode 100644 index 00000000..513fbde7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv @@ -0,0 +1,2 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","3","道北","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv new file mode 100644 index 00000000..68dc24d7 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv @@ -0,0 +1,5 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","道南","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"01","2","","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"01","3","道北","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"99","12345678","あいうえおかきくけこあいうえおかきくけこ","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv new file mode 100644 index 00000000..29268282 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" +"01","2","オホーツク","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" +"01","3","道北","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py new file mode 100644 index 00000000..5440f431 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py @@ -0,0 +1,238 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_thrd_med_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComThrdMedMapper: + """レイアウト区分122: COM_医療圏3次マスタ""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医療圏3次マスタテーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_thrd_med_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_thrd_med_insert.csv')) + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏3次マスタテーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_thrd_med_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_thrd_med_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_thrd_med', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_thrd_med_update.csv')) + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_physical_delete(self): + """ + Cases: + COM_医療圏3次マスタテーブルのレコードを1件物理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_thrd_med_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_thrd_med_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_thrd_med', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_thrd_med_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_thrd_med')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv new file mode 100644 index 00000000..a676cbda --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv @@ -0,0 +1,7 @@ +"001","A01","A","20141113","20141114","","","" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","C","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" +"001","A07","A","20141113","20141114","内薬","内科(薬物療法)","ナイカ(ヤクブツリヨウホウ)" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv new file mode 100644 index 00000000..e3b96df2 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv @@ -0,0 +1,7 @@ +"001","A01","A","20141113","20141114","内","一般内科","イツパンナイカ" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" +"001","A06","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","999","A","","","あいうえ","あいうえおかきくけこあいうえおかきくけこ","アイウエオカキクケコアイウエオカキクケコケコ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv new file mode 100644 index 00000000..e092df90 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv @@ -0,0 +1,6 @@ +"001","A01","A","20141113","20141114","","","" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv new file mode 100644 index 00000000..19181a3b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","","","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv new file mode 100644 index 00000000..2dc257c0 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","イツパンナイカ","内","一般内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv new file mode 100644 index 00000000..a60d80b4 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv @@ -0,0 +1,8 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/11 09:16:56","com_trt_course_mapper" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A07","ナイカ(ヤクブツリヨウホウ)","内薬","内科(薬物療法)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:16:56","com_trt_course_mapper","2017/10/20 9:16:56","com_trt_course_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv new file mode 100644 index 00000000..6c9ce9f1 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv @@ -0,0 +1,8 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"999","アイウエオカキクケコアイウエオカキクケコケコ","あいうえ","あいうえおかきくけこあいうえおかきくけこ","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A01","イツパンナイカ","内","一般内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv new file mode 100644 index 00000000..1bc94e34 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py new file mode 100644 index 00000000..9646fc63 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_trt_course_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComTrtCourseMapper: + """レイアウト区分001: COM_診療科目""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_診療科目テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_trt_course_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_course_insert.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_診療科目テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_trt_course_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_course_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_course_update.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_診療科目テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_trt_course_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_course_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_course_delete.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/__init__.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_delete.csv new file mode 100644 index 00000000..753f271a --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_delete.csv @@ -0,0 +1,7 @@ +"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" +"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" +"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" +"04","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" +"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" +"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_update.csv new file mode 100644 index 00000000..4097a7c9 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/db_mst_prefc_before_update.csv @@ -0,0 +1,7 @@ +"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" +"02","青森県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" +"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" +"04","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" +"05","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" +"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_delete.csv new file mode 100644 index 00000000..4998fe00 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_delete.csv @@ -0,0 +1,8 @@ +"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"04","秋田県","","1","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper" +"07","福島県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:22:55","mst_prefc_mapper","2023/05/14 15:22:55","mst_prefc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_insert.csv new file mode 100644 index 00000000..59b8b231 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_insert.csv @@ -0,0 +1,8 @@ +"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"02","青森県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"04","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"05","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" +"99","あいうえお","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_update.csv new file mode 100644 index 00000000..3fef3d10 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/expect_mst_prefc_update.csv @@ -0,0 +1,7 @@ +"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" +"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" +"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" +"04","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" +"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" +"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_delete.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_delete.csv new file mode 100644 index 00000000..f5b68b65 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_delete.csv @@ -0,0 +1,7 @@ +"006","11","A","20141113","20141114","北海道","01" +"006","21","A","20141113","20141114","","02" +"006","22","A","20141113","20141114","岩手県","03" +"006","23","C","20141113","20141114","秋田県","04" +"006","24","A","20141113","20141114","宮城県","05" +"006","25","A","20141113","20141114","山形県","06" +"006","26","A","20141113","20141114","福島県","07" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_insert.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_insert.csv new file mode 100644 index 00000000..65801d98 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_insert.csv @@ -0,0 +1,7 @@ +"006","11","A","20141113","20141114","北海道","01" +"006","21","A","20141113","20141114","青森県","02" +"006","22","A","20141113","20141114","岩手県","03" +"006","23","A","20141113","20141114","宮城県","04" +"006","24","A","20141113","20141114","秋田県","05" +"006","25","A","20141113","20141114","山形県","06" +"006","","A","","","あいうえお","99" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_update.csv b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_update.csv new file mode 100644 index 00000000..cf9dcddf --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/mst_prefc_update.csv @@ -0,0 +1,6 @@ +"006","11","A","20141113","20141114","北海道","01" +"006","21","A","20141113","20141114","","02" +"006","22","A","20141113","20141114","岩手県","03" +"006","23","A","20141113","20141114","秋田県","04" +"006","24","A","20141113","20141114","宮城県","05" +"006","25","A","20141113","20141114","山形県","06" diff --git a/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/test_mst_prefc_mapper.py b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/test_mst_prefc_mapper.py new file mode 100644 index 00000000..9023ffef --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/batch/ultmarc/utmp_tables/table_mapper/mst_prefc/test_mst_prefc_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import mst_prefc_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestMstPrefcMapper: + """レイアウト区分006: 都道府県マスタ""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + 都道府県マスタテーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'mst_prefc_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is mst_prefc_mapper.MstPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_mst_prefc_insert.csv')) + primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + 都道府県マスタテーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'mst_prefc_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_mst_prefc_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.mst_prefc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is mst_prefc_mapper.MstPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_mst_prefc_update.csv')) + primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + 都道府県マスタテーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'mst_prefc_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_mst_prefc_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.mst_prefc', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is mst_prefc_mapper.MstPrefcMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_mst_prefc_delete.csv')) + primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-ultmarc-io/tests/conftest.py b/ecs/jskult-batch-ultmarc-io/tests/conftest.py new file mode 100644 index 00000000..a03a8638 --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/conftest.py @@ -0,0 +1,11 @@ +"""共通テストフィクスチャ""" + +import pytest + +from src.db.database import Database + + +@pytest.fixture +def database() -> Database: + """データベース接続モジュールを作成""" + return Database.get_instance() diff --git a/ecs/jskult-batch-ultmarc-io/tests/testing_utility.py b/ecs/jskult-batch-ultmarc-io/tests/testing_utility.py new file mode 100644 index 00000000..a59a647b --- /dev/null +++ b/ecs/jskult-batch-ultmarc-io/tests/testing_utility.py @@ -0,0 +1,171 @@ +import csv +import os +import tempfile +from datetime import datetime + +from src.batch.ultmarc.datfile import DatFile, DatFileLine +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.ultmarc_table_mapper_factory import \ + UltmarcTableMapperFactory +from src.db.database import Database + + +def create_ultmarc_test_data_from_csv(file_path: str) -> DatFile: + """ファイルから、アルトマーク取り込み用のテストデータを作成する + + Args: + file_path (str): csvファイルのパス + + Returns: + DatFile: データファイルオブジェクト + """ + + # 一度、Shift-JISファイルで書き出す + with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932', delete=False) as tmp_file: + tmp_file.write(csv_file.read()) + tmp_file.seek(0) + tmpfile_path = tmp_file.name + + dat_file = DatFile.from_path(tmpfile_path) + os.unlink(tmpfile_path) + return dat_file + + +def create_db_data_from_csv(file_path: str) -> list[dict]: + """ファイルから、DBの期待値データを作成する + + Args: + file_path (str): csvファイルのパス + + Returns: + DatFile: データファイルオブジェクト + """ + + with open(file_path, encoding='utf8') as csv_file: + # ヘッダ行を取得し、改行とクォートを取り除く。 + header = csv_file.readline().strip('\n').replace('"', '').split(',') + reader = csv.DictReader(csv_file, fieldnames=header) + rows = [r for r in reader] + + # データ型変換 + for row in rows: + for k, v in row.items(): + converted_value = v + if v == 'NULL': + converted_value = None + if is_valid_date_format(v, '%Y/%m/%d') is True: # YYYY/MM/DD + converted_value = datetime.strptime(v, '%Y/%m/%d').date() + if is_valid_date_format(v, '%Y-%m-%d') is True: # YYYY-MM-DD + converted_value = datetime.strptime(v, '%Y-%m-%d').date() + if is_valid_date_format(v, '%Y/%m/%d %H:%M:%S') is True: # YYYY/MM/DD HH:MM:SS + converted_value = datetime.strptime(v, '%Y/%m/%d %H:%M:%S') + if is_valid_date_format(v, '%Y-%m-%d %H:%M:%S') is True: # YYYY-MM-DD HH:MM:SS + converted_value = datetime.strptime(v, '%Y-%m-%d %H:%M:%S') + + row[k] = converted_value + + return rows + + +def create_insert_sql_with_parameter(table_name: str, column_names: list[str], test_data: list[str]) -> tuple[str, dict]: + """INSERT文と登録値のパラメータを返す + + Args: + table_name (str): スキーマ完全修飾のテーブル名(例:src05.com_alma) + column_names (list[str]): カラム名のリスト + test_data (list[str]): 値のリスト + + Returns: + tuple[str, dict]: [0]→INSERT文,[1]→値のパラメータ + """ + placeholders = ','.join([f':{column_name}' for column_name in column_names]) + insert_sql = f"INSERT INTO {table_name} ({','.join(column_names)}) VALUES({placeholders})" + parameter = {k: v for k, v in zip(column_names, test_data)} + + return insert_sql, parameter + + +def create_delete_sql_with_parameter(table_name: str, delete_parameter: dict[str, str]): + """DELETE文と削除条件値のパラメータを返す + + Args: + table_name (str): スキーマ完全修飾のテーブル名(例:src05.com_alma) + delete_parameter (dict[str, str]): 削除条件に使用するカラム名と値の辞書 + + Returns: + tuple[str, dict]: [0]→DELETE文,[1]→値のパラメータ + """ + where_clause_list = [] + for k in delete_parameter: + where_clause_list.append(f'{k} = :{k}') + where_clauses = ' AND '.join(where_clause_list) + delete_sql = f"DELETE FROM {table_name} WHERE {where_clauses}" + + return delete_sql, delete_parameter + + +def create_ultmarc_table_mapper_sut(line: DatFileLine, db: Database) -> UltmarcTableMapper: + """アルトマークテーブルマッパーのインスタンスを返す + + Args: + line (DatFileLine): テストデータの1行 + db (Database): 接続済みDBインスタンス + + Returns: + UltmarcTableMapper: マッパークラス + """ + layout_class = line.layout_class + factory = UltmarcTableMapperFactory() + sut = factory.create( + layout_class=layout_class, + records=line.records, + db=db + ) + + return sut + + +def is_valid_date_format(date_str: str, date_format): + """日付文字列が、与えられたフォーマットにマッチするかを検査する + + Args: + date_str (str): 日付文字列 + date_format (str, optional): 日付のフォーマット + + Returns: + _type_: 正しい日付文字列の場合、True、それ以外はFalse + """ + if date_str is None: + return False + try: + datetime.strptime(date_str, date_format) + return True + except ValueError: + return False + + +def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_name: list = None) -> None: + """テーブル同士の取得結果突き合わせ + + Args: + actual_rows (list[dict]): テスト結果の辞書リスト + expect_rows (list[dict]): 期待値の辞書リスト + ignore_col_name (list): 比較を無視するDBのカラム名. Default None. + """ + # 取得件数が一致すること + assert len(actual_rows) == len(expect_rows) + + line_number = 0 + # 1行ずつ調査 + for actual_row, expect_row in zip(actual_rows, expect_rows): + line_number += 1 + # 1カラムずつ調査 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + # テストメソッド側で個別に確認するものはスキップさせる + if ignore_col_name is not None and actual_col_name in ignore_col_name: + continue + else: + actual_value = actual_row[actual_col_name] + expect_value = expect_row[expect_col_name] + assert actual_value == expect_value, f'{line_number}行目:{actual_col_name}が、期待値と一致すること'