国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

華為區(qū)塊鏈開發(fā),處方流轉(zhuǎn)合約Java代碼示例

這篇具有很好參考價值的文章主要介紹了華為區(qū)塊鏈開發(fā),處方流轉(zhuǎn)合約Java代碼示例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

https://wheart.cn/
package org.hyperledger.fabric.example;

import java.util.List;

import com.google.gson.Gson;
import com.google.protobuf.ByteString;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hyperledger.fabric.shim.ChaincodeBase;
import org.hyperledger.fabric.shim.ChaincodeStub;

import static java.nio.charset.StandardCharsets.UTF_8;

public class SimpleChaincode extends ChaincodeBase {
    // 藥品對象定義
    class Drug {
        // 藥品名稱
        String drugName;
        // 用法
        String drugUsage;
        // 用量
        String drugAmount;
        // 頻率
        String drugRate;
        // 數(shù)量
        int drugNumber;
    }

    // 簽章對象定義
    class Signature {
        // 簽章機構(gòu)
        String signCompany;
        // 簽章內(nèi)容
        String signInfo;
        // 簽章時間
        String signTime;
        // 存證信息
        String certificateInfo;
    }

    // 患者授權(quán)對象定義
    class Accredit {
        // 被授權(quán)機構(gòu)名稱
        String toAccreditCompany;
        // 被授權(quán)機構(gòu)社會信用代碼
        String toAccreditCompanyId;
        // 被授權(quán)機構(gòu)分支機構(gòu)
        String toAccreditCompanyBranch;
        // 授權(quán)開始時間
        String beginTime;
        // 授權(quán)結(jié)束時間
        String endTime;
        // 授權(quán)狀態(tài)(0-未用;1-使用;9-取消)
        int accreditState;
    }

    // 處方登記對象定義
    class Prescription {
        // 處方ID
        String prescriptionId;
        // 開具時間
        String signTime;
        // 醫(yī)生姓名
        String dName;
        // 醫(yī)生身份證
        String dIdentityNumber;
        // 醫(yī)院名稱
        String hospitalName;
        // 醫(yī)院社會信用代碼
        String hospitalId;
        // 患者姓名
        String name;
        // 患者身份證
        String identityNumber;
        // 處方狀態(tài)
        String state;
        // 診斷信息
        String diagnosticInfo;
        // 藥品信息 (數(shù)組)
        Drug[] drugInfo;
        // 醫(yī)生簽章 (JSON字符串)
        Signature doctorSignature;
        // 醫(yī)院簽章 (JSON字符串)
        Signature hospitaSignature;
        // 藥師簽章 (JSON字符串)
        Signature pharmacistSignature;
        // 患者授權(quán)信息 (數(shù)組)
        Accredit[] accreditInfo;
        // 藥師姓名
        String pharmacistName;
        // 藥師身份證
        String pharmacistIdentityNumber;
        // 第三方審方機構(gòu)名稱
        String auditName;
        // 第三方審方機構(gòu)社會信用代碼
        String auditId;
        // 配藥機構(gòu)名稱
        String dispensingName;
        // 配藥機構(gòu)社會信用代碼
        String dispensingId;
    }

    // 處方審核對象定義
    class PscrpAudit {
        // 處方ID
        String prescriptionId;
        // 處方狀態(tài)
        String state;
        // 藥師簽章 (JSON字符串)
        Signature pharmacistSignature;
        // 藥師姓名
        String pharmacistName;
        // 藥師身份證
        String pharmacistIdentityNumber;
        // 第三方審方機構(gòu)名稱
        String auditName;
        // 第三方審方機構(gòu)社會信用代碼
        String auditId;
    }

    // 患者授權(quán)對象定義
    class PscrpAccredit {
        // 處方ID
        String prescriptionId;
        // 患者姓名
        String name;
        // 患者身份證
        String identityNumber;
        // 處方狀態(tài)
        String state;
        // 患者授權(quán)信息 (數(shù)組)
        Accredit[] accreditInfo;
    }

    // 處方配藥對象定義
    class PscrpDispensation {
        // 處方ID
        String prescriptionId;
        // 處方狀態(tài)
        String state;
        // 配藥機構(gòu)名稱
        String dispensingName;
        // 配藥機構(gòu)社會信用代碼
        String dispensingId;
    }


    private static Log logger = LogFactory.getLog(SimpleChaincode.class);

    @Override
    public Response init(ChaincodeStub stub) {

        logger.info("Init");
        return newSuccessResponse();
    }

    @Override
    public Response invoke(ChaincodeStub stub) {
        try {
            logger.info("Invoke java simple chaincode");
            String func = stub.getFunction();
            List<String> params = stub.getParameters();
            if (func.equals("register")) {
                return register(stub, params);
            } else if (func.equals("audit")) {
                return audit(stub, params);
            } else if (func.equals("accredit")) {
                return accredit(stub, params);
            } else if (func.equals("dispense")) {
                return dispense(stub, params);
            } else if (func.equals("query")) {
                return query(stub, params);
            }
            return newErrorResponse("Invalid invoke function name.");
        } catch (Throwable e) {
            return newErrorResponse(e);
        }
    }

    /**
     * 登記處方信息
     * 參數(shù)1:處方登記對象
     */
    private Response register(ChaincodeStub stub, List<String> args) {
        if (args.size() != 1) {
            return newErrorResponse("Incorrect number of arguments. Expecting 1");
        }
        String prescriptionMsg = args.get(0);
        Prescription prescription;
        Gson gson = new Gson();
        prescription = gson.fromJson(prescriptionMsg, Prescription.class);
        String prescriptionId = prescription.prescriptionId;

        if (prescriptionId.equals("")) {
            logger.info("The arguments is invalid - " + prescriptionMsg + ", no prescriptionId.");
            return newErrorResponse("The arguments is invalid - " + prescriptionMsg + ", no prescriptionId.");
        }

        stub.putState(prescriptionId, ByteString.copyFrom(prescriptionMsg, UTF_8).toByteArray());
        return newSuccessResponse();
    }

    /**
     * 處方審核
     * 參數(shù)1:處方審核對象
     */
    private Response audit(ChaincodeStub stub, List<String> args) {
        if (args.size() != 1) {
            return newErrorResponse("Incorrect number of arguments. Expecting 1");
        }

        String pscrpAuditMsg = args.get(0);
        PscrpAudit pscrpAudit;
        Gson gson = new Gson();
        pscrpAudit = gson.fromJson(pscrpAuditMsg, PscrpAudit.class);


        String prescriptionId = pscrpAudit.prescriptionId;
        if (prescriptionId.equals("")) {
            logger.info("The arguments is invalid - " + pscrpAuditMsg + ", no prescriptionId.");
            return newErrorResponse("The arguments is invalid - " + pscrpAuditMsg + ", no prescriptionId.");
        }

        Prescription prescription = getPrescription(stub, prescriptionId);
        String state = prescription.state;
        if (!state.equals("register")) {
            logger.info("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
            return newErrorResponse("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
        }

        prescription.state = pscrpAudit.state;
        prescription.pharmacistSignature = pscrpAudit.pharmacistSignature;
        prescription.pharmacistName = pscrpAudit.pharmacistName;
        prescription.pharmacistIdentityNumber = pscrpAudit.pharmacistIdentityNumber;
        prescription.auditName = pscrpAudit.auditName;
        prescription.auditId = pscrpAudit.auditId;

        String prescriptionStr = gson.toJson(prescription);
        stub.putState(prescriptionId, ByteString.copyFrom(prescriptionStr, UTF_8).toByteArray());

        return newSuccessResponse();
    }

    /**
     * 患者授權(quán)
     * 參數(shù)1:患者授權(quán)對象
     */
    private Response accredit(ChaincodeStub stub, List<String> args) {
        if (args.size() != 1) {
            return newErrorResponse("Incorrect number of arguments. Expecting 1");
        }
        String pscrpAccreditMsg = args.get(0);
        Gson gson = new Gson();
        PscrpAccredit pscrpAccredit = gson.fromJson(pscrpAccreditMsg, PscrpAccredit.class);
        String prescriptionId = pscrpAccredit.prescriptionId;
        if (prescriptionId.equals("")) {
            logger.info("The arguments is invalid - " + pscrpAccreditMsg + ", no prescriptionId.");
            return newErrorResponse("The arguments is invalid - " + pscrpAccreditMsg + ", no prescriptionId.");
        }

        Prescription prescription = getPrescription(stub, prescriptionId);

        String state = prescription.state;
        if (!state.equals("audit")) {
            logger.info("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
            return newErrorResponse("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
        }

        prescription.state = pscrpAccredit.state;
        prescription.name = pscrpAccredit.name;
        prescription.identityNumber = pscrpAccredit.identityNumber;
        prescription.accreditInfo = pscrpAccredit.accreditInfo;
        String prescriptionStr = gson.toJson(prescription);

        stub.putState(prescriptionId, ByteString.copyFrom(prescriptionStr, UTF_8).toByteArray());

        return newSuccessResponse();
    }

    /**
     * 處方配藥
     * 參數(shù)1:處方配藥對象
     */
    private Response dispense(ChaincodeStub stub, List<String> args) {
        if (args.size() != 1) {
            return newErrorResponse("Incorrect number of arguments. Expecting 1");
        }
        String pscrpDispenseMsg = args.get(0);
        Gson gson = new Gson();
        PscrpDispensation pscrpDispense = gson.fromJson(pscrpDispenseMsg, PscrpDispensation.class);

        String prescriptionId = pscrpDispense.prescriptionId;
        if (prescriptionId.equals("")) {
            logger.info("The arguments is invalid - " + pscrpDispenseMsg + ", no prescriptionId.");
            return newErrorResponse("The arguments is invalid - " + pscrpDispenseMsg + ", no prescriptionId.");
        }

        Prescription prescription = getPrescription(stub, prescriptionId);


        String state = prescription.state;
        if (!state.equals("accredit")) {
            logger.info("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
            return newErrorResponse("Current State of the prescription is invalid, state=" + state + ", prescriptionId=" + prescriptionId);
        }

        prescription.state = pscrpDispense.state;
        prescription.dispensingName = pscrpDispense.dispensingName;
        prescription.dispensingId = pscrpDispense.dispensingId;

        String prescriptionStr = gson.toJson(prescription);
        stub.putState(prescriptionId, ByteString.copyFrom(prescriptionStr, UTF_8).toByteArray());
        return newSuccessResponse();
    }


    private Prescription getPrescription(ChaincodeStub stub, String prescriptionId) {
        Prescription prescription;
        String prescriptionStr = stub.getStringState(prescriptionId);
        Gson gson = new Gson();
        prescription = gson.fromJson(prescriptionStr, Prescription.class);

        return prescription;
    }

    /*
查詢處方信息
參數(shù)1:處方登記對象
 */
    private Response query(ChaincodeStub stub, List<String> args) {
        if (args.size() != 1) {
            return newErrorResponse("Incorrect number of arguments. Expecting 1");
        }

        String prescriptionId = args.get(0);

        Prescription prescription = getPrescription(stub, prescriptionId);

        Gson gson = new Gson();
        String prescriptionStr = gson.toJson(prescription);


        return newSuccessResponse(prescriptionStr, ByteString.copyFrom(prescriptionStr, UTF_8).toByteArray());
    }

    public static void main(String[] args) {
        new SimpleChaincode().start(args);
    }
}

文章來源地址http://www.zghlxwxcb.cn/news/detail-775363.html

到了這里,關(guān)于華為區(qū)塊鏈開發(fā),處方流轉(zhuǎn)合約Java代碼示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 手把手教你區(qū)塊鏈java開發(fā)智能合約nft-第五篇(鑄造第一個NFT)

    初學區(qū)塊鏈,那真叫一個痛苦并無助。如果沒有人帶你的話 今天寫的這篇是在前面文章基礎(chǔ)上寫的,初學區(qū)塊鏈的朋友建議先看我前面寫的文章 手把手教你區(qū)塊鏈java開發(fā)智能合約nft-第一篇 手把手教你區(qū)塊鏈java開發(fā)智能合約nft-第二篇(部署第一個NFT智能合約) 手把手教你

    2023年04月08日
    瀏覽(36)
  • 智慧構(gòu)思:智能合約技術(shù)精髓與價值轉(zhuǎn)化 ——華為云BCS區(qū)塊鏈服務(wù)

    智慧構(gòu)思:智能合約技術(shù)精髓與價值轉(zhuǎn)化 ——華為云BCS區(qū)塊鏈服務(wù)

    在金融、供應鏈、醫(yī)療、版權(quán)管理等項目中,涉及數(shù)據(jù)與價值傳輸?shù)牡胤?,均存在區(qū)塊鏈技術(shù)支持。行業(yè)領(lǐng)先者早已把握風潮,積極探索實踐,部署區(qū)塊鏈,推動整個產(chǎn)業(yè)進步。 想象即將發(fā)生在世界各地的一幕:交易無需經(jīng)由復雜的審批流程或中介,而由數(shù)碼契約處理,并自

    2024年02月04日
    瀏覽(25)
  • 【華為OD機試真題】區(qū)塊鏈文件轉(zhuǎn)儲系統(tǒng)(java&python)100%通過率 超詳細代碼注釋 代碼解讀

    【華為OD機試真題 20222023】真題目錄 @點這里@ 【華為OD機試真題】信號發(fā)射和接收 試讀 @點這里@ 【華為OD機試真題】租車騎綠道 試讀 @點這里@ 知識點棧鏈表單調(diào)棧Q滑窗 時間限制:2s空間限制:256MB限定語言:不限 區(qū)塊鏈底層存儲是一個鏈式文件系統(tǒng),由順序的N個文件組成,

    2024年02月04日
    瀏覽(28)
  • 【區(qū)塊鏈 | 智能合約】Ethereum源代碼 - 智能合約地址生成算法

    當提交智能合約部署后,會返回智能合約的地址。智能合約地址的生成邏輯在eth.api.go的submitTransaction函數(shù)中:

    2024年02月13日
    瀏覽(17)
  • 區(qū)塊鏈瀏覽器與合約代碼

    區(qū)塊鏈瀏覽器與合約代碼

    此文系:Vue3.0 +Quasar+ ethers.js 和以太坊智能合約交互?系列教程之一。 區(qū)塊鏈瀏覽器 在本教程中,我一直在說區(qū)塊鏈是去中心化的,它想打造的是一個數(shù)據(jù)永不可篡改且公開透明的數(shù)據(jù)世界。 那么這樣的區(qū)塊鏈它最重要的一環(huán)就是,需要一個簡單易懂,普通用戶就能隨時查看

    2024年02月03日
    瀏覽(28)
  • 區(qū)塊鏈智能合約開發(fā)學習

    區(qū)塊鏈智能合約開發(fā)學習

    最近正在肝區(qū)塊鏈知識學習,入手學習智能合約的開發(fā),由于網(wǎng)上資料實在是太少了,好不容易東拼西湊完成了智能合約的開發(fā)、編譯、部署、web3js調(diào)用(網(wǎng)頁頁面)和web3j調(diào)用(java調(diào)用),趕緊趁熱把重點提煉出來。 先上圖,是我最近學習知識點的一個概括總結(jié),此外還包

    2023年04月18日
    瀏覽(21)
  • 區(qū)塊鏈2——Solidity智能合約開發(fā)

    區(qū)塊鏈 索引目錄 智能合約是一種以代碼形式編寫的自動執(zhí)行合約,它們運行在區(qū)塊鏈上。這些合約定義了在特定條件下發(fā)生的事件以及相應的行為。 1.1 智能合約結(jié)構(gòu) 版本聲明(Version Declaration): 智能合約通常以聲明版本開始,指定合約應該使用的Solidity編譯器版本。例如

    2024年02月05日
    瀏覽(29)
  • 螞蟻區(qū)塊鏈投票案例(二)---投票合約設(shè)計開發(fā)

    螞蟻區(qū)塊鏈投票案例(二)---投票合約設(shè)計開發(fā)

    計劃用三篇文章,一個月左右的時間來實現(xiàn)一個螞蟻開放聯(lián)盟鏈上的區(qū)塊鏈投票案例,本文是系列第二篇。 螞蟻區(qū)塊鏈投票案例(一)—螞蟻鏈簡介 螞蟻區(qū)塊鏈投票案例(二)—投票合約設(shè)計開發(fā) 螞蟻區(qū)塊鏈投票案例(三)—Java調(diào)用部分實現(xiàn)(整理中) 本文將結(jié)合具體的投票案例

    2024年02月04日
    瀏覽(19)
  • 區(qū)塊鏈之java(六.1) 合約監(jiān)聽

    之前寫的那一篇呢,好像有點點問題。就是在設(shè)定監(jiān)聽的時候,沒有編寫具體監(jiān)聽的方法。 今天帶來一篇新的方式的合約監(jiān)聽 前面的就不贅述了。合約上的監(jiān)聽是一樣的。 在java中。根據(jù)abi生產(chǎn)的文件,其實在里面是有監(jiān)聽方法的 代碼如下: 實際上呢,在初始化合約后,直

    2024年02月04日
    瀏覽(23)
  • 區(qū)塊鏈DAPP開發(fā) 以太坊智能合約框架有哪些

    Truffle 是一個在以太坊進行 DApp 開發(fā)的世界級開發(fā)環(huán)境、測試框架。 使用 Truffle 開發(fā)有一以下優(yōu)點: 內(nèi)置智能合約編譯,鏈接,部署和二進制(文件)管理。 可快速開發(fā)自動化智能合約測試框架。 可腳本化、可擴展的部署和遷移框架。 可管理多個不同的以太坊網(wǎng)絡(luò),可部署

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包