-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathehrApp.js
133 lines (103 loc) · 4.84 KB
/
ehrApp.js
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
const express = require('express');
const { Gateway, Wallets } = require('fabric-network');
const path = require('path');
const fs = require('fs');
const app = express();
app.use(express.json()); // Middleware to parse JSON request body
// API to create a new patient
app.post('/create-patient', async (req, res) => {
const { id, name, age, gender, diagnosis, treatment, doctorName, lastUpdated } = req.body;
try {
// Load the network connection profile
const ccpPath = '/home/sayeedm/myledger/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.json';
const ccp = JSON.parse(fs.readFileSync(ccpPath, 'utf8'));
const walletPath = path.join(process.cwd(), 'wallet');
const wallet = await Wallets.newFileSystemWallet(walletPath);
const identity = await wallet.get('appUser');
if (!identity) {
return res.status(400).json({ message: 'An identity for the user "appUser" does not exist in the wallet' });
}
const gateway = new Gateway();
await gateway.connect(ccp, {
wallet,
identity: 'appUser',
discovery: { enabled: true, asLocalhost: true }
});
const network = await gateway.getNetwork('mychannel');
const contract = network.getContract('ehr');
// Submit the transaction to create a new patient
await contract.submitTransaction('CreatePatient', id, name, age, gender, diagnosis, treatment, doctorName, lastUpdated);
console.log('Patient created.');
res.json({ message: 'Patient created successfully' });
gateway.disconnect();
} catch (error) {
console.error('Error creating patient:', error);
res.status(500).json({ message: 'Failed to create patient' });
}
});
// API to query a patient record by ID
app.get('/query-patient', async (req, res) => {
const { id } = req.query;
try {
// Load the network connection profile
const ccpPath = '/home/sayeedm/myledger/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.json';
const ccp = JSON.parse(fs.readFileSync(ccpPath, 'utf8'));
const walletPath = path.join(process.cwd(), 'wallet');
const wallet = await Wallets.newFileSystemWallet(walletPath);
const identity = await wallet.get('appUser');
if (!identity) {
return res.status(400).json({ message: 'An identity for the user "appUser" does not exist in the wallet' });
}
const gateway = new Gateway();
await gateway.connect(ccp, {
wallet,
identity: 'appUser',
discovery: { enabled: true, asLocalhost: true }
});
const network = await gateway.getNetwork('mychannel');
const contract = network.getContract('ehr');
// Query the patient record
const result = await contract.evaluateTransaction('QueryPatient', id);
console.log(`Patient record: ${result.toString()}`);
res.json(JSON.parse(result.toString()));
gateway.disconnect();
} catch (error) {
console.error('Error querying patient:', error);
res.status(500).json({ message: 'Failed to query patient' });
}
});
// API to update a patient's record
app.post('/update-patient', async (req, res) => {
const { id, diagnosis, treatment } = req.body;
try {
// Load the network connection profile
const ccpPath = '/home/sayeedm/myledger/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/connection-org1.json';
const ccp = JSON.parse(fs.readFileSync(ccpPath, 'utf8'));
const walletPath = path.join(process.cwd(), 'wallet');
const wallet = await Wallets.newFileSystemWallet(walletPath);
const identity = await wallet.get('appUser');
if (!identity) {
return res.status(400).json({ message: 'An identity for the user "appUser" does not exist in the wallet' });
}
const gateway = new Gateway();
await gateway.connect(ccp, {
wallet,
identity: 'appUser',
discovery: { enabled: true, asLocalhost: true }
});
const network = await gateway.getNetwork('mychannel');
const contract = network.getContract('ehr');
// Submit the transaction to update the patient record
await contract.submitTransaction('UpdatePatient', id, diagnosis, treatment);
console.log('Patient record updated.');
res.json({ message: 'Patient record updated successfully' });
gateway.disconnect();
} catch (error) {
console.error('Error updating patient:', error);
res.status(500).json({ message: 'Failed to update patient' });
}
});
// Start the Express server
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});