├── README.md
├── code
├── chaincode
│ ├── command_cli.txt
│ ├── deployMyCC.sh
│ ├── src
│ │ ├── medical.go
│ │ ├── secondgo.go
│ │ └── t.go
│ └── test_network
│ │ ├── createChannel.sh
│ │ ├── deployCC.sh
│ │ ├── envVar.sh
│ │ ├── fabcar.go
│ │ └── network.sh
├── medical
│ ├── .classpath
│ ├── .gitignore
│ ├── .project
│ ├── .settings
│ │ ├── .jsdtscope
│ │ ├── org.eclipse.core.resources.prefs
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.m2e.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ ├── org.eclipse.wst.common.project.facet.core.xml
│ │ ├── org.eclipse.wst.jsdt.ui.superType.container
│ │ ├── org.eclipse.wst.jsdt.ui.superType.name
│ │ └── org.eclipse.wst.validation.prefs
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── wow
│ │ │ ├── controller
│ │ │ ├── AdminController.java
│ │ │ ├── DoctorController.java
│ │ │ ├── PatientController.java
│ │ │ └── UserController.java
│ │ │ ├── entity
│ │ │ ├── Authorize.java
│ │ │ ├── BackJSON.java
│ │ │ ├── CreateMedical.java
│ │ │ ├── Doctor.java
│ │ │ ├── Hospital.java
│ │ │ ├── IIS.java
│ │ │ ├── MedicalRecord.java
│ │ │ ├── Patient.java
│ │ │ ├── UserIN.java
│ │ │ └── UserInfo.java
│ │ │ ├── mapper
│ │ │ ├── AdminMapper.java
│ │ │ ├── DoctorMapper.java
│ │ │ ├── PatientMapper.java
│ │ │ └── UserMapper.java
│ │ │ ├── service
│ │ │ ├── AdminService.java
│ │ │ ├── AdminServiceImpl.java
│ │ │ ├── DoctorService.java
│ │ │ ├── DoctorServiceImpl.java
│ │ │ ├── PatientService.java
│ │ │ ├── PatientServiceImpl.java
│ │ │ ├── UserService.java
│ │ │ └── UserServiceImpl.java
│ │ │ └── util
│ │ │ └── Value.java
│ │ ├── resources
│ │ ├── applicationContext.xml
│ │ ├── connection.json
│ │ ├── crypto-config
│ │ │ ├── ordererOrganizations
│ │ │ │ └── example.com
│ │ │ │ │ ├── ca
│ │ │ │ │ ├── ca.example.com-cert.pem
│ │ │ │ │ └── priv_sk
│ │ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.example.com-cert.pem
│ │ │ │ │ ├── orderers
│ │ │ │ │ └── orderer.example.com
│ │ │ │ │ │ ├── msp
│ │ │ │ │ │ ├── cacerts
│ │ │ │ │ │ │ └── ca.example.com-cert.pem
│ │ │ │ │ │ ├── config.yaml
│ │ │ │ │ │ ├── keystore
│ │ │ │ │ │ │ └── priv_sk
│ │ │ │ │ │ ├── signcerts
│ │ │ │ │ │ │ └── orderer.example.com-cert.pem
│ │ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ │ └── tlsca.example.com-cert.pem
│ │ │ │ │ │ └── tls
│ │ │ │ │ │ ├── ca.crt
│ │ │ │ │ │ ├── server.crt
│ │ │ │ │ │ └── server.key
│ │ │ │ │ ├── tlsca
│ │ │ │ │ ├── priv_sk
│ │ │ │ │ └── tlsca.example.com-cert.pem
│ │ │ │ │ └── users
│ │ │ │ │ └── Admin@example.com
│ │ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ ├── keystore
│ │ │ │ │ │ └── priv_sk
│ │ │ │ │ ├── signcerts
│ │ │ │ │ │ └── Admin@example.com-cert.pem
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.example.com-cert.pem
│ │ │ │ │ └── tls
│ │ │ │ │ ├── ca.crt
│ │ │ │ │ ├── client.crt
│ │ │ │ │ └── client.key
│ │ │ └── peerOrganizations
│ │ │ │ ├── org1.example.com
│ │ │ │ ├── ca
│ │ │ │ │ ├── ca.org1.example.com-cert.pem
│ │ │ │ │ └── priv_sk
│ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ │ ├── peers
│ │ │ │ │ └── peer0.org1.example.com
│ │ │ │ │ │ ├── msp
│ │ │ │ │ │ ├── cacerts
│ │ │ │ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ │ │ │ ├── config.yaml
│ │ │ │ │ │ ├── keystore
│ │ │ │ │ │ │ └── priv_sk
│ │ │ │ │ │ ├── signcerts
│ │ │ │ │ │ │ └── peer0.org1.example.com-cert.pem
│ │ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ │ │ │ └── tls
│ │ │ │ │ │ ├── ca.crt
│ │ │ │ │ │ ├── server.crt
│ │ │ │ │ │ └── server.key
│ │ │ │ ├── tlsca
│ │ │ │ │ ├── priv_sk
│ │ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ │ └── users
│ │ │ │ │ ├── Admin@org1.example.com
│ │ │ │ │ ├── msp
│ │ │ │ │ │ ├── cacerts
│ │ │ │ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ │ │ │ ├── config.yaml
│ │ │ │ │ │ ├── keystore
│ │ │ │ │ │ │ └── priv_sk
│ │ │ │ │ │ ├── signcerts
│ │ │ │ │ │ │ └── Admin@org1.example.com-cert.pem
│ │ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ │ │ └── tls
│ │ │ │ │ │ ├── ca.crt
│ │ │ │ │ │ ├── client.crt
│ │ │ │ │ │ └── client.key
│ │ │ │ │ └── User1@org1.example.com
│ │ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.org1.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ ├── keystore
│ │ │ │ │ │ └── priv_sk
│ │ │ │ │ ├── signcerts
│ │ │ │ │ │ └── User1@org1.example.com-cert.pem
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.org1.example.com-cert.pem
│ │ │ │ │ └── tls
│ │ │ │ │ ├── ca.crt
│ │ │ │ │ ├── client.crt
│ │ │ │ │ └── client.key
│ │ │ │ └── org2.example.com
│ │ │ │ ├── ca
│ │ │ │ ├── ca.org2.example.com-cert.pem
│ │ │ │ └── priv_sk
│ │ │ │ ├── connection-org2.json
│ │ │ │ ├── connection-org2.yaml
│ │ │ │ ├── msp
│ │ │ │ ├── cacerts
│ │ │ │ │ └── ca.org2.example.com-cert.pem
│ │ │ │ ├── config.yaml
│ │ │ │ └── tlscacerts
│ │ │ │ │ └── tlsca.org2.example.com-cert.pem
│ │ │ │ ├── peers
│ │ │ │ └── peer0.org2.example.com
│ │ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.org2.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ ├── keystore
│ │ │ │ │ │ └── priv_sk
│ │ │ │ │ ├── signcerts
│ │ │ │ │ │ └── peer0.org2.example.com-cert.pem
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem
│ │ │ │ │ └── tls
│ │ │ │ │ ├── ca.crt
│ │ │ │ │ ├── server.crt
│ │ │ │ │ └── server.key
│ │ │ │ ├── tlsca
│ │ │ │ ├── priv_sk
│ │ │ │ └── tlsca.org2.example.com-cert.pem
│ │ │ │ └── users
│ │ │ │ ├── Admin@org2.example.com
│ │ │ │ ├── msp
│ │ │ │ │ ├── cacerts
│ │ │ │ │ │ └── ca.org2.example.com-cert.pem
│ │ │ │ │ ├── config.yaml
│ │ │ │ │ ├── keystore
│ │ │ │ │ │ └── priv_sk
│ │ │ │ │ ├── signcerts
│ │ │ │ │ │ └── Admin@org2.example.com-cert.pem
│ │ │ │ │ └── tlscacerts
│ │ │ │ │ │ └── tlsca.org2.example.com-cert.pem
│ │ │ │ └── tls
│ │ │ │ │ ├── ca.crt
│ │ │ │ │ ├── client.crt
│ │ │ │ │ └── client.key
│ │ │ │ └── User1@org2.example.com
│ │ │ │ ├── msp
│ │ │ │ ├── cacerts
│ │ │ │ │ └── ca.org2.example.com-cert.pem
│ │ │ │ ├── config.yaml
│ │ │ │ ├── keystore
│ │ │ │ │ └── priv_sk
│ │ │ │ ├── signcerts
│ │ │ │ │ └── User1@org2.example.com-cert.pem
│ │ │ │ └── tlscacerts
│ │ │ │ │ └── tlsca.org2.example.com-cert.pem
│ │ │ │ └── tls
│ │ │ │ ├── ca.crt
│ │ │ │ ├── client.crt
│ │ │ │ └── client.key
│ │ ├── db.properties
│ │ ├── medical.sql
│ │ ├── springmvc.xml
│ │ └── spy.properties
│ │ └── webapp
│ │ ├── WEB-INF
│ │ └── web.xml
│ │ └── index.jsp
├── picture
│ └── medical
│ │ ├── 1591462996138test.JPG
│ │ ├── 1591463212767test.JPG
│ │ └── 1591468204842test.JPG
└── server_api.json
├── picture
├── 1.1.PNG
├── 1.2.PNG
├── 2.1.PNG
├── 2.2.PNG
├── 2.3.PNG
├── 2.4.PNG
├── 2.5.PNG
├── 2.6.PNG
├── 3.1.PNG
├── 3.2.PNG
├── 3.3.PNG
├── 3.4.PNG
├── 3.5.PNG
├── 3.6.PNG
├── 4.1.PNG
├── 4.10.PNG
├── 4.2.PNG
├── 4.3.PNG
├── 4.4.PNG
├── 4.5.PNG
├── 4.6.PNG
├── 4.7.PNG
├── 4.8.PNG
├── 4.9.PNG
├── network_createchannel1.PNG
├── network_createchannel2.PNG
├── network_up.PNG
├── p-医生新建病历.png
├── p-医生查看已授权详细病历.png
├── p-患者同意授权.png
├── p-患者查询病历.png
├── p-签名.PNG
├── p-网络拓扑.PNG
├── p_校徽.jpg
├── 医生新建病历.PNG
├── 医生查看已授权列表.PNG
├── 医生查看已授权详细病历.PNG
├── 医生申请授权.PNG
├── 患者上传病历.PNG
├── 患者同意授权.PNG
├── 患者查询待授权列表.PNG
├── 患者查询待确认提交病历.PNG
├── 患者查询病历.PNG
└── 用户注册测试.PNG
├── t.txt
├── wen.txt
├── 中期报告.doc
├── 任务书.doc
├── 基于区块链的医疗记录存储系统研究与开发-文本复制检测报告单(全文对照).htm
├── 外文翻译原文.pdf
├── 外文翻译译文.doc
├── 开题报告.doc
├── 数据结构.docx
├── 毕业论文-基于区块链的医疗记录存储系统研究与开发.doc
├── 电计1604-徐富-201645030.zip
├── 答辩.docx
└── 答辩.pptx
/README.md:
--------------------------------------------------------------------------------
1 | # graduate
2 | 毕业设计--基于区块链的医疗记录存储系统研究与开发
3 |
4 | If the business model is bad, it's still bad on the Internet.
5 |
--------------------------------------------------------------------------------
/code/chaincode/command_cli.txt:
--------------------------------------------------------------------------------
1 |
2 | 在test-network目录下:
3 | export PATH=${PWD}/../bin:$PATH
4 | export FABRIC_CFG_PATH=$PWD/../config/
5 | export CORE_PEER_TLS_ENABLED=true
6 | export CORE_PEER_LOCALMSPID="Org1MSP"
7 | export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
8 | export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
9 | export CORE_PEER_ADDRESS=localhost:7051
10 |
11 | peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls true --cafile /usr/file/gopath/test/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n medical --peerAddresses localhost:7051 --tlsRootCertFiles /usr/file/gopath/test/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles /usr/file/gopath/test/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["testInput","secondKey","secondValue"]}'
12 |
13 | peer chaincode query -C mychannel -n medical -c '{"Args":["testGet", "secondKey"]}'
14 |
15 | 上传病历:invoke: -c '{"Args": ["uploadMedicalRecord", "patientID1", "patientName1", "doctorName1", "createTime1", "medicalPicture1", "description1"]}'
16 | 查询病历:query: -c '{"Args": ["getRecordbyID", "patientID1"]}'
17 | 查询历史病历:query: -c '{"Args": ["getAllHistoryRecordbyID", "patientID1"]}'
18 |
19 |
--------------------------------------------------------------------------------
/code/chaincode/src/medical.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import(
4 | "fmt"
5 | "encoding/json"
6 |
7 | "github.com/hyperledger/fabric-chaincode-go/shim"
8 | "github.com/hyperledger/fabric-protos-go/peer"
9 | )
10 |
11 | type MedicalChainCode struct {
12 | }
13 |
14 | type MedicalRecord struct {
15 | PatientName string `json:"patientname"`
16 | DoctorName string `json:"doctorname"`
17 | CreateTime string `json:"createtime"`
18 | MedicalPicture string `json:"medicalpicture"`
19 | Description string `json:"description"`
20 | }
21 |
22 | func (m *MedicalChainCode) Init(stub shim.ChaincodeStubInterface) peer.Response {
23 | err := stub.PutState("firstKey", []byte("FirstValue"))
24 | if err != nil {
25 | return shim.Error(err.Error())
26 | }
27 | fmt.Println("=========== success init ===============")
28 | return shim.Success(nil)
29 | }
30 |
31 | func (m *MedicalChainCode) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
32 | // fmt.Println("=========== in invoke ==============")
33 | mFun, args := stub.GetFunctionAndParameters()
34 | switch {
35 | case "testInput" == mFun :
36 | return m.testInput(stub, args)
37 | case "testGet" == mFun :
38 | return m.testGet(stub, args[0])
39 | case "uploadMedicalRecord" == mFun :
40 | return m.uploadMedicalRecord(stub, args)
41 | case "getRecordbyID" == mFun :
42 | return m.getRecordbyID(stub, args)
43 | case "getAllHistoryRecordbyID" == mFun :
44 | return m.getAllHistoryRecordbyID(stub, args)
45 | default :
46 | return shim.Error("no fun invoke")
47 | }
48 | // return shim.Success([]byte("success invoke"))
49 | }
50 |
51 | func (m *MedicalChainCode) testInput(stub shim.ChaincodeStubInterface, args []string) peer.Response {
52 | err := stub.PutState(args[0], []byte(args[1]))
53 | if err != nil {
54 | return shim.Error(err.Error())
55 | }
56 | return shim.Success([]byte("test input success"))
57 | }
58 |
59 | func (m *MedicalChainCode) testGet(stub shim.ChaincodeStubInterface, arg string) peer.Response {
60 | value, err := stub.GetState(arg)
61 | if(err != nil) {
62 | return shim.Error(err.Error())
63 | }
64 | return shim.Success(value)
65 | }
66 |
67 | func (m *MedicalChainCode) uploadMedicalRecord(stub shim.ChaincodeStubInterface, args []string) peer.Response {
68 | var newMedicalRecord = MedicalRecord {
69 | PatientName: args[1],
70 | DoctorName: args[2],
71 | CreateTime: args[3],
72 | MedicalPicture: args[4],
73 | Description: args[5],
74 | }
75 | // fmt.Printf("%s-%s-%s\n", args[0], newMedicalRecord.PatientName, newMedicalRecord.DoctorName)
76 | medicalRecordBytes, _ := json.Marshal(newMedicalRecord)
77 | // fmt.Println("=====>", medicalRecordBytes)
78 | err := stub.PutState(args[0], medicalRecordBytes)
79 | if err != nil {
80 | return shim.Error(err.Error())
81 | }
82 | // fmt.Println("=========== uploadMedicalRecord success ==============")
83 | return shim.Success([]byte("success"))
84 | }
85 |
86 | func (m *MedicalChainCode) getRecordbyID(stub shim.ChaincodeStubInterface, args []string) peer.Response {
87 | if len(args) != 1 {
88 | return shim.Error("only one parameter required")
89 | }
90 | // fmt.Printf("id: %s\n", args[0])
91 | medicalRecordBytes, err := stub.GetState(args[0])
92 | // fmt.Println("=====>", medicalRecordBytes)
93 | if err != nil {
94 | fmt.Println("=========== error... ==============")
95 | return shim.Error(err.Error())
96 | }
97 | tRecord := new(MedicalRecord)
98 | json.Unmarshal(medicalRecordBytes, tRecord)
99 | // fmt.Printf("%s-%s\n", tRecord.PatientName, tRecord.DoctorName)
100 | return shim.Success(medicalRecordBytes)
101 | }
102 |
103 | func (m *MedicalChainCode) getAllHistoryRecordbyID(stub shim.ChaincodeStubInterface, args []string) peer.Response {
104 | if len(args) != 1 {
105 | return shim.Error("only one parameter required")
106 | }
107 | // fmt.Printf("id: %s\n", args[0])
108 | recordIterator, err := stub.GetHistoryForKey(args[0])
109 | recordList := []MedicalRecord{}
110 | defer recordIterator.Close()
111 | if err != nil {
112 | return shim.Error(err.Error())
113 | }
114 | for recordIterator.HasNext() {
115 | recordResponse, err := recordIterator.Next()
116 | if err != nil {
117 | return shim.Error(err.Error())
118 | }
119 | tRecord := new(MedicalRecord)
120 | json.Unmarshal(recordResponse.Value, tRecord)
121 | recordList = append(recordList, *tRecord)
122 | }
123 | // fmt.Println(recordList)
124 | listBytes, _ := json.Marshal(recordList)
125 | return shim.Success(listBytes)
126 | }
127 |
128 |
129 |
130 | func main() {
131 | err := shim.Start(new(MedicalChainCode))
132 | if err != nil {
133 | fmt.Printf("error start chaincode : %s", err)
134 | }
135 | }
136 |
137 |
--------------------------------------------------------------------------------
/code/chaincode/src/secondgo.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import(
4 | "fmt"
5 |
6 | "github.com/hyperledger/fabric-chaincode-go/shim"
7 | "github.com/hyperledger/fabric-protos-go/peer"
8 | )
9 |
10 | type MedicalChainCode struct {
11 | }
12 |
13 | func (m *MedicalChainCode) Init(stub shim.ChaincodeStubInterface) peer.Response {
14 | err := stub.PutState("firstKey", []byte("FirstValue"))
15 | if err != nil {
16 | return shim.Error(err.Error())
17 | }
18 | fmt.Println("=========== success init ===============")
19 | return shim.Success(nil)
20 | }
21 |
22 | func (m *MedicalChainCode) Invoke(stub shim.ChaincodeStubInterface) peer.Response {
23 | fmt.Println("=========== in invoke ==============")
24 | mFun, args := stub.GetFunctionAndParameters()
25 | switch {
26 | case "testInput" == mFun :
27 | return m.testInput(stub, args)
28 | case "testGet" == mFun :
29 | return m.testGet(stub, args[0])
30 | default :
31 | return shim.Error("no fun invoke")
32 | }
33 | // return shim.Success([]byte("success invoke"))
34 | }
35 |
36 | func (m *MedicalChainCode) testInput(stub shim.ChaincodeStubInterface, args []string) peer.Response {
37 | err := stub.PutState(args[0], []byte(args[1]))
38 | if err != nil {
39 | return shim.Error(err.Error())
40 | }
41 | return shim.Success([]byte("test input success"))
42 | }
43 |
44 | func (m *MedicalChainCode) testGet(stub shim.ChaincodeStubInterface, arg string) peer.Response {
45 | value, err := stub.GetState(arg)
46 | if(err != nil) {
47 | return shim.Error(err.Error())
48 | }
49 | return shim.Success(value)
50 | }
51 |
52 | func main() {
53 | err := shim.Start(new(MedicalChainCode))
54 | if err != nil {
55 | fmt.Printf("error start chaincode : %s", err)
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/code/chaincode/src/t.go:
--------------------------------------------------------------------------------
1 | func (m *MedicalChainCode) getAllHistoryRecordbyID(stub shim.ChaincodeStubInterface, args []string) peer.Response {
2 | if len(args) != 1 {
3 | return shim.Error("only one parameter required")
4 | }
5 | recordIterator, err := stub.GetHistoryForKey(args[0])
6 | defer recordIterator.Close()
7 | if err != nil {
8 | return shim.Error(err.Error())
9 | }
10 | var resultBuffer bytes.Buffer
11 | resultBuffer.WriteString("[")
12 | if recordIterator.HasNext() {
13 | record, err := recordIterator.Next()
14 | if err != nil {
15 | return shim.Error(err.Error())
16 | }
17 | resultBuffer.WriteString("{")
18 | resultBuffer.WriteString("\"key\":")
19 | resultBuffer.WriteString(record.Key)
20 | resultBuffer.WriteString(", \"record\":")
21 | resultBuffer.WriteString(string(record.Value))
22 | resultBuffer.WriteString("}")
23 | for recordIterator.HasNext() {
24 | record, err = recordIterator.Next()
25 | if err != nil {
26 | return shim.Error(err.Error())
27 | }
28 | resultBuffer.WriteString(", {\"key\":")
29 | resultBuffer.WriteString(record.Key)
30 | resultBuffer.WriteString(", \"record\":")
31 | resultBuffer.WriteString(string(record.Value))
32 | resultBuffer.WriteString("}")
33 | }
34 | }
35 | resultBuffer.WriteString("]")
36 | return shim.Success(resultBuffer.Bytes())
37 | }
--------------------------------------------------------------------------------
/code/chaincode/test_network/createChannel.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 |
4 | CHANNEL_NAME="$1"
5 | DELAY="$2"
6 | MAX_RETRY="$3"
7 | VERBOSE="$4"
8 | : ${CHANNEL_NAME:="mychannel"}
9 | : ${DELAY:="3"}
10 | : ${MAX_RETRY:="5"}
11 | : ${VERBOSE:="false"}
12 |
13 | # import utils
14 | . scripts/envVar.sh
15 |
16 | if [ ! -d "channel-artifacts" ]; then
17 | mkdir channel-artifacts
18 | fi
19 |
20 | createChannelTx() {
21 |
22 | set -x
23 | configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME
24 | res=$?
25 | set +x
26 | if [ $res -ne 0 ]; then
27 | echo "Failed to generate channel configuration transaction..."
28 | exit 1
29 | fi
30 | echo
31 |
32 | }
33 |
34 | createAncorPeerTx() {
35 |
36 | for orgmsp in Org1MSP Org2MSP; do
37 |
38 | echo "####### Generating anchor peer update for ${orgmsp} ##########"
39 | set -x
40 | configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/${orgmsp}anchors.tx -channelID $CHANNEL_NAME -asOrg ${orgmsp}
41 | res=$?
42 | set +x
43 | if [ $res -ne 0 ]; then
44 | echo "Failed to generate anchor peer update for ${orgmsp}..."
45 | exit 1
46 | fi
47 | echo
48 | done
49 | }
50 |
51 | createChannel() {
52 | setGlobals 1
53 | # Poll in case the raft leader is not set yet
54 | local rc=1
55 | local COUNTER=1
56 | while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
57 | sleep $DELAY
58 | set -x
59 | peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
60 | res=$?
61 | set +x
62 | let rc=$res
63 | COUNTER=$(expr $COUNTER + 1)
64 | done
65 | cat log.txt
66 | verifyResult $res "Channel creation failed"
67 | echo
68 | echo "===================== Channel '$CHANNEL_NAME' created ===================== "
69 | echo
70 | }
71 |
72 | # queryCommitted ORG
73 | joinChannel() {
74 | ORG=$1
75 | setGlobals $ORG
76 | local rc=1
77 | local COUNTER=1
78 | ## Sometimes Join takes time, hence retry
79 | while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
80 | sleep $DELAY
81 | set -x
82 | peer channel join -b ./channel-artifacts/$CHANNEL_NAME.block >&log.txt
83 | res=$?
84 | set +x
85 | let rc=$res
86 | COUNTER=$(expr $COUNTER + 1)
87 | done
88 | cat log.txt
89 | echo
90 | verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' "
91 | }
92 |
93 | updateAnchorPeers() {
94 | ORG=$1
95 | setGlobals $ORG
96 | local rc=1
97 | local COUNTER=1
98 | ## Sometimes Join takes time, hence retry
99 | while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
100 | sleep $DELAY
101 | set -x
102 | peer channel update -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
103 | res=$?
104 | set +x
105 | let rc=$res
106 | COUNTER=$(expr $COUNTER + 1)
107 | done
108 | cat log.txt
109 | verifyResult $res "Anchor peer update failed"
110 | echo "===================== Anchor peers updated for org '$CORE_PEER_LOCALMSPID' on channel '$CHANNEL_NAME' ===================== "
111 | sleep $DELAY
112 | echo
113 | }
114 |
115 | verifyResult() {
116 | if [ $1 -ne 0 ]; then
117 | echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!"
118 | echo
119 | exit 1
120 | fi
121 | }
122 |
123 | FABRIC_CFG_PATH=${PWD}/configtx
124 |
125 | ## Create channeltx
126 | echo "### Generating channel configuration transaction '${CHANNEL_NAME}.tx' ###"
127 | createChannelTx
128 |
129 | ## Create anchorpeertx
130 | echo "### Generating channel configuration transaction '${CHANNEL_NAME}.tx' ###"
131 | createAncorPeerTx
132 |
133 | FABRIC_CFG_PATH=$PWD/../config/
134 |
135 | ## Create channel
136 | echo "Creating channel "$CHANNEL_NAME
137 | createChannel
138 |
139 | ## Join all the peers to the channel
140 | echo "Join Org1 peers to the channel..."
141 | joinChannel 1
142 | echo "Join Org2 peers to the channel..."
143 | joinChannel 2
144 |
145 | ## Set the anchor peers for each org in the channel
146 | echo "Updating anchor peers for org1..."
147 | updateAnchorPeers 1
148 | echo "Updating anchor peers for org2..."
149 | updateAnchorPeers 2
150 |
151 | echo
152 | echo "========= Channel successfully joined =========== "
153 | echo
154 |
155 | exit 0
156 |
--------------------------------------------------------------------------------
/code/chaincode/test_network/envVar.sh:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright IBM Corp All Rights Reserved
3 | #
4 | # SPDX-License-Identifier: Apache-2.0
5 | #
6 |
7 | # This is a collection of bash functions used by different scripts
8 |
9 | export CORE_PEER_TLS_ENABLED=true
10 | export ORDERER_CA=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
11 | export PEER0_ORG1_CA=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
12 | export PEER0_ORG2_CA=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
13 | export PEER0_ORG3_CA=${PWD}/organizations/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt
14 |
15 | # Set OrdererOrg.Admin globals
16 | setOrdererGlobals() {
17 | export CORE_PEER_LOCALMSPID="OrdererMSP"
18 | export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
19 | export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/ordererOrganizations/example.com/users/Admin@example.com/msp
20 | }
21 |
22 | # Set environment variables for the peer org
23 | setGlobals() {
24 | local USING_ORG=""
25 | if [ -z "$OVERRIDE_ORG" ]; then
26 | USING_ORG=$1
27 | else
28 | USING_ORG="${OVERRIDE_ORG}"
29 | fi
30 | echo "Using organization ${USING_ORG}"
31 | if [ $USING_ORG -eq 1 ]; then
32 | export CORE_PEER_LOCALMSPID="Org1MSP"
33 | export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG1_CA
34 | export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
35 | export CORE_PEER_ADDRESS=localhost:7051
36 | elif [ $USING_ORG -eq 2 ]; then
37 | export CORE_PEER_LOCALMSPID="Org2MSP"
38 | export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
39 | export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
40 | export CORE_PEER_ADDRESS=localhost:9051
41 |
42 | elif [ $USING_ORG -eq 3 ]; then
43 | export CORE_PEER_LOCALMSPID="Org3MSP"
44 | export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG3_CA
45 | export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp
46 | export CORE_PEER_ADDRESS=localhost:11051
47 | else
48 | echo "================== ERROR !!! ORG Unknown =================="
49 | fi
50 |
51 | if [ "$VERBOSE" == "true" ]; then
52 | env | grep CORE
53 | fi
54 | }
55 |
56 | # parsePeerConnectionParameters $@
57 | # Helper function that sets the peer connection parameters for a chaincode
58 | # operation
59 | parsePeerConnectionParameters() {
60 |
61 | PEER_CONN_PARMS=""
62 | PEERS=""
63 | while [ "$#" -gt 0 ]; do
64 | setGlobals $1
65 | PEER="peer0.org$1"
66 | ## Set peer adresses
67 | PEERS="$PEERS $PEER"
68 | PEER_CONN_PARMS="$PEER_CONN_PARMS --peerAddresses $CORE_PEER_ADDRESS"
69 | ## Set path to TLS certificate
70 | TLSINFO=$(eval echo "--tlsRootCertFiles \$PEER0_ORG$1_CA")
71 | PEER_CONN_PARMS="$PEER_CONN_PARMS $TLSINFO"
72 | # shift by one to get to the next organization
73 | shift
74 | done
75 | # remove leading space for output
76 | PEERS="$(echo -e "$PEERS" | sed -e 's/^[[:space:]]*//')"
77 | }
78 |
79 | verifyResult() {
80 | if [ $1 -ne 0 ]; then
81 | echo "!!!!!!!!!!!!!!! "$2" !!!!!!!!!!!!!!!!"
82 | echo
83 | exit 1
84 | fi
85 | }
86 |
--------------------------------------------------------------------------------
/code/chaincode/test_network/fabcar.go:
--------------------------------------------------------------------------------
1 | /*
2 | * Licensed to the Apache Software Foundation (ASF) under one
3 | * or more contributor license agreements. See the NOTICE file
4 | * distributed with this work for additional information
5 | * regarding copyright ownership. The ASF licenses this file
6 | * to you under the Apache License, Version 2.0 (the
7 | * "License"); you may not use this file except in compliance
8 | * with the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing,
13 | * software distributed under the License is distributed on an
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | * KIND, either express or implied. See the License for the
16 | * specific language governing permissions and limitations
17 | * under the License.
18 | */
19 |
20 | package main
21 |
22 | import (
23 | "encoding/json"
24 | "fmt"
25 | "strconv"
26 |
27 | "github.com/hyperledger/fabric-contract-api-go/contractapi"
28 | )
29 |
30 | // SmartContract provides functions for managing a car
31 | type SmartContract struct {
32 | contractapi.Contract
33 | }
34 |
35 | // Car describes basic details of what makes up a car
36 | type Car struct {
37 | Make string `json:"make"`
38 | Model string `json:"model"`
39 | Colour string `json:"colour"`
40 | Owner string `json:"owner"`
41 | }
42 |
43 | // QueryResult structure used for handling result of query
44 | type QueryResult struct {
45 | Key string `json:"Key"`
46 | Record *Car
47 | }
48 |
49 | // InitLedger adds a base set of cars to the ledger
50 | func (s *SmartContract) InitLedger(ctx contractapi.TransactionContextInterface) error {
51 | cars := []Car{
52 | Car{Make: "Toyota", Model: "Prius", Colour: "blue", Owner: "Tomoko"},
53 | Car{Make: "Ford", Model: "Mustang", Colour: "red", Owner: "Brad"},
54 | Car{Make: "Hyundai", Model: "Tucson", Colour: "green", Owner: "Jin Soo"},
55 | Car{Make: "Volkswagen", Model: "Passat", Colour: "yellow", Owner: "Max"},
56 | Car{Make: "Tesla", Model: "S", Colour: "black", Owner: "Adriana"},
57 | Car{Make: "Peugeot", Model: "205", Colour: "purple", Owner: "Michel"},
58 | Car{Make: "Chery", Model: "S22L", Colour: "white", Owner: "Aarav"},
59 | Car{Make: "Fiat", Model: "Punto", Colour: "violet", Owner: "Pari"},
60 | Car{Make: "Tata", Model: "Nano", Colour: "indigo", Owner: "Valeria"},
61 | Car{Make: "Holden", Model: "Barina", Colour: "brown", Owner: "Shotaro"},
62 | }
63 |
64 | for i, car := range cars {
65 | carAsBytes, _ := json.Marshal(car)
66 | err := ctx.GetStub().PutState("CAR"+strconv.Itoa(i), carAsBytes)
67 |
68 | if err != nil {
69 | return fmt.Errorf("Failed to put to world state. %s", err.Error())
70 | }
71 | }
72 |
73 | return nil
74 | }
75 |
76 | // CreateCar adds a new car to the world state with given details
77 | func (s *SmartContract) CreateCar(ctx contractapi.TransactionContextInterface, carNumber string, make string, model string, colour string, owner string) error {
78 | car := Car{
79 | Make: make,
80 | Model: model,
81 | Colour: colour,
82 | Owner: owner,
83 | }
84 |
85 | carAsBytes, _ := json.Marshal(car)
86 |
87 | return ctx.GetStub().PutState(carNumber, carAsBytes)
88 | }
89 |
90 | // QueryCar returns the car stored in the world state with given id
91 | func (s *SmartContract) QueryCar(ctx contractapi.TransactionContextInterface, carNumber string) (*Car, error) {
92 | carAsBytes, err := ctx.GetStub().GetState(carNumber)
93 |
94 | if err != nil {
95 | return nil, fmt.Errorf("Failed to read from world state. %s", err.Error())
96 | }
97 |
98 | if carAsBytes == nil {
99 | return nil, fmt.Errorf("%s does not exist", carNumber)
100 | }
101 |
102 | car := new(Car)
103 | _ = json.Unmarshal(carAsBytes, car)
104 |
105 | return car, nil
106 | }
107 |
108 | // QueryAllCars returns all cars found in world state
109 | func (s *SmartContract) QueryAllCars(ctx contractapi.TransactionContextInterface) ([]QueryResult, error) {
110 | startKey := "CAR0"
111 | endKey := "CAR99"
112 |
113 | resultsIterator, err := ctx.GetStub().GetStateByRange(startKey, endKey)
114 |
115 | if err != nil {
116 | return nil, err
117 | }
118 | defer resultsIterator.Close()
119 |
120 | results := []QueryResult{}
121 |
122 | for resultsIterator.HasNext() {
123 | queryResponse, err := resultsIterator.Next()
124 |
125 | if err != nil {
126 | return nil, err
127 | }
128 |
129 | car := new(Car)
130 | _ = json.Unmarshal(queryResponse.Value, car)
131 |
132 | queryResult := QueryResult{Key: queryResponse.Key, Record: car}
133 | results = append(results, queryResult)
134 | }
135 |
136 | return results, nil
137 | }
138 |
139 | // ChangeCarOwner updates the owner field of car with given id in world state
140 | func (s *SmartContract) ChangeCarOwner(ctx contractapi.TransactionContextInterface, carNumber string, newOwner string) error {
141 | car, err := s.QueryCar(ctx, carNumber)
142 |
143 | if err != nil {
144 | return err
145 | }
146 |
147 | car.Owner = newOwner
148 |
149 | carAsBytes, _ := json.Marshal(car)
150 |
151 | return ctx.GetStub().PutState(carNumber, carAsBytes)
152 | }
153 |
154 | func main() {
155 |
156 | chaincode, err := contractapi.NewChaincode(new(SmartContract))
157 |
158 | if err != nil {
159 | fmt.Printf("Error create fabcar chaincode: %s", err.Error())
160 | return
161 | }
162 |
163 | if err := chaincode.Start(); err != nil {
164 | fmt.Printf("Error starting fabcar chaincode: %s", err.Error())
165 | }
166 | }
167 |
--------------------------------------------------------------------------------
/code/medical/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/code/medical/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/code/medical/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | medical
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.wst.common.project.facet.core.builder
15 |
16 |
17 |
18 |
19 | org.eclipse.wst.validation.validationbuilder
20 |
21 |
22 |
23 |
24 | org.eclipse.m2e.core.maven2Builder
25 |
26 |
27 |
28 |
29 |
30 | org.eclipse.jem.workbench.JavaEMFNature
31 | org.eclipse.wst.common.modulecore.ModuleCoreNature
32 | org.eclipse.jdt.core.javanature
33 | org.eclipse.m2e.core.maven2Nature
34 | org.eclipse.wst.common.project.facet.core.nature
35 | org.eclipse.wst.jsdt.core.jsNature
36 |
37 |
38 |
--------------------------------------------------------------------------------
/code/medical/.settings/.jsdtscope:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding//src/main/java=utf8
3 | encoding//src/main/resources=utf8
4 | encoding//src/test/java=utf8
5 | encoding/=utf8
6 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.compliance=1.8
5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
8 | org.eclipse.jdt.core.compiler.source=1.8
9 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.wst.common.component:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.wst.common.project.facet.core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.wst.jsdt.ui.superType.container:
--------------------------------------------------------------------------------
1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.wst.jsdt.ui.superType.name:
--------------------------------------------------------------------------------
1 | Window
--------------------------------------------------------------------------------
/code/medical/.settings/org.eclipse.wst.validation.prefs:
--------------------------------------------------------------------------------
1 | disabled=06target
2 | eclipse.preferences.version=1
3 |
--------------------------------------------------------------------------------
/code/medical/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | wow
5 | medical
6 | war
7 | 0.0.1-SNAPSHOT
8 | medical Maven Webapp
9 | http://maven.apache.org
10 |
11 |
12 | utf8
13 | utf8
14 | 4.3.20.RELEASE
15 | 2.9.6
16 |
17 |
18 |
19 |
20 | junit
21 | junit
22 | 3.8.1
23 | test
24 |
25 |
26 | org.springframework
27 | spring-context
28 | ${spring.version}
29 |
30 |
31 |
32 | commons-logging
33 | commons-logging
34 |
35 |
36 |
37 |
38 | org.springframework
39 | spring-web
40 | ${spring.version}
41 |
42 |
43 | org.springframework
44 | spring-webmvc
45 | ${spring.version}
46 |
47 |
48 | org.springframework
49 | spring-aop
50 | ${spring.version}
51 |
52 |
53 | org.springframework
54 | spring-beans
55 | ${spring.version}
56 |
57 |
58 | org.springframework
59 | spring-core
60 | ${spring.version}
61 |
62 |
63 | org.springframework
64 | spring-jdbc
65 | ${spring.version}
66 |
67 |
68 | org.springframework
69 | spring-tx
70 | ${spring.version}
71 |
72 |
73 | org.springframework
74 | spring-orm
75 | ${spring.version}
76 |
77 |
78 | org.springframework
79 | spring-context-support
80 | ${spring.version}
81 |
82 |
83 | org.springframework
84 | spring-aspects
85 | ${spring.version}
86 |
87 |
88 | commons-fileupload
89 | commons-fileupload
90 | 1.3.1
91 |
92 |
93 | commons-logging
94 | commons-logging
95 | 1.2
96 |
97 |
98 | commons-collections
99 | commons-collections
100 | 3.2.2
101 |
102 |
103 | commons-io
104 | commons-io
105 | 2.4
106 |
107 |
108 | commons-dbcp
109 | commons-dbcp
110 | 1.4
111 |
112 |
113 | commons-pool
114 | commons-pool
115 | 1.6
116 |
117 |
118 | commons-lang
119 | commons-lang
120 | 2.6
121 |
122 |
123 | org.jboss.logging
124 | jboss-logging
125 | 3.3.2.Final
126 |
127 |
128 | mysql
129 | mysql-connector-java
130 | 5.1.38
131 |
132 |
133 | org.mybatis
134 | mybatis-spring
135 | 1.3.1
136 |
137 |
138 | org.mybatis
139 | mybatis
140 | 3.4.5
141 |
142 |
143 | com.fasterxml.jackson.core
144 | jackson-databind
145 | 2.9.6
146 |
147 |
148 | com.fasterxml.jackson.core
149 | jackson-core
150 | 2.9.6
151 |
152 |
153 | com.fasterxml.jackson.core
154 | jackson-annotations
155 | 2.9.6
156 |
157 |
158 | org.codehaus.jackson
159 | jackson-core-asl
160 | 1.9.13
161 |
162 |
163 | org.codehaus.jackson
164 | jackson-mapper-asl
165 | 1.9.13
166 |
167 |
168 |
173 |
174 | javax.servlet
175 | javax.servlet-api
176 | 3.0.1
177 | provided
178 |
179 |
180 | jstl
181 | jstl
182 | 1.2
183 |
184 |
185 | p6spy
186 | p6spy
187 | 3.6.0
188 |
189 |
190 | org.hibernate
191 | hibernate-validator
192 | 5.4.1.Final
193 |
194 |
195 | com.alibaba
196 | fastjson
197 | 1.2.47
198 |
199 |
200 |
201 | org.hyperledger.fabric
202 | fabric-gateway-java
203 | 2.0.0
204 |
205 |
206 |
207 |
208 | medical
209 |
210 |
211 |
212 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/controller/AdminController.java:
--------------------------------------------------------------------------------
1 | package wow.controller;
2 |
3 | import java.io.PrintWriter;
4 | import java.nio.charset.StandardCharsets;
5 |
6 | import javax.servlet.http.HttpServletResponse;
7 |
8 | import org.hyperledger.fabric.gateway.Contract;
9 | import org.springframework.beans.factory.annotation.Autowired;
10 | import org.springframework.web.bind.annotation.GetMapping;
11 | import org.springframework.web.bind.annotation.RequestMapping;
12 | import org.springframework.web.bind.annotation.RestController;
13 |
14 | import com.alibaba.fastjson.JSONObject;
15 |
16 | import wow.entity.BackJSON;
17 | import wow.entity.MedicalRecord;
18 | import wow.service.AdminService;
19 | import wow.util.Value;
20 |
21 | /**
22 | * 管理员功能实现
23 | * @author wow
24 | * @date 2020年6月5日
25 | */
26 |
27 | @RestController
28 | @RequestMapping("/admin/")
29 | public class AdminController {
30 |
31 | @Autowired
32 | private AdminService as;
33 |
34 | /* 第一次测试 */
35 | @RequestMapping("test")
36 | public void test() {
37 | System.out.println("进入测试!");
38 | }
39 | /* 查询区块链测试 */
40 | @RequestMapping("testQueryFabric")
41 | public void testQueryFabric(HttpServletResponse response) {
42 | Contract contract = Value.getContract();
43 | try {
44 | byte[] queryResult = contract.evaluateTransaction("testGet","firstKey");
45 | String queryStr = new String(queryResult, StandardCharsets.UTF_8);
46 | System.out.println("===>>>value:"+queryStr);
47 | PrintWriter out = response.getWriter();
48 | out.write("{\"firstValue\":\""+queryStr+"\"}");
49 | out.close();
50 | } catch (Exception e) {
51 | e.printStackTrace();
52 | }
53 | }
54 | /* 数据存储上链测试 */
55 | @RequestMapping("testInputFabric")
56 | public BackJSON testInputFabric() {
57 | Contract contract = Value.getContract();
58 | BackJSON result = new BackJSON(0);
59 | try {
60 | byte[] queryResult = contract.createTransaction("uploadMedicalRecord").submit("patientID0", "patientName0", "doctorName0", "createTime0", "medicalPicture0", "description0");
61 | String queryStr = new String(queryResult, StandardCharsets.UTF_8);
62 | System.out.println("create result:"+queryStr);
63 | if(queryStr.equals("success")) {
64 | result.setCode(200);
65 | }
66 |
67 | queryResult = contract.evaluateTransaction("getRecordbyID", "patientID0");
68 | queryStr = new String(queryResult, StandardCharsets.UTF_8);
69 | JSONObject jsonResult = JSONObject.parseObject(queryStr);
70 | MedicalRecord medicalRecord = new MedicalRecord();
71 | medicalRecord.setPatientID(01);
72 | medicalRecord.setPatientName(jsonResult.getString("patientname"));
73 | medicalRecord.setDoctorName(jsonResult.getString("doctorname"));
74 | medicalRecord.setCreateTime(jsonResult.getString("createtime"));
75 | medicalRecord.setMedicalPicture(jsonResult.getString("medicalpicture"));
76 | medicalRecord.setDescription(jsonResult.getString("description"));
77 | result.setData(medicalRecord);
78 | } catch (Exception e) {
79 | e.printStackTrace();
80 | }
81 | return result;
82 | }
83 |
84 | /* 获取用户总数 */
85 | @GetMapping("getUserCount")
86 | public BackJSON getUserCount() {
87 | return as.getUserCount();
88 | }
89 |
90 | }
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/controller/DoctorController.java:
--------------------------------------------------------------------------------
1 | package wow.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.ModelAttribute;
6 | import org.springframework.web.bind.annotation.PostMapping;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RestController;
9 |
10 | import wow.entity.BackJSON;
11 | import wow.entity.CreateMedical;
12 | import wow.entity.IIS;
13 | import wow.service.DoctorService;
14 |
15 |
16 | /**
17 | * 医生功能模块
18 | * @author wow
19 | * @date 2020年6月6日
20 | */
21 |
22 | @RestController
23 | @RequestMapping("/doctor/")
24 | public class DoctorController {
25 |
26 | @Autowired
27 | private DoctorService ds;
28 |
29 | /* 医生为患者建立病历 */
30 | @PostMapping("createMedical")
31 | public BackJSON createMedical(@ModelAttribute CreateMedical medical) {
32 | return ds.createMedical(medical);
33 | }
34 |
35 | /* 医生申请授权 */
36 | @PostMapping("applyAuthorize")
37 | public BackJSON applyAuthorze(Integer doctorID, String patientPhone) {
38 | return ds.applyAuthority(doctorID, patientPhone);
39 | }
40 |
41 | /* 医生查看已获得授权列表 */
42 | @GetMapping("authorizedList")
43 | public BackJSON authorizedList(Integer doctorID) {
44 | return ds.authorizedList(doctorID);
45 | }
46 |
47 | /* 医生查看详细病历
48 | * is: Integer applyID, String doctorPrivateKey
49 | * */
50 | @PostMapping("medicalDescription")
51 | public BackJSON getMedicalDescription(@ModelAttribute IIS is) {
52 | return ds.getMedicalDescription(is.getI1(), is.getS());
53 | }
54 |
55 |
56 |
57 |
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/controller/PatientController.java:
--------------------------------------------------------------------------------
1 | package wow.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.ModelAttribute;
5 | import org.springframework.web.bind.annotation.PostMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | import wow.entity.BackJSON;
10 | import wow.entity.IIS;
11 | import wow.service.PatientService;
12 |
13 | /**
14 | * 患者功能模块
15 | * @author wow
16 | * @date 2020年6月6日
17 | */
18 |
19 | @RestController
20 | @RequestMapping("/patient/")
21 | public class PatientController {
22 |
23 | @Autowired
24 | private PatientService ps;
25 |
26 | /* 确认要提交到区块链上的病历
27 | * is: patientID, patientPrivateKey
28 | * */
29 | @PostMapping("needConfirmMedical")
30 | public BackJSON needConfirmMedical(@ModelAttribute IIS is) {
31 | return ps.needConfirmMedical(is.getI1(), is.getS());
32 | }
33 |
34 | /* 上传病历
35 | * iis: Integer applyID, Integer patientID, String patientPrvateKey
36 | * */
37 | @PostMapping("uploadMedical")
38 | public BackJSON uploadMedical(@ModelAttribute IIS iis) {
39 | return ps.uploadMedical(iis.getI1(), iis.getI2(), iis.getS());
40 | }
41 |
42 | /* 查询病历
43 | * iis :Integer type, Integer patientID, String patientPrivateKey
44 | * */
45 | @PostMapping("inquireMedical")
46 | public BackJSON inquireMedical(@ModelAttribute IIS iis) {
47 | return ps.inquireMedical(iis.getI1(), iis.getI2(), iis.getS());
48 | }
49 |
50 | /* 查看待授权列表
51 | * is: Integer patientID, String patientPrivateKey
52 | * */
53 | @PostMapping("authorizeList")
54 | public BackJSON authorizeList(@ModelAttribute IIS is) {
55 | return ps.authorizeList(is.getI1(), is.getS());
56 | }
57 |
58 | /* 处理授权
59 | * iis: Integer applyID, String patientPrivateKey, Integer dealType
60 | * */
61 | @PostMapping("dealAuthorize")
62 | public BackJSON dealAuthorize(@ModelAttribute IIS iis) {
63 | return ps.dealAuthorize(iis.getI1(), iis.getS(), iis.getI2());
64 | }
65 |
66 |
67 |
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package wow.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.ModelAttribute;
6 | import org.springframework.web.bind.annotation.PostMapping;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RestController;
9 |
10 | import wow.entity.BackJSON;
11 | import wow.entity.UserInfo;
12 | import wow.service.UserService;
13 |
14 |
15 | /**
16 | * 通用用户功能模块
17 | * @author wow
18 | * @date 2020年6月6日
19 | */
20 |
21 | @RestController
22 | @RequestMapping("/user/")
23 | public class UserController {
24 |
25 | @Autowired
26 | private UserService us;
27 |
28 | /* 新用户注册 */
29 | @PostMapping("register")
30 | // public BackJSON register(@RequestBody UserInfo userInfo) {
31 | public BackJSON register(@ModelAttribute UserInfo userInfo) {
32 | return us.userRegister(userInfo);
33 | }
34 |
35 | /* 根据名称获取医疗机构ID */
36 | @GetMapping("getHospitalID")
37 | public BackJSON getHospitalID(String hospitalName) {
38 | return us.getHospitalID(hospitalName);
39 | }
40 |
41 | /* 用户登录 */
42 | @PostMapping("login")
43 | public BackJSON login(@ModelAttribute UserInfo userInfo) {
44 | return us.userLogin(userInfo);
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/Authorize.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | import java.sql.Timestamp;
4 |
5 | import com.fasterxml.jackson.annotation.JsonFormat;
6 |
7 | public class Authorize {
8 |
9 | private Integer applyID;
10 | private UserIN userID;
11 | private UserIN toUserID;
12 | @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss", timezone="GMT+8")
13 | private Timestamp applyDate;
14 | private String description;
15 | private MedicalRecord record;
16 | private String signText;
17 | public String getDescription() {
18 | return description;
19 | }
20 | public void setDescription(String description) {
21 | this.description = description;
22 | }
23 | public String getSignText() {
24 | return signText;
25 | }
26 | public void setSignText(String signText) {
27 | this.signText = signText;
28 | }
29 | public MedicalRecord getRecord() {
30 | return record;
31 | }
32 | public void setRecord(MedicalRecord record) {
33 | this.record = record;
34 | }
35 | public Integer getApplyID() {
36 | return applyID;
37 | }
38 | public void setApplyID(Integer applyID) {
39 | this.applyID = applyID;
40 | }
41 | public UserIN getUserID() {
42 | return userID;
43 | }
44 | public void setUserID(UserIN userID) {
45 | this.userID = userID;
46 | }
47 | public UserIN getToUserID() {
48 | return toUserID;
49 | }
50 | public void setToUserID(UserIN toUserID) {
51 | this.toUserID = toUserID;
52 | }
53 | public Timestamp getApplyDate() {
54 | return applyDate;
55 | }
56 | public void setApplyDate(Timestamp applyDate) {
57 | this.applyDate = applyDate;
58 | }
59 | public Authorize() {
60 | super();
61 |
62 | }
63 | public Authorize(Integer applyID, UserIN userID, UserIN toUserID, Timestamp applyDate, String description,
64 | MedicalRecord record, String signText) {
65 | super();
66 | this.applyID = applyID;
67 | this.userID = userID;
68 | this.toUserID = toUserID;
69 | this.applyDate = applyDate;
70 | this.description = description;
71 | this.record = record;
72 | this.signText = signText;
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/BackJSON.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class BackJSON {
4 |
5 | private int code;
6 | private Object data;
7 | public BackJSON() {}
8 | public BackJSON(int code, Object data) {
9 | super();
10 | this.code = code;
11 | this.data = data;
12 | }
13 | public BackJSON(int code) {
14 | this.code = code;
15 | }
16 | public int getCode() {
17 | return code;
18 | }
19 | public void setCode(int code) {
20 | this.code = code;
21 | }
22 | public Object getData() {
23 | return data;
24 | }
25 | public void setData(Object data) {
26 | this.data = data;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/CreateMedical.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | import org.springframework.web.multipart.MultipartFile;
4 |
5 | public class CreateMedical {
6 |
7 | private Integer doctorID;
8 | private String patientPhone;
9 | private MedicalRecord medical;
10 | private MultipartFile medicalFile;
11 | private String doctorPrivateKey;
12 | public CreateMedical() {
13 | super();
14 |
15 | }
16 | public CreateMedical(Integer doctorID, String patientPhone, MedicalRecord medical, MultipartFile medicalFile,
17 | String doctorPrivateKey) {
18 | super();
19 | this.doctorID = doctorID;
20 | this.patientPhone = patientPhone;
21 | this.medical = medical;
22 | this.medicalFile = medicalFile;
23 | this.doctorPrivateKey = doctorPrivateKey;
24 | }
25 | public Integer getDoctorID() {
26 | return doctorID;
27 | }
28 | public void setDoctorID(Integer doctorID) {
29 | this.doctorID = doctorID;
30 | }
31 | public String getPatientPhone() {
32 | return patientPhone;
33 | }
34 | public void setPatientPhone(String patientPhone) {
35 | this.patientPhone = patientPhone;
36 | }
37 | public MedicalRecord getMedical() {
38 | return medical;
39 | }
40 | public void setMedical(MedicalRecord medical) {
41 | this.medical = medical;
42 | }
43 | public MultipartFile getMedicalFile() {
44 | return medicalFile;
45 | }
46 | public void setMedicalFile(MultipartFile medicalFile) {
47 | this.medicalFile = medicalFile;
48 | }
49 | public String getDoctorPrivateKey() {
50 | return doctorPrivateKey;
51 | }
52 | public void setDoctorPrivateKey(String doctorPrivateKey) {
53 | this.doctorPrivateKey = doctorPrivateKey;
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/Doctor.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class Doctor {
4 |
5 | private Integer doctorID;
6 | private String doctorName;
7 | private String doctorPhone;
8 | private String doctorPassword;
9 | private String doctorPicture;
10 | private Hospital doctorHospital;
11 | private Integer doctorState;
12 | public Doctor() {
13 | super();
14 |
15 | }
16 | public Doctor(Integer doctorID, String doctorName, String doctorPhone, String doctorPassword, String doctorPicture,
17 | Hospital doctorHospital, Integer doctorState) {
18 | super();
19 | this.doctorID = doctorID;
20 | this.doctorName = doctorName;
21 | this.doctorPhone = doctorPhone;
22 | this.doctorPassword = doctorPassword;
23 | this.doctorPicture = doctorPicture;
24 | this.doctorHospital = doctorHospital;
25 | this.doctorState = doctorState;
26 | }
27 | public Integer getDoctorID() {
28 | return doctorID;
29 | }
30 | public void setDoctorID(Integer doctorID) {
31 | this.doctorID = doctorID;
32 | }
33 | public String getDoctorName() {
34 | return doctorName;
35 | }
36 | public void setDoctorName(String doctorName) {
37 | this.doctorName = doctorName;
38 | }
39 | public String getDoctorPhone() {
40 | return doctorPhone;
41 | }
42 | public void setDoctorPhone(String doctorPhone) {
43 | this.doctorPhone = doctorPhone;
44 | }
45 | public String getDoctorPassword() {
46 | return doctorPassword;
47 | }
48 | public void setDoctorPassword(String doctorPassword) {
49 | this.doctorPassword = doctorPassword;
50 | }
51 | public String getDoctorPicture() {
52 | return doctorPicture;
53 | }
54 | public void setDoctorPicture(String doctorPicture) {
55 | this.doctorPicture = doctorPicture;
56 | }
57 | public Hospital getDoctorHospital() {
58 | return doctorHospital;
59 | }
60 | public void setDoctorHospital(Hospital doctorHospital) {
61 | this.doctorHospital = doctorHospital;
62 | }
63 | public Integer getDoctorState() {
64 | return doctorState;
65 | }
66 | public void setDoctorState(Integer doctorState) {
67 | this.doctorState = doctorState;
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/Hospital.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | import java.util.Date;
4 |
5 | import com.fasterxml.jackson.annotation.JsonFormat;
6 |
7 | public class Hospital {
8 |
9 | private Integer hospitalID;
10 | private String hospitalName;
11 | private Integer hospitalState;
12 | private String businessLicense;
13 | @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
14 | private Date inDate;
15 | public Hospital() {
16 | super();
17 |
18 | }
19 | public Hospital(Integer hospitalID, String hospitalName, Integer hospitalState, String businessLicense,
20 | Date inDate) {
21 | super();
22 | this.hospitalID = hospitalID;
23 | this.hospitalName = hospitalName;
24 | this.hospitalState = hospitalState;
25 | this.businessLicense = businessLicense;
26 | this.inDate = inDate;
27 | }
28 | public Integer getHospitalID() {
29 | return hospitalID;
30 | }
31 | public void setHospitalID(Integer hospitalID) {
32 | this.hospitalID = hospitalID;
33 | }
34 | public String getHospitalName() {
35 | return hospitalName;
36 | }
37 | public void setHospitalName(String hospitalName) {
38 | this.hospitalName = hospitalName;
39 | }
40 | public Integer getHospitalState() {
41 | return hospitalState;
42 | }
43 | public void setHospitalState(Integer hospitalState) {
44 | this.hospitalState = hospitalState;
45 | }
46 | public String getBusinessLicense() {
47 | return businessLicense;
48 | }
49 | public void setBusinessLicense(String businessLicense) {
50 | this.businessLicense = businessLicense;
51 | }
52 | public Date getInDate() {
53 | return inDate;
54 | }
55 | public void setInDate(Date inDate) {
56 | this.inDate = inDate;
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/IIS.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class IIS {
4 |
5 | private Integer i1;
6 | private Integer i2;
7 | private String s;
8 | public IIS(Integer i1, Integer i2, String s) {
9 | super();
10 | this.i1 = i1;
11 | this.i2 = i2;
12 | this.s = s;
13 | }
14 | public IIS() {
15 | super();
16 |
17 | }
18 | public Integer getI1() {
19 | return i1;
20 | }
21 | public void setI1(Integer i1) {
22 | this.i1 = i1;
23 | }
24 | public Integer getI2() {
25 | return i2;
26 | }
27 | public void setI2(Integer i2) {
28 | this.i2 = i2;
29 | }
30 | public String getS() {
31 | return s;
32 | }
33 | public void setS(String s) {
34 | this.s = s;
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/MedicalRecord.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class MedicalRecord {
4 |
5 | private Integer patientID;
6 | private String patientName;
7 | private String doctorName;
8 | private String createTime;
9 | private String medicalPicture;
10 | private String description;
11 | public MedicalRecord() {
12 | super();
13 | }
14 |
15 | public String getPatientName() {
16 | return patientName;
17 | }
18 |
19 | public Integer getPatientID() {
20 | return patientID;
21 | }
22 |
23 | public void setPatientID(Integer patientID) {
24 | this.patientID = patientID;
25 | }
26 |
27 | public void setPatientName(String patientName) {
28 | this.patientName = patientName;
29 | }
30 | public String getDoctorName() {
31 | return doctorName;
32 | }
33 | public void setDoctorName(String doctorName) {
34 | this.doctorName = doctorName;
35 | }
36 | public String getCreateTime() {
37 | return createTime;
38 | }
39 | public void setCreateTime(String createTime) {
40 | this.createTime = createTime;
41 | }
42 | public String getMedicalPicture() {
43 | return medicalPicture;
44 | }
45 | public void setMedicalPicture(String medicalPicture) {
46 | this.medicalPicture = medicalPicture;
47 | }
48 |
49 | public String getDescription() {
50 | return description;
51 | }
52 |
53 | public void setDescription(String description) {
54 | this.description = description;
55 | }
56 |
57 | public MedicalRecord(Integer patientID, String patientName, String doctorName, String createTime,
58 | String medicalPicture, String description) {
59 | super();
60 | this.patientID = patientID;
61 | this.patientName = patientName;
62 | this.doctorName = doctorName;
63 | this.createTime = createTime;
64 | this.medicalPicture = medicalPicture;
65 | this.description = description;
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/Patient.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class Patient {
4 |
5 | private Integer patientID;
6 | private String patientName;
7 | private String patientPhone;
8 | private String patientPassword;
9 | private String patientPicture;
10 | private Integer patientState;
11 | public Patient() {
12 | super();
13 |
14 | }
15 | public Patient(Integer patientID, String patientName, String patientPhone, String patientPassword,
16 | String patientPicture, Integer patientState) {
17 | super();
18 | this.patientID = patientID;
19 | this.patientName = patientName;
20 | this.patientPhone = patientPhone;
21 | this.patientPassword = patientPassword;
22 | this.patientPicture = patientPicture;
23 | this.patientState = patientState;
24 | }
25 | public Integer getPatientID() {
26 | return patientID;
27 | }
28 | public void setPatientID(Integer patientID) {
29 | this.patientID = patientID;
30 | }
31 | public String getPatientName() {
32 | return patientName;
33 | }
34 | public void setPatientName(String patientName) {
35 | this.patientName = patientName;
36 | }
37 | public String getPatientPhone() {
38 | return patientPhone;
39 | }
40 | public void setPatientPhone(String patientPhone) {
41 | this.patientPhone = patientPhone;
42 | }
43 | public String getPatientPassword() {
44 | return patientPassword;
45 | }
46 | public void setPatientPassword(String patientPassword) {
47 | this.patientPassword = patientPassword;
48 | }
49 | public String getPatientPicture() {
50 | return patientPicture;
51 | }
52 | public void setPatientPicture(String patientPicture) {
53 | this.patientPicture = patientPicture;
54 | }
55 | public Integer getPatientState() {
56 | return patientState;
57 | }
58 | public void setPatientState(Integer patientState) {
59 | this.patientState = patientState;
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/UserIN.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class UserIN {
4 |
5 | private Integer userID;
6 | private String userName;
7 | public UserIN(Integer userID, String userName) {
8 | super();
9 | this.userID = userID;
10 | this.userName = userName;
11 | }
12 | public UserIN(Integer userID) {
13 | this.userID = userID;
14 | }
15 |
16 | public UserIN() {
17 | super();
18 |
19 | }
20 | public Integer getUserID() {
21 | return userID;
22 | }
23 | public void setUserID(Integer userID) {
24 | this.userID = userID;
25 | }
26 | public String getUserName() {
27 | return userName;
28 | }
29 | public void setUserName(String userName) {
30 | this.userName = userName;
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/entity/UserInfo.java:
--------------------------------------------------------------------------------
1 | package wow.entity;
2 |
3 | public class UserInfo {
4 |
5 |
6 | private Integer userID;
7 | private Integer userType;
8 | private String userName;
9 | private String userPhone;
10 | private String password;
11 | private Integer hospitalID;
12 | public UserInfo(Integer userID, Integer userType, String userName, String userPhone, String password,
13 | Integer hospitalID) {
14 | super();
15 | this.userID = userID;
16 | this.userType = userType;
17 | this.userName = userName;
18 | this.userPhone = userPhone;
19 | this.password = password;
20 | this.hospitalID = hospitalID;
21 | }
22 | public Integer getUserID() {
23 | return userID;
24 | }
25 | public void setUserID(Integer userID) {
26 | this.userID = userID;
27 | }
28 | public Integer getUserType() {
29 | return userType;
30 | }
31 | public void setUserType(Integer userType) {
32 | this.userType = userType;
33 | }
34 | public String getUserName() {
35 | return userName;
36 | }
37 | public void setUserName(String userName) {
38 | this.userName = userName;
39 | }
40 | public String getUserPhone() {
41 | return userPhone;
42 | }
43 | public void setUserPhone(String userPhone) {
44 | this.userPhone = userPhone;
45 | }
46 | public String getPassword() {
47 | return password;
48 | }
49 | public void setPassword(String password) {
50 | this.password = password;
51 | }
52 | public Integer getHospitalID() {
53 | return hospitalID;
54 | }
55 | public void setHospitalID(Integer hospitalID) {
56 | this.hospitalID = hospitalID;
57 | }
58 | public UserInfo(Integer userType, String userName, String userPhone, String password, Integer hospitalID) {
59 | super();
60 | this.userType = userType;
61 | this.userName = userName;
62 | this.userPhone = userPhone;
63 | this.password = password;
64 | this.hospitalID = hospitalID;
65 | }
66 | public UserInfo() {
67 | super();
68 | }
69 |
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/mapper/AdminMapper.java:
--------------------------------------------------------------------------------
1 | package wow.mapper;
2 |
3 | import org.apache.ibatis.annotations.Select;
4 | import org.springframework.stereotype.Repository;
5 |
6 | @Repository
7 | public interface AdminMapper {
8 |
9 | @Select("select user_count from t_usercount")
10 | Integer getUserCount();
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/mapper/DoctorMapper.java:
--------------------------------------------------------------------------------
1 | package wow.mapper;
2 |
3 | import java.util.List;
4 |
5 | import org.apache.ibatis.annotations.Insert;
6 | import org.apache.ibatis.annotations.One;
7 | import org.apache.ibatis.annotations.Result;
8 | import org.apache.ibatis.annotations.Results;
9 | import org.apache.ibatis.annotations.Select;
10 | import org.apache.ibatis.mapping.FetchType;
11 | import org.springframework.stereotype.Repository;
12 |
13 | import wow.entity.Authorize;
14 | import wow.entity.Doctor;
15 | import wow.entity.UserIN;
16 | import wow.entity.UserInfo;
17 |
18 | @Repository
19 | public interface DoctorMapper {
20 |
21 | @Insert("insert into t_doctor(doctor_id, doctor_name, doctor_phone, doctor_password, doctor_hospital, doctor_state) values("
22 | + "#{userID, jdbcType=INTEGER}, #{userName, jdbcType=VARCHAR}, #{userPhone, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}, #{hospitalID, jdbcType=INTEGER}, 0)")
23 | int newDoctor(UserInfo userInfo);
24 |
25 | @Select("select count(1) from t_doctor where doctor_phone=#{phone}")
26 | int ifPhone(String phone);
27 |
28 | @Select("select doctor_id as doctorID, doctor_password as doctorPassword, doctor_state as doctorState "
29 | + "from t_doctor where doctor_phone=#{phone}")
30 | Doctor doctorLogin(String phone);
31 |
32 | @Insert("insert into t_authorize(user_id, to_user_id, apply_state, apply_date, description, sign_text) "
33 | + "values(#{userID.userID, jdbcType=INTEGER}, #{toUserID.userID, jdbcType=INTEGER}, 0, #{applyDate, jdbcType=TIMESTAMP}, #{description}, #{signText, jdbcType=VARCHAR})")
34 | int newAuthorize(Authorize authorize);
35 |
36 | @Select("select user_publickey from t_publickey where user_id=${_parameter}")
37 | String getPublicKey(Integer userID);
38 |
39 | @Select("select apply_id as applyID, user_id, apply_date as applyDate from t_authorize where to_user_id=${_parameter} and apply_state=1")
40 | @Results({
41 | @Result(property="userID", column="user_id", javaType=UserIN.class,
42 | one=@One(select="getUserIN", fetchType=FetchType.EAGER))
43 | })
44 | List getAuthorizeList(Integer userID);
45 |
46 | @Select("select patient_id as userID, patient_name as userName from t_patient where patient_id=${_parameter}")
47 | UserIN getUserIN(Integer userID);
48 |
49 | @Select("select description from t_authorize where apply_id=${_parameter}")
50 | String getAuthorizeDescription(Integer applyID);
51 |
52 |
53 |
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/mapper/PatientMapper.java:
--------------------------------------------------------------------------------
1 | package wow.mapper;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | import org.apache.ibatis.annotations.Delete;
7 | import org.apache.ibatis.annotations.Insert;
8 | import org.apache.ibatis.annotations.One;
9 | import org.apache.ibatis.annotations.Result;
10 | import org.apache.ibatis.annotations.Results;
11 | import org.apache.ibatis.annotations.Select;
12 | import org.apache.ibatis.annotations.Update;
13 | import org.apache.ibatis.mapping.FetchType;
14 | import org.springframework.stereotype.Repository;
15 |
16 | import wow.entity.Authorize;
17 | import wow.entity.Patient;
18 | import wow.entity.UserIN;
19 | import wow.entity.UserInfo;
20 |
21 | @Repository
22 | public interface PatientMapper {
23 |
24 | @Insert("insert into t_patient(patient_id, patient_name, patient_phone, patient_password, patient_state) values("
25 | + "#{userID, jdbcType=INTEGER}, #{userName, jdbcType=VARCHAR}, #{userPhone, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}, 0)")
26 | int newPatient(UserInfo userInfo);
27 |
28 | @Select("select count(1) from t_patient where patient_phone=#{phone}")
29 | int ifPhone(String phone);
30 |
31 | @Select("select patient_id as patientID, patient_password as patientPassword, patient_state as patientState "
32 | + "from t_patient where patient_phone=#{phone}")
33 | Patient patientLogin(String phone);
34 |
35 | @Select("select p.patient_id as patientID, k.user_publickey as patientPublicKey from t_patient p, t_publickey k where p.patient_phone=#{phone} and k.user_id=p.patient_id")
36 | Map getPatientIDAndPublicKey(String phone);
37 |
38 | @Select("select apply_id as applyID, user_id, apply_date as applyDate, description, sign_text as signText from t_authorize where to_user_id=${_parameter} and apply_state=0")
39 | @Results({
40 | @Result(property="userID", column="user_id", javaType=UserIN.class,
41 | one=@One(select="getUserIN", fetchType=FetchType.EAGER))
42 | })
43 | List getNeedUploadMedicalList(int userID);
44 |
45 | @Select("select doctor_id as userID, doctor_name as userName from t_doctor where doctor_id=${_parameter}")
46 | UserIN getUserIN(int userID);
47 |
48 | @Select("select description from t_authorize where apply_id=${_parameter}")
49 | String getMedicalDescription(int applyID);
50 |
51 | @Select("select user_publickey from t_publickey where uesr_id=${_parameter}")
52 | String getPublicKey(int patientID);
53 |
54 | @Delete("delete from t_authorize where apply_id=${_parameter}")
55 | int delNeedUploadMedical(int applyID);
56 |
57 | @Select("select patient_id from t_patient where patient_phone=#{phone}")
58 | Integer getPatientID(String phone);
59 |
60 | @Select("select apply_id as applyID, to_user_id, apply_date as applyDate, description from t_authorize where user_id=${_parameter} and apply_state=0")
61 | @Results({
62 | @Result(property="toUserID", column="to_user_id", javaType=UserIN.class,
63 | one=@One(select="getUserIN", fetchType=FetchType.EAGER))
64 | })
65 | List getNeedAuthorizeList(int userID);
66 |
67 | @Select("select a.to_user_id, a.description, k.user_publickey from t_authorize a, t_publickey k where a.apply_id=${_parameter} and k.user_id=a.to_user_id")
68 | Map getAuthDescription(int applyID);
69 |
70 | @Update("update t_authorize set description=#{param2}, apply_state=1, apply_date=now() where apply_id=#{param1}")
71 | int confirmAuthorize(Integer applyID, String description);
72 |
73 | @Update("update t_authorize set apply_state=2, apply_date=now() where apply_id=${_parameter}")
74 | int rejectAuthorize(int applyID);
75 |
76 |
77 |
78 |
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/mapper/UserMapper.java:
--------------------------------------------------------------------------------
1 | package wow.mapper;
2 |
3 | import org.apache.ibatis.annotations.Insert;
4 | import org.apache.ibatis.annotations.Select;
5 | import org.apache.ibatis.annotations.Update;
6 | import org.springframework.stereotype.Repository;
7 |
8 | @Repository
9 | public interface UserMapper {
10 |
11 | @Select("select hospital_id from t_hospital where hospital_name=#{hospitalName}")
12 | Integer getHospitalID(String hospitalName);
13 |
14 | @Select("select user_count from t_usercount")
15 | int getUserCount();
16 |
17 | @Update("update t_usercount set user_count=user_count+1")
18 | int updateUserCount();
19 |
20 | @Insert("insert into t_publickey values(#{param1}, #{param2})")
21 | int newUserPublicKey(Integer userID, String userPublicKey);
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/AdminService.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import wow.entity.BackJSON;
4 |
5 | public interface AdminService {
6 |
7 | public BackJSON getUserCount();
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/AdminServiceImpl.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 | import org.springframework.transaction.annotation.Isolation;
6 | import org.springframework.transaction.annotation.Propagation;
7 | import org.springframework.transaction.annotation.Transactional;
8 |
9 | import com.alibaba.fastjson.JSONObject;
10 |
11 | import wow.entity.BackJSON;
12 | import wow.mapper.AdminMapper;
13 |
14 | @Service
15 | @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT)
16 | public class AdminServiceImpl implements AdminService {
17 |
18 | @Autowired
19 | private AdminMapper am;
20 |
21 | @Override
22 | @Transactional(readOnly=true)
23 | public BackJSON getUserCount() {
24 | BackJSON json = new BackJSON(200);
25 | String count = "{\"count\":"+am.getUserCount()+"}";
26 | json.setData(JSONObject.parse(count));
27 | return json;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/DoctorService.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import wow.entity.BackJSON;
4 | import wow.entity.CreateMedical;
5 |
6 | public interface DoctorService {
7 |
8 | public BackJSON createMedical(CreateMedical medical);
9 |
10 | public BackJSON applyAuthority(Integer doctorID, String patientPhone);
11 |
12 | public BackJSON authorizedList(Integer doctorID);
13 |
14 | public BackJSON getMedicalDescription(Integer applyID, String doctorPrivateKey);
15 |
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/DoctorServiceImpl.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 | import java.nio.charset.StandardCharsets;
6 | import java.sql.Timestamp;
7 | import java.text.SimpleDateFormat;
8 | import java.util.Date;
9 | import java.util.HashMap;
10 | import java.util.List;
11 | import java.util.Map;
12 |
13 | import org.hyperledger.fabric.gateway.Contract;
14 | import org.hyperledger.fabric.gateway.ContractException;
15 | import org.springframework.beans.factory.annotation.Autowired;
16 | import org.springframework.stereotype.Service;
17 | import org.springframework.transaction.annotation.Isolation;
18 | import org.springframework.transaction.annotation.Propagation;
19 | import org.springframework.transaction.annotation.Transactional;
20 | import org.springframework.web.multipart.MultipartFile;
21 |
22 | import com.alibaba.fastjson.JSONObject;
23 |
24 | import wow.entity.Authorize;
25 | import wow.entity.BackJSON;
26 | import wow.entity.CreateMedical;
27 | import wow.entity.MedicalRecord;
28 | import wow.entity.UserIN;
29 | import wow.mapper.DoctorMapper;
30 | import wow.mapper.PatientMapper;
31 | import wow.util.Value;
32 |
33 |
34 | @Service
35 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
36 | public class DoctorServiceImpl implements DoctorService {
37 |
38 | @Autowired
39 | private PatientMapper pm;
40 |
41 | @Autowired
42 | private DoctorMapper dm;
43 |
44 | @Override
45 | @Transactional
46 | public BackJSON createMedical(CreateMedical cmedical) {
47 | BackJSON json = new BackJSON(200);
48 | Map data = new HashMap<>();
49 | data.put("result", 1);
50 | // 封装权限信息
51 | Authorize authorize = new Authorize();
52 | long nowTime = System.currentTimeMillis();
53 | authorize.setApplyDate(new Timestamp(nowTime));
54 | Integer doctorID = cmedical.getDoctorID();
55 | authorize.setUserID(new UserIN(doctorID));
56 | Map ikMap = pm.getPatientIDAndPublicKey(cmedical.getPatientPhone());
57 | Integer patientID = ((Number)ikMap.get("patientID")).intValue();
58 | authorize.setToUserID(new UserIN(patientID));
59 | String patientPublicKey = (String)ikMap.get("patientPublicKey");
60 | // 处理病历图片
61 | MultipartFile medicalFile = cmedical.getMedicalFile();
62 | // 文件名字 patientID+timestamp+filename
63 | String fileName = patientID+nowTime+medicalFile.getOriginalFilename();
64 | String filePath = Value.getMedicalPicturePath();
65 | File file = new File(filePath+fileName);
66 | try {
67 | medicalFile.transferTo(file);
68 | } catch (IllegalStateException | IOException e) {
69 | System.out.println("文件传输错误 file:"+file.getName());
70 | e.printStackTrace();
71 | }
72 | MedicalRecord record = cmedical.getMedical();
73 | record.setMedicalPicture(fileName);
74 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
75 | record.setCreateTime(sdf.format(new Date()));
76 | // 患者公钥加密
77 | String encryptDescription = Value.RSAEncrypt(record.getDescription(), patientPublicKey);
78 | record.setDescription(encryptDescription);
79 | // 授权信息描述,这里指病情信息
80 | String description = JSONObject.toJSONString(record);
81 | // System.out.println(description);
82 | // 医生签名
83 | String signDescription = Value.RSASign(description, cmedical.getDoctorPrivateKey());
84 | authorize.setDescription(description);
85 | authorize.setSignText(signDescription);
86 | if(1==dm.newAuthorize(authorize)) {
87 | data.replace("result", 0);
88 | }
89 | json.setData(data);
90 | return json;
91 | }
92 |
93 | @Override
94 | @Transactional
95 | public BackJSON applyAuthority(Integer doctorID, String patientPhone) {
96 | BackJSON json = new BackJSON(200);
97 | Map data = new HashMap<>();
98 | Integer patientID = pm.getPatientID(patientPhone);
99 | if(null==patientID) {
100 | //患者不存在
101 | data.put("result", 1);
102 | } else {
103 | Contract contract = Value.getContract();
104 | try {
105 | byte[] queryResult = contract.evaluateTransaction("getRecordbyID", String.valueOf(patientID));
106 | if(0==queryResult.length) {
107 | // 患者不存在病历数据
108 | data.put("result", 2);
109 | } else {
110 | JSONObject jsonResult = JSONObject.parseObject(new String(queryResult, StandardCharsets.UTF_8));
111 | MedicalRecord medicalRecord = new MedicalRecord();
112 | medicalRecord.setPatientName(jsonResult.getString("patientname"));
113 | medicalRecord.setDoctorName(jsonResult.getString("doctorname"));
114 | medicalRecord.setCreateTime(jsonResult.getString("createtime"));
115 | medicalRecord.setMedicalPicture(jsonResult.getString("medicalpicture"));
116 | medicalRecord.setDescription(jsonResult.getString("description"));
117 | // 封装要存入数据库的数据
118 | Authorize authorize = new Authorize();
119 | authorize.setUserID(new UserIN(patientID));
120 | authorize.setToUserID(new UserIN(doctorID));
121 | authorize.setApplyDate(new Timestamp(System.currentTimeMillis()));
122 | authorize.setDescription(JSONObject.toJSONString(medicalRecord));
123 | if(1==dm.newAuthorize(authorize)) {
124 | data.put("result", 0);
125 | }
126 | }
127 | } catch (ContractException e) {
128 | e.printStackTrace();
129 | }
130 | }
131 | json.setData(data);
132 | return json;
133 | }
134 |
135 | @Override
136 | @Transactional(readOnly=true)
137 | public BackJSON authorizedList(Integer doctorID) {
138 | BackJSON json = new BackJSON(200);
139 | JSONObject data = new JSONObject();
140 | List authList = dm.getAuthorizeList(doctorID);
141 | data.put("list", authList);
142 | json.setData(data);
143 | return json;
144 | }
145 |
146 | @Override
147 | @Transactional(readOnly=true)
148 | public BackJSON getMedicalDescription(Integer applyID, String doctorPrivateKey) {
149 | BackJSON json = new BackJSON(200);
150 | JSONObject data = new JSONObject();
151 | String desciption = dm.getAuthorizeDescription(applyID);
152 | if(desciption!=null) {
153 | MedicalRecord record = JSONObject.parseObject(desciption, MedicalRecord.class);
154 | String picturePath = Value.getMedicalPicturePath();
155 | record.setMedicalPicture(picturePath+record.getMedicalPicture());
156 | String descriptDescription = record.getDescription();
157 | record.setDescription(Value.RSADecrypt(descriptDescription, doctorPrivateKey));
158 | data.put("record", record);
159 | } else {
160 | data.put("record", null);
161 | }
162 | json.setData(data);
163 | return json;
164 | }
165 |
166 |
167 |
168 |
169 | }
170 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/PatientService.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import wow.entity.BackJSON;
4 |
5 | public interface PatientService {
6 |
7 | public BackJSON needConfirmMedical(Integer patientID, String patientPrivateKey);
8 |
9 | public BackJSON uploadMedical(Integer applyID, Integer patientID, String patientPrvateKey);
10 |
11 | public BackJSON inquireMedical(Integer type, Integer patientID, String patientPrivateKey);
12 |
13 | public BackJSON authorizeList(Integer patientID, String patientPrivateKey);
14 |
15 | public BackJSON dealAuthorize(Integer applyID, String patientPrivateKey, Integer dealType);
16 |
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/PatientServiceImpl.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import java.nio.charset.StandardCharsets;
4 | import java.util.HashMap;
5 | import java.util.List;
6 | import java.util.Map;
7 | import java.util.concurrent.TimeoutException;
8 |
9 | import org.hyperledger.fabric.gateway.Contract;
10 | import org.hyperledger.fabric.gateway.ContractException;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 | import org.springframework.stereotype.Service;
13 | import org.springframework.transaction.annotation.Isolation;
14 | import org.springframework.transaction.annotation.Propagation;
15 | import org.springframework.transaction.annotation.Transactional;
16 |
17 | import com.alibaba.fastjson.JSONObject;
18 |
19 | import wow.entity.Authorize;
20 | import wow.entity.BackJSON;
21 | import wow.entity.MedicalRecord;
22 | import wow.mapper.DoctorMapper;
23 | import wow.mapper.PatientMapper;
24 | import wow.util.Value;
25 |
26 |
27 | @Service
28 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
29 | public class PatientServiceImpl implements PatientService {
30 |
31 | @Autowired
32 | private PatientMapper pm;
33 |
34 | @Autowired
35 | private DoctorMapper dm;
36 |
37 | @Override
38 | @Transactional
39 | public BackJSON needConfirmMedical(Integer patientID, String patientPrivateKey) {
40 | BackJSON json = new BackJSON(200);
41 | Map data = new HashMap<>();
42 | List authorizeList = pm.getNeedUploadMedicalList(patientID);
43 | for(Authorize auth : authorizeList) {
44 | // 获取病历
45 | String medicalDescription = auth.getDescription();
46 | // 验证医生签名
47 | String doctorPublicKey = dm.getPublicKey(auth.getUserID().getUserID());
48 | boolean verifyResult = Value.RSACheckSign(medicalDescription, auth.getSignText(), doctorPublicKey);
49 | if(verifyResult) {
50 | auth.setSignText(null);
51 | // 患者私钥解密
52 | MedicalRecord record = JSONObject.parseObject(medicalDescription, MedicalRecord.class);
53 | // System.out.println(patientPrivateKey);
54 | String DescryptMedicalDescription = Value.RSADecrypt(record.getDescription(), patientPrivateKey);
55 | record.setDescription(DescryptMedicalDescription);
56 | String picturePath = Value.getMedicalPicturePath();
57 | record.setMedicalPicture(picturePath+record.getMedicalPicture());
58 | auth.setRecord(record);
59 | auth.setDescription(null);
60 | } else {
61 | //验证签名失败
62 | auth.setRecord(null);
63 | }
64 | }
65 | data.put("list", authorizeList);
66 | json.setData(data);
67 | return json;
68 | }
69 |
70 | @Override
71 | @Transactional
72 | public BackJSON uploadMedical(Integer applyID, Integer patientID, String patientPrvateKey) {
73 | BackJSON json = new BackJSON(200);
74 | Map data = new HashMap<>();
75 | data.put("result", 3);
76 | String medicalDescription = pm.getMedicalDescription(applyID);
77 | if(medicalDescription!=null) {
78 | MedicalRecord record = JSONObject.parseObject(medicalDescription, MedicalRecord.class);
79 | // 加密病历描述
80 | Contract contract = Value.getContract();
81 | try {
82 | byte[] queryResult = contract.createTransaction("uploadMedicalRecord")
83 | .submit(String.valueOf(patientID), record.getPatientName(), record.getDoctorName(), record.getCreateTime(), record.getMedicalPicture(), record.getDescription());
84 | String queryStr = new String(queryResult, StandardCharsets.UTF_8);
85 | if(queryStr.equals("success")) {
86 | data.replace("result", 0);
87 | pm.delNeedUploadMedical(applyID);
88 | } else {
89 | data.replace("result", 2);
90 | }
91 | } catch (ContractException | TimeoutException | InterruptedException e) {
92 | e.printStackTrace();
93 | }
94 | }
95 | json.setData(data);
96 | return json;
97 | }
98 |
99 | @Override
100 | public BackJSON inquireMedical(Integer type, Integer patientID, String patientPrivateKey) {
101 | BackJSON json = new BackJSON(200);
102 | Map data = new HashMap<>();
103 | if(1==type) {
104 | Contract contract = Value.getContract();
105 | try {
106 | byte[] queryResult = contract.evaluateTransaction("getRecordbyID", String.valueOf(patientID));
107 | JSONObject jsonResult = JSONObject.parseObject(new String(queryResult, StandardCharsets.UTF_8));
108 | MedicalRecord medicalRecord = new MedicalRecord();
109 | medicalRecord.setPatientName(jsonResult.getString("patientname"));
110 | medicalRecord.setDoctorName(jsonResult.getString("doctorname"));
111 | medicalRecord.setCreateTime(jsonResult.getString("createtime"));
112 | medicalRecord.setMedicalPicture(Value.getMedicalPicturePath()+jsonResult.getString("medicalpicture"));
113 | medicalRecord.setDescription(Value.RSADecrypt(jsonResult.getString("description"),patientPrivateKey));
114 | data.put("result", 0);
115 | data.put("record", medicalRecord);
116 | } catch (ContractException e) {
117 | data.put("result", 2);
118 | e.printStackTrace();
119 | }
120 | } else {
121 | // TODO:历史病历
122 | }
123 | json.setData(data);
124 | return json;
125 | }
126 |
127 | @Override
128 | @Transactional(readOnly=true)
129 | public BackJSON authorizeList(Integer patientID, String patientPrivateKey) {
130 | BackJSON json = new BackJSON(200);
131 | JSONObject data = new JSONObject();
132 | List authList = pm.getNeedAuthorizeList(patientID);
133 | for(Authorize auth : authList) {
134 | String description = auth.getDescription();
135 | MedicalRecord record = JSONObject.parseObject(description, MedicalRecord.class);
136 | record.setMedicalPicture(Value.getMedicalPicturePath()+record.getMedicalPicture());
137 | record.setDescription(Value.RSADecrypt(record.getDescription(), patientPrivateKey));
138 | auth.setRecord(record);
139 | auth.setDescription(null);
140 | }
141 | data.put("list", authList);
142 | json.setData(data);
143 | return json;
144 | }
145 |
146 | @Override
147 | @Transactional
148 | public BackJSON dealAuthorize(Integer applyID, String patientPrivateKey, Integer dealType) {
149 | BackJSON json = new BackJSON(200);
150 | JSONObject data = new JSONObject();
151 | data.put("result", 1);
152 | if(1==dealType) {
153 | // 同意
154 | Map dkMap = pm.getAuthDescription(applyID);
155 | MedicalRecord record = JSONObject.parseObject((String)dkMap.get("description"), MedicalRecord.class);
156 | // 患者私钥解密后,医生公钥加密
157 | String decryptDescription = Value.RSADecrypt(record.getDescription(), patientPrivateKey);
158 | record.setDescription(Value.RSAEncrypt(decryptDescription, (String)dkMap.get("user_publickey")));
159 | String description = JSONObject.toJSONString(record);
160 | if(1==pm.confirmAuthorize(applyID, description)) {
161 | data.replace("result", 0);
162 | }
163 | } else if(2==dealType) {
164 | // 拒绝
165 | if(1==pm.rejectAuthorize(applyID)) {
166 | data.replace("result", 0);
167 | }
168 | } else if(3==dealType) {
169 | // 删除
170 | if(1==pm.delNeedUploadMedical(applyID)) {
171 | data.replace("result", 0);
172 | }
173 | } else {
174 | // 未知处理
175 | data.replace("result", 2);
176 | }
177 | json.setData(data);
178 | return json;
179 | }
180 |
181 |
182 |
183 |
184 | }
185 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/UserService.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import wow.entity.BackJSON;
4 | import wow.entity.UserInfo;
5 |
6 | public interface UserService {
7 |
8 | public BackJSON userRegister(UserInfo userInfo);
9 |
10 | public BackJSON getHospitalID(String hospitalName);
11 |
12 | public BackJSON userLogin(UserInfo userInfo);
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/java/wow/service/UserServiceImpl.java:
--------------------------------------------------------------------------------
1 | package wow.service;
2 |
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.stereotype.Service;
8 | import org.springframework.transaction.annotation.Isolation;
9 | import org.springframework.transaction.annotation.Propagation;
10 | import org.springframework.transaction.annotation.Transactional;
11 |
12 | import wow.entity.BackJSON;
13 | import wow.entity.Doctor;
14 | import wow.entity.Patient;
15 | import wow.entity.UserInfo;
16 | import wow.mapper.DoctorMapper;
17 | import wow.mapper.PatientMapper;
18 | import wow.mapper.UserMapper;
19 | import wow.util.Value;
20 |
21 | @Service
22 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
23 | public class UserServiceImpl implements UserService {
24 |
25 | @Autowired
26 | private UserMapper um;
27 |
28 | @Autowired
29 | private PatientMapper pm;
30 |
31 | @Autowired
32 | private DoctorMapper dm;
33 |
34 | @Override
35 | @Transactional
36 | public BackJSON userRegister(UserInfo userInfo) {
37 | BackJSON json = new BackJSON(200);
38 | Map data = new HashMap<>();
39 | int userType = userInfo.getUserType();
40 | int userID = um.getUserCount();
41 | userInfo.setUserID(userID);
42 | int insertResult = 0;
43 | // 密码经过 MD5 hash
44 | userInfo.setPassword(Value.MD5Hash(userInfo.getPassword()));
45 | if(1 == userType) {
46 | // 患者
47 | if (pm.ifPhone(userInfo.getUserPhone()) > 0) {
48 | // 手机号注册过
49 | data.put("result", "1");
50 | } else {
51 | insertResult = pm.newPatient(userInfo);
52 | if (insertResult != 1) {
53 | data.put("result", "2");
54 | }
55 | }
56 | } else if(2 == userType) {
57 | // 医生
58 | if(dm.ifPhone(userInfo.getUserPhone()) > 0) {
59 | // 手机号注册过
60 | data.put("result", "1");
61 | } else {
62 | insertResult = dm.newDoctor(userInfo);
63 | if(insertResult != 1 ) {
64 | data.put("result", "2");
65 | }
66 | }
67 | } else {
68 | json.setData(201);
69 | return json;
70 | }
71 | if(1 == insertResult) {
72 | data.put("result", "0");
73 | um.updateUserCount();
74 | // 注册成功,生成密钥对
75 | Map keyMap = Value.generateRSAKeyPair();
76 | String publicKey = keyMap.get("publicKey");
77 | String privateKey = keyMap.get("privateKey");
78 | if(um.newUserPublicKey(userID, publicKey)==1) {
79 | data.put("privateKey", privateKey);
80 | } else {
81 | data.put("result", "2");
82 | }
83 | }
84 | json.setData(data);
85 | return json;
86 | }
87 |
88 | @Override
89 | @Transactional(readOnly = true)
90 | public BackJSON getHospitalID(String hospitalName) {
91 | BackJSON json = new BackJSON(200);
92 | Map data = new HashMap<>();
93 | Integer hospitalID = um.getHospitalID(hospitalName);
94 | if(hospitalID!=null) {
95 | data.put("hospitalID", hospitalID);
96 | } else {
97 | // 不存在,返回 0
98 | data.put("hospitalID", 0);
99 | }
100 | json.setData(data);
101 | return json;
102 | }
103 |
104 | @Override
105 | @Transactional(readOnly = true)
106 | public BackJSON userLogin(UserInfo userInfo) {
107 | BackJSON json = new BackJSON(200);
108 | Map data = new HashMap<>();
109 | int userType = userInfo.getUserType();
110 | String phone = userInfo.getUserPhone();
111 | String password = userInfo.getPassword();
112 | if(1==userType) {
113 | // 患者
114 | Patient patient = pm.patientLogin(phone);
115 | if(null==patient) {
116 | // 手机号不存在
117 | data.put("result", 2);
118 | } else {
119 | if(patient.getPatientState()!=0) {
120 | // 患者处于非法状态
121 | data.put("result", 3);
122 | } else {
123 | if(!Value.MD5Verify(password, patient.getPatientPassword())) {
124 | // 用户名或密码错误
125 | data.put("result", 1);
126 | } else {
127 | data.put("result", 0);
128 | data.put("userID", patient.getPatientID());
129 | }
130 | }
131 | }
132 | } else if(2==userType) {
133 | // 医生
134 | Doctor doctor = dm.doctorLogin(phone);
135 | if(null==doctor) {
136 | // 手机号不存在
137 | data.put("result", 2);
138 | } else {
139 | if(doctor.getDoctorState()!=0) {
140 | // 患者处于非法状态
141 | data.put("result", 3);
142 | } else {
143 | if(!Value.MD5Verify(password, doctor.getDoctorPassword())) {
144 | // 用户名或密码错误
145 | data.put("result", 1);
146 | } else {
147 | data.put("result", 0);
148 | data.put("userID", doctor.getDoctorID());
149 | }
150 | }
151 | }
152 | } else {
153 | data.put("result", 4);
154 | }
155 | json.setData(data);
156 | return json;
157 | }
158 |
159 |
160 | }
161 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/applicationContext.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
16 |
17 |
18 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
42 |
43 |
44 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/connection.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-network",
3 | "version": "1.0.0",
4 | "client": {
5 | "organization": "Org1",
6 | "connection": {
7 | "timeout": {
8 | "peer": {
9 | "endorser": "300"
10 | },
11 | "orderer": "300"
12 | }
13 | }
14 | },
15 | "channels": {
16 | "mychannel": {
17 | "orderers": [
18 | "orderer.example.com"
19 | ],
20 | "peers": {
21 | "peer0.org1.example.com": {
22 | "endorsingPeer": true,
23 | "chaincodeQuery": true,
24 | "ledgerQuery": true,
25 | "eventSource": true
26 | },
27 | "peer0.org2.example.com": {
28 | "endorsingPeer": true,
29 | "chaincodeQuery": true,
30 | "ledgerQuery": true,
31 | "eventSource": true
32 | }
33 | }
34 | }
35 | },
36 | "organizations": {
37 | "Org1": {
38 | "mspid": "Org1MSP",
39 | "peers": [
40 | "peer0.org1.example.com"
41 | ],
42 | "certificateAuthorities": [
43 | "ca.org1.example.com"
44 | ],
45 | "adminPrivateKeyPEM": {
46 | "path": "src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
47 | },
48 | "signedCertPEM": {
49 | "path": "src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"
50 | }
51 | },
52 | "Org2": {
53 | "mspid": "Org2MSP",
54 | "peers": [
55 | "peer0.org2.example.com"
56 | ],
57 | "certificateAuthorities": [
58 | "ca.org2.example.com"
59 | ],
60 | "adminPrivateKeyPEM": {
61 | "path": "src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk"
62 | },
63 | "signedCertPEM": {
64 | "path": "src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem"
65 | }
66 | }
67 | },
68 | "orderers": {
69 | "orderer.example.com": {
70 | "url": "grpcs://39.96.85.23:7050",
71 | "mspid": "OrdererMSP",
72 | "grpcOptions": {
73 | "ssl-target-name-override": "orderer.example.com",
74 | "hostnameOverride": "orderer.example.com"
75 | },
76 | "tlsCACerts": {
77 | "pem": "-----BEGIN CERTIFICATE-----\nMIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp\nG0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe\n4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt\nMbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg\ns1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9\nkrN3DgFwRK4=\n-----END CERTIFICATE-----\n"
78 | },
79 | "adminPrivateKeyPEM": {
80 | "path": "src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk"
81 | },
82 | "signedCertPEM": {
83 | "path": "src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem"
84 | }
85 | }
86 | },
87 | "peers": {
88 | "peer0.org1.example.com": {
89 | "url": "grpcs://39.96.85.23:7051",
90 | "grpcOptions": {
91 | "ssl-target-name-override": "peer0.org1.example.com",
92 | "hostnameOverride": "peer0.org1.example.com",
93 | "request-timeout": 120001
94 | },
95 | "tlsCACerts": {
96 | "pem": "-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx\nNzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM\n7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E\nAwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D\ncZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ\n-----END CERTIFICATE-----\n"
97 | }
98 | },
99 | "peer0.org2.example.com": {
100 | "url": "grpcs://39.96.85.23:9051",
101 | "grpcOptions": {
102 | "ssl-target-name-override": "peer0.org2.example.com",
103 | "hostnameOverride": "peer0.org2.example.com",
104 | "request-timeout": 120001
105 | },
106 | "tlsCACerts": {
107 | "pem": "-----BEGIN CERTIFICATE-----\nMIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW\n4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD\nAgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX\n3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v\n-----END CERTIFICATE-----\n"
108 | }
109 | }
110 | },
111 | "certificateAuthorities": {
112 | "ca.org1.example.com": {
113 | "url": "https://39.96.85.23:7054",
114 | "caName": "ca-org1",
115 | "tlsCACerts": {
116 | "pem": "-----BEGIN CERTIFICATE-----\nMIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l\nlsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nxU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw\nRAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp\nXeLZ0QNQblGJqG7bjm2qhw7Bt5MA\n-----END CERTIFICATE-----\n"
117 | },
118 | "httpOptions": {
119 | "verify": false
120 | }
121 | },
122 | "ca.org2.example.com": {
123 | "url": "https://39.96.85.23:8054",
124 | "caName": "ca-org2",
125 | "tlsCACerts": {
126 | "pem": "-----BEGIN CERTIFICATE-----\nMIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\n28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq\n4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2\n94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF\nAiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx\nSm4lHKVU3lcgCcui7zSs+oHxnll8\n-----END CERTIFICATE-----\n"
127 | },
128 | "httpOptions": {
129 | "verify": false
130 | }
131 | }
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICPjCCAeSgAwIBAgIRAM6HE2jUg9WIHKsyKJJ4mMcwCgYIKoZIzj0EAwIwaTEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5 | cGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMGkxCzAJBgNV
6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQshvFgZhg0TNd39mZH0ZohJO7u
9 | oDYGBz1zlx/M1YANi5WIWGEw36DOoYUNURhzmGwAmsBA8Y6rv44kz5WSg7lEo20w
10 | azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
11 | MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIMQGU1IjxAUhgHE+iH+EGQFyVqq5
12 | yDxxFV10g1dwBARTMAoGCCqGSM49BAMCA0gAMEUCIQDqEBauDeaXNnrud6ydshZ+
13 | N8V79QA5ibz7iRhYQlh7ZgIgCnYk/9hvo+1/ImnF6i8nX1Gc9B2OzzGJrVW2SDXZ
14 | GDs=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/ca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghBG1onEXlznH0SWe
3 | HGvrPbWPqyyzqE657GBfPANL5sWhRANCAAQshvFgZhg0TNd39mZH0ZohJO7uoDYG
4 | Bz1zlx/M1YANi5WIWGEw36DOoYUNURhzmGwAmsBA8Y6rv44kz5WSg7lE
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICPjCCAeSgAwIBAgIRAM6HE2jUg9WIHKsyKJJ4mMcwCgYIKoZIzj0EAwIwaTEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5 | cGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMGkxCzAJBgNV
6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQshvFgZhg0TNd39mZH0ZohJO7u
9 | oDYGBz1zlx/M1YANi5WIWGEw36DOoYUNURhzmGwAmsBA8Y6rv44kz5WSg7lEo20w
10 | azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
11 | MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIMQGU1IjxAUhgHE+iH+EGQFyVqq5
12 | yDxxFV10g1dwBARTMAoGCCqGSM49BAMCA0gAMEUCIQDqEBauDeaXNnrud6ydshZ+
13 | N8V79QA5ibz7iRhYQlh7ZgIgCnYk/9hvo+1/ImnF6i8nX1Gc9B2OzzGJrVW2SDXZ
14 | GDs=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICPjCCAeSgAwIBAgIRAM6HE2jUg9WIHKsyKJJ4mMcwCgYIKoZIzj0EAwIwaTEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5 | cGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMGkxCzAJBgNV
6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQshvFgZhg0TNd39mZH0ZohJO7u
9 | oDYGBz1zlx/M1YANi5WIWGEw36DOoYUNURhzmGwAmsBA8Y6rv44kz5WSg7lEo20w
10 | azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
11 | MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIMQGU1IjxAUhgHE+iH+EGQFyVqq5
12 | yDxxFV10g1dwBARTMAoGCCqGSM49BAMCA0gAMEUCIQDqEBauDeaXNnrud6ydshZ+
13 | N8V79QA5ibz7iRhYQlh7ZgIgCnYk/9hvo+1/ImnF6i8nX1Gc9B2OzzGJrVW2SDXZ
14 | GDs=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg7G5pEjuM4mVkHkeD
3 | 9MCSM2TRdeMgJxKO1Xlv98+SnOehRANCAASbCFBndRTWrKwbQI7An7kIF9n3swN3
4 | gIylztKH9jmt0FDh0bGYCp7RSYwRZ9yyX14qFncJoybFDDsoVwLmkmNI
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICHjCCAcWgAwIBAgIRAOTyw8FUrHITlWZZlYiY380wCgYIKoZIzj0EAwIwaTEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5 | cGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMGoxCzAJBgNV
6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7 | c2NvMRAwDgYDVQQLEwdvcmRlcmVyMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUu
8 | Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmwhQZ3UU1qysG0COwJ+5CBfZ
9 | 97MDd4CMpc7Sh/Y5rdBQ4dGxmAqe0UmMEWfcsl9eKhZ3CaMmxQw7KFcC5pJjSKNN
10 | MEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgxAZT
11 | UiPEBSGAcT6If4QZAXJWqrnIPHEVXXSDV3AEBFMwCgYIKoZIzj0EAwIDRwAwRAIg
12 | A41hLbUBgZ7dCYxuxYcrMeFfuX/CqqDTZ8LMhGVOcZsCID8c+5QR8xlwGbnMpF3x
13 | io1mPEO1aJ3JftKqJCf2EDhl
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICtzCCAl6gAwIBAgIRANwigwykyp5qgiDbnvBKasIwCgYIKoZIzj0EAwIwbDEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
5 | eGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMFgxCzAJ
6 | BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
7 | bmNpc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C
8 | AQYIKoZIzj0DAQcDQgAEk5lJ//9shCZVfxaGcqlLz1MxCHELh2gmZAz+W20R+Qk+
9 | jfpAwlxGJ/rhqEweA71PAygxaUnhxmH+XOL6PzH4o6OB9DCB8TAOBgNVHQ8BAf8E
10 | BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC
11 | MAAwKwYDVR0jBCQwIoAgEL9+T1jzWnzTHv+plFGtMbLdh9rLBt2Z4SoWhhjV/k4w
12 | gYQGA1UdEQR9MHuCE29yZGVyZXIuZXhhbXBsZS5jb22CB29yZGVyZXKCCWxvY2Fs
13 | aG9zdIITb3JkZXJlci5leGFtcGxlLmNvbYIHb3JkZXJlcoIJbG9jYWxob3N0ghNv
14 | cmRlcmVyLmV4YW1wbGUuY29tggdvcmRlcmVygglsb2NhbGhvc3QwCgYIKoZIzj0E
15 | AwIDRwAwRAIgNKvoPfM9qThkkZI7tpMzWUqgpZEpk6xd/9A2K69UD1wCICnUiqMb
16 | gOR+s0Az4/HZxGS4YA4dK5x5FL7QHXAyf9NX
17 | -----END CERTIFICATE-----
18 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFFdCdfqVPcKI+p7i
3 | AQzBNS9pPUeamp/9vdylbQMii7ChRANCAASTmUn//2yEJlV/FoZyqUvPUzEIcQuH
4 | aCZkDP5bbRH5CT6N+kDCXEYn+uGoTB4DvU8DKDFpSeHGYf5c4vo/Mfij
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/tlsca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSE5IEou561fsIbRo
3 | rwQdf9WVaSRRfcpxW3126emzZ1GhRANCAAT6Jqzd30XEUcAEcJBnaRtKh7TV4UcI
4 | zl7slUECCYkIft3y2Ew+zFInpPFEB7Sg327wEhtLXsrG+iBBKgPaHuMW
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICPjCCAeSgAwIBAgIRAM6HE2jUg9WIHKsyKJJ4mMcwCgYIKoZIzj0EAwIwaTEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
5 | cGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBaMGkxCzAJBgNV
6 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
7 | c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
8 | b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQshvFgZhg0TNd39mZH0ZohJO7u
9 | oDYGBz1zlx/M1YANi5WIWGEw36DOoYUNURhzmGwAmsBA8Y6rv44kz5WSg7lEo20w
10 | azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
11 | MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIMQGU1IjxAUhgHE+iH+EGQFyVqq5
12 | yDxxFV10g1dwBARTMAoGCCqGSM49BAMCA0gAMEUCIQDqEBauDeaXNnrud6ydshZ+
13 | N8V79QA5ibz7iRhYQlh7ZgIgCnYk/9hvo+1/ImnF6i8nX1Gc9B2OzzGJrVW2SDXZ
14 | GDs=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0Jc+/QpoZHFehwgo
3 | TMj2rtqPoLYYO9Fz2SAS/JvIxGmhRANCAARdCbDJeVt2mX0WVtwsVY8ywePxm26S
4 | Bt1216dYwaoisHpY+ZY1Y4+L36bfwSPjKN+hvxx9bi7oSwXkHQmy2VyJ
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICGTCCAcCgAwIBAgIQPAoe/tj0ZweqYcer8wmnSTAKBggqhkjOPQQDAjBpMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
5 | bGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowZjELMAkGA1UE
6 | BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
7 | Y28xDjAMBgNVBAsTBWFkbWluMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZ
8 | MBMGByqGSM49AgEGCCqGSM49AwEHA0IABF0JsMl5W3aZfRZW3CxVjzLB4/GbbpIG
9 | 3XbXp1jBqiKwelj5ljVjj4vfpt/BI+Mo36G/HH1uLuhLBeQdCbLZXImjTTBLMA4G
10 | A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMQGU1IjxAUh
11 | gHE+iH+EGQFyVqq5yDxxFV10g1dwBARTMAoGCCqGSM49BAMCA0cAMEQCICDX9DQQ
12 | JIXEcliehohe5THeM9waBYkqzexSPgXJ8056AiA0LT8WIwQ7phYHzyiVnvmPoU+q
13 | 9nV7FSQIgn1hufBOtQ==
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICRDCCAemgAwIBAgIQdSFJHtlnPRZwPn+PUH9IIDAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowbDELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
8 | cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPomrN3fRcRRwARwkGdp
9 | G0qHtNXhRwjOXuyVQQIJiQh+3fLYTD7MUiek8UQHtKDfbvASG0teysb6IEEqA9oe
10 | 4xajbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB
11 | BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgEL9+T1jzWnzTHv+plFGt
12 | MbLdh9rLBt2Z4SoWhhjV/k4wCgYIKoZIzj0EAwIDSQAwRgIhAKf36jILe4eTbELg
13 | s1gEu2pybFaST8nv07QjQ15PbllEAiEAs3f978TuYhH0HpMSKTT+PcYin5RT7JC9
14 | krN3DgFwRK4=
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKzCCAdKgAwIBAgIQE92eaY0r5hmy0MhtfY0eKjAKBggqhkjOPQQDAjBsMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
5 | YW1wbGUuY29tMB4XDTIwMDYwNDE2MTcwMFoXDTMwMDYwMjE2MTcwMFowVjELMAkG
6 | A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
7 | Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
8 | KoZIzj0DAQcDQgAE/f/iqr7luIoygl+cYlPzo2hMQclQ1u6IGphTpt/olwnfF3hf
9 | pu05YAROKXOV27vSZg7msQ0dQ+k7zVR8Un1Hh6NsMGowDgYDVR0PAQH/BAQDAgWg
10 | MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG
11 | A1UdIwQkMCKAIBC/fk9Y81p80x7/qZRRrTGy3YfaywbdmeEqFoYY1f5OMAoGCCqG
12 | SM49BAMCA0cAMEQCICLsSfcYI+kgyzUX/m6bMdkXURK0W/VqeHJX5HIxsxs4AiBi
13 | WiV4k3pNywQWsvmDvikGafMc9Ol7bMzheR5Ckw1e6w==
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+6jhGFbWheu0esiE
3 | DDy8lYIL8Y1yKd1pj65slgxfIcahRANCAAT9/+KqvuW4ijKCX5xiU/OjaExByVDW
4 | 7ogamFOm3+iXCd8XeF+m7TlgBE4pc5Xbu9JmDuaxDR1D6TvNVHxSfUeH
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
9 | BG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l
10 | lsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
11 | BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
12 | xU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw
13 | RAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp
14 | XeLZ0QNQblGJqG7bjm2qhw7Bt5MA
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgX7eusaoDigMclVi7
3 | ETZTYjjNWaDXZOGlzhXnMa0gMNWhRANCAARvWmU10NhOKPhMtnuC1IpBxhuygSGz
4 | qAn+yaPZRi9gUdjQ2Ye5y+I3b0nTLzx/JZbHOxLGspq/sKZr/EvICFF8
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
9 | BG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l
10 | lsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
11 | BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
12 | xU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw
13 | RAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp
14 | XeLZ0QNQblGJqG7bjm2qhw7Bt5MA
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org1.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org1.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org1.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org1.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
9 | BG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l
10 | lsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
11 | BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
12 | xU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw
13 | RAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp
14 | XeLZ0QNQblGJqG7bjm2qhw7Bt5MA
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org1.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org1.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org1.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org1.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgxSpAZBVYZQsUctPe
3 | bojUIuScC+yxpFDl0uhcAsfjjDKhRANCAATQxNHVK9uNjBzkp3r8ogoXnofD6C3N
4 | erQLWJrl2sqUBKnhvEF+uUYtKGRV+2oJKDRwPpttvFUPkaRvHPTJlC2w
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKDCCAc6gAwIBAgIQd+bnM+TY/+1NhwxwBEL6AzAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcx
8 | LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0MTR1SvbjYwc
9 | 5Kd6/KIKF56Hw+gtzXq0C1ia5drKlASp4bxBfrlGLShkVftqCSg0cD6bbbxVD5Gk
10 | bxz0yZQtsKNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j
11 | BCQwIoAgxU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0E
12 | AwIDSAAwRQIhAI8a2RChcufJOwwymxk4pchTMjuzsrN5xQjiPWOPpATPAiAlio90
13 | 9tuom20wbOdvoK/FoZA9gda16e9PpJGF83guFA==
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICyDCCAm6gAwIBAgIQOorAcdOJNzhH4MeXXpy+vDAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t
8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf3k30Im6b3GL4UWhi1PSmuhfhTp8
9 | kqs0hvOmu3JSQb+49dCi769RYPyvq6kWjIxOxdC9RsYmxJ1/L/vAP8QvhKOB+DCB
10 | 9TAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
11 | MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAg3XL5OQfChTW08e9WwLfoFTc8f/bf
12 | pEN6kj1DFWeldIAwgYgGA1UdEQSBgDB+ghZwZWVyMC5vcmcxLmV4YW1wbGUuY29t
13 | ggVwZWVyMIIJbG9jYWxob3N0ghZwZWVyMC5vcmcxLmV4YW1wbGUuY29tggVwZWVy
14 | MIIJbG9jYWxob3N0ghZwZWVyMC5vcmcxLmV4YW1wbGUuY29tggVwZWVyMIIJbG9j
15 | YWxob3N0MAoGCCqGSM49BAMCA0gAMEUCIQCK4+Obesr4MJ8dNIhkc6hCy59/61Pn
16 | /sWI1oLkoFMdzQIgKk6PgqZFVUwcnFe1uPQIBV+2Bl02nXNJrL/Hq/niBcU=
17 | -----END CERTIFICATE-----
18 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgW7nJXMrG5cxb6wD4
3 | 5h3mgt1YWYaed5bprkLVpgjIuaahRANCAAR/eTfQibpvcYvhRaGLU9Ka6F+FOnyS
4 | qzSG86a7clJBv7j10KLvr1Fg/K+rqRaMjE7F0L1GxibEnX8v+8A/xC+E
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/tlsca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgwxOdaOrwoDXR8lU7
3 | tZ1j0rmMipbgVNuvNDJNvm4gIeyhRANCAAQns/RztWQ5aBpLA8uh2taXaAycAhQt
4 | 45j84Hb8lY+u/KSWZsSY0qMETO8bvmGuihWD1Gxf95qMseZ2VEAQV2s4
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
9 | BG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l
10 | lsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
11 | BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
12 | xU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw
13 | RAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp
14 | XeLZ0QNQblGJqG7bjm2qhw7Bt5MA
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org1.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org1.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org1.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org1.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgJP1CPv6EFmhWGKzq
3 | EzJ8fXVWtRKeoM+9Mz5PipOzTsGhRANCAAS9PalbvlcXhjRw8WF/oUUqF2OCtke9
4 | pC817PDZNcKwlmTBSqot7iGtwmQx1II8iH47mC0m7DWEvqU0E2yJjYzB
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKDCCAdCgAwIBAgIRAIzNq1qpQ3vM0Upg4J0OOK4wCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y
8 | ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS9PalbvlcX
9 | hjRw8WF/oUUqF2OCtke9pC817PDZNcKwlmTBSqot7iGtwmQx1II8iH47mC0m7DWE
10 | vqU0E2yJjYzBo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
11 | HSMEJDAigCDFTQtLZBze5/Qc4jCpMSl3PIDSIJjHl+Iucx9pQCfcUzAKBggqhkjO
12 | PQQDAgNGADBDAiACHiuJWEaqBh4lF/TaGRdlgqv5DDiLyzkuRJOcJp3JMwIfBd5i
13 | vYZ/lYKOVXJIJrB2udTu+erUZwNYn/RqTDiFKQ==
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICOzCCAeKgAwIBAgIRAIsmDWc/p1Lsb5MreCfZHwAwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNv
8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRfK2nON4BJFtjw9hwSVrfQPkkh
9 | vF+KppNOzuYtMI+lhX4NhygabyBA3fwKhbX1dGNgS1ZSzVoE8KcH0Q8ng8ejbDBq
10 | MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
11 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCDdcvk5B8KFNbTx71bAt+gVNzx/9t+k
12 | Q3qSPUMVZ6V0gDAKBggqhkjOPQQDAgNHADBEAiAdB2QBBvVYpsLRXPrwXTH+tsHh
13 | ZU12oRrxJVlWuxS0sgIgG3osP746rWmStl5O1Ec8LWojyt3ZtlnXQmoHYK0WqEc=
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIV22MQqy9ie3OOKk
3 | tYjI0EwM0a/jEqkUOYUsQ/J/VB6hRANCAAQ0XytpzjeASRbY8PYcEla30D5JIbxf
4 | iqaTTs7mLTCPpYV+DYcoGm8gQN38CoW19XRjYEtWUs1aBPCnB9EPJ4PH
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfigAwIBAgIRAMZqnRjmoUgVSWAF3KKq1KIwCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
8 | AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
9 | BG9aZTXQ2E4o+Ey2e4LUikHGG7KBIbOoCf7Jo9lGL2BR2NDZh7nL4jdvSdMvPH8l
10 | lsc7Esaymr+wpmv8S8gIUXyjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
11 | BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
12 | xU0LS2Qc3uf0HOIwqTEpdzyA0iCYx5fiLnMfaUAn3FMwCgYIKoZIzj0EAwIDRwAw
13 | RAIgTIkVeisNEXnmKbHoprQA96I/Fo4S+JeXb/sod1ETgOACIAq52FKdBfpi16jp
14 | XeLZ0QNQblGJqG7bjm2qhw7Bt5MA
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org1.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org1.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org1.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org1.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9KQMzrve0nNEU/ld
3 | Ts4rXcdOe18vwzXW1rfspmV24EGhRANCAASaVgu4Sasr1RxF9fpCGEX06Z+8c6B6
4 | PQpyj49Ugltb/ZAZtkr99Dr8cR3QJUXF7ccD0Wu3ad40fYcQIqIkstf+
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKjCCAdCgAwIBAgIQAM811/DS2+Zcb3YVC+I45DAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMS5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y
8 | ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASaVgu4Sasr
9 | 1RxF9fpCGEX06Z+8c6B6PQpyj49Ugltb/ZAZtkr99Dr8cR3QJUXF7ccD0Wu3ad40
10 | fYcQIqIkstf+o00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
11 | HSMEJDAigCDFTQtLZBze5/Qc4jCpMSl3PIDSIJjHl+Iucx9pQCfcUzAKBggqhkjO
12 | PQQDAgNIADBFAiEAndw+VLABAspJd5hsH1/CX7vzRXeTaqfnI2fdNxyGAlUCIBmi
13 | 0W7KA3au9uhtPD2pkzEhpnpw5Qjzdpm3HqDVao2h
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf6gAwIBAgIRALmkTukX8EIR1uIAK+q7H/cwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
8 | A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
9 | AwEHA0IABCez9HO1ZDloGksDy6Ha1pdoDJwCFC3jmPzgdvyVj678pJZmxJjSowRM
10 | 7xu+Ya6KFYPUbF/3moyx5nZUQBBXazijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
11 | HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
12 | HQ4EIgQg3XL5OQfChTW08e9WwLfoFTc8f/bfpEN6kj1DFWeldIAwCgYIKoZIzj0E
13 | AwIDRwAwRAIgJySPqJCws5tblLNtfMbUWavycD8lLt0WodzhBSkRCIMCICbN0Z2D
14 | cZ+Tcu+jF5yotPpi8czskZqYHtdvcvOUonAJ
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICOzCCAeKgAwIBAgIRAOfN/ZPklNbU17M0oSHypAUwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNv
8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGsFhJlejXzC8naSoT6tAwzDHVNi
9 | MHx1MaGawxPiYr0XQ5SFo9RgR0FKyj2/QvecZgdiiRpfiNb5ezXPdbU5zimjbDBq
10 | MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
11 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCDdcvk5B8KFNbTx71bAt+gVNzx/9t+k
12 | Q3qSPUMVZ6V0gDAKBggqhkjOPQQDAgNHADBEAiBMOEqEWF77AaU81ZjGwOZphl3m
13 | KJwKTDkKoEKnjDmJpgIgUeSVt7+zfG9XbOagJQ9erV0Z+HgbvhTKxzJHqhM1giQ=
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAAmHOgVDn4XjZtLu
3 | oYfkViQhr/kIOtOCP44nXASuS7qhRANCAARrBYSZXo18wvJ2kqE+rQMMwx1TYjB8
4 | dTGhmsMT4mK9F0OUhaPUYEdBSso9v0L3nGYHYokaX4jW+Xs1z3W1Oc4p
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
10 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
11 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
12 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
13 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
14 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/ca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgCFBorcXxntRpJU2o
3 | Inhd6gpmo6O7zEv7EFhlTcucohihRANCAATbxpkTXr5qWiu4igNi2vntJunPWvBu
4 | Ad2k4soWIcWZRIdtQFK32ZXISR5aQPb28CrjGUbuUqjjv5iqCE6p6EHa
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/connection-org2.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-network-org2",
3 | "version": "1.0.0",
4 | "client": {
5 | "organization": "Org2",
6 | "connection": {
7 | "timeout": {
8 | "peer": {
9 | "endorser": "300"
10 | }
11 | }
12 | }
13 | },
14 | "organizations": {
15 | "Org2": {
16 | "mspid": "Org2MSP",
17 | "peers": [
18 | "peer0.org2.example.com"
19 | ],
20 | "certificateAuthorities": [
21 | "ca.org2.example.com"
22 | ]
23 | }
24 | },
25 | "peers": {
26 | "peer0.org2.example.com": {
27 | "url": "grpcs://localhost:9051",
28 | "tlsCACerts": {
29 | "pem": "-----BEGIN CERTIFICATE-----\nMIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW\n4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD\nAgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX\n3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v\n-----END CERTIFICATE-----\n"
30 | },
31 | "grpcOptions": {
32 | "ssl-target-name-override": "peer0.org2.example.com",
33 | "hostnameOverride": "peer0.org2.example.com"
34 | }
35 | }
36 | },
37 | "certificateAuthorities": {
38 | "ca.org2.example.com": {
39 | "url": "https://localhost:8054",
40 | "caName": "ca-org2",
41 | "tlsCACerts": {
42 | "pem": "-----BEGIN CERTIFICATE-----\nMIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\n28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq\n4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2\n94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF\nAiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx\nSm4lHKVU3lcgCcui7zSs+oHxnll8\n-----END CERTIFICATE-----\n"
43 | },
44 | "httpOptions": {
45 | "verify": false
46 | }
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/connection-org2.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: test-network-org2
3 | version: 1.0.0
4 | client:
5 | organization: Org2
6 | connection:
7 | timeout:
8 | peer:
9 | endorser: '300'
10 | organizations:
11 | Org2:
12 | mspid: Org2MSP
13 | peers:
14 | - peer0.org2.example.com
15 | certificateAuthorities:
16 | - ca.org2.example.com
17 | peers:
18 | peer0.org2.example.com:
19 | url: grpcs://localhost:9051
20 | tlsCACerts:
21 | pem: |
22 | -----BEGIN CERTIFICATE-----
23 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
24 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
25 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
26 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
27 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
28 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
29 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
30 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
31 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
32 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
33 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
34 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
35 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
36 | -----END CERTIFICATE-----
37 |
38 | grpcOptions:
39 | ssl-target-name-override: peer0.org2.example.com
40 | hostnameOverride: peer0.org2.example.com
41 | certificateAuthorities:
42 | ca.org2.example.com:
43 | url: https://localhost:8054
44 | caName: ca-org2
45 | tlsCACerts:
46 | pem: |
47 | -----BEGIN CERTIFICATE-----
48 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
49 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
50 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
51 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
52 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
53 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
54 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
55 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
56 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
57 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
58 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
59 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
60 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
61 | -----END CERTIFICATE-----
62 |
63 | httpOptions:
64 | verify: false
65 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
10 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
11 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
12 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
13 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
14 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org2.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org2.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org2.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org2.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
10 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
11 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
12 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
13 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
14 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org2.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org2.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org2.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org2.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgcaxG4nUox4xd+8M5
3 | tT57dWJferKCIEfdB55iXkCvNn2hRANCAAQpmdtBbM/mJD6osYW9P9D6ExHHFfBV
4 | ja1nLqfK89H0U6cJwLfeSpq/3C6SSrulvwoGG1l5IN9w5InNindQo4Q+
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICJzCCAc6gAwIBAgIQAzDl2zNE9AU6rIFcc0WN+TAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcy
8 | LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKZnbQWzP5iQ+
9 | qLGFvT/Q+hMRxxXwVY2tZy6nyvPR9FOnCcC33kqav9wukkq7pb8KBhtZeSDfcOSJ
10 | zYp3UKOEPqNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j
11 | BCQwIoAgtveGEgpZJ5j5MFiWzROJ2k0ZEws64XGxSnRrcM/1oc4wCgYIKoZIzj0E
12 | AwIDRwAwRAIgUsXDS5wLaD5FKU7OYGnJZCt86bvybBo9ADg2PNY3j7cCIELj1umm
13 | dGR4mc7cVWP6eNrduDZOn2yIFu3UHszWIIOV
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICyTCCAm+gAwIBAgIRAOTanTxLycwStUuOUPqyitAwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMi5leGFtcGxlLmNv
8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGCdN6O1Q4kpbDNM0g6B1YY3PeQy
9 | h974avJ0JL/8Snw31pe5X4gRzdh5CS/e5kL5ZezDgD8k8hlkFIP4nEBJO9ijgfgw
10 | gfUwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
11 | AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIPlD/ALbIQj3l+yeeqn0MJ/wR8dF
12 | NqMGCRyEBI+0XcRRMIGIBgNVHREEgYAwfoIWcGVlcjAub3JnMi5leGFtcGxlLmNv
13 | bYIFcGVlcjCCCWxvY2FsaG9zdIIWcGVlcjAub3JnMi5leGFtcGxlLmNvbYIFcGVl
14 | cjCCCWxvY2FsaG9zdIIWcGVlcjAub3JnMi5leGFtcGxlLmNvbYIFcGVlcjCCCWxv
15 | Y2FsaG9zdDAKBggqhkjOPQQDAgNIADBFAiEAqhWJV4kxRk0Sy3SQOmnOKND/qYTP
16 | TYU6bZFI19Rl1w8CIEBhyx7tjQP3ltKtKCOUX/KltghdWd0+irxQ/fw3Q02R
17 | -----END CERTIFICATE-----
18 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQglIA4h7tZkLAKPK8F
3 | hVJXEgQSMQQhHA8bNGruBDjV+3qhRANCAARgnTejtUOJKWwzTNIOgdWGNz3kMofe
4 | +GrydCS//Ep8N9aXuV+IEc3YeQkv3uZC+WXsw4A/JPIZZBSD+JxASTvY
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/tlsca/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg95vY3MhmRV7b3hTQ
3 | MtDIHXnvHhwuH/ieDBmhnEG+iH6hRANCAAQiph5LQzmGGK/WZNKWoaqhpHQSUPiX
4 | +S20Ric9VENce1fqbIb0a39T6hbj7X5HeYVXSovWkVlqmOdvETOmuEsT
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
10 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
11 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
12 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
13 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
14 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org2.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org2.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org2.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org2.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+fhCIn+fIVh3ybzn
3 | wgcXkygtsUss4eMmYfPfA9+9soahRANCAASQ5XRXYy7qR+m1eYndoctyGgXaxc8f
4 | 5Hb8iHgNEzPoI4uL/+WCOfJDjXQN9hxcdfEce3SIiPOXXBlH8t1vm7vU
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKTCCAc+gAwIBAgIQWFgw+ph16eUlod0c00mMQjAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn
8 | Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJDldFdjLupH
9 | 6bV5id2hy3IaBdrFzx/kdvyIeA0TM+gji4v/5YI58kONdA32HFx18Rx7dIiI85dc
10 | GUfy3W+bu9SjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud
11 | IwQkMCKAILb3hhIKWSeY+TBYls0TidpNGRMLOuFxsUp0a3DP9aHOMAoGCCqGSM49
12 | BAMCA0gAMEUCIQCMmkwBWlGEnb1hkDGzmQZNA/tBUrM2vwrWnmwCJcAv1AIgC9ro
13 | V/Y4bvuC0ZgoFnT/iBd9EAB9SiXdWL1MXEyOw/c=
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICOjCCAeGgAwIBAgIQAXnKWFqN2MGkG4OmubiX6jAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcyLmV4YW1wbGUuY29t
8 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7PKvLMG6N/u21DaSGVJmLsgsA8LH
9 | m+dQritrf2eSBURg2c/N0jv1bmGR2SOnOyR9Xd3dT0BslhBiND0X5L+dyqNsMGow
10 | DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
11 | BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIPlD/ALbIQj3l+yeeqn0MJ/wR8dFNqMG
12 | CRyEBI+0XcRRMAoGCCqGSM49BAMCA0cAMEQCIBTxdXm8HWyGN+flZ3zs8Y8TigPz
13 | ci8VIY+6+eM14RbOAiAVy2tOi0nTE514v/NgcDDEw1nc9tReVCxRYFPF4pNKpQ==
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIG5XdnchjmND3YG6
3 | XKSUiWcya6735xDfNeqe/55FKq6hRANCAATs8q8swbo3+7bUNpIZUmYuyCwDwseb
4 | 51CuK2t/Z5IFRGDZz83SO/VuYZHZI6c7JH1d3d1PQGyWEGI0PRfkv53K
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICUTCCAfegAwIBAgIQaCr79FmvLmX/gUqKsF7K3zAKBggqhkjOPQQDAjBzMQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
5 | b3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3MDBa
6 | MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
7 | YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
8 | ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
9 | 28aZE16+aloruIoDYtr57Sbpz1rwbgHdpOLKFiHFmUSHbUBSt9mVyEkeWkD29vAq
10 | 4xlG7lKo47+YqghOqehB2qNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
11 | CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCC2
12 | 94YSClknmPkwWJbNE4naTRkTCzrhcbFKdGtwz/WhzjAKBggqhkjOPQQDAgNIADBF
13 | AiEAwN3gVIEMuDcF8eK+vNqqYeBFQ3S5zP2vx7Tdvx+LqooCIGmhtShargBL8CGx
14 | Sm4lHKVU3lcgCcui7zSs+oHxnll8
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml:
--------------------------------------------------------------------------------
1 | NodeOUs:
2 | Enable: true
3 | ClientOUIdentifier:
4 | Certificate: cacerts/ca.org2.example.com-cert.pem
5 | OrganizationalUnitIdentifier: client
6 | PeerOUIdentifier:
7 | Certificate: cacerts/ca.org2.example.com-cert.pem
8 | OrganizationalUnitIdentifier: peer
9 | AdminOUIdentifier:
10 | Certificate: cacerts/ca.org2.example.com-cert.pem
11 | OrganizationalUnitIdentifier: admin
12 | OrdererOUIdentifier:
13 | Certificate: cacerts/ca.org2.example.com-cert.pem
14 | OrganizationalUnitIdentifier: orderer
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgH+So8CX09sRrlrUV
3 | peOqEYyXhHgOk8TPysabqBzXe5OhRANCAATwnaaPzx2ZoDv+5JbXEM6cowsmIne+
4 | oa7+GnpjxuhHpntgpvIJCmGqiotdDz2NnHcYguIgdcuQ5XEMbbJ2yINB
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICKjCCAdGgAwIBAgIRAMo7dlYKqRipVtO5L5e9w/swCgYIKoZIzj0EAwIwczEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
5 | Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYxNzAw
6 | WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
7 | U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZVc2VyMUBv
8 | cmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8J2mj88d
9 | maA7/uSW1xDOnKMLJiJ3vqGu/hp6Y8boR6Z7YKbyCQphqoqLXQ89jZx3GILiIHXL
10 | kOVxDG2ydsiDQaNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
11 | VR0jBCQwIoAgtveGEgpZJ5j5MFiWzROJ2k0ZEws64XGxSnRrcM/1oc4wCgYIKoZI
12 | zj0EAwIDRwAwRAIgBBo8frX87vkd3gatVoBOkQI7AcXH3v2AyWA4RMHUzbYCIGf7
13 | pYh9OtPWCib5HBPehLCBVP3wIOWQDyL73r9Nt0Cn
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICVzCCAf2gAwIBAgIQH++1FAW6krBPM3ne4oYI4TAKBggqhkjOPQQDAjB2MQsw
3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
4 | YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
5 | Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMDA2MDQxNjE3MDBaFw0zMDA2MDIxNjE3
6 | MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
7 | Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMR8wHQYD
8 | VQQDExZ0bHNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D
9 | AQcDQgAEIqYeS0M5hhiv1mTSlqGqoaR0ElD4l/kttEYnPVRDXHtX6myG9Gt/U+oW
10 | 4+1+R3mFV0qL1pFZapjnbxEzprhLE6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud
11 | JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud
12 | DgQiBCD5Q/wC2yEI95fsnnqp9DCf8EfHRTajBgkchASPtF3EUTAKBggqhkjOPQQD
13 | AgNIADBFAiA6J0EKpfPbnciF9cXNy5j5ziXrn3r1UK4Dv+jcsKsggwIhAIPnXQVX
14 | 3wPQnJyDJOwN3x5zjj4BSuZDCEFSWgbSjG9v
15 | -----END CERTIFICATE-----
16 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICPDCCAeKgAwIBAgIRAK1SRP1+IXoKs1Hgpz6X68gwCgYIKoZIzj0EAwIwdjEL
3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
4 | cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
5 | c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjAwNjA0MTYxNzAwWhcNMzAwNjAyMTYx
6 | NzAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
7 | BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMi5leGFtcGxlLmNv
8 | bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHWYxRzOs46DhHFl0kbpF67qMW6L
9 | HuT/e+GXMNuxT2fmWyJajU7cisGn86+AJTkt+p9GS8EsVYPDJM5lAY/ELm+jbDBq
10 | MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
11 | DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCD5Q/wC2yEI95fsnnqp9DCf8EfHRTaj
12 | BgkchASPtF3EUTAKBggqhkjOPQQDAgNIADBFAiEAmtZtql/cIrQEiWsF1szZBbBA
13 | 96J2Tws20265lZKiq3wCIDtOhFyohWBsg+UqxcSNOlyn+vlg6LaObcCrkP7AWXux
14 | -----END CERTIFICATE-----
15 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgB5+sLJEU/DPzedmV
3 | aV0ZNl47HUnmZDsk7mGgZNV1coqhRANCAAR1mMUczrOOg4RxZdJG6Reu6jFuix7k
4 | /3vhlzDbsU9n5lsiWo1O3IrBp/OvgCU5LfqfRkvBLFWDwyTOZQGPxC5v
5 | -----END PRIVATE KEY-----
6 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/db.properties:
--------------------------------------------------------------------------------
1 | #p6spy
2 | driver=com.p6spy.engine.spy.P6SpyDriver
3 | url=jdbc:p6spy:mysql://localhost:3306/medical?useUnicoding=true&characterEncoding=utf-8&noDatetimeStringSync=true
4 | username=root
5 | password=root
--------------------------------------------------------------------------------
/code/medical/src/main/resources/medical.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Navicat MySQL Data Transfer
3 |
4 | Source Server : wow
5 | Source Server Version : 50726
6 | Source Host : localhost:3306
7 | Source Database : medical
8 |
9 | Target Server Type : MYSQL
10 | Target Server Version : 50726
11 | File Encoding : 65001
12 |
13 | Date: 2020-06-10 15:10:02
14 | */
15 |
16 | SET FOREIGN_KEY_CHECKS=0;
17 |
18 | -- ----------------------------
19 | -- Table structure for t_authorize
20 | -- ----------------------------
21 | DROP TABLE IF EXISTS `t_authorize`;
22 | CREATE TABLE `t_authorize` (
23 | `apply_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
24 | `user_id` int(11) NOT NULL COMMENT '授权人',
25 | `to_user_id` int(11) NOT NULL,
26 | `apply_state` tinyint(1) DEFAULT NULL COMMENT '0-未授权,1-已授权,2-已拒绝',
27 | `apply_date` datetime DEFAULT NULL COMMENT '授权时间',
28 | `description` text COMMENT '授权信息,指代病历数据',
29 | `sign_text` varchar(255) DEFAULT NULL COMMENT '签名信息',
30 | PRIMARY KEY (`apply_id`)
31 | ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
32 |
33 | -- ----------------------------
34 | -- Records of t_authorize
35 | -- ----------------------------
36 | INSERT INTO `t_authorize` VALUES ('5', '1', '3', '1', '2020-06-07 02:47:33', '{\"createTime\":\"2020/06/07\",\"description\":\"RUrITYbNDoN5JSAYt/6u7wcWRPAmIL3lIiLBOfKDo6+NVrMY3VfkJbhKgz5sVlLstLurT42m8HwdP+IetynMBCSN419pZuIKi4WYnSkot5NNhXxg5hujUMPm28fvvkI6szAJ+QWTQGCPOfWzQQBEJ5/X5n4d4m9yC373OiCEebM=\",\"doctorName\":\"doctorName1\",\"medicalPicture\":\"1591468204842test.JPG\",\"patientName\":\"patientName1\"}', null);
37 |
38 | -- ----------------------------
39 | -- Table structure for t_doctor
40 | -- ----------------------------
41 | DROP TABLE IF EXISTS `t_doctor`;
42 | CREATE TABLE `t_doctor` (
43 | `doctor_id` int(11) NOT NULL,
44 | `doctor_name` varchar(16) NOT NULL,
45 | `doctor_phone` varchar(11) NOT NULL COMMENT '手机号唯一',
46 | `doctor_password` varchar(32) NOT NULL,
47 | `doctor_picture` varchar(32) DEFAULT NULL,
48 | `doctor_hospital` int(10) unsigned NOT NULL COMMENT '所属医疗机构id',
49 | `doctor_state` tinyint(1) DEFAULT NULL COMMENT '0-正常,1-非法',
50 | PRIMARY KEY (`doctor_id`),
51 | UNIQUE KEY `doctor_phone` (`doctor_phone`) USING BTREE,
52 | KEY `doctor_hospital` (`doctor_hospital`),
53 | CONSTRAINT `t_doctor_ibfk_1` FOREIGN KEY (`doctor_hospital`) REFERENCES `t_hospital` (`hospital_id`)
54 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
55 |
56 | -- ----------------------------
57 | -- Records of t_doctor
58 | -- ----------------------------
59 | INSERT INTO `t_doctor` VALUES ('3', 'name1', 'phone1', '7C6A180B36896A0A8C02787EEAFB0E4C', null, '1', '0');
60 |
61 | -- ----------------------------
62 | -- Table structure for t_hospital
63 | -- ----------------------------
64 | DROP TABLE IF EXISTS `t_hospital`;
65 | CREATE TABLE `t_hospital` (
66 | `hospital_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
67 | `hospital_name` varchar(32) NOT NULL COMMENT '医院全称',
68 | `hospital_state` tinyint(1) NOT NULL COMMENT '医院状态,0-正常,1-待审核,2-非法',
69 | `business_license` varchar(32) NOT NULL COMMENT '营业执照图片地址',
70 | `in_date` date NOT NULL COMMENT '加入时间',
71 | PRIMARY KEY (`hospital_id`),
72 | UNIQUE KEY `hospital_name` (`hospital_name`)
73 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
74 |
75 | -- ----------------------------
76 | -- Records of t_hospital
77 | -- ----------------------------
78 | INSERT INTO `t_hospital` VALUES ('1', 'hospital1', '0', 'business_license1', '2020-06-05');
79 |
80 | -- ----------------------------
81 | -- Table structure for t_medical
82 | -- ----------------------------
83 | DROP TABLE IF EXISTS `t_medical`;
84 | CREATE TABLE `t_medical` (
85 | `patient_name` varchar(255) NOT NULL,
86 | `doctor_name` varchar(255) NOT NULL,
87 | `create_time` varchar(255) NOT NULL,
88 | `medical_picture` varchar(255) NOT NULL,
89 | `description` varchar(255) NOT NULL
90 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
91 |
92 | -- ----------------------------
93 | -- Records of t_medical
94 | -- ----------------------------
95 |
96 | -- ----------------------------
97 | -- Table structure for t_patient
98 | -- ----------------------------
99 | DROP TABLE IF EXISTS `t_patient`;
100 | CREATE TABLE `t_patient` (
101 | `patient_id` int(10) unsigned NOT NULL,
102 | `patient_name` varchar(16) NOT NULL,
103 | `patient_phone` varchar(11) NOT NULL COMMENT '手机号唯一',
104 | `patient_password` varchar(64) NOT NULL COMMENT '经过 MD5 哈希运算',
105 | `patient_picture` varchar(32) DEFAULT NULL,
106 | `patient_state` tinyint(1) DEFAULT NULL COMMENT '0-正常,1-非法',
107 | PRIMARY KEY (`patient_id`),
108 | UNIQUE KEY `patient_phone` (`patient_phone`)
109 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
110 |
111 | -- ----------------------------
112 | -- Records of t_patient
113 | -- ----------------------------
114 | INSERT INTO `t_patient` VALUES ('1', 'name1', 'phone1', '7C6A180B36896A0A8C02787EEAFB0E4C', null, '0');
115 | INSERT INTO `t_patient` VALUES ('4', 'name2', 'phone2', '6CB75F652A9B52798EB6CF2201057C73', null, '0');
116 | INSERT INTO `t_patient` VALUES ('5', 'name3', 'phone3', '819B0643D6B89DC9B579FDFC9094F28E', null, '0');
117 |
118 | -- ----------------------------
119 | -- Table structure for t_publickey
120 | -- ----------------------------
121 | DROP TABLE IF EXISTS `t_publickey`;
122 | CREATE TABLE `t_publickey` (
123 | `user_id` int(11) NOT NULL,
124 | `user_publickey` varchar(255) NOT NULL,
125 | PRIMARY KEY (`user_id`)
126 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
127 |
128 | -- ----------------------------
129 | -- Records of t_publickey
130 | -- ----------------------------
131 | INSERT INTO `t_publickey` VALUES ('1', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKA933cmIjTjfGIYqWbyDxhdtCaFdN4JW49akXZdC6wnQYnyEWGNoyG3L+GnqJVrAtrA4kwbdb6omWQ5Dbo3O9bWpodm+aLzeOrqdxTPefQJPZMhUoOgAqGAGAKco5eViR3BLVuITygp/z19gIx1V9b55F4TjlRJL5E4GAE0qhhwIDAQAB');
132 | INSERT INTO `t_publickey` VALUES ('3', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQ+NQa1mG+3Jqq2TZxbdSbwIeZPNECznNOjRiFpnAGQkXrthzSUR6Yym8W1Bmd0kP5+P3BjeNaDeYDjZMv6OVD5ptr/YESAn2hzcWbF2XteBy0ZpZkEQT0UmkBQNth/S6d3BrgSq5Ulpjm3Hg7NOAnspnh4WuqstQhO4EIMe6FvwIDAQAB');
133 | INSERT INTO `t_publickey` VALUES ('4', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIPguAKrqOcHfgonSGsCbzA1t7rMlJ9BBqh4mI1y5URSPRoIbXodX7Nwr9ZvfKG/nOKzucaxdqI/DSidQbLbqas+Zi5KTVLhUNGJ0GVkmOykT4JS/V5LDFYr+eQ8js5fR9z4NfctCjWyj1er+SyNIgTyfrAAh7MTEX44surRY5pQIDAQAB');
134 | INSERT INTO `t_publickey` VALUES ('5', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6nNdnusgj+6d3MlaYVYynL/rgwsC3pqOwoZjkXfWVz60O1Mf90s8K228LUzRx/wgsul/nWoIDV4z1LTRw/Dcob/bd3p4GdqvHdX+Kv3lT3fV3+lFu0QyvK74H/xZesAxrqBgXPaXpiIJfyXhs+SSo7uCapaOxrj9H9qjPw2Nw3wIDAQAB');
135 |
136 | -- ----------------------------
137 | -- Table structure for t_usercount
138 | -- ----------------------------
139 | DROP TABLE IF EXISTS `t_usercount`;
140 | CREATE TABLE `t_usercount` (
141 | `user_count` int(11) NOT NULL
142 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
143 |
144 | -- ----------------------------
145 | -- Records of t_usercount
146 | -- ----------------------------
147 | INSERT INTO `t_usercount` VALUES ('6');
148 |
--------------------------------------------------------------------------------
/code/medical/src/main/resources/springmvc.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/code/medical/src/main/webapp/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | Archetype Created Web Application
7 |
8 |
9 | contextConfigLocation
10 | classpath:applicationContext.xml
11 |
12 |
13 |
14 | characterEncodingFilter
15 | org.springframework.web.filter.CharacterEncodingFilter
16 |
17 | encoding
18 | UTF-8
19 |
20 |
21 |
22 | characterEncodingFilter
23 | /*
24 |
25 |
26 |
27 | org.springframework.web.context.ContextLoaderListener
28 |
29 |
30 |
31 | dispatcherServlet
32 | org.springframework.web.servlet.DispatcherServlet
33 |
34 | contextConfigLocation
35 | classpath:springmvc.xml
36 |
37 | 1
38 |
39 |
40 | dispatcherServlet
41 | /*
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/code/medical/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 |
2 |
3 | Hello World!
4 |
5 |
6 |
--------------------------------------------------------------------------------
/code/picture/medical/1591462996138test.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/code/picture/medical/1591462996138test.JPG
--------------------------------------------------------------------------------
/code/picture/medical/1591463212767test.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/code/picture/medical/1591463212767test.JPG
--------------------------------------------------------------------------------
/code/picture/medical/1591468204842test.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/code/picture/medical/1591468204842test.JPG
--------------------------------------------------------------------------------
/code/server_api.json:
--------------------------------------------------------------------------------
1 |
2 | 1.管理员获取用户数
3 | /admin/getUserCount
4 | {
5 | "code": 200,
6 | "data": {
7 | "count": 1
8 | }
9 | }
10 | 2.用户注册
11 | /user/register
12 | 平均响应时间:200ms
13 | patient1
14 | {
15 | "code": 200,
16 | "data": {
17 | "result": "0",
18 | "privateKey": "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIoD3fdyYiNON8YhipZvIPGF20JoV03glbj1qRdl0LrCdBifIRYY2jIbcv4aeolWsC2sDiTBt1vqiZZDkNujc71tamh2b5ovN46up3FM959Ak9kyFSg6ACoYAYApyjl5WJHcEtW4hPKCn/PX2AjHVX1vnkXhOOVEkvkTgYATSqGHAgMBAAECgYA77p/18zLQmAe6Pxh6aPmKSBFFjh/TTqJVtj/eTDVO1GArzPZGLTabKbZOx9rMRtusiZl+tqxT+s4SdXazGhCI3ZWyqTZ5JgViolZh/vyOfYWGJ1mV35q3JyhPEfd8dyhhgsqlsu5olHbjOM/ffGSLwqHjqOLFmYZkS9U+zfmgUQJBANrVX637xPuLBXbSTdK7T9EXUH+Um26yY2asLrcZVEIHo4ClUDyVcXzd9y3EI41X51Vvq8Igcuf+vB1VO5Q9t88CQQChdJqLlFR22xTPqB9j5283LNZyFFejfm82r5W9E/LkbMin578YLPcGdtVP7Mx6UP2DAjBrKBzCPr9bW3Xu2bDJAkABue8wSy0potYfMteEUw/1IU70QrLbM7MPC0qvDRcaEj9a83Lnl3I2vvWFOefh5JChnujm9iSR6fOH87UtnTMHAkEAjBV9mali95TyI5H9WlMNPdQbY/Oebm5e1BXYV6sdTW/NUVFTjghFdEhan/QXHfFzY93cYLz25tpGcV+TnV8ncQJAPXsTFFrDQPEWuR7pOuo2dXqFF0bX/7Siq6hLjkhoqd+QULLx003LthdwqZKqp1R8tO760/voLuVcINhfH4YdUg=="
19 | }
20 | }
21 | patient3
22 | {
23 | "code": 200,
24 | "data": {
25 | "result": "0",
26 | "privateKey": "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALqc12e6yCP7p3cyVphVjKcv+uDCwLemo7ChmORd9ZXPrQ7Ux/3SzwrbbwtTNHH/CCy6X+daggNXjPUtNHD8Nyhv9t3engZ2q8d1f4q/eVPd9Xf6UW7RDK8rvgf/Fl6wDGuoGBc9pemIgl/JeGz5JKju4Jqlo7GuP0f2qM/DY3DfAgMBAAECgYASI2CEgpElfjZezZPBJr+PGIjIA+X7c8UBTBOyTreqIg9uG5x8vVrGcWGvthyo3+MJhewAbrmoXYAj7IrmWH171DeQ6/rvyV6yPT1Sq9Gy7eVY6OV6HBJJhESbiopPyuINo++Rp4FSLOOXiaVnbWJe21XytJpvDq1rHdcH47DekQJBAN4AazmxLDInzntwus3gkzYEfHZFTy79KUfizytLUkuHny9//xDL3BVhl24GZBz6J3AwspSMUXEuuoBv8uVTWEUCQQDXMP8pOyYhiD+M1+slQ5p+S4jjhPhEPriBTzaca2L9pIbI7BrI0ulut3jQmNA+O9uHVeIEL2wW8mtpb7DKvfDTAkEAtavEE4cwcq7uo0eiJx5Tec38CFE5tmtH3+L0xCo0Y0jN9PIayiT5qqmdYVVrkecIZSAE09lsQGIMD1UNgatNvQJAcW93olF2yUhcT69mWk9nulmxAFaQ1NDHTArou83z8cbv8ixb9i8QNHfs7PERHS1KjO3d5dzlurbxnjPtWwKDVwJAb1wMNYub/cg06wa+w+IY0a3UfA/rkDoWhZQ+/EwduR/tEpLpsUVTFOy3bck3hkC2eXi2I+qJ3FHf2eKYeDYRvQ=="
27 | }
28 | }
29 | doctor1
30 | {
31 | "code": 200,
32 | "data": {
33 | "result": "0",
34 | "privateKey": "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJD41BrWYb7cmqrZNnFt1JvAh5k80QLOc06NGIWmcAZCReu2HNJRHpjKbxbUGZ3SQ/n4/cGN41oN5gONky/o5UPmm2v9gRICfaHNxZsXZe14HLRmlmQRBPRSaQFA22H9Lp3cGuBKrlSWmObceDs04CeymeHha6qy1CE7gQgx7oW/AgMBAAECgYBd4vgihVJ6NA5qtQ+gOBvn3rEymYNXCPL+HTyTWa3VL9huhdt2jZh+JSP6qdQJNKJXYlycnFJwAO5EwMxgy7il3aGgMEsLfTwM4YWwERRxRdWxxtX6v6YTAjcd+SPH/MsaqkW7HEmh9ru9V9KKQ+U9Gv4zp+qbrwfVP3GCs4xZeQJBAM9Kx+qrv8Z5xzixgQwvDdP2nPBOi2PepLgVkZ8N5iwEq06xPFKukBKn62HVPxyNdbuzUm4Epzbyj3QTUrjfhvUCQQCzCU/kCFT6JYJzbkPNVsREnsZNq9XFeF+JYFYosf2jXX84M5thLhU6cqZNnIAO5H9blzLMYqGLbv27NDPaYOFjAkAHG3JFSoQ1wuEgwX1CNK7NsKvq1VaUIwMUyLCIeoqEwdg5x3vg/dk0uosofI5AZV0/BUPzP7eX+7MNcMgqTIetAkBjd1b1P1PGrbQt4SK2H/Bmlzdgy4i2bsvVDLqRXWGmszkMxk8azHlqwWt3Tu0uWPAQuI22U02go4c/zB7Kwmw1AkEAloptjxt3JgEzZvP4uVoanTQewsUEhp5LKgMePzrHHldWxkoM8v5HiNh1b6qzCeG8d9wFpZr+F5NeqOy+dPMKMw=="
35 | }
36 | }
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/picture/1.1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/1.1.PNG
--------------------------------------------------------------------------------
/picture/1.2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/1.2.PNG
--------------------------------------------------------------------------------
/picture/2.1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.1.PNG
--------------------------------------------------------------------------------
/picture/2.2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.2.PNG
--------------------------------------------------------------------------------
/picture/2.3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.3.PNG
--------------------------------------------------------------------------------
/picture/2.4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.4.PNG
--------------------------------------------------------------------------------
/picture/2.5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.5.PNG
--------------------------------------------------------------------------------
/picture/2.6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/2.6.PNG
--------------------------------------------------------------------------------
/picture/3.1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.1.PNG
--------------------------------------------------------------------------------
/picture/3.2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.2.PNG
--------------------------------------------------------------------------------
/picture/3.3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.3.PNG
--------------------------------------------------------------------------------
/picture/3.4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.4.PNG
--------------------------------------------------------------------------------
/picture/3.5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.5.PNG
--------------------------------------------------------------------------------
/picture/3.6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/3.6.PNG
--------------------------------------------------------------------------------
/picture/4.1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.1.PNG
--------------------------------------------------------------------------------
/picture/4.10.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.10.PNG
--------------------------------------------------------------------------------
/picture/4.2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.2.PNG
--------------------------------------------------------------------------------
/picture/4.3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.3.PNG
--------------------------------------------------------------------------------
/picture/4.4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.4.PNG
--------------------------------------------------------------------------------
/picture/4.5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.5.PNG
--------------------------------------------------------------------------------
/picture/4.6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.6.PNG
--------------------------------------------------------------------------------
/picture/4.7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.7.PNG
--------------------------------------------------------------------------------
/picture/4.8.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.8.PNG
--------------------------------------------------------------------------------
/picture/4.9.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/4.9.PNG
--------------------------------------------------------------------------------
/picture/network_createchannel1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/network_createchannel1.PNG
--------------------------------------------------------------------------------
/picture/network_createchannel2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/network_createchannel2.PNG
--------------------------------------------------------------------------------
/picture/network_up.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/network_up.PNG
--------------------------------------------------------------------------------
/picture/p-医生新建病历.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-医生新建病历.png
--------------------------------------------------------------------------------
/picture/p-医生查看已授权详细病历.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-医生查看已授权详细病历.png
--------------------------------------------------------------------------------
/picture/p-患者同意授权.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-患者同意授权.png
--------------------------------------------------------------------------------
/picture/p-患者查询病历.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-患者查询病历.png
--------------------------------------------------------------------------------
/picture/p-签名.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-签名.PNG
--------------------------------------------------------------------------------
/picture/p-网络拓扑.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p-网络拓扑.PNG
--------------------------------------------------------------------------------
/picture/p_校徽.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/p_校徽.jpg
--------------------------------------------------------------------------------
/picture/医生新建病历.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/医生新建病历.PNG
--------------------------------------------------------------------------------
/picture/医生查看已授权列表.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/医生查看已授权列表.PNG
--------------------------------------------------------------------------------
/picture/医生查看已授权详细病历.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/医生查看已授权详细病历.PNG
--------------------------------------------------------------------------------
/picture/医生申请授权.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/医生申请授权.PNG
--------------------------------------------------------------------------------
/picture/患者上传病历.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/患者上传病历.PNG
--------------------------------------------------------------------------------
/picture/患者同意授权.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/患者同意授权.PNG
--------------------------------------------------------------------------------
/picture/患者查询待授权列表.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/患者查询待授权列表.PNG
--------------------------------------------------------------------------------
/picture/患者查询待确认提交病历.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/患者查询待确认提交病历.PNG
--------------------------------------------------------------------------------
/picture/患者查询病历.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/患者查询病历.PNG
--------------------------------------------------------------------------------
/picture/用户注册测试.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/picture/用户注册测试.PNG
--------------------------------------------------------------------------------
/t.txt:
--------------------------------------------------------------------------------
1 |
2 | 区块链技术是很新的概念,在各个行业中的应用场景都处于尝试阶段。医疗区块链是区块链技术应用在医疗领域的一种创新性尝试,该生对于所选课题方向进行了较为详尽的调研,参考了许多文献和书籍,证明了其可行性,而且具有一定实际价值。选择区块链技术,符合学生专业发展方向,能丰富学生的基础知识和技能,对于提高其综合工程能力有益。研究方法和进度安排基本合理,难度合适,学生能够在预定时间内完成该课题的设计。
3 | 同意该课题开题。
4 |
5 | 区块链是一个全新的概念,该生前期阅读了大量的文献和技术博客,对区块链的基础知识,技术特性,共识算法及智能合约等概念都有了一定程度的了解。之后结合区块链技术特点,研究对比可能的应用场景:物流溯源、供应链等,选择目前研究涉及较少的医疗领域,具有创新意识与挑战意识。其中期报告写作规范,思路清晰,图表准确,表现出较为扎实的理论基础和较强的科研工作能力。
6 | 目前进度基本上与原计划相符,可以继续按照原计划执行,完成系统实现部分。
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/wen.txt:
--------------------------------------------------------------------------------
1 | [1] Nakamoto S. Bitcoin: A Peer-to-Peer Electronic Cash System[EB/OL]. (2009,02,08). [2020,5,30].https://bitcoin.org/bitcoin.pdf.
2 | [2] Melanie Swan. Blockchain: Blueprint for a New Economy[M]// Blockchain : blueprint for a new economy. O'Reilly, 2015.
3 | [3] 侯周国,梁欢.区块链技术发展现状及特色应用研究[J].科技创新与应用,2019(30):18-20+23.
4 | [4] 胥婷,崔文彬,于广军.我国智慧医院建设现状及发展路径[J].中国医院,2020,24(03):1-3+10.
5 | [5] 中国区块链技术和产业发展论坛.中国区块链技术和应用发展白皮书[M].城市不详:出版社不详,2016.
6 | [6] Azaria A, Ekblaw A, Vieira T, et al. MedRec: Using Blockchain for Medical Data Access and Permission Management[C]. Vienna,AUSTRIA: International Conference on Open and Big Data.2016:25-30.
7 | [7] Xhafa F, Li Jingwei, Zhao Gansen, et al.Designing cloud-based electronic health record system with attribute-based encryption [J]. Multimedia Tools and Applications, 2015,74(10):3441.
8 | [8] Shrier A A. Blockchain and health IT: algorithms, privacy, and data[EB/OL]. (2016,08,08).[2020,05,30]. http://www.truevaluemetrics.org/DBpdfs/Technology/Blockchain/1-78-blockchainandhealthitalgorithmsprivacydatawhitepaper.pdf.
9 | [9] 薛腾飞,傅群超,王枞等.基于区块链的医疗数据共享模型研究[J].自动化学报,2017,43(09):1555-1562.
10 | [10] 张超,李强,陈子豪等.Medical Chain:联盟式医疗区块链系统[J].自动化学报,2019,45(08):1495-1510.
11 | [11] 梅颖.安全存储医疗记录的区块链方法研究[J].江西师范大学学报(自然科学版),2017,41(05):484-490.
12 |
13 |
14 | [22] Rivest R.The MD5 Message-Digest Algorithm[S].RFC 1321, 1992.
15 | [23] Eastlake D, Jones P.US Secure Hash Algorithm1 (SHA1)[S].RFC 3174, 2001.
16 | [24] Lauter K . The advantages of elliptic curve cryptography for wireless security[J]. IEEE Wireless Communications, 2004,11(1):62-67.
17 | [25] 欧阳丽炜,王帅,袁勇等.智能合约:架构及进展[J].自动化学报,2019,45(03):445-457.
18 | [26] Buterin V.A next-generation smart contract and decentralized application platform[EB/OL].(2019,6,17).[2020,5,30].https://github.com/ethereum/wiki/wiki/White-Paper.
19 | [27] 李燕,马海英,王占君.区块链关键技术的研究进展[J].计算机工程与应用,2019,55(20):13-23+100.
20 | [28] Androulaki E. Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains[EB/OL]. (2018,1,30).[2020,05,30].https://arxiv.org/pdf/1801.10228.pdf.
21 | [29] 李晓璐. 基于区块链的电子病历共享及隐私保护研究[D].西安:西安电子科技大学,2019.
22 |
23 |
--------------------------------------------------------------------------------
/中期报告.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/中期报告.doc
--------------------------------------------------------------------------------
/任务书.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/任务书.doc
--------------------------------------------------------------------------------
/外文翻译原文.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/外文翻译原文.pdf
--------------------------------------------------------------------------------
/外文翻译译文.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/外文翻译译文.doc
--------------------------------------------------------------------------------
/开题报告.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/开题报告.doc
--------------------------------------------------------------------------------
/数据结构.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/数据结构.docx
--------------------------------------------------------------------------------
/毕业论文-基于区块链的医疗记录存储系统研究与开发.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/毕业论文-基于区块链的医疗记录存储系统研究与开发.doc
--------------------------------------------------------------------------------
/电计1604-徐富-201645030.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/电计1604-徐富-201645030.zip
--------------------------------------------------------------------------------
/答辩.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/答辩.docx
--------------------------------------------------------------------------------
/答辩.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BattleCall3/graduatework/47a2b6bb06456abe39c63eaa36c2b3d05591fc3f/答辩.pptx
--------------------------------------------------------------------------------