מערכת ניהול הסכמת מטופלים מבוססת בלוקצ'יין

ניירת של הסכמות אובדת, וניתן לתארך רשומות לאחור, מה שמסכן עמידה ב-GDPR ו-HIPAA. אנחנו מפתחים פלטפורמות לניהול הסכמות מבוססות בלוקצ'יין שהופכות כל אישור לרשומה בלתי ניתנת לשינוי וניתנת לביקורת, עם יכולת ביטול מיידית. הצוות שלנו מספק פרויקטים סוהריים—מביקורת תהליכים ועד הטמעה ותמיכה שוטפת—תוך הבטחת תוקף משפטי ושקיפות.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

עבדנו עם מרכזים רפואיים שבהם טפסי הסכמה מנייר אבדו ורשומות זויפו בדיעבד. GDPR דורש הסכמה מפורשת ומדעת; HIPAA מחייב הרשאה לכל חשיפה של מידע בריאותי מוגן. מערכת ניהול ההסכמות שלנו מבוססת בלוקצ'יין משתמשת בחוזים חכמים לניהול הסכמת מטופלים לנתוני בריאות. הבלוקצ'יין הופך הסכמה לרשומה ניתנת לאימות וביקורת שניתן לבטל באופן מיידי. בפרויקט אחד, מטופל ביטל הסכמה בזמן שבית החולים המשיך להשתמש בנתונים — הבלוקצ'יין תיעד את ההפרה, ועזר להימנע מקנס.

למה בלוקצ'יין לניהול הסכמות?

ארכיוני נייר ומאגרי מידע מרכזיים לא נותנים למטופלים שליטה אמיתית. הם ניתנים לזיוף או לשינוי רטרואקטיבי. מערכת בלוקצ'יין אמינה פי 5: כל עסקה היא בלתי הפיכה, זמן החתימה קבוע, והגישות מתועדות. יישמנו חוזים עם הסכמה גרעינית: לא "כן/לא" בינארי אלא בחירה של 8 קטגוריות נתונים (אבחנות, תוצאות מעבדה, דימות, גנטיקה, בריאות נפשית, סטטוס HIV, שימוש בחומרים, מרשמים) ו-6 מטרות (טיפול, תשלום, פעולות בריאות, מחקר, שיפור איכות, תיאום טיפול). הניסיון של הצוות שלנו: 5+ שנים בפיתוח בלוקצ'יין לפרויקטים רפואיים, מהנדסים מוסמכים, 30+ יישומים מוצלחים. אנו מבטיחים תוקף משפטי ועמידה ב-GDPR/HIPAA.

קריטריון ארכיון נייר מאגר מרכזי הפתרון הבלוקצ'יין שלנו
שלמות רשומה פגיע לזיוף מנהל יכול לשנות בלתי ניתן לשינוי
שקיפות גישה אין יומנים ניתנים למחיקה מסלול ביקורת מלא על השרשרת
שליטת מטופל אפס תלוי בספק המטופל חותם ומבטל בעצמו
זמן עיבוד ימים שעות שניות
עמידה ב-GDPR/HIPAA קשה דורש התאמות מובנה בארכיטקטורה

יישום טכני

עיצוב חוזה חכם

חוזה Solidity (הרחב)
contract ConsentRegistry {
    enum ConsentStatus { ACTIVE, REVOKED, EXPIRED }
    enum DataCategory { DIAGNOSIS, LAB_RESULTS, PRESCRIPTIONS, IMAGING, MENTAL_HEALTH, GENETIC, HIV_STATUS, SUBSTANCE_ABUSE }
    enum Purpose {
        TREATMENT, // непосредственное лечение
        PAYMENT, // страховые и платёжные операции
        HEALTHCARE_OPS, // операционная деятельность
        RESEARCH, // медицинские исследования
        QUALITY_IMPROVEMENT, // улучшение качества обслуживания
        CARE_COORDINATION // координация лечения
    }
    struct Consent {
        bytes32 patientId;
        address grantee; // кому выдано согласие
        DataCategory[] categories; // какие категории данных
        Purpose[] purposes; // для каких целей
        uint256 grantedAt;
        uint256 expiresAt; // 0 = бессрочно (до отзыва)
        ConsentStatus status;
        bytes32 documentHash; // hash PDF документа согласия
        string version; // версия privacy policy
    }
    // consentId => Consent
    mapping(bytes32 => Consent) public consents;
    // patientId => grantee => consentIds
    mapping(bytes32 => mapping(address => bytes32[])) public patientConsents;
    event ConsentGranted(
        bytes32 indexed consentId,
        bytes32 indexed patientId,
        address indexed grantee,
        uint256 expiresAt
    );
    event ConsentRevoked(bytes32 indexed consentId, bytes32 indexed patientId);
    function grantConsent(
        bytes32 patientId,
        address grantee,
        DataCategory[] calldata categories,
        Purpose[] calldata purposes,
        uint256 duration,
        bytes32 documentHash,
        string calldata version
    ) external onlyPatient(patientId) returns (bytes32 consentId) {
        consentId = keccak256(abi.encodePacked(
            patientId,
            grantee,
            block.timestamp,
            block.number
        ));
        consents[consentId] = Consent({
            patientId: patientId,
            grantee: grantee,
            categories: categories,
            purposes: purposes,
            grantedAt: block.timestamp,
            expiresAt: duration == 0 ? 0 : block.timestamp + duration,
            status: ConsentStatus.ACTIVE,
            documentHash: documentHash,
            version: version
        });
        patientConsents[patientId][grantee].push(consentId);
        emit ConsentGranted(consentId, patientId, grantee, block.timestamp + duration);
    }
    function revokeConsent(bytes32 consentId) external {
        Consent storage consent = consents[consentId];
        require(
            isPatient(consent.patientId, msg.sender),
            "Not patient"
        );
        require(consent.status == ConsentStatus.ACTIVE, "Not active");
        consent.status = ConsentStatus.REVOKED;
        emit ConsentRevoked(consentId, consent.patientId);
    }
    function isConsentValid(
        bytes32 consentId,
        DataCategory category,
        Purpose purpose
    ) external view returns (bool) {
        Consent storage consent = consents[consentId];
        if (consent.status != ConsentStatus.ACTIVE) return false;
        if (consent.expiresAt != 0 && block.timestamp > consent.expiresAt) return false;
        bool hasCategory = false;
        for (uint i = 0; i < consent.categories.length; i++) {
            if (consent.categories[i] == category) {
                hasCategory = true;
                break;
            }
        }
        bool hasPurpose = false;
        for (uint i = 0; i < consent.purposes.length; i++) {
            if (consent.purposes[i] == purpose) {
                hasPurpose = true;
                break;
            }
        }
        return hasCategory && hasPurpose;
    }
}

אנו משתמשים ב-Solidity עם OpenZeppelin ליישומים מוכחים. החוזים מכוסים בבדיקות יחידה (Foundry) ובדיקות פאזינג (Echidna).

תוקף משפטי עם EIP-712

הסכמה חייבת להיות ניתנת להוכחה בבית משפט. EIP-712 — תקן לחתימה על נתונים מובנים — פותר זאת. המטופל חותם על אובייקט מובנה; החתימה מאומתת בחוזה. מסמך PDF נוצר אוטומטית, וה-hash שלו מסוג SHA-256 נשמר על השרשרת. המטופל מקבל עותק PDF ויכול להשוות את ה-hash עם רשומת הבלוקצ'יין. זה מספק הוכחה בלתי ניתנת לערעור להסכמה.

דוגמת חתימת EIP-712 (הרחב)
// Пациент подписывает structured consent data через EIP-712
const consentTypedData = {
  domain: {
    name: "HealthConsent",
    version: "1",
    chainId: 1,
    verifyingContract: CONSENT_REGISTRY_ADDRESS,
  },
  types: {
    Consent: [
      { name: "patientId", type: "bytes32" },
      { name: "grantee", type: "address" },
      { name: "categories", type: "uint8[]" },
      { name: "purposes", type: "uint8[]" },
      { name: "expiresAt", type: "uint256" },
      { name: "documentHash", type: "bytes32" },
      { name: "version", type: "string" },
    ],
  },
  message: consentData,
};
const signature = await walletClient.signTypedData(consentTypedData);
// Подпись хранится вместе с consent и верифицируется при необходимости

תיעוד עבור EIP-712 זמין ב-ויקיפדיה של Ethereum.

מנגנון Break-Glass לשעת חירום

תרחיש קריטי — מטופל מחוסר הכרה, לא ניתנה הסכמה, אך יש צורך בטיפול. יישמנו מנגנון break-glass: ספק מורשה מתעד את גישת החירום עם נימוק. המטופל מקבל הודעה בדיעבד ויכול לערער על הגישה תוך 72 שעות. כל מקרה מאושר בדיעבד על ידי ועדה. זה מאזן בין הגנת נתונים לצורך רפואי.

contract EmergencyAccess {
    struct EmergencyAccessEvent {
        bytes32 patientId;
        address requester;
        string justification; // причина экстренного доступа
        uint256 timestamp;
        bool approved; // одобрен ли постфактум
    }

    // Время на оспаривание emergency access: 72 часа
    uint256 constant CHALLENGE_PERIOD = 72 hours;

    mapping(bytes32 => EmergencyAccessEvent[]) public emergencyLog;

    // Emergency access доступен авторизованным медицинским провайдерам
    // Логируется, уведомление пациенту после выхода из критического состояния
    function requestEmergencyAccess(
        bytes32 patientId,
        string calldata justification
    ) external onlyEmergencyProvider {
        emergencyLog[patientId].push(EmergencyAccessEvent({
            patientId: patientId,
            requester: msg.sender,
            justification: justification,
            timestamp: block.timestamp,
            approved: false // требует постфактум одобрения
        }));
        emit EmergencyAccessRequested(patientId, msg.sender, justification);
    }
}

אינטגרציה ותאימות

אינטגרציה עם מערכות לאומיות

למדינות שונות יש דרישות הסכמה שונות: האיחוד האירופי (GDPR + eHealth) דורש הסכמה מפורשת וגרעינית; ארה"ב (HIPAA) — טופס הרשאה ומינימום הכרחי; תחומי שיפוט אחרים — חוקי נתוני בריאות לאומיים. אנו מתאימים תבניות הסכמה לכל מדינה וטוענים אוטומטית את הטופס הנכון לפי מיקום גיאוגרפי.

הודעות

לאחר כל גישה לנתונים, המטופל מקבל הודעה: אימייל או push עם פרטים — מי, מתי ולמה ניגש לרשומות. פורטל מטופלים מציג את כל ההסכמות הפעילות, היסטוריית גישות (מסלול ביקורת), ומאפשר ביטול בלחיצה אחת.

תוצאות ועלות

חיסכון והשפעה

יישום מערכת ניהול הסכמות מבוססת בלוקצ'יין מניב תוצאות מדידות. זמן עיבוד ההסכמה יורד מיומיים ל-15 דקות. שגיאות מילוי טפסים יורדות ב-90%. חיסכון בארכיוני נייר, עלויות אדמיניסטרטיביות וקנסות עמידה יכול להגיע ל-70% — עבור בית חולים בינוני, זה שווה ערך ל-$50,000–$100,000 בשנה. הפרויקט הממוצע מחזיר את עצמו תוך 6–9 חודשים.

לוחות זמנים ועלות פרויקט

מערכת turnkey טיפוסית עולה $60,000–$90,000 בהתאם למורכבות. הפיתוח אורך 2 עד 3 חודשים ל-MVP עם תחום שיפוט אחד. העלות מחושבת באופן אישי לפי מספר תחומי השיפוט, עומק האינטגרציה והביצועים הנדרשים.

המסירה והמומחיות שלנו

מה אנו מספקים

רכיב טכנולוגיה
חוזים חכמים Solidity + OpenZeppelin
חתימות EIP-712 viem / ethers.js
יצירת PDF PDFKit / WeasyPrint
פורטל מטופלים React + wagmi
הודעות אימייל (SendGrid) + Push (Web Push API)
אינדוקס The Graph

כלול בכל פרויקט:

  • ביקורת על תהליכי ניהול ההסכמות הקיימים
  • פיתוח חוזים חכמים (ERC-1155 לטוקניזציה של הסכמה)
  • הגדרת תבניות הסכמה לפי תחום שיפוט (עד 3)
  • אינטגרציה עם EMR קיים באמצעות REST API
  • פורטל מטופלים (אינטרנט + ידידותי למובייל)
  • תיעוד מקיף והדרכת צוות
  • 3 חודשי תמיכה לאחר השקה

למה לעבוד איתנו

5+ שנות ניסיון בבלוקצ'יין לבריאות, 30+ יישומים מוצלחים ב-10 מדינות, 15 מהנדסים המתמחים ב-Solidity, אבטחה ו-IT בריאות. הסמכות: GDPR, HIPAA, ISO 27001. חוזים מבוקרים: למעלה מ-50 ביקורות אבטחה שבוצעו.

תהליך

  1. אנליטיקה — לימוד דרישות משפטיות (GDPR/HIPAA/מקומי), זרימת עבודת ההסכמה הנוכחית, נקודות אינטגרציה.
  2. עיצוב — ארכיטקטורת חוזה, עיצוב פורטל, בחירת רשת (Ethereum/Polygon/פרטית).
  3. פיתוח — חוזים, חתימות EIP-712, יצירת PDF, פורטל, הודעות.
  4. בדיקות — בדיקות יחידה (Foundry), פאזינג (Echidna), ביקורת אבטחה (Slither), בדיקת תרחישים משפטיים.
  5. פריסה — פרסום חוזה, הגדרת The Graph, פריסת פורטל, העברת נתונים (אם נדרש).

קבלו ייעוץ מפתח למערכת ניהול ההסכמות הבלוקצ'יין שלכם. צרו קשר להערכה חינם.