123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/architecture/types/index.dart';
- import 'package:vitalapp/components/alert_dialog.dart';
- import 'package:vitalapp/components/cell.dart';
- import 'package:vitalapp/components/dialog_date.dart';
- import 'package:vitalapp/components/dialog_input.dart';
- import 'package:vitalapp/components/dialog_select.dart';
- import 'package:vitalapp/pages/check/models/form.dart';
- /// 住院史
- class MainMedicationStatusFrom extends StatefulWidget {
- const MainMedicationStatusFrom({
- Key? key,
- required this.fromResult,
- required this.currentId,
- this.admissionJson,
- }) : super(key: key);
- final ValueCallback fromResult;
- final int currentId;
- final Map<String, dynamic>? admissionJson;
- @override
- _HospitalizationHistoryFormState createState() =>
- _HospitalizationHistoryFormState();
- }
- class _HospitalizationHistoryFormState extends State<MainMedicationStatusFrom> {
- MainMedication mainMedication = MainMedication();
- @override
- void initState() {
- if (widget.admissionJson != null) {
- mainMedication = MainMedication.fromJson(widget.admissionJson!);
- }
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return VAlertDialog(
- title: "主要用药情况填写",
- width: 600,
- content: Container(
- height: 350,
- padding: const EdgeInsets.symmetric(horizontal: 24),
- alignment: Alignment.center,
- child: VListFormCellGroup(
- children: [
- _buildFormCell(
- label: '药物名称',
- content: mainMedication.medicineName,
- onTap: () async {
- final result = await _showInputDialog(
- title: '药物名称',
- initialValue: mainMedication.medicineName ?? '',
- );
- mainMedication.medicineName = result;
- setState(() {});
- },
- ),
- _buildFormCell(
- label: '用法',
- content: mainMedication.medicineUsage,
- onTap: () async {
- final result = await _showInputDialog(
- title: '用法',
- initialValue: mainMedication.medicineUsage ?? '',
- );
- mainMedication.medicineUsage = result;
- setState(() {});
- },
- ),
- _buildFormCell(
- label: '用量',
- content: mainMedication.medicineDosage,
- onTap: () async {
- final result = await _showInputDialog(
- title: '用量',
- initialValue: mainMedication.medicineDosage ?? '',
- );
- mainMedication.medicineDosage = result;
- setState(() {});
- },
- ),
- _buildFormCell(
- label: '用药时间',
- content: mainMedication.medicineTime,
- onTap: () async {
- final result = await _showInputDialog(
- title: '用药时间',
- initialValue: mainMedication.medicineTime ?? '',
- );
- mainMedication.medicineTime = result;
- setState(() {});
- },
- ),
- _buildFormCell(
- label: '服药依从性',
- content: mainMedicationMap[mainMedication.medicineCompliance],
- onTap: () async {
- String? result = await VDialogSelect<String, String>(
- source: [
- "1",
- "2",
- "3",
- ],
- labelGetter: (data) => mainMedicationMap[data] ?? '',
- valueGetter: (data) => data,
- ).show();
- mainMedication.medicineCompliance = result;
- setState(() {});
- },
- ),
- ],
- ),
- ),
- onConfirm: () {
- if (widget.admissionJson != null) {
- widget.fromResult.call(
- EditTableValue(
- id: widget.currentId,
- value: mainMedication.toJson(),
- ),
- );
- } else {
- mainMedication.id = widget.currentId.toString();
- widget.fromResult.call(mainMedication.toJson());
- }
- Get.back();
- },
- );
- }
- Map<String, String> mainMedicationMap = <String, String>{
- "1": "规律",
- "2": "间断",
- "3": "不服药",
- };
- Future<String?> _showInputDialog({
- required String title,
- required String initialValue,
- }) async {
- final result = await VDialogInput(
- title: title,
- initialValue: initialValue,
- ).show();
- return result;
- }
- Widget _buildFormCell({
- required String label,
- String? content,
- required VoidCallback onTap,
- }) {
- return VListFormCell(
- label: label,
- content: content ?? '',
- onTap: onTap,
- );
- }
- }
|