public bool CreateNewPatientChain(NawContracts nawcdata) { // Create serveral Objects: // Patient stream -> all physician addresses separated by ; // autorisatie stream wordt gevuld met de autorisatie van de medicus ten opzichte van andere streams anders dan zijn/haar eigen // de streams waarop hij/zij toegang heeft zijn abonnementen // de abonnementen kunnen worden ingenomen/ ongedaan gemaakt worden // de stappen // Create stream client var patientAddress = nawcdata.BsnNumber; MultiChain chain = new MultiChain(); chain.CreateNewStream(true, patientAddress); var xml = new XmlSerializer(typeof(NawContracts)); var reader = new System.IO.StringWriter(); xml.Serialize(reader, nawcdata); var datalocation = this.CreateFileBackup(reader.ToString()); chain.PublishMessage(new PublishMessageData { Key = patientnaw, HexString = this.EncryptHexData(datalocation + "|" + ("NogGeenKey").Replace("-", string.Empty).Replace(" ", string.Empty)), StreamName = patientAddress }); chain.CreateNewStream(true, patientAddress + "-css"); chain.Subscribe(patientAddress); return(true); }
public bool AddPhysician(string psysicianAddress, string physicianIdentification, string clientBsn, string signature) { // Create serveral Objects: // Authorisation stream // Items stream // autorisatie stream wordt gevuld met de autorisatie van de medicus ten opzichte van andere streams anders dan zijn/haar eigen // de streams waarop hij/zij toegang heeft zijn abonnementen // de abonnementen kunnen worden ingenomen/ ongedaan gemaakt worden MultiChain chain = new MultiChain(); var verified = chain.VerifyMessage(new MessageData { address = psysicianAddress, signature = signature, message = physicianIdentification }) == "true"; var itemStreamname = this.GetChainName(clientBsn, physicianIdentification, items); var accessStreamname = this.GetChainName(clientBsn, physicianIdentification, access); var authorisationStreamname = this.GetChainName(clientBsn, physicianIdentification, authorisation); chain.CreateNewStream(true, itemStreamname); chain.CreateNewStream(true, accessStreamname); chain.CreateNewStream(true, authorisationStreamname); chain.Subscribe(itemStreamname); chain.Subscribe(accessStreamname); chain.Subscribe(authorisation); // toevoegen authorisatie arts var result = chain.GetStreamItemByKey(authorisationStreamname, authorisation); StreamItem streamitem = new StreamItem { data = string.Empty }; if (result != null && result.streamitems.Any()) { streamitem = result.streamitems.Last(); } var data = streamitem.data.Any() ? this.DeEncryptHexData(streamitem.data) : string.Empty; data += this.EncryptHexData((data.Any() ? ";" : string.Empty) + physicianIdentification); var datalocation = this.CreateFileBackup(data); chain.PublishMessage(new PublishMessageData { Key = authorisation, HexString = this.EncryptHexData(datalocation + "|" + ("NogGeenKey").Replace("-", string.Empty).Replace(" ", string.Empty)), StreamName = authorisationStreamname }); return(true); }
public bool AddPhysician(string patientAddress, string physicianAddress, string signature) { // Create serveral Objects: // Authorisation stream // Items stream // autorisatie stream wordt gevuld met de autorisatie van de medicus ten opzichte van andere streams anders dan zijn/haar eigen // de streams waarop hij/zij toegang heeft zijn abonnementen // de abonnementen kunnen worden ingenomen/ ongedaan gemaakt worden // Create stream client MultiChain chain = new MultiChain(); var verified = chain.VerifyMessage(patientAddress, signature, physicianAddress) == "true"; if (verified) { var itemStreamname = this.GetChainName(patientAddress, physicianAddress, "item"); var accessStreamname = this.GetChainName(patientAddress, physicianAddress, "access"); chain.CreateNewStream(true, patientAddress); chain.CreateNewStream(true, accessStreamname); chain.Subscribe(patientAddress); chain.Subscribe(accessStreamname); // toevoegen authorisatie arts var result = chain.GetStreamItemByKey(patientAddress, authorisation); StreamItem streamitem = new StreamItem(); if (result.streamitems.Any()) { streamitem = result.streamitems.Last(); } var data = streamitem.data.Any() ? this.DeEncryptHexData(streamitem.data) : string.Empty; data += this.EncryptHexData((data.Any() ? ";" : string.Empty) + physicianAddress); var transactionId = chain.PublishMessage(authorisation, data); return(true); } return(false); }
public bool CreateNewPatientChain(string patientAddress) { // Create serveral Objects: // Patient stream -> all physician addresses separated by ; // autorisatie stream wordt gevuld met de autorisatie van de medicus ten opzichte van andere streams anders dan zijn/haar eigen // de streams waarop hij/zij toegang heeft zijn abonnementen // de abonnementen kunnen worden ingenomen/ ongedaan gemaakt worden // de stappen // Create stream client MultiChain chain = new MultiChain(); chain.CreateNewStream(true, patientAddress); chain.CreateNewStream(true, patientAddress + "-crossstreamcomm"); chain.Subscribe(patientAddress); return(true); }