chatGPT助力医保接口开发

  在下面的文章中,用到反射来设计医保接口,因为国内的医保接口有一个特点,就是接口基本是统一的,接中传的数据是有一定规律的,这样方便对接后业务级的升级扩展,所以在对接医保接口时,就很容易用OOP来设计一个微框架来对应。

用反射开发医保接口

桂素伟,公众号:桂迹
.NET架构小技巧(3)——反射,架构人员法宝I

  当设计完微框架后,剩下的就是累活儿了,就是把几十个接口的输入和输出实体类,把微框架的要求定义出来,这种工作费时费力,还容易眼花。

  chatGPT登场了,这也是chatGPT最擅长的领域了,做一些基本的,重复的工作。

  还是用例子说明吧,下面是一个读卡接口的一部分,我们看看用chatGPT怎么实现。本例chatGPT生成是用visual chatGPT studio在visual studio 2022中生成的。

  首先从医保接口文档中,把实体类复制出来,然后给出提示:
把上面数据生成C#实体类,名称是BaseInfo,并保留原来的名称,加上注释

复制代码
   //1 psn_no 人员编号 字符型 30 Y
    //2 psn_cert_type 人员证件类型 字符型 6 Y Y
    //3 certno 证件号码 字符型 50 Y
    //4 psn_name 人员姓名 字符型 50 Y
    //5 gend 性别 字符型 6 Y Y
    //6 naty 民族 字符型 3 Y
    //7 brdy 出生日期 日期型yyyy-MM-dd
    //8 age 年龄 数值型 4,1 Y
    //9 expContent 字段扩展 字符型 4000
    //把上面数据生成C#实体类,名称是BaseInfo,并保留原来的名称,加上注释
复制代码

  下面是就生成的代码:

复制代码
   /// <summary>
    /// BaseInfo
    /// </summary>
    public class BaseInfo
    {
        /// <summary>
        /// 人员编号
        /// </summary>
        public string psn_no { get; set; }

        /// <summary>
        /// 人员证件类型
        /// </summary>
        public string psn_cert_type { get; set; }

        /// <summary>
        /// 证件号码
        /// </summary>
        public string certno { get; set; }

        /// <summary>
        /// 人员姓名
        /// </summary>
        public string psn_name { get; set; }

        /// <summary>
        /// 性别
        /// </summary>
        public string gend { get; set; }

        /// <summary>
        /// 民族
        /// </summary>
        public string naty { get; set; }

        /// <summary>
        /// 出生日期
        /// </summary>
        public DateTime brdy { get; set; }

        /// <summary>
        /// 年龄
        /// </summary>
        public decimal age { get; set; }

        /// <summary>
        /// 字段扩展
        /// </summary>
        public string expContent { get; set; }
    }
复制代码

  下一步如果chatGPT的收费便宜了,可以把一个文档扔进去,让它自动生成全部实体类。不过现在还是需要把文档中的输入输出数据复制进来,生成对应的实体类。

  还有一类工作比较繁琐,显示医保返回的数据到窗体上,表格相对好处理,单项数据就得定义控件一个一个处理了,这个工作也可以让chatGPT帮我个实现。

  还是用人员接口为例,上面的BaseInfo就是读卡后返回的其中一项人员基本信息,我们可以先给chatGPT做个事例,在窗体上定义一个属性的显示样例:人员编号。

   因为窗体的可视化操作,都会在自动生成对应的代码,我们只需要告诉chatGPT,按照人员编号属性的样子生成其他属性就行了。

  首先要生成定义所有属性的Lable,提示如下:

参照psn_no_display_Lab和psn_no_Lab两个Labe,生成上面数据的Label定义

复制代码
private Label psn_no_display_Lab;
 private Label psn_no_Lab;


 //1 psn_no 人员编号 字符型 30 Y
 //2 psn_cert_type 人员证件类型 字符型 6 Y Y
 //3 certno 证件号码 字符型 50 Y
 //4 psn_name 人员姓名 字符型 50 Y
 //5 gend 性别 字符型 6 Y Y
 //6 naty 民族 字符型 3 Y
 //7 brdy 出生日期 日期型yyyy-MM-dd
 //8 age 年龄 数值型 4,1 Y
 //9 expContent 字段扩展 字符型 4000
 //参照psn_no_display_Lab和psn_no_Lab两个Labe,生成上面数据的Label定义
复制代码

  篇幅所限,没有粘贴生成的代码,这里每个属性会生成两个Lable的定义。

  接下来,把BaseInfo属性生成对应的Lable给实现了,然后提示:

参照psn_no_display_Lab和psn_no_Lab两个Label,生成BaseInfo实体类中各属性对应的Label,其中注释作为每个**_display_Lab的Text值,生成硬编码,不要使用反射

复制代码
psn_no_display_Lab = new Label();
psn_no_Lab = new Label();
SuspendLayout();
// 
// psn_no_display_Lab
// 
psn_no_display_Lab.AutoSize = true;
psn_no_display_Lab.Location = new Point(39, 48);
psn_no_display_Lab.Name = "psn_no_display_Lab";
psn_no_display_Lab.Size = new Size(68, 17);
psn_no_display_Lab.TabIndex = 0;
psn_no_display_Lab.Text = "人员编号:";
// 
// psn_no_Lab
// 
psn_no_Lab.AutoSize = true;
psn_no_Lab.Location = new Point(114, 47);
psn_no_Lab.Name = "psn_no_Lab";
psn_no_Lab.Size = new Size(49, 17);
psn_no_Lab.TabIndex = 1;
psn_no_Lab.Text = "psn_no";
// 
// Form1
// 
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(psn_no_Lab);
Controls.Add(psn_no_display_Lab);
Name = "Form1";
Text = "Form1";
Load += Form1_Load;
ResumeLayout(false);
PerformLayout();

//1 psn_no 人员编号 字符型 30 Y
//2 psn_cert_type 人员证件类型 字符型 6 Y Y
//3 certno 证件号码 字符型 50 Y
//4 psn_name 人员姓名 字符型 50 Y
//5 gend 性别 字符型 6 Y Y
//6 naty 民族 字符型 3 Y
//7 brdy 出生日期 日期型yyyy-MM-dd
//8 age 年龄 数值型 4,1 Y
//9 expContent 字段扩展 字符型 4000
//参照psn_no_display_Lab和psn_no_Lab两个Label,生成BaseInfo实体类中各属性对应的Label,其中注释作为每个**_display_Lab的Text值,生成硬编码,不要使用反射
复制代码

  篇幅有限,没有把生成的代码粘上来,当然结果要与人中编号的两个lable相同,这里可能不同时刻生成的代码会有偏差,这时就要调整提示语句,反复尝试,以达到自己想要的结果。这时,回到设计界面,就会看到各个属性的对应Lable已经存在,这时,只需要按自己的顺序和设计排版就可以了。

   再有就是当读卡后,要把返回的数据反写到上面定义的控件中,这里,我是用GithubCopilot实现的,当把人员编号赋值后,其他属性就Tab,Enter就可以了,当然,也可以让visual chatGPT studio来生成,你可以试试哦!

复制代码
var person = new BaseInfo()
 {
     psn_no = "psn_no",
     psn_cert_type = "psn_cert_type",
     certno = "certno",
     psn_name = "psn_name",
     gend = "gend",
     naty = "naty",
     brdy = DateTime.Now,
     age = 1,
     expContent = "expContent"
 };
 psn_no_Lab.Text = person.psn_no;
 //借助Github Copilot,实现赋值
 psn_cert_type_Lab.Text = person.psn_cert_type;
 certno_Lab.Text = person.certno;
 psn_name_Lab.Text = person.psn_name;
 gend_Lab.Text = person.gend;
 naty_Lab.Text = person.naty;
 brdy_Lab.Text = person.brdy.ToString();
 age_Lab.Text = person.age.ToString();
 expContent_Lab.Text = person.expContent;
复制代码

  其实使用chatGPT最费时间的是,它生成的代码功能问题不大,可能规范与你期望的不一样,这时就可给样例,完善提示,增加引导,来达到自己想要的了。

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

posted @   刘靖凯  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2017-02-16 异常处理语句
2017-02-16 五种跳转的语句
2017-02-16 for循环循环时间
点击右上角即可分享
微信分享提示