医保电子凭证在项目中的集成应用

随着医保电子凭证使用普及,医疗行业的各个场景都要求支持医保码一码通办,在此分享一下,在C#和js中集成医保电子凭证的demo 供有需要的小伙伴参考。

一、项目效果图

  • 在c#中集成医保电子凭证效果
    在这里插入图片描述
  • 在js中集成医保电子凭证效果

在这里插入图片描述

二、主要代码

  • c#集成医保电子凭证主要代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

namespace 医保电子凭证sdk
{
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
        }

        private void btn核验_Click(object sender, EventArgs e)
        {
            try {               
                StringBuilder outData = new StringBuilder(4000);
                string str = "";
                string inData = "{\"data\":{\"businessType\":\"01101\",\"officeId\":\"32760\",\"officeName\":\"消化内科\",\"operatorId\":\"test001\",\"operatorName\":\"超级管理员\",\"orgId\":\"H34110200888\"},\"orgId\":\"H34110200888\",\"transType\":\"ec.query\"}";
                string surl = "http://10.66.159.55:8080/localcfc/api/hsecfc/localQrCodeQuery";
                str = DecodeTip(surl, inData, outData);
                string rs = str;
                txt出参.Text = rs;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        [DllImport("NationECCode.dll")]
        private static extern string NationEcTrans(string strUrl, string InData, StringBuilder outData);

        private string DecodeTip(string surl, string inData, StringBuilder outData)
        {
            try
            {
                string str = "";
                str = NationEcTrans(surl, inData, outData);
                string rs = outData.ToString();
                // int i = 10;
                return rs;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    }
}

  • javascript集成医保电子凭证主要代码
 <html>
	<head id="Head1">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<style type="text/css">
			.form-table{
				line-height: 40px;
			}
			.form-table input{
				padding: 6px 8px;
				border-radius: 4px;
				border: 1px solid #aaa;
			}
			textarea{
				width: 800px;
				border: 1px solid #ccc;
				border-radius: 4px;
			}
			</style>
		<title>国家电子凭证库测试 </title>
			<script type="text/javascript">
			var DUmsocx1;
			var ws;
					var flag=0;
			function ToggleConnectionClicked() {          
					try {
			  /*
			  //检测当前浏览器是否支持websocket模式
			  window.WebSocket = window.WebSocket || window.MozWebSocket;
						if (!window.WebSocket){
									alert("WebSocket not supported by this browser");
									return;
						}*/
			 ws = new WebSocket("ws://127.0.0.1:8899");//连接服务器	

						ws.onopen = function(event){
							alert("已经与服务器建立了连接\r\n当前连接状态:"+this.readyState);
							flag=1;
							ws.send(DUmsocx1);
							//SendData(DUmsocx1);	
							};
						ws.onmessage = function(event){
 
							//alert("接收到服务器发送的数据:\r\n"+event.data);
							document.getElementById('respdata').value = event.data;
							flag=1;
							};
						ws.onclose = function(event){
							alert("已经与服务器断开连接\r\n当前连接状态:"+this.readyState);
							};
						ws.onerror = function(event){
							if (flag!=1)
							   alert("WebSocket接收异常!");
							};
					} catch (ex) {
						alert(ex.message);      
					}
			};

			function SendData(str) {
				try{
					ws.send(str);
				}catch(ex){
					alert(ex.message);
				}
			};
			
			function SocektClose() {
				try{
					ws.close();
				}catch(ex){
					alert(ex.message);
				}
			};

			function seestate(){
				alert("当前连接状:"+ws.readyState);
			}

			function getResult_hs() {
				var url_val = document.getElementById("input-text-url").value;
				var aaa = {};

				aaa.url = url_val;
				aaa.indata = {"data":{"businessType":"01101","gainWay":"ALL","idNo":"","infoFrom":"","officeId":"32760","officeName":"消化内科","operatorId":"test001","operatorName":"超级管理员","orgId":"35020319001","outBizNo":"202102231332361130F1","userName":""},"orgId":"35020319001","transType":"iot.gain.ec.qrcode"};
				aaa = JSON.stringify(aaa);
				document.getElementById('result').value = aaa;
				};

			function getResult_jgtz() {
			var url_val = document.getElementById("input-text-url").value;
			var aaa = {};

			aaa.url = url_val;
			aaa.indata = {"data":{"bizNo":"20210223135202090EFB","bizType":"register","discountFee":"0","ecQrCode":"","medicalFee":"164","medicalSettleNo":"YB20200228","medicalSettleState":"SUCCESS","operatorId":"test001","operatorName":"超级管理员","outBizNo":"20210223135202090EFB","selfFee":"52","totalFee":"216"},"orgId":"35020319001","transType":"iot.medical.settle.notify"};
			aaa = JSON.stringify(aaa);
			document.getElementById('result').value = aaa;
			};

			function getResult_smd() {
			var url_val = document.getElementById("input-text-url").value;
			var aaa = {};

			aaa.url = url_val;
			aaa.indata = {"data":{"businessType":"01101","deviceType":"","officeId":"32760","officeName":"消化内科","operatorId":"test001","operatorName":"超级管理员","orgId":"35020319001"},"orgId":"35020319001","transType":"ec.query"};
			aaa = JSON.stringify(aaa);
			document.getElementById('result').value = aaa;
			};
			

			function qingqiu()
			{	
				document.getElementById('respdata').value = "";
				DUmsocx1= document.getElementById('result').value;
                //alert(DUmsocx1);
				ToggleConnectionClicked();	
			}
			
			
			function qingqiu1()
			{	
				document.getElementById('respdata').value = "";
				DUmsocx1= document.getElementById('result').value;
                //alert(DUmsocx1);
				ws.send(DUmsocx1);
			}
		</script>
	</head>		
	<body onload="">

		<h1>国家电子凭证库测试程序</h1>

		<div >
			<p>URL:</p>
			<input id='input-text-url' style="width:500px" type='text' value="https://此处替换成中台地址/localcfc/api/hsecfc/localQrCodeQuery"/>
		</div>
		
		<div >
			<p></p>
			<button onclick="getResult_hs();" id="btn_hs"> 核身 </button>
		</div>
		
		<div >
			<p></p>
			<button onclick="getResult_jgtz();" id="btn_jgtz"> 结果通知 </button>
		</div>
		
		<div >
			<p></p>
			<button onclick="getResult_smd();" id="btn_smd"> 扫码墩 </button>
		</div>

		<div >
			<p>入参:</p>
			<textarea id='result' style="width:1000px" rows="7"></textarea>
		</div>
		
		<div >
			<p>出参:</p>
			<textarea id='respdata' style="width:1000px" rows="7"></textarea>
		</div>

		<table cellpadding="20" cellspacing="0">
			<td>
				<button onclick="qingqiu();">请求</button>
			</td>
			<td>
				<button onclick="qingqiu1();">请求1</button>
			</td>
		</table>

		
	</body>
</html>

三、资料下载

医保电子凭证集成demo
链接:https://pan.baidu.com/s/1aUCWSxOJmKhZJRkXUd1Y6A
提取码:lxq0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252443.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux_Docker图形化工具Portainer如何安装并结合内网穿透实现远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 本文主要介绍如何本地安装Portainer并结合内网穿透工具实现任意浏览器远程访问管理界面。Portainer 是一个轻量级…

算法竞赛备赛进阶之树形DP训练

目录 1.树的最长路径 2.树的中心 3.数字转换 4.二叉苹果树 5.战略游戏 6.皇宫守卫 树形DP是一种动态规划方法&#xff0c;主要用于解决树形结构的问题。在树形DP中&#xff0c;通常会使用动态规划的思想来求解最优化问题。其核心在于通过不断地分解问题和优化子问题来解决…

【理论篇】SaTokenException: 非Web上下文无法获取Request问题解决 -理论篇

在我们使用sa-token安全框架的时候&#xff0c;有时候会提示&#xff1a;SaTokenException:非Web上下文无法获取Request 错误截图&#xff1a; 在官方网站中&#xff0c;查看常见问题排查&#xff1a; 错误追踪&#xff1a; 跟着源码可以看到如下代码&#xff1a; 从源码中&a…

01 整体代码运行流程

文章目录 01 整体代码运行流程1.1 运行官方 Demo1.2 变量命名规则1.3 多线程1.4 线程锁1.5 SLAM 主类 System 01 整体代码运行流程 1.1 运行官方 Demo 以 stereo_kitti 为例&#xff0c;执行 ./stereo_kitti path_to_vocabulary path_to_settings path_to_sequence./stereo_…

大创项目推荐 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数&#xff1a;2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

W25Q64(模拟SPI)读写数据的简单应用

文章目录 一、W25Q64是什么&#xff1f;二、使用步骤1.硬件1.引脚说明2.硬件连接3.设备ID4.内部框架5.指令集指令集1指令集2 2.软件1.W25Q64引脚定义代码如下&#xff08;示例&#xff09;&#xff1a;2.W25Q64初始化代码如下&#xff08;示例&#xff09;&#xff1a;3.W25Q64…

在排序数组中查找元素的第一个和最后一个位置(Java详解)

一、题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示…

Android开发——组合函数、注解与连接Android设备

1、JetPack Compose、组合函数与注解和文本修改 1、JetPack Compose&#xff1a;Jetpack Compose 是由 Google 推出的用于构建 Android 用户界面的现代化工具包。它是一个声明式的 UI 工具包&#xff0c;用于简化 Android 应用程序的用户界面设计和开发。Jetpack Compose 采用…

02.Git常用基本操作

一、基本配置 &#xff08;1&#xff09;打开Git Bash &#xff08;2&#xff09;配置姓名和邮箱 git config --global user.name "Your Name" git config --global user.email "Your email" 因为Git是分布式版本控制工具&#xff0c;所以每个用户都需要…

02-分组查询group by和having的使用

分组查询 MySQL中默认是对整张表的数据进行操作即整张表为一组, 如果想对每一组的数据进行操作,这个时候我们需要使用分组查询 分组函数的执行顺序: 先根据where条件筛选数据,然后对查询到的数据进行分组,最后也可以采用having关键字过滤取得正确的数据 group by子句 在一条…

【STM32】STM32学习笔记-EXTI外部中断(11)

00. 目录 文章目录 00. 目录01. 中断系统02. 中断执行流程03. STM32中断04. NVIC基本结构05. NVIC优先级分组06. EXTI简介07. EXTI基本结构08. AFIO复用IO口09. EXTI框图10. 计数器模块11. 旋转编码器简介12. 附录 01. 中断系统 中断&#xff1a;在主程序运行过程中&#xff0…

easy贪吃蛇

之前承诺给出一个贪吃蛇项目。 1.EasyX库认知 有关EasyX库的相关信息&#xff0c;您可以看一下官方的文档&#xff1a;EasyX官方文档。 这里我做几点总结&#xff1a; EasyX库就和名字一样&#xff0c;可以让用户调用一些简单的函数来绘制图像和几何图形利用EasyX库可以制作…

ES6 面试题 | 15.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

知识付费平台选择指南:如何找到最适合你的学习平台?

在当今的知识付费市场中&#xff0c;用户面临的选择越来越多&#xff0c;如何从众多知识付费平台中正确选择属于自己的平台呢&#xff1f;下面&#xff0c;我们将为您介绍我有才知识付费平台相比同行的优势&#xff0c;帮助您做出明智的选择。 一、创新的技术架构&#xff0c;…

3.3【窗口】窗口的几何形状(二,窗口属性)

写在前面 应用程序使用窗口来显示内容。一些属性决定了窗口及其内容的大小和位置。其他属性决定了窗口内容的外观和解释。 了解窗口属性引用的两个坐标系非常重要。如果你知道你正在使用的坐标系,那么为你的窗口属性选择设置值会容易得多,并且会更有意义。 一,显示相关属…

【CMU 15-445】Lecture 11: Joins Algorithms 学习笔记

Joins Algorithms Nested Loop JoinNaive Nested Loop JoinBLock Nested Loop JoinIndex Nested Loop Join Sort-Merge JoinHash JoinBasic Hash JoinPartitioned Hash Join Conclusion 本节课主要介绍的是数据库系统中的一些Join算法 Nested Loop Join Naive Nested Loop Joi…

华媒舍:打造出色科普文章的10步路透社发稿手册

1.科普文章的编写是一项让科技知识更为浅显易懂重要工作。下面我们就详细介绍路透社的发稿手册&#xff0c;带来了好用的流程&#xff0c;协助作者从零开始创作出色的科普文章。 2.明确主题风格在创作科普文章以前&#xff0c;首先要明确要介绍的主题风格。选择一个有趣且适合…

verilog语法进阶,时钟原语

概述&#xff1a; 内容 1. 时钟缓冲 2. 输入时钟缓冲 3. ODDR2作为输出时钟缓冲 1. 输入时钟缓冲 BUFGP verilog c代码&#xff0c;clk作为触发器的边沿触发&#xff0c;会自动将clk综合成时钟信号。 module primitive1(input clk,input a,output reg y); always (posed…

【C++11特性篇】探究【右值引用(移动语义)】是如何大大提高效率?——对比【拷贝构造&左值引用】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C11系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.【左值&左值引用】和【右值&a…

Leetcode 删除有序数组中的重复项

给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成 示例 1&#xff1a; 输入&…