본문으로 이동

요양원 기록물 관리 시스템 구축안

원불교기록관리소 위키

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

목적

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

목표

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

기본 구조 계획

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

ERD 기반으로 전체 스키마 SQL


전체 테이블 구조 요약

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

테이블 목록 (8개)

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

주요 설계 포인트

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

SQL DDL 또는 특정 테이블의 상세 컬럼 설명이 필요하시면 말씀해 주세요.

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

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

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

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

시놀리지 NAS 환경의 전체 스택 구조를 먼저 보여드리겠습니다.

이 스택을 바탕으로 실제 개발에 필요한 핵심 내용을 정리합니다.


개발 환경 구성 가이드

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