본문으로 이동

요양원 기록물 관리 시스템 구축안: 두 판 사이의 차이

원불교기록관리소 위키
태그: 되돌려진 기여 시각 편집
편집 요약 없음
 
(같은 사용자의 중간 판 19개는 보이지 않습니다)
1번째 줄: 1번째 줄:
요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기
요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기  
* [[요양원 기록물 아카이브 데이터베이스 구조]]
* [[요양원 아카이브 메뉴 구성]]


=== 목적 ===
=== 목적 ===
10번째 줄: 12번째 줄:
* 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류
* 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류


=== 데이터베이스 기본 구조 ===
=== 기본 구조 계획 ===
요양원 아카이브 시스템 DB 스키마를 설계하겠습니다.
이제 ERD와 DB 스키마를 설계
[[파일:구조설계 Image.png|왼쪽|섬네일]]
----


== 🗂️ 1. 데이터베이스 기본 구조 ==
=== 전체 테이블 구조 요약 ===
'''핵심 설계 원칙''': <code>RECORD</code> 테이블을 중심으로 모든 기록물이 기관·처리과·업무분류표와 연결되며, 대상(입소자/직원)에 따라 별도 연결 테이블로 분리했습니다.


=== 📌 테이블 1: users (사용자 관리) ===
==== 테이블 목록 (8개) ====
{| class="wikitable"
!테이블
!역할
|-
|<code>INSTITUTION</code>
|기관 등록 — 요양원 기본 정보
|-
|<code>DEPARTMENT</code>
|처리과 — 기관 내 부서 단위
|-
|<code>RECORD_CLASSIFICATION</code>
|업무분류표 — 보존기간·폐기방법 포함
|-
|<code>EMPLOYEE</code>
|직원 — 인사 기록 주체
|-
|<code>RESIDENT</code>
|입소자 — 의무·간호 기록 주체
|-
|<code>RECORD</code>
|'''기록물''' — 모든 문서의 핵심 테이블
|-
|<code>RESIDENT_RECORD</code>
|기록물 ↔ 입소자 연결
|-
|<code>EMPLOYEE_RECORD</code>
|기록물 ↔ 직원 연결
|}


* id (PK)
==== 주요 설계 포인트 ====
* username
<code>RECORD.record_type</code>으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 <code>record_subtype</code>으로 세부 분류를 처리합니다. <code>retention_end_date</code>와 <code>disposal_status</code>로 기록물 생애주기 관리가 가능.
* password (hash)
* role (admin / staff)
* created_at


=== 📌 테이블 2: record_categories (기록 분류) ===
== 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. ==
개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상
[[파일:서버환경 이미지.png|가운데|섬네일|623x623픽셀]]


* id (PK)
== Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. ==
* category_name (예: 투약기록, 낙상보고, 회의록, 인수인계, 공지 등)
* description


=== 📌 테이블 3: records (기록 본문) ===
=== 개발 환경 구성 가이드 ===


* id (PK)
==== 1. 시놀로지 Web Station 설정 ====
* category_id (FK)
DSM 패키지 센터에서 아래 순서로 설치합니다.
* title
* content (텍스트 또는 HTML)
* writer_id (FK)
* created_at
* updated_at


=== 📌 테이블 4: record_files (첨부파일) ===
* <code>Web Station</code> → <code>PHP 8.2</code> → <code>MariaDB 10</code> → <code>phpMyAdmin</code> (선택)


* id (PK)
Web Station에서 가상 호스트 생성 시 백엔드를 <code>PHP 8.2 FastCGI</code>로, 루트를 <code>/volume1/web/archive/</code>로 지정합니다.
* record_id (FK)
* file_path
* original_name
* uploaded_at


== 🧩 2. 기능 구조 ==
==== 2. MariaDB 초기 설정 ====
sql
<code>-- DB 및 사용자 생성
CREATE DATABASE archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'archive_user'@'localhost' IDENTIFIED BY '강력한_패스워드';
GRANT ALL PRIVILEGES ON archive_db.* TO 'archive_user'@'localhost';
FLUSH PRIVILEGES;</code>


=== 🔐 A. 로그인/권한 ===
==== 3. PHP 8.2 필수 확장 모듈 ====
Web Station → PHP 설정에서 활성화해야 할 모듈입니다.
{| class="wikitable"
!모듈
!용도
|-
|<code>pdo_mysql</code>
|MariaDB 연결 (PDO)
|-
|<code>mbstring</code>
|한글 처리
|-
|<code>fileinfo</code>
|업로드 파일 MIME 검증
|-
|<code>zip</code>
|문서 압축/해제
|-
|<code>json</code>
|REST API 응답
|-
|<code>openssl</code>
|암호화·HTTPS
|}


* 세션 기반 로그인
==== 4. 디렉토리 구조 ====
* 관리자: 카테고리 관리, 사용자 관리
<code>/volume1/web/archive/
* 직원: 기록 등록/조회
├── index.php              # 진입점 (프론트 컨트롤러)
├── config/
│  ├── database.php        # DB 연결 설정
│  └── app.php            # 앱 전역 설정
├── api/                    # REST API 엔드포인트
│  ├── institution.php    # 기관 관리
│  ├── record.php          # 기록물 CRUD
│  ├── classification.php  # 업무분류표
│  └── employee.php        # 직원/입소자
├── uploads/                # 원문 파일 (외부 접근 차단)
│  └── .htaccess          # direct access 금지
└── lib/
    ├── DB.php              # PDO 싱글턴 클래스
    ├── Auth.php            # 인증·권한
    └── FileManager.php    # 파일 업로드·관리</code>


=== 📝 B. 기록 등록 기능 ===
==== 5. DB 연결 클래스 (PDO 기반) ====
php
<code>'''<?php'''
// config/database.php - MariaDB PDO 연결 설정
class DB {
    private static ?PDO $instance = null;
    public static function connect(): PDO {
        if (self::$instance === null) {
            $dsn = 'mysql:host=localhost;dbname=archive_db;charset=utf8mb4';
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES  => false, // 실제 prepared statement 사용
            ];
            self::$instance = new PDO($dsn, 'archive_user', '패스워드', $options);
        }
        return self::$instance;
    }
}</code>


* 카테고리 선택
==== 6. 시놀로지 특이사항 (주의점) ====
* 제목 입력
<code>php.ini</code> 커스텀 설정은 Web Station PHP 프로필 편집기에서만 적용됩니다. <code>/etc/php.ini</code>를 직접 수정하면 DSM 업데이트 초기화되므로 반드시 Web Station UI를 통해 설정해야 합니다.
* 내용 입력(간단한 에디터)
* 파일 첨부(사진, PDF 등)
* 저장 DB + NAS 내부 폴더에 파일 저장


=== 🔍 C. 기록 검색/조회 기능 ===
파일 업로드 경로는 <code>/volume1/</code> 하위로 지정하고, <code>www-data</code> 사용자에게 쓰기 권한을 부여해야 합니다.
검색 조건:


* 카테고리
bash
* 기간
<code># SSH 접속 후 권한 설정
* 제목/내용 키워드
chown -R http:http /volume1/web/archive/uploads
* 작성자
chmod 750 /volume1/web/archive/uploads</code>
 
조회 화면:
 
* 목록(페이징)
* 상세보기(본문 + 첨부파일 다운로드)
 
=== 🛠️ D. 관리자 기능 ===
 
* 카테고리 추가/수정/삭제
* 사용자 추가/비밀번호 초기화
* 로그(선택)
 
== 3. 디렉토리 구조 예시 (Synology WebStation 기준) ==
 
/web/records-system/
 
    index.php
 
    /config/
 
        db.php
 
    /controllers/
 
        AuthController.php
 
        RecordController.php
 
        AdminController.php
 
    /models/
 
        User.php
 
        Record.php
 
        Category.php
 
        File.php
 
    /views/
 
        login.php
 
        record_list.php
 
        record_view.php
 
        record_form.php
 
        admin_users.php
 
        admin_categories.php
 
    /uploads/
 
        /2025/
 
            /01/
 
                file1.pdf
 
                photo.jpg
 
== 4. 개발 흐름 제안 ==
 
# '''DB 설계 및 테이블 생성'''
# '''기본 라우팅(index.php에서 controller 분기)'''
# '''로그인/세션 처리 구현'''
# '''기록 CRUD 구현'''
# '''검색 기능 구현'''
# '''관리자 기능 구현'''
# '''UI 정리 및 권한 체크'''
 
== 💡 추가로 고려하면 좋은 요소 ==
 
* 기록 수정 이력(Log) 저장 여부
* 첨부파일 용량 제한
* 백업 자동화(NAS 스케줄러 활용)
* PDF 출력 기능(필요 시)
* 모바일 화면 대응

2026년 5월 2일 (토) 08:12 기준 최신판

요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기

목적

기록관리업무 목적 - 행정의 투명과 책임성, 증거성, 업무의 효율성, 활용성, 역사 보존 가능성.

목표

  • 종이문서 관리 체계에서 전자 문서 관리체계로 전환
  • 업무자 개인 저장소에서 공용 저장소로 통합 저장
  • 문서 파일명 체계 개선 → 날짜+업무명+문서명+처리과명+버전 정보+맥락 작성
  • 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류

기본 구조 계획

요양원 아카이브 시스템 DB 스키마를 설계하겠습니다. 이제 ERD와 DB 스키마를 설계


전체 테이블 구조 요약

핵심 설계 원칙: RECORD 테이블을 중심으로 모든 기록물이 기관·처리과·업무분류표와 연결되며, 대상(입소자/직원)에 따라 별도 연결 테이블로 분리했습니다.

테이블 목록 (8개)

테이블 역할
INSTITUTION 기관 등록 — 요양원 기본 정보
DEPARTMENT 처리과 — 기관 내 부서 단위
RECORD_CLASSIFICATION 업무분류표 — 보존기간·폐기방법 포함
EMPLOYEE 직원 — 인사 기록 주체
RESIDENT 입소자 — 의무·간호 기록 주체
RECORD 기록물 — 모든 문서의 핵심 테이블
RESIDENT_RECORD 기록물 ↔ 입소자 연결
EMPLOYEE_RECORD 기록물 ↔ 직원 연결

주요 설계 포인트

RECORD.record_type으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 record_subtype으로 세부 분류를 처리합니다. retention_end_datedisposal_status로 기록물 생애주기 관리가 가능.

입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.

개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상

Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다.

개발 환경 구성 가이드

1. 시놀로지 Web Station 설정

DSM 패키지 센터에서 아래 순서로 설치합니다.

  • Web StationPHP 8.2MariaDB 10phpMyAdmin (선택)

Web Station에서 가상 호스트 생성 시 백엔드를 PHP 8.2 FastCGI로, 루트를 /volume1/web/archive/로 지정합니다.

2. MariaDB 초기 설정

sql

-- DB 및 사용자 생성
CREATE DATABASE archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'archive_user'@'localhost' IDENTIFIED BY '강력한_패스워드';
GRANT ALL PRIVILEGES ON archive_db.* TO 'archive_user'@'localhost';
FLUSH PRIVILEGES;

3. PHP 8.2 필수 확장 모듈

Web Station → PHP 설정에서 활성화해야 할 모듈입니다.

모듈 용도
pdo_mysql MariaDB 연결 (PDO)
mbstring 한글 처리
fileinfo 업로드 파일 MIME 검증
zip 문서 압축/해제
json REST API 응답
openssl 암호화·HTTPS

4. 디렉토리 구조

/volume1/web/archive/
├── index.php               # 진입점 (프론트 컨트롤러)
├── config/
│   ├── database.php        # DB 연결 설정
│   └── app.php             # 앱 전역 설정
├── api/                    # REST API 엔드포인트
│   ├── institution.php     # 기관 관리
│   ├── record.php          # 기록물 CRUD
│   ├── classification.php  # 업무분류표
│   └── employee.php        # 직원/입소자
├── uploads/                # 원문 파일 (외부 접근 차단)
│   └── .htaccess           # direct access 금지
└── lib/
    ├── DB.php              # PDO 싱글턴 클래스
    ├── Auth.php            # 인증·권한
    └── FileManager.php     # 파일 업로드·관리

5. DB 연결 클래스 (PDO 기반)

php

<?php
// config/database.php - MariaDB PDO 연결 설정

class DB {
    private static ?PDO $instance = null;

    public static function connect(): PDO {
        if (self::$instance === null) {
            $dsn = 'mysql:host=localhost;dbname=archive_db;charset=utf8mb4';
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false, // 실제 prepared statement 사용
            ];
            self::$instance = new PDO($dsn, 'archive_user', '패스워드', $options);
        }
        return self::$instance;
    }
}

6. 시놀로지 특이사항 (주의점)

php.ini 커스텀 설정은 Web Station PHP 프로필 편집기에서만 적용됩니다. /etc/php.ini를 직접 수정하면 DSM 업데이트 시 초기화되므로 반드시 Web Station UI를 통해 설정해야 합니다.

파일 업로드 경로는 /volume1/ 하위로 지정하고, www-data 사용자에게 쓰기 권한을 부여해야 합니다.

bash

# SSH 접속 후 권한 설정
chown -R http:http /volume1/web/archive/uploads
chmod 750 /volume1/web/archive/uploads