Внедрение отношений между врачом и пациентом с использованием смарт-контрактов

Я хочу заключить договор между пациентом и врачом, в котором первый пациент заполняет свои данные, такие как имя, возраст и проблемы, с которыми он сталкивается. Как только вышеуказанные детали заполнены function createDoctor() называется и name, age and problems отправляются в качестве параметров Доктору. Принимая во внимание подробности, заполненные пациентом, врач назначает врача и обновляет проблемы, с которыми сталкивается пациент, если таковые имеются. Но я не могу понять, как реализовать вышеприведенное утверждение. Ниже приведен код, по которому я спрашиваю подробности пациента и отправляю его врачу. Сейчас я не могу реализовать часть Доктора. Ниже приведен код:

Patient.sol

pragma solidity ^0.4.6;
import './Doctor.sol';

contract Patient {
    bytes private name = "";
    bytes private dateOfBirth="NA";
    bytes private problemFaced = "";
    address public myDoctor;

    // Event that is fired when patient is changed
    event patientChanged(string whatChanged);

    function createDoctor() public {
        myDoctor = new Doctor(getName(), getDateOfBirth(), getGender(), problemFaced);
    }

    function ProblemFaced(string problems) public {
        problemFaced = bytes(problems);
    }

    function getName() internal view returns (bytes) {
        return name;  // First_Name Last_Name
    }
    function getDateOfBirth() internal view returns (bytes) {
        return dateOfBirth; // YYYYMMDD
    }

    function setName(string _name) public {
        name = bytes(_name);  // First_Name Last_Name
        emit patientChanged("name changed"); // fire the event
    }
    function setDateOfBirth(string _dateOfBirth) public {
        dateOfBirth = bytes(_dateOfBirth);   // YYYYMMDD
        emit patientChanged("dateOfBirth changed"); // fire the event
    }
}

Doctor.sol

pragma solidity ^0.4.6;
contract Doctor {
    // the address of the owner (the patient)
    address public owner;
    uint balance;
    // address of physician that can add allergies
    string public physician;
    // name of the patient LAST^FIRST
    string public patient_name;
    string public patient_dob;
    string public patient_gender;
    string public patient_problem = '';

    modifier isOwnerPatient {
        require(msg.sender == owner);
        _;
    }

    function Doctor(bytes _name, bytes _dob, bytes _gender, bytes _problems) {
        owner =  msg.sender;
        patient_name = string(_name);
        patient_dob = string(_dob);
        patient_gender = string(_gender);
        patient_problem = string(_problems);
    }

    function updateProblem(bytes _condition) {
        patient_problem = strConcat(patient_problem, string(_condition)); 
    }

    // allows owner to set the physician that can add allergies
    function SetPhysician(string _physician) isOwnerPatient {
        physician = _physician;
    }

    function strConcat(string _a, string _b) internal pure returns (string){
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        string memory abcde = new string(_ba.length + 2 + _bb.length);
        delete abcde;
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
        babcde[k++] = ",";
        babcde[k++] = " ";
        for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
        return string(babcde);
    }
}

Есть ли возможность использовать владельца и msg.sender при выполнении вышеуказанной постановки задачи.

0 ответов

Другие вопросы по тегам