본문으로 이동

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

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


=== 목적 ===
=== 목적 ===
11번째 줄: 13번째 줄:


=== 기본 구조 계획 ===
=== 기본 구조 계획 ===
==== 회원관리 ====
요양원 아카이브 시스템 DB 스키마를 설계하겠습니다.
# 기능 - 로그인/로그아웃, 회원가입화면, 회원관리화면(목록,수정,삭제, 권한수정)
이제 ERD와 DB 스키마를 설계
# 권한구분 : 원장(관리자), 팀장(운영자), 직원(업무자), 가입회원
[[파일:구조설계 Image.png|왼쪽|섬네일]]
# 기록취급 : 비공개, 부분공개, 내부공개, 외부공개
----
# 기술항목 : 이름/이메일(계정)/암호/휴대폰/처리과명(콤보)/직명/권한구분(초기값-가입회원)
# 처리과명 : 원장, 운영팀, 영양팀, 케어팀, 간호팀 등
# 직명목록 : 원장, 부장, 복지사,영양사,


==== 분류관리 ====
=== 전체 테이블 구조 요약 ===
# 기능 : 기록물 등록 할 때 콤보데이터 제공 및 분류항목 사용현황 [등록], [수정], [삭제]
'''핵심 설계 원칙''': <code>RECORD</code> 테이블을 중심으로 모든 기록물이 기관·처리과·업무분류표와 연결되며, 대상(입소자/직원)에 따라 별도 연결 테이블로 분리했습니다.
# 분류명 : 대분류(기능분류명) > 중분류(업무분류명) > 소분류(기록물명/철명)
# 화면구성 : 상단(분류등록), 분류목록, 하단 분류사용현황


==== 목록화면 ====
==== 테이블 목록 (8개) ====
# 기능 : 기록물 목록 관리 [PDF목록다운] [상세정보]
{| 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>
|기록물 ↔ 직원 연결
|}
 
==== 주요 설계 포인트 ====
<code>RECORD.record_type</code>으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 <code>record_subtype</code>으로 세부 분류를 처리합니다. <code>retention_end_date</code>와 <code>disposal_status</code>로 기록물 생애주기 관리가 가능.
 
== 입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8. ==
개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상
[[파일:서버환경 이미지.png|가운데|섬네일|623x623픽셀]]
 
== Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. ==
 
=== 개발 환경 구성 가이드 ===
 
==== 1. 시놀로지 Web Station 설정 ====
DSM 패키지 센터에서 아래 순서로 설치합니다.
 
* <code>Web Station</code> → <code>PHP 8.2</code> → <code>MariaDB 10</code> → <code>phpMyAdmin</code> (선택)
 
Web Station에서 가상 호스트 생성 시 백엔드를 <code>PHP 8.2 FastCGI</code>로, 루트를 <code>/volume1/web/archive/</code>로 지정합니다.
 
==== 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>
 
==== 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>
 
==== 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를 통해 설정해야 합니다.
 
파일 업로드 경로는 <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>

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