package Ġcom . template . contract Ċ Ċ import Ġcom . template . states . Pre scription State Ċ import Ġnet . cord a . core . contracts . Command Data Ċ import Ġnet . cord a . core . contracts . Contract Ċ import Ġnet . cord a . core . contracts . require Single Command Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . transactions . Ledger Transaction Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠThis Ġcontract Ġen forces Ġrules Ġregarding Ġthe Ġcreation Ġof Ġa Ġvalid Ġ[ Pre scription State ] Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġnew ĠPatient Ġto Ġbe Ġissued Ġonto Ġthe Ġledger , Ġa Ġtransaction Ġis Ġrequired Ġwhich Ġtakes : Ċ Ġ* Ġ- ĠZero Ġinput Ġstates . Ċ Ġ* Ġ- ĠOne Ġoutput Ġstate : Ġthe Ġnew Ġ[ Pre scription State ] Ġ- Ġ ĠThe Ġpatients Ġph arm acy Ġpre scription Ċ Ġ* Ġ- ĠAn ĠCreate () Ġcommand Ġwith Ġthe Ġpublic Ġkeys Ġof Ġboth Ġthe Ġdoctor Ġand Ġthe Ġpatient Ġand Ġph arm acy Ċ Ġ* Ċ Ġ* ĠAll Ġcontracts Ġmust Ġsub - class Ġthe Ġ[ Contract ] Ġinterface . Ċ Ġ*/ Ċ class ĠPre scription Contract Ġ: ĠContract Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠP RES _ CONTRACT _ ID Ġ= Ġ" com . template . contract . Pre scription Contract " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġverify () Ġfunction Ġof Ġall Ġthe Ġstates ' Ġcontracts Ġmust Ġnot Ġthrow Ġan Ġexception Ġfor Ġa Ġtransaction Ġto Ġbe ĊĠĠĠĠ Ġ* Ġconsidered Ġvalid . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġverify ( tx Ġ: ĠLed ger Transaction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġtx . commands . require Single Command < Commands . Create >() ĊĊĠĠĠĠĠĠĠ Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGeneric Ġconstraints Ġaround Ġthe ĠInitial Ġtransaction . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġinputs Ġshould Ġbe Ġconsumed Ġwhen Ġiss uing Ġan ĠPre scription State ." Ġusing Ġ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Only Ġone Ġoutput Ġstate Ġshould Ġbe Ġcreated ." Ġusing Ġ( tx . outputs . size Ġ== Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPre scription - specific Ġconstraints . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMed icine Ġmust Ġnot Ġbe Ġover Ġreg ulated Ġstandards Ġetc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcontract Ġonly Ġimplements Ġone Ġcommand , ĠCreate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠCommands Ġ: ĠCommand Data Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠCreate Ġ: ĠCommands ĊĠĠĠ Ġ} Ċ }