Beruflich Dokumente
Kultur Dokumente
1;
contract MedicalPrescriptionContract {
struct RegulatoryAuthority {
string name;
bool isValid;
struct Physician {
uint license;
string name;
string lastname;
bytes32 signature;
int[] prescriptionsCode;
bool isValid;
struct Pharmacist {
string name;
bool isValid;
struct Patient {
string name;
string lastname;
string affiliateNumber;
uint sex;
uint birthDay;
int[] prescriptionsCode;
bool isValid;
struct DataAnalyzer {
string name;
bool isValid;
struct Prescription {
address physicianAddress;
address patientAddress;
string[] drugs;
string diagnosis;
uint date;
string place;
bytes32 signature;
PrescriptionStatus status;
bool isValid;
address owner;
int prescriptionsLength;
owner = msg.sender;
prescriptionsLength = 0;
modifier onlyOwner {
require(
msg.sender == owner,
);
_;
modifier onlyRegulatoryAuthority {
require(
regulatoryAuthorities[msg.sender].isValid,
);
_;
modifier onlyPhysician {
require(
physicians[msg.sender].isValid,
);
_;
modifier onlyPhysiciansOrPatientsOrPharmacists {
require(
physicians[msg.sender].isValid || patients[msg.sender].isValid ||
pharmacists[msg.sender].isValid,
);
_;
regulatoryAuthorities[_regulatoryAuthority].name = _name;
regulatoryAuthorities[_regulatoryAuthority].isValid = true;
return true;
return (regulatoryAuthorities[_regulatoryAuthority].isValid,
regulatoryAuthorities[_regulatoryAuthority].name);
function addPhysician(address _physician, uint _license, string memory _name, string memory
_lastname, bytes32 _signature) public onlyRegulatoryAuthority returns (bool success) {
physicians[_physician].license = _license;
physicians[_physician].name = _name;
physicians[_physician].lastname = _lastname;
physicians[_physician].signature = _signature;
physicians[_physician].isValid = true;
return true;
}
function getPhysician(address _physician) public view returns(bool success, uint _license, string
memory physicianName, string memory physicianLastname) {
return (physicians[_physician].isValid,
physicians[_physician].license,
physicians[_physician].name,
physicians[_physician].lastname
);
function addPatient(address _patient, string memory _name, string memory _lastname, string
memory _affiliateNumber, uint _sex, uint _birthDay) public onlyPhysician returns (bool success) {
patients[_patient].name = _name;
patients[_patient].lastname = _lastname;
patients[_patient].affiliateNumber = _affiliateNumber;
patients[_patient].sex = _sex;
patients[_patient].birthDay = _birthDay;
patients[_patient].isValid = true;
return true;
pharmacists[_pharmacist].name = _name;
pharmacists[_pharmacist].isValid = true;
return true;
dataAnalyzers[_dataAnalyzer].isValid = true;
return true;
//generate hash
return index;
prescriptions[code].physicianAddress = msg.sender;
prescriptions[code].patientAddress = _patient;
prescriptions[code].drugs = _drugs;
prescriptions[code].diagnosis = _diagnosis;
prescriptions[code].date = _date;
prescriptions[code].place = _place;
prescriptions[code].signature = physicians[msg.sender].signature;
prescriptions[code].status = PrescriptionStatus.CREATED;
prescriptions[code].isValid = true;
physicians[msg.sender].prescriptionsCode.push(code);
patients[_patient].prescriptionsCode.push(code);
prescriptionsLength += 1;
if(physicians[msg.sender].isValid) {
if(patients[msg.sender].isValid) {
//delivered to Pharmacists
if(pharmacists[msg.sender].isValid) {
prescriptions[_prescriptionCode].status = PrescriptionStatus.DELIVERED;
prescription.status = PrescriptionStatus.DELIVERED;
return (prescription.isValid,
prescription.physicianAddress,
prescription.patientAddress,
prescription.drugs,
prescription.diagnosis,
prescription.date,
prescription.place,
prescription.signature,
uint(prescription.status)
);