요양원 기록물 관리 시스템 구축안: 두 판 사이의 차이
| 57번째 줄: | 57번째 줄: | ||
== 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. == | == 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. == | ||
개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상 | 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상 | ||
[[파일:서버환경 이미지.png|가운데|섬네일|623x623픽셀]] | |||
== Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. == | == Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. == | ||
2026년 4월 27일 (월) 21:12 판
요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기
목적
기록관리업무 목적 - 행정의 투명과 책임성, 증거성, 업무의 효율성, 활용성, 역사 보존 가능성.
목표
- 종이문서 관리 체계에서 전자 문서 관리체계로 전환
- 업무자 개인 저장소에서 공용 저장소로 통합 저장
- 문서 파일명 체계 개선 → 날짜+업무명+문서명+처리과명+버전 정보+맥락 작성
- 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류
기본 구조 계획
요양원 아카이브 시스템 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_date와 disposal_status로 기록물 생애주기 관리가 가능합니다.
SQL DDL 또는 특정 테이블의 상세 컬럼 설명이 필요하시면 말씀해 주세요.
입력 내용: 개발 환경-시놀리지 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