瀏覽代碼

diagnosis表相关

Melon 1 年之前
父節點
當前提交
9987e167de

+ 10 - 2
lib/database/db.dart

@@ -1,7 +1,10 @@
 import 'package:vital_local_database/index.dart';
-import 'package:vitalapp/database/entities/patient.dart';
 
+import 'entities/patient.dart';
+import 'entities/diagnosis.dart';
+import 'repositories/interfaces/diagnosis.dart';
 import 'repositories/interfaces/patient.dart';
+import 'repositories/diagnosis.dart';
 import 'repositories/patient.dart';
 
 /// vital 本地数据库对象
@@ -25,11 +28,13 @@ class VitalDatabaseAccessor
     _database = await _connection.open();
     await _checkTables();
     _store.regRepository<IPatientRepository>(PatientRepository(database));
+    _store.regRepository<IDiagnosisRepository>(DiagnosisRepository(database));
   }
 
   Future<void> _checkTables() async {
     // await database.execute("DROP TABLE IF EXISTS Patients;");
     await database.execute(PatientEntity.TABLE_CREATE_SQL);
+    await database.execute(DiagnosisEntity.TABLE_CREATE_SQL);
   }
 
   void dispose() {
@@ -38,6 +43,9 @@ class VitalDatabaseAccessor
 }
 
 class VitalDatabaseRepositoryStore extends BaseDbAccessorRepositoryStore {
-  /// 病人仓储
+  /// 居民仓储
   IPatientRepository get patient => findRepository<IPatientRepository>()!;
+
+  /// 检测记录仓储
+  IDiagnosisRepository get diagnosis => findRepository<IDiagnosisRepository>()!;
 }

+ 52 - 0
lib/database/entities/diagnosis.dart

@@ -0,0 +1,52 @@
+import 'package:vital_local_database/core/interface/entity.dart';
+import 'package:vital_local_database/core/sqlite/entity.dart';
+import 'package:vitalapp/database/entities/syncable.dart';
+
+/// 检测记录表实体
+class DiagnosisEntity extends SyncableEntity<DiagnosisEntity> {
+  static const String _tableName = "diagnosis";
+  static final _columns = DiagnosisColumnsDefine();
+
+  // ignore: constant_identifier_names
+  static const TABLE_CREATE_SQL = 'CREATE TABLE IF NOT EXISTS "diagnosis" ('
+      '"id" INTEGER NOT NULL,'
+      '"code" VARCHAR(100) NOT NULL,'
+      '"patientCode" VARCHAR(100) NOT NULL,'
+      '"dataJson" TEXT NOT NULL,'
+      '"syncType" INTEGER NOT NULL,'
+      '"syncState" INTEGER NOT NULL,'
+      '"createTime" DATETIME NOT NULL,'
+      '"updateTime" DATETIME NULL,'
+      '"isValid" INTEGER NOT NULL,'
+      'PRIMARY KEY ("id")'
+      ');';
+
+  @override
+  DiagnosisColumnsDefine get columns => _columns;
+
+  @override
+  String get tableName => _tableName;
+
+  /// 居民Code
+  String patientCode = "";
+
+  @override
+  Map<String, dynamic> toJson() {
+    final map = super.toJson();
+    map['patientCode'] = patientCode;
+    return map;
+  }
+
+  @override
+  DiagnosisEntity fromJson(Map<String, dynamic> map) {
+    super.fromJson(map);
+    patientCode = map['patientCode'];
+    return this;
+  }
+}
+
+/// 检测记录字段定义
+class DiagnosisColumnsDefine extends SyncableColumnsDefine<DiagnosisEntity>
+    implements IDbColumnsDefine<DiagnosisEntity> {
+  final patientCode = DbColumn<String>("patientCode");
+}

+ 21 - 0
lib/database/repositories/diagnosis.dart

@@ -0,0 +1,21 @@
+import 'package:vital_local_database/core/index.dart';
+import 'package:vitalapp/database/entities/defines.dart';
+import 'package:vitalapp/database/entities/diagnosis.dart';
+
+import 'interfaces/diagnosis.dart';
+
+class DiagnosisRepository
+    extends BaseDbRepository<DiagnosisEntity, DiagnosisColumnsDefine>
+    implements IDiagnosisRepository {
+  DiagnosisRepository(super.database);
+
+  @override
+  DiagnosisEntity createEntityInstance() => DiagnosisEntity();
+
+  @override
+  Future<List<DiagnosisEntity>> getListByPatientCode(String patientCode,
+      {OfflineDataSyncState? syncState}) {
+    // TODO: implement getListByPatientCode
+    throw UnimplementedError();
+  }
+}

+ 16 - 0
lib/database/repositories/interfaces/diagnosis.dart

@@ -0,0 +1,16 @@
+import 'package:vital_local_database/core/interface/repository.dart';
+import 'package:vitalapp/database/entities/defines.dart';
+import 'package:vitalapp/database/entities/diagnosis.dart';
+
+abstract class IDiagnosisRepository
+    implements IDbRepositroy<DiagnosisEntity, DiagnosisColumnsDefine> {
+  /// 根据居民Code查找列表
+  ///
+  /// [patientCode] 居民Code
+  ///
+  /// [syncState] 同步状态,不传搜索全部
+  Future<List<DiagnosisEntity>> getListByPatientCode(
+    String patientCode, {
+    OfflineDataSyncState? syncState,
+  });
+}

+ 14 - 0
lib/mock/mock.dart

@@ -0,0 +1,14 @@
+import 'package:fis_jsonrpc/rpc.dart';
+import 'package:vitalapp/mock/services/diagnosis.dart';
+import 'package:vitalapp/mock/services/patient.dart';
+
+class JsonRpcMockProxy extends JsonRpcProxy {
+  JsonRpcMockProxy({String? host}) : super(host: host);
+
+  @override
+  VitalPatientService get patient => PatientServiceMock(currentHostAddress);
+
+  @override
+  VitalDiagnosisService get diagnosis =>
+      DiagnosisServiceMock(currentHostAddress);
+}

+ 5 - 0
lib/mock/services/diagnosis.dart

@@ -0,0 +1,5 @@
+import 'package:fis_jsonrpc/rpc.dart';
+
+class DiagnosisServiceMock extends VitalDiagnosisService {
+  DiagnosisServiceMock(super.host);
+}

+ 5 - 0
lib/mock/services/patient.dart

@@ -0,0 +1,5 @@
+import 'package:fis_jsonrpc/rpc.dart';
+
+class PatientServiceMock extends VitalPatientService {
+  PatientServiceMock(String host) : super(host);
+}