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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }