mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-21 09:05:10 +00:00
se agrega el endpoint para obtener recetas por DNI y estado
This commit is contained in:
parent
866a2ecb03
commit
a70ef3b1cd
25 changed files with 148 additions and 8 deletions
3
asset-transfer-basic/application-gateway-java/.gitignore
vendored
Normal file
3
asset-transfer-basic/application-gateway-java/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
.idea/
|
||||||
|
.gradle/
|
||||||
|
bin/
|
||||||
|
|
@ -13,6 +13,7 @@ type SmartContract struct {
|
||||||
|
|
||||||
type Receta struct {
|
type Receta struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
|
Identificador string `json:"identificador"`
|
||||||
Owner string `json:"owner"`
|
Owner string `json:"owner"`
|
||||||
PrescripcionAnteriorId string `json:"prescripcionAnteriorId"`
|
PrescripcionAnteriorId string `json:"prescripcionAnteriorId"`
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
|
@ -34,6 +35,7 @@ func (s *SmartContract) InitLedger(ctx contractapi.TransactionContextInterface)
|
||||||
recetas := []Receta{
|
recetas := []Receta{
|
||||||
{
|
{
|
||||||
ID: "receta1",
|
ID: "receta1",
|
||||||
|
Identificador "rece1234"
|
||||||
Owner: "Tomoko",
|
Owner: "Tomoko",
|
||||||
PrescripcionAnteriorId: "presc123",
|
PrescripcionAnteriorId: "presc123",
|
||||||
Status: "active",
|
Status: "active",
|
||||||
|
|
@ -52,6 +54,7 @@ func (s *SmartContract) InitLedger(ctx contractapi.TransactionContextInterface)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ID: "receta2",
|
ID: "receta2",
|
||||||
|
Identificador "rece1235"
|
||||||
Owner: "Alice",
|
Owner: "Alice",
|
||||||
PrescripcionAnteriorId: "presc456",
|
PrescripcionAnteriorId: "presc456",
|
||||||
Status: "completed",
|
Status: "completed",
|
||||||
|
|
@ -224,3 +227,35 @@ func (s *SmartContract) GetMultipleRecetas(ctx contractapi.TransactionContextInt
|
||||||
}
|
}
|
||||||
return recetas, nil
|
return recetas, nil
|
||||||
}
|
}
|
||||||
|
// TODO: adaptar los campos para que se tengan un identificar de usuarios ademas del DNI
|
||||||
|
func (s *SmartContract) GetRecetasPorDniYEstado(ctx contractapi.TransactionContextInterface, dni string, estado string) ([]*Receta, error) {
|
||||||
|
if dni == "" || estado == "" {
|
||||||
|
return nil, fmt.Errorf("el dni y el estado son obligatorios")
|
||||||
|
}
|
||||||
|
|
||||||
|
resultsIterator, err := ctx.GetStub().GetStateByRange("", "")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error al obtener datos del ledger: %v", err)
|
||||||
|
}
|
||||||
|
defer resultsIterator.Close()
|
||||||
|
|
||||||
|
var recetasFiltradas []*Receta
|
||||||
|
for resultsIterator.HasNext() {
|
||||||
|
queryResponse, err := resultsIterator.Next()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var receta Receta
|
||||||
|
err = json.Unmarshal(queryResponse.Value, &receta)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if receta.DniPaciente == dni && receta.Status == estado {
|
||||||
|
recetasFiltradas = append(recetasFiltradas, &receta)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return recetasFiltradas, nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
.idea/
|
.idea/
|
||||||
.gradle/
|
.gradle/
|
||||||
|
bin/
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.code.hyperledger;
|
package com.code.hyperledger;
|
||||||
|
|
||||||
|
|
||||||
import com.code.hyperledger.coso.Receta;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
import com.code.hyperledger.models.Receta;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.code.hyperledger.controllers;
|
package com.code.hyperledger.controllers;
|
||||||
|
|
||||||
import com.code.hyperledger.coso.Receta;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import com.code.hyperledger.models.Receta;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
public class Example {
|
public class Example {
|
||||||
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package com.code.hyperledger.controllers;
|
package com.code.hyperledger.controllers;
|
||||||
|
|
||||||
import com.code.hyperledger.coso.Receta;
|
|
||||||
import com.code.hyperledger.coso.RecetaDto;
|
|
||||||
import com.code.hyperledger.coso.AssetIdDto;
|
|
||||||
import com.code.hyperledger.Utils.Hashing;
|
import com.code.hyperledger.Utils.Hashing;
|
||||||
|
import com.code.hyperledger.models.AssetIdDto;
|
||||||
|
import com.code.hyperledger.models.Receta;
|
||||||
|
import com.code.hyperledger.models.RecetaDto;
|
||||||
import com.code.hyperledger.services.RecetaService;
|
import com.code.hyperledger.services.RecetaService;
|
||||||
import org.hyperledger.fabric.client.*;
|
import org.hyperledger.fabric.client.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -85,6 +85,7 @@ public class RecetaController {
|
||||||
|
|
||||||
private RecetaDto mapToDto(Receta receta) {
|
private RecetaDto mapToDto(Receta receta) {
|
||||||
RecetaDto dto = new RecetaDto();
|
RecetaDto dto = new RecetaDto();
|
||||||
|
dto.setIdentifier(receta.getIdentifier());
|
||||||
dto.setOwner(receta.getOwner());
|
dto.setOwner(receta.getOwner());
|
||||||
dto.setPrescripcionAnteriorId(receta.getPrescripcionAnteriorId());
|
dto.setPrescripcionAnteriorId(receta.getPrescripcionAnteriorId());
|
||||||
dto.setStatus(receta.getStatus());
|
dto.setStatus(receta.getStatus());
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.code.hyperledger.coso;
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.code.hyperledger.coso;
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class Receta {
|
public class Receta {
|
||||||
private String id;
|
private String id;
|
||||||
|
private String identifier;
|
||||||
private String owner;
|
private String owner;
|
||||||
private String prescripcionAnteriorId;
|
private String prescripcionAnteriorId;
|
||||||
private String status;
|
private String status;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.code.hyperledger.coso;
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -8,6 +8,7 @@ import lombok.NoArgsConstructor;
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class RecetaDto {
|
public class RecetaDto {
|
||||||
|
private String identifier;
|
||||||
private String owner;
|
private String owner;
|
||||||
private String prescripcionAnteriorId;
|
private String prescripcionAnteriorId;
|
||||||
private String status;
|
private String status;
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AssetIdDto {
|
||||||
|
private String Dni;
|
||||||
|
private String TimeStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class Receta {
|
||||||
|
private String id;
|
||||||
|
private String identifier;
|
||||||
|
private String owner;
|
||||||
|
private String prescripcionAnteriorId;
|
||||||
|
private String status;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
|
||||||
|
private String statusChange;
|
||||||
|
private String prioridad;
|
||||||
|
private String medicacion;
|
||||||
|
private String razon;
|
||||||
|
private String notas;
|
||||||
|
private String periodoDeTratamiento;
|
||||||
|
private String instruccionesTratamiento;
|
||||||
|
private String periodoDeValidez;
|
||||||
|
private String dniPaciente;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private String fechaDeAutorizacion;
|
||||||
|
private int cantidad;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private String expectedSupplyDuration;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.code.hyperledger.models;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RecetaDto {
|
||||||
|
private String identifier;
|
||||||
|
private String owner;
|
||||||
|
private String prescripcionAnteriorId;
|
||||||
|
private String status;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
|
||||||
|
private String statusChange;
|
||||||
|
private String prioridad;
|
||||||
|
private String medicacion;
|
||||||
|
private String razon;
|
||||||
|
private String notas;
|
||||||
|
private String periodoDeTratamiento;
|
||||||
|
private String instruccionesTratamiento;
|
||||||
|
private String periodoDeValidez;
|
||||||
|
private String dniPaciente;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private String fechaDeAutorizacion;
|
||||||
|
private int cantidad;
|
||||||
|
//@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private String expectedSupplyDuration;
|
||||||
|
}
|
||||||
|
|
@ -141,3 +141,15 @@ public class RecetaService {
|
||||||
objectMapper.getTypeFactory().constructCollectionType(List.class, Receta.class));
|
objectMapper.getTypeFactory().constructCollectionType(List.class, Receta.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Receta> obtenerRecetasPorDniYEstado(String dni, String estado) throws GatewayException, IOException {
|
||||||
|
if (dni == null || dni.isBlank() || estado == null || estado.isBlank()) {
|
||||||
|
throw new IllegalArgumentException("DNI y estado son obligatorios");
|
||||||
|
}
|
||||||
|
|
||||||
|
var evaluateResult = contract.evaluateTransaction("GetRecetasPorDniYEstado", dni, estado);
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
return objectMapper.readValue(evaluateResult,
|
||||||
|
objectMapper.getTypeFactory().constructCollectionType(List.class, Receta.class));
|
||||||
|
}
|
||||||
|
|
||||||
3
asset-transfer-ledger-queries/.gitignore
vendored
Normal file
3
asset-transfer-ledger-queries/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
.idea/
|
||||||
|
.gradle/
|
||||||
|
bin/
|
||||||
3
asset-transfer-private-data/chaincode-java/.gitignore
vendored
Normal file
3
asset-transfer-private-data/chaincode-java/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
.idea/
|
||||||
|
.gradle/
|
||||||
|
bin/
|
||||||
3
off_chain_data/application-java/app/.gitignore
vendored
Normal file
3
off_chain_data/application-java/app/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
.idea/
|
||||||
|
.gradle/
|
||||||
|
bin/
|
||||||
Loading…
Reference in a new issue