요양원 기록물 관리 시스템 구축안: 두 판 사이의 차이
| 50번째 줄: | 50번째 줄: | ||
==== 주요 설계 포인트 ==== | ==== 주요 설계 포인트 ==== | ||
<code>RECORD.record_type</code>으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 <code>record_subtype</code>으로 세부 분류를 처리합니다. <code>retention_end_date</code>와 <code>disposal_status</code>로 기록물 생애주기 관리가 | <code>RECORD.record_type</code>으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 <code>record_subtype</code>으로 세부 분류를 처리합니다. <code>retention_end_date</code>와 <code>disposal_status</code>로 기록물 생애주기 관리가 가능. | ||
== 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. == | == 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. == | ||
2026년 4월 27일 (월) 21:15 판
요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기
목적
기록관리업무 목적 - 행정의 투명과 책임성, 증거성, 업무의 효율성, 활용성, 역사 보존 가능성.
목표
- 종이문서 관리 체계에서 전자 문서 관리체계로 전환
- 업무자 개인 저장소에서 공용 저장소로 통합 저장
- 문서 파일명 체계 개선 → 날짜+업무명+문서명+처리과명+버전 정보+맥락 작성
- 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류
기본 구조 계획
요양원 아카이브 시스템 DB 스키마를 설계하겠습니다. 이제 ERD와 DB 스키마를 설계

전체 테이블 구조 요약
핵심 설계 원칙: RECORD 테이블을 중심으로 모든 기록물이 기관·처리과·업무분류표와 연결되며, 대상(입소자/직원)에 따라 별도 연결 테이블로 분리했습니다.
테이블 목록 (8개)
| 테이블 | 역할 |
|---|---|
INSTITUTION
|
기관 등록 — 요양원 기본 정보 |
DEPARTMENT
|
처리과 — 기관 내 부서 단위 |
RECORD_CLASSIFICATION
|
업무분류표 — 보존기간·폐기방법 포함 |
EMPLOYEE
|
직원 — 인사 기록 주체 |
RESIDENT
|
입소자 — 의무·간호 기록 주체 |
RECORD
|
기록물 — 모든 문서의 핵심 테이블 |
RESIDENT_RECORD
|
기록물 ↔ 입소자 연결 |
EMPLOYEE_RECORD
|
기록물 ↔ 직원 연결 |
주요 설계 포인트
RECORD.record_type으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 record_subtype으로 세부 분류를 처리합니다. retention_end_date와 disposal_status로 기록물 생애주기 관리가 가능.
입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.
개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상

Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다.
환경에 맞게 구체적인 개발 구성을 설계하겠습니다.
시놀리지 NAS 환경의 전체 스택 구조를 먼저 보여드리겠습니다.
이 스택을 바탕으로 실제 개발에 필요한 핵심 내용을 정리합니다.
개발 환경 구성 가이드
1. 시놀로지 Web Station 설정
DSM 패키지 센터에서 아래 순서로 설치합니다.
Web Station→PHP 8.2→MariaDB 10→phpMyAdmin(선택)
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