---
# System prepended metadata

title: 電子カルテ仕様書

---

# 電子カルテ仕様書
# 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>