# 電子カルテ仕様書 # GitHub ``` https://github.com/planning-en/karte ``` # 環境構築 - php 8.1 - composer 2.6.5 - mysql Ver 8.0.35以上 以上の環境を作ってください ```jsx git clone git@github.com:planning-en/karte.git cd karte composer install npm install npm run development ``` を行ってください また、mysql内で以下のコマンドを実行してください (以下はmysqlにパスワードHoge!Huga1!でユーザー名がkarteであるユーザーを作成し、karteというデータベースを作成した後にkarteというユーザーがkarteというデータベースへの権限を渡している部分になります) ```jsx CREATE USER 'karte'@'localhost' IDENTIFIED BY 'Hoge!Huga1!'; CREATE DATABASE karte; GRANT ALL PRIVILEGES ON karte.* TO 'karte'@'localhost'; FLUSH PRIVILEGES; ``` そして、以下のコマンドでデータベースの設定を行います ```jsx php artisan migrate php artisan db:seed php artisan storage:link ``` > > また、以下のエラーが発生した場合 > ``` > Changing columns for table "patient_documents" requires Doctrine DBAL. Please install the doctrine/dbal package. > ``` > このコマンド打ってください > ``` > composer require doctrine/dbal >``` そして、起動してください ```jsx php artisan serve ``` これで正常に起動すれば ```jsx http://localhost:8000/patient ``` にアクセスできます。ユーザー名とパスワードはadmin,passwordになるはずです。 # npm run watch 以下のコマンドを打つことでコードに変更を入れることで瞬時反映されます ``` npm run watch ``` また、このコマンドを実行する上で以下のコマンドも必要なので実行してください ``` php artisan serve ``` また、ポートも変更されるため以下にアクセスしてください ``` http://localhost:3000/patient ``` # デプロイ ## デプロイ先 今現在のデプロイ先は以下です。 ``` http://140.238.53.175 ``` ポートは以下のようになっています。 ``` 5001: 5002: 5011:sample1 5012:sample2 5013:sample3 5014:yukari ``` ## httpd,apache2の場合 **環境構築**を元に **/var/www** 以下に環境を構築してください。そして以下のコマンドでビルドしてください ``` npm run development ``` そして **/etc/httpd/conf.d**以下にconfファイルを作成してください。以下は一例です。 ``` Listen 5011 <VirtualHost *:5011> DocumentRoot /var/www/karte-sample1/public <Directory "/var/www/karte-sample1"> Allowoverride All Require all granted </Directory> </VirtualHost> ``` #### SSLの設定について 必須ではありませんが、求められることが多いのでここに記述しておきます。 SSLはLet's Encryptを用いるなりで各自でSSL証明書を発行してください。 そしてssl用のconfファイルを作成してください。 ``` <VirtualHost *:443> ServerName hinokuma.kamikar.net DocumentRoot /var/www/karte-hinokuma/public ErrorLog logs/ssl_error_log CustomLog logs/ssl_access_log combined SSLCertificateFile /etc/letsencrypt/live/hinokuma.kamikar.net/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/hinokuma.kamikar.net/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/hinokuma.kamikar.net/chain.pem </VirtualHost> ``` ### 再起動 これらの記述が終わり次第httpdをrestartしてください ``` systemctl restart httpd ``` # .env ```jsx APP_NAME=Laravel APP_ENV= APP_KEY=base64:J5JiS16H59AW0xel/dqPGcLQTtnUnmu5qxvKGpK/5YI= APP_DEBUG=true APP_URL=http://localhost:8000 ASSET_URL="${APP_URL}" LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=karte DB_USERNAME=karte DB_PASSWORD=Hoge!Huga1! BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DISK=local QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 MEMCACHED_HOST=127.0.0.1 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=programinghayao@gmail.com MAIL_PASSWORD=nqlsxzoziiuhcpmh MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=programinghayao@gmail.com MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID=1622998 PUSHER_APP_KEY=8db6777f04d4f5304418 PUSHER_APP_SECRET=0c7bde3c7815b151a2bf PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=ap3 VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_HOST="${PUSHER_HOST}" MIX_PUSHER_PORT="${PUSHER_PORT}" MIX_PUSHER_SCHEME="${PUSHER_SCHEME}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" MIX_DEV_SERVER_PORT=3000 ``` # テーブル定義 > ### patients | | type | null | 概要 | | --- | --- | --- | --- | | id | id | not null | | | name | string | not null | | | name_kana | string | null | | | varcode_id | integer | not null | | | gender | unsignedTinyInteger | not null | | | birthday | data | not null | | | director_check | bool | not null | | | timestamp | data | not null | | ### patient_documents | | type | null | 概要 | | --- | --- | --- | --- | | id | id | not null | | | patient_id | id | not null | | | type | integer | not null | ドキュメントごとにidがあります。 | | url | string | not null | | | memo_data | json | null | 手書きデータはこちらに入ります。 | | | | | | ### template_img | | type | null | 概要 | | --- | --- | --- | --- | | id | id | not null | | | img_path | string | not null | | | type | integer | not null | ドキュメントごとにidがあります。 | | | | | | ### show_title | | type | null | 概要 | | --- | --- | --- | --- | | id | id | not null || | name | string | not null|ログイン画面で出るタイトルです | # ブランチ、コミットメッセージについて ## Issueについて それぞれ大まかでも構わないのでIssueを立ててください。 ## ブランチ名について Issueを立てたらIssue番号に沿ってdevelopブランチから **issue/[issue番号]** (例:issue/6)でブランチを作成してください。Issueの作業が終わったらdevelopブランチにmerge requestを送っといてください。確認します。 ## コミットメッセージについて 何をしたのかを明記してください。[add][fix][change]等を用いて記述してください。 また、最後にはどのissueか判断するために **#[issue番号]** (例:[add]画像投稿機能実装#6)を明記しておいてください # ディレクトリ構造 <details><summary>詳細を見る</summary><div> ├── .DS_Store<br> ├── .editorconfig<br> ├── .git<br> │   ├── HEAD<br> │   ├── branches<br> │   ├── config<br> │   ├── description<br> │   ├── hooks<br> │   │   ├── applypatch-msg.sample<br> │   │   ├── commit-msg.sample<br> │   │   ├── fsmonitor-watchman.sample<br> │   │   ├── post-update.sample<br> │   │   ├── pre-applypatch.sample<br> │   │   ├── pre-commit.sample<br> │   │   ├── pre-merge-commit.sample<br> │   │   ├── pre-push.sample<br> │   │   ├── pre-rebase.sample<br> │   │   ├── pre-receive.sample<br> │   │   ├── prepare-commit-msg.sample<br> │   │   └── update.sample<br> │   ├── index<br> │   ├── info<br> │   │   └── exclude<br> │   ├── logs<br> │   │   ├── HEAD<br> │   │   └── refs<br> │   │   ├── heads<br> │   │   │   └── main<br> │   │   └── remotes<br> │   │   └── origin<br> │   │   └── HEAD<br> │   ├── objects<br> │   │   ├── info<br> │   │   └── pack<br> │   │   ├── pack-ec7c9507ab8cbc303a615447313a7f27a1128bf1.idx<br> │   │   └── pack-ec7c9507ab8cbc303a615447313a7f27a1128bf1.pack<br> │   ├── packed-refs<br> │   └── refs<br> │   ├── heads<br> │   │   └── main<br> │   ├── remotes<br> │   │   └── origin<br> │   │   └── HEAD<br> │   └── tags<br> ├── app<br> │   ├── .DS_Store<br> │   ├── Console<br> │   │   └── Kernel.php<br> │   ├── Enums<br> │   │   ├── BeforeAfter.php<br> │   │   ├── Gender.php<br> │   │   ├── PatientDocumentType.php<br> │   │   ├── PaymentType.php<br> │   │   ├── TreatmentPlace.php<br> │   │   ├── UserType.php<br> │   │   └── Week.php<br> │   ├── Events<br> │   │   └── VisitorPatientAddEvent.php<br> │   ├── Exceptions<br> │   │   └── Handler.php<br> │   ├── Http<br> │   │   ├── Controllers<br> │   │   │   ├── API<br> │   │   │   │   └── MediaUploadController.php<br> │   │   │   ├── Auth<br> │   │   │   │   └── LoginController.php<br> │   │   │   ├── Controller.php<br> │   │   │   ├── DataConfirmController.php<br> │   │   │   ├── DirectorListController.php<br> │   │   │   ├── MenuResistController.php<br> │   │   │   ├── NewPatientController.php<br> │   │   │   ├── PatientController.php<br> │   │   │   ├── PatientDocumentController.php<br> │   │   │   ├── PatientRegistController.php<br> │   │   │   ├── PatinenDataController.php<br> │   │   │   ├── PrintingController.php<br> │   │   │   ├── ReceptListController.php<br> │   │   │   ├── SalesController.php<br> │   │   │   ├── ShowTitleController.php<br> │   │   │   ├── ShowTopController.php<br> │   │   │   ├── StaffController.php<br> │   │   │   ├── StaffDashboardController.php<br> │   │   │   ├── TemplateImgController.php<br> │   │   │   └── TitleController.php<br> │   │   ├── Kernel.php<br> │   │   ├── Middleware<br> │   │   │   ├── Authenticate.php<br> │   │   │   ├── EncryptCookies.php<br> │   │   │   ├── PreventRequestsDuringMaintenance.php<br> │   │   │   ├── RedirectIfAuthenticated.php<br> │   │   │   ├── TrimStrings.php<br> │   │   │   ├── TrustHosts.php<br> │   │   │   ├── TrustProxies.php<br> │   │   │   ├── ValidateSignature.php<br> │   │   │   └── VerifyCsrfToken.php<br> │   │   ├── Requests<br> │   │   │   ├── PatientDocumentRequest.php<br> │   │   │   ├── PatientRequest.php<br> │   │   │   ├── ShowTitleRequest.php<br> │   │   │   ├── TemplateImgRequest.php<br> │   │   │   ├── TitleRequest.php<br> │   │   │   └── UserRequest.php<br> │   │   └── UseCase<br> │   │   ├── Common<br> │   │   │   └── SaveMediaUseCase.php<br> │   │   ├── Patient<br> │   │   │   ├── CreatePatientDocument.php<br> │   │   │   ├── DeletePatientDocument.php<br> │   │   │   ├── GetPatient.php<br> │   │   │   ├── GetPatientData.php<br> │   │   │   ├── StorePatientDocument.php<br> │   │   │   ├── UpdatePatient.php<br> │   │   │   └── UpdatePatientDocument.php<br> │   │   ├── Sale<br> │   │   │   └── GetSaleData.php<br> │   │   ├── ShowTitle<br> │   │   │   ├── GetShowTitle.php<br> │   │   │   └── UpdateShowTitle.php<br> │   │   ├── TemplateImg<br> │   │   │   └── UpdateTemplateImg.php<br> │   │   ├── Title<br> │   │   │   ├── GetTitle.php<br> │   │   │   ├── StoreTitle.php<br> │   │   │   └── UpdateTitle.php<br> │   │   └── Treatment<br> │   │   └── StoreTreatment.php<br> │   ├── Models<br> │   │   ├── BaseModel.php<br> │   │   ├── InterviewSheet.php<br> │   │   ├── Patient.php<br> │   │   ├── PatientDocument.php<br> │   │   ├── Sale.php<br> │   │   ├── ShowTitle.php<br> │   │   ├── TemplateImg.php<br> │   │   ├── Title.php<br> │   │   ├── Treatment.php<br> │   │   ├── TreatmentMenu.php<br> │   │   ├── TreatmentMenuGroup.php<br> │   │   ├── User.php<br> │   │   ├── UserInfo.php<br> │   │   └── VisitorPatient.php<br> │   └── Providers<br> │   ├── AppServiceProvider.php<br> │   ├── AuthServiceProvider.php<br> │   ├── BroadcastServiceProvider.php<br> │   ├── EventServiceProvider.php<br> │   └── RouteServiceProvider.php<br> ├── artisan<br> ├── bootstrap<br> │   ├── app.php<br> │   └── cache<br> │   └── .gitignore<br> ├── composer.json<br> ├── composer.lock<br> ├── config<br> │   ├── app.php<br> │   ├── auth.php<br> │   ├── broadcasting.php<br> │   ├── cache.php<br> │   ├── const.php<br> │   ├── cors.php<br> │   ├── database.php<br> │   ├── filesystems.php<br> │   ├── hashing.php<br> │   ├── logging.php<br> │   ├── mail.php<br> │   ├── queue.php<br> │   ├── sanctum.php<br> │   ├── services.php<br> │   ├── session.php<br> │   └── view.php<br> ├── database<br> │   ├── .DS_Store<br> │   ├── .gitignore<br> │   ├── factories<br> │   │   └── UserFactory.php<br> │   ├── migrations<br> │   └── seeders<br> │   ├── DatabaseSeeder.php<br> │   ├── PatientSeeder.php<br> │   ├── SaleSeeder.php<br> │   ├── ShowTitleSeeder.php<br> │   ├── TitleSeeder.php<br> │   ├── TreatmentMenuSeeder.php<br> │   ├── TreatmentSeeder.php<br> │   └── UserSeeder.php<br> ├── lang<br> │   ├── .DS_Store<br> │   ├── en<br> │   │   ├── auth.php<br> │   │   ├── pagination.php<br> │   │   ├── passwords.php<br> │   │   └── validation.php<br> │   └── ja<br> │   ├── auth.php<br> │   ├── enums.php<br> │   ├── pagination.php<br> │   ├── passwords.php<br> │   ├── validation-inline.php<br> │   ├── validation-nova-inline.php<br> │   ├── validation-nova.php<br> │   └── validation.php<br> ├── package-lock.json<br> ├── package.json<br> ├── phpunit.xml<br> ├── public<br> │   ├── .DS_Store<br> │   ├── .htaccess<br> │   ├── favicon.ico<br> │   ├── image<br> │   │   ├── cake_img.jpg<br> │   │   ├── graph_1.png<br> │   │   ├── graph_2.png<br> │   │   ├── graph_3.png<br> │   │   ├── graph_4.png<br> │   │   ├── gyoza_img.jpg<br> │   │   ├── hamburger_img.jpg<br> │   │   ├── ice_img.jpg<br> │   │   ├── list_img.png<br> │   │   ├── noimg.png<br> │   │   ├── person.png<br> │   │   ├── sample.png<br> │   │   ├── tea_img.jpg<br> │   │   ├── warning_img.png<br> │   │   └── 問診票テンプレート.jpg<br> │   ├── index.php<br> │   ├── js<br> │   │   └── bootstrap.js<br> │   ├── robots.txt<br> │   ├── splide<br> │   │   ├── splide-core.min.css<br> │   │   ├── splide-default.min.css<br> │   │   ├── splide.min.css<br> │   │   └── splide.min.js<br> │   └── svg<br> │   └── symbol-defs.svg<br> ├── resources<br> │   ├── .DS_Store<br> │   ├── js<br> │   │   ├── app.js<br> │   │   ├── bootstrap.js<br> │   │   └── components<br> │   │   ├── AsyncPatientHeader.vue<br> │   │   ├── BodyTypeImagesComponent.vue<br> │   │   ├── MediaUploadComponent.vue<br> │   │   ├── ModalMediaUploadComponent.vue<br> │   │   ├── ModalWindowComponent.vue<br> │   │   ├── PriceEditorComponent.vue<br> │   │   ├── ReceptListComponent.vue<br> │   │   └── TreatmentMenuFormComponent.vue<br> │   ├── sass<br> │   │   ├── _handWritten.scss<br> │   │   ├── _jsCalender.scss<br> │   │   ├── _saveCheckDisplay.scss<br> │   │   ├── _style.scss<br> │   │   ├── _warningDisplay.scss<br> │   │   ├── app.scss<br> │   │   ├── base<br> │   │   │   ├── _normalize.scss<br> │   │   │   ├── _reset.scss<br> │   │   │   └── _variable.scss<br> │   │   ├── helper<br> │   │   │   ├── _align.scss<br> │   │   │   ├── _animate.scss<br> │   │   │   ├── _border.scss<br> │   │   │   ├── _clamp.scss<br> │   │   │   ├── _color.scss<br> │   │   │   ├── _cursor.scss<br> │   │   │   ├── _display.scss<br> │   │   │   ├── _flex.scss<br> │   │   │   ├── _font.scss<br> │   │   │   ├── _grid.scss<br> │   │   │   ├── _margin.scss<br> │   │   │   ├── _position.scss<br> │   │   │   ├── _sizing.scss<br> │   │   │   └── _zIndex.scss<br> │   │   ├── layout<br> │   │   │   ├── _column2.scss<br> │   │   │   ├── _footer.scss<br> │   │   │   ├── _header.scss<br> │   │   │   └── _layout.scss<br> │   │   └── module<br> │   │   ├── _block.scss<br> │   │   └── _element.scss<br> │   └── views<br> │   ├── auth<br> │   │   └── login.blade.php<br> │   ├── components<br> │   │   ├── addName.blade.php<br> │   │   ├── calenderBedween.blade.php<br> │   │   ├── confirmDisplay.blade.php<br> │   │   ├── datalist.blade.php<br> │   │   ├── directorKarte.blade.php<br> │   │   ├── handWrittenComponent.blade.php<br> │   │   ├── jsCalender.blade.php<br> │   │   ├── kanjalist.blade.php<br> │   │   ├── menuListItem.blade.php<br> │   │   ├── menuListParts.blade.php<br> │   │   ├── saveCheckDisplay.blade.php<br> │   │   ├── select_year_month_day.blade.php<br> │   │   ├── sumlist.blade.php<br> │   │   ├── titlelist.php<br> │   │   ├── treatmentmenu.blade.php<br> │   │   └── warningDisplay.blade.php<br> │   ├── dataconfirm.blade.php<br> │   ├── directorlist<br> │   │   ├── directorcheck.blade.php<br> │   │   └── directorlist.blade.php<br> │   ├── header-tablet.blade.php<br> │   ├── header.blade.php<br> │   ├── layouts<br> │   │   ├── app.blade.php<br> │   │   ├── noheader.blade.php<br> │   │   ├── onecolumn.blade.php<br> │   │   ├── tablet.blade.php<br> │   │   └── twocolumn.blade.php<br> │   ├── menuresist.blade.php<br> │   ├── newpatient.blade.php<br> │   ├── patient<br> │   │   ├── create.blade.php<br> │   │   ├── detail.blade.php<br> │   │   ├── edit.blade.php<br> │   │   ├── index.blade.php<br> │   │   └── template.blade.php<br> │   ├── patientlist<br> │   │   ├── chart.blade.php<br> │   │   ├── patientedit.blade.php<br> │   │   └── patientlist.blade.php<br> │   ├── patientregist.blade.php<br> │   ├── printing<br> │   │   ├── printing00.blade.php<br> │   │   ├── printing01.blade.php<br> │   │   ├── printing02.blade.php<br> │   │   └── printing03.blade.php<br> │   ├── receptlist.blade.php<br> │   ├── sales.blade.php<br> │   ├── settemplateimg.blade.php<br> │   ├── staff.blade.php<br> │   ├── staff_dashboard<br> │   │   ├── index.blade.php<br> │   │   └── waiting.blade.php<br> │   ├── titlechange.blade.php<br> │   ├── top.blade.php<br> │   └── welcome.blade.php<br> ├── routes<br> │   ├── api.php<br> │   ├── auth.php<br> │   ├── channels.php<br> │   ├── console.php<br> │   └── web.php<br> ├── storage<br> │   ├── .DS_Store<br> │   ├── app<br> │   │   ├── .gitignore<br> │   │   └── public<br> │   │   └── .gitignore<br> │   ├── framework<br> │   │   ├── .gitignore<br> │   │   ├── cache<br> │   │   │   ├── .gitignore<br> │   │   │   └── data<br> │   │   │   └── .gitignore<br> │   │   ├── sessions<br> │   │   │   └── .gitignore<br> │   │   ├── testing<br> │   │   │   └── .gitignore<br> │   │   └── views<br> │   │   └── .gitignore<br> │   └── logs<br> │   └── .gitignore<br> ├── supervisord.pid<br> ├── tests<br> │   ├── .DS_Store<br> │   ├── CreatesApplication.php<br> │   ├── Feature<br> │   │   └── ExampleTest.php<br> │   ├── TestCase.php<br> │   └── Unit<br> │   └── ExampleTest.php<br> ├── vite.config.js<br> └── webpack.mix.js<br> ├── .gitattributes<br> ├── .gitignore<br> </div></details>