1 package operation2
3 import (4 "github.com/prescriptionserver/chaincode/go/prescription/model"
5 "github.com/hyperledger/fabric/core/chaincode/shim"
6 "encoding/json"
7 "github.com/hyperledger/fabric/protos/peer"
8 "github.com/prescriptionserver/chaincode/go/prescription/global"
9 "bytes"
10 )11
12 type PrescriptionQuery struct{13 Stub shim.ChaincodeStubInterface14 Args []string
15 }16
17 func (p *PrescriptionQuery) GetPbcnByPid(pid string)(model.PrescriptionBlockchain,bool) {18 var pbcn model.PrescriptionBlockchain19 bytes, err :=p.Stub.GetState(pid)20 if bytes ==nil {21 return pbcn, false
22 }23 err =json.Unmarshal(bytes,&pbcn)24 if err !=nil{25 return pbcn,false
26 }27 return pbcn,true
28 }29 func (p *PrescriptionQuery) GetPbcnsByOpdid() peer.Response {30 if len(p.Args) != 1{31 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid args!=1")32 returnshim.Error(res)33 }34 pspnsIterator,err :=p.Stub.GetStateByPartialCompositeKey(global.OpenPrescriptionDeptID_PrescriptionID_IndexName,35 []string{p.Args[0]})36 if err !=nil{37 res:=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid"+
38 "getstatebypartialcompositekey error")39 returnshim.Error(res)40 }41 defer pspnsIterator.Close()42 var pbcns []model.PrescriptionBlockchain43 forpspnsIterator.HasNext() {44 kv,err:=pspnsIterator.Next()45 if err !=nil{46 res:=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid iterator.next error")47 returnshim.Error(res)48 }49 _, compositeKey, err :=p.Stub.SplitCompositeKey(kv.Key)50 if err !=nil{51 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid"+
52 "split composite key error")53 returnshim.Error(res)54 }55 if len(compositeKey) <2{56 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid"+
57 "composite keys len<2")58 returnshim.Error(res)59 }60 pbcn, b := p.GetPbcnByPid(compositeKey[1])61 if !b{62 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid getpbcnbypid error")63 returnshim.Error(res)64 }65 pbcns =append(pbcns,pbcn)66 }67 pbcndata,err :=json.Marshal(pbcns)68 if err !=nil{69 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyopdid json marshal error")70 returnshim.Error(res)71 }72 returnshim.Success(pbcndata)73 }74 func (p *PrescriptionQuery) GetPbcnsByPrpdid() peer.Response {75 if len(p.Args) != 1{76 res :=GetRetString(1,"PrescriptionChaincode query getpbcnsbyprpdid args!=1")77 returnshim.Error(res)78 }79 pspnsIterator,err :=p.Stub.GetStateByPartialCompositeKey(80 global.PendingReceivePrescriptionDeptID_PrescriptionID_IndexName,81 []string{p.Args[0]})82 if err !=nil{83 res:=GetRetString(