Browse Source

feature: 添加就诊人

Walker 2 năm trước cách đây
mục cha
commit
47c1c52ad4

+ 49 - 1
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvMedicCardServiceImpl.java

@@ -16,6 +16,9 @@ import com.ywt.gapi.ResultInt;
 import com.ywt.gapi.taihe.register.CreateMedicalCardRequest;
 import com.ywt.gapi.taihe.register.CreateMedicalCardResponse;
 import com.ywt.gapi.taihe.register.TaiheRegisterServiceGrpc;
+import com.ywt.gapi.third.taihe.GetPatientInfoRequest;
+import com.ywt.gapi.third.taihe.GetPatientInfoResponse;
+import com.ywt.gapi.third.taihe.TaiheServiceGrpc;
 import com.ywt.gapi.user.*;
 import com.ywt.model.PageVO;
 import com.ywt.model.Pagination;
@@ -43,6 +46,8 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
     private UserServiceGrpc.UserServiceBlockingStub userServiceBlockingStub;
     @Autowired
     private MessageSrv messageSrv;
+    @Autowired
+    private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
 
     public static final int CARD_TYPE_NORMAL = 0; // 普通卡
     public static final int CARD_TYPE_MED_INSU = 1; // 医保卡
@@ -400,9 +405,52 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
         return responseData;
     }
 
+    // 添加就诊人
     @Override
     public AddPatientResponse addPatient(AddPatientRequest request) throws Exception {
-        return null;
+        String name = Checker.getStringValue(request.getName());
+        String idCardType = Checker.getStringValue(request.getIdCardType()); // 目前小程序只支持身份证
+        String idCardNo = Checker.getStringValue(request.getIdCardNo());
+        String sex = Checker.getStringValue(request.getSex());
+        String phoneNumber = Checker.getStringValue(request.getPhoneNumber());
+        String relationShip = Checker.getStringValue(request.getRelationShip());
+        int userId = ContextHelper.getCurrentUserIdWrapped();
+        int hospitalId = BizUtil.getCurrentHospitalId();
+        boolean isSelf = relationShip.equals(RelationshipEnum.MYSELF.getDisplayName());
+        if (!isSelf && (StringHelper.isNullOrEmpty(idCardNo) || StringHelper.isNullOrEmpty(name))) {
+            // 非本人,必须填写身份证和姓名
+            throw new AppMessageException("添加非本人就诊卡必须填写身份证或姓名");
+        }
+        // 根据身份证和姓名从 HIS 获取 hisPatientId
+        if (isSelf) {
+            // 添加本人,前端没有传入姓名和身份证,需要查询
+            User user = getUserInfoById(userId);
+            if (user == null) throw new AppMessageException("用户状态异常,请联系管理员");
+            name = Checker.getStringValue(user.getRealname());
+            idCardNo = Checker.getStringValue(user.getIdno());
+            phoneNumber = Checker.getStringValue(user.getMobile());
+        }
+        GetPatientInfoResponse response = taiheServiceBlockingStub.getPatientInfo(GetPatientInfoRequest.newBuilder()
+                .setPatientName(name)
+                .setIdNo(idCardNo)
+                .setHospitalId(hospitalId)
+                .build());
+        if (response.getCode() != ResultCode.SUCCEED_VALUE) throw new AppMessageException(response.getMsg());
+        String hisPatientId = response.getPatientInfo().getPatientId();
+        if (StringHelper.isNullOrEmpty(hisPatientId)) throw new AppMessageException("无法从 HIS 获取患者 id");
+        ResultInt result = userServiceBlockingStub.addTaiheMedicalCard(AddTaiheMedicalCardRequest.newBuilder()
+                .setHisPatientId(hisPatientId)
+                .setUserId(userId)
+                .setHospitalId(hospitalId)
+                .setIdNo(idCardNo)
+                .setMobile(phoneNumber)
+                .setRealName(name)
+                .setRelationship(RelationshipEnum.getByName(relationShip).getValue())
+                .build());
+        if (result.getCode() != ResultCode.SUCCEED) throw new AppMessageException(result.getInfo());
+        AddPatientResponse r = new AddPatientResponse();
+        r.setIsSuccess(true);
+        return r;
     }
 
     // 修改就诊人

+ 74 - 0
onemini-hospital-empty/src/main/java/com/ywt/gapi/user/AddTaiheMedicalCardRequest.java

@@ -32,6 +32,7 @@ private static final long serialVersionUID = 0L;
     sex_ = 0;
     birthday_ = "";
     hisPatientId_ = "";
+    relationship_ = 0;
   }
 
   @java.lang.Override
@@ -133,6 +134,11 @@ private static final long serialVersionUID = 0L;
             hisPatientId_ = s;
             break;
           }
+          case 112: {
+
+            relationship_ = input.readInt32();
+            break;
+          }
         }
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -513,6 +519,19 @@ private static final long serialVersionUID = 0L;
     }
   }
 
+  public static final int RELATIONSHIP_FIELD_NUMBER = 14;
+  private int relationship_;
+  /**
+   * <pre>
+   * 关系,支付宝小程序版本增加
+   * </pre>
+   *
+   * <code>int32 relationship = 14;</code>
+   */
+  public int getRelationship() {
+    return relationship_;
+  }
+
   private byte memoizedIsInitialized = -1;
   public final boolean isInitialized() {
     byte isInitialized = memoizedIsInitialized;
@@ -561,6 +580,9 @@ private static final long serialVersionUID = 0L;
     if (!getHisPatientIdBytes().isEmpty()) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 13, hisPatientId_);
     }
+    if (relationship_ != 0) {
+      output.writeInt32(14, relationship_);
+    }
     unknownFields.writeTo(output);
   }
 
@@ -609,6 +631,10 @@ private static final long serialVersionUID = 0L;
     if (!getHisPatientIdBytes().isEmpty()) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, hisPatientId_);
     }
+    if (relationship_ != 0) {
+      size += com.google.protobuf.CodedOutputStream
+        .computeInt32Size(14, relationship_);
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -649,6 +675,8 @@ private static final long serialVersionUID = 0L;
         .equals(other.getBirthday());
     result = result && getHisPatientId()
         .equals(other.getHisPatientId());
+    result = result && (getRelationship()
+        == other.getRelationship());
     result = result && unknownFields.equals(other.unknownFields);
     return result;
   }
@@ -684,6 +712,8 @@ private static final long serialVersionUID = 0L;
     hash = (53 * hash) + getBirthday().hashCode();
     hash = (37 * hash) + HISPATIENTID_FIELD_NUMBER;
     hash = (53 * hash) + getHisPatientId().hashCode();
+    hash = (37 * hash) + RELATIONSHIP_FIELD_NUMBER;
+    hash = (53 * hash) + getRelationship();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -841,6 +871,8 @@ private static final long serialVersionUID = 0L;
 
       hisPatientId_ = "";
 
+      relationship_ = 0;
+
       return this;
     }
 
@@ -875,6 +907,7 @@ private static final long serialVersionUID = 0L;
       result.sex_ = sex_;
       result.birthday_ = birthday_;
       result.hisPatientId_ = hisPatientId_;
+      result.relationship_ = relationship_;
       onBuilt();
       return result;
     }
@@ -960,6 +993,9 @@ private static final long serialVersionUID = 0L;
         hisPatientId_ = other.hisPatientId_;
         onChanged();
       }
+      if (other.getRelationship() != 0) {
+        setRelationship(other.getRelationship());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -1766,6 +1802,44 @@ private static final long serialVersionUID = 0L;
       onChanged();
       return this;
     }
+
+    private int relationship_ ;
+    /**
+     * <pre>
+     * 关系,支付宝小程序版本增加
+     * </pre>
+     *
+     * <code>int32 relationship = 14;</code>
+     */
+    public int getRelationship() {
+      return relationship_;
+    }
+    /**
+     * <pre>
+     * 关系,支付宝小程序版本增加
+     * </pre>
+     *
+     * <code>int32 relationship = 14;</code>
+     */
+    public Builder setRelationship(int value) {
+      
+      relationship_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <pre>
+     * 关系,支付宝小程序版本增加
+     * </pre>
+     *
+     * <code>int32 relationship = 14;</code>
+     */
+    public Builder clearRelationship() {
+      
+      relationship_ = 0;
+      onChanged();
+      return this;
+    }
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFieldsProto3(unknownFields);

+ 9 - 0
onemini-hospital-empty/src/main/java/com/ywt/gapi/user/AddTaiheMedicalCardRequestOrBuilder.java

@@ -154,4 +154,13 @@ public interface AddTaiheMedicalCardRequestOrBuilder extends
    */
   com.google.protobuf.ByteString
       getHisPatientIdBytes();
+
+  /**
+   * <pre>
+   * 关系,支付宝小程序版本增加
+   * </pre>
+   *
+   * <code>int32 relationship = 14;</code>
+   */
+  int getRelationship();
 }

+ 330 - 330
onemini-hospital-empty/src/main/java/com/ywt/gapi/user/UserOuterClass.java

@@ -1030,340 +1030,340 @@ public final class UserOuterClass {
       "spitalId\030\001 \001(\005\"i\n\027GetHospitalByIdRespons" +
       "e\022$\n\006result\030\001 \001(\0132\024.com.ywt.gapi.Result\022" +
       "\022\n\nhospitalId\030\002 \001(\005\022\024\n\014hospitalName\030\003 \001(" +
-      "\t\"\350\001\n\032AddTaiheMedicalCardRequest\022\016\n\006user" +
+      "\t\"\376\001\n\032AddTaiheMedicalCardRequest\022\016\n\006user" +
       "Id\030\001 \001(\005\022\022\n\nhospitalId\030\002 \001(\005\022\016\n\006cardNo\030\003" +
       " \001(\t\022\020\n\010realName\030\004 \001(\t\022\016\n\006mobile\030\005 \001(\t\022\020" +
       "\n\010guardian\030\007 \001(\t\022\017\n\007address\030\010 \001(\t\022\014\n\004idN" +
       "o\030\t \001(\t\022\016\n\006idType\030\n \001(\005\022\013\n\003sex\030\013 \001(\005\022\020\n\010" +
-      "birthday\030\014 \001(\t\022\024\n\014hisPatientId\030\r \001(\t\"a\n\027" +
-      "WithdrawToWeChatRequest\022\016\n\006userId\030\001 \001(\005\022" +
-      "\016\n\006amount\030\002 \001(\001\022\016\n\006openid\030\003 \001(\t\022\026\n\016spbil" +
-      "lCreateIp\030\004 \001(\t\"Q\n\030WithdrawToWeChatRespo" +
-      "nse\022$\n\006result\030\001 \001(\0132\024.com.ywt.gapi.Resul" +
-      "t\022\017\n\007orderNo\030\002 \001(\t\":\n\027WithdrawOrderPayRe" +
-      "quest\022\017\n\007orderNo\030\001 \001(\t\022\016\n\006openid\030\002 \001(\t\"@" +
-      "\n\030WithdrawOrderPayResponse\022$\n\006result\030\001 \001" +
-      "(\0132\024.com.ywt.gapi.Result\">\n\032UserAttentio" +
-      "nDoctorRequest\022\016\n\006userId\030\001 \001(\005\022\020\n\010doctor" +
-      "Id\030\002 \001(\005\"A\n\035GeneralAttentionDoctorReques" +
-      "t\022\016\n\006userId\030\001 \001(\005\022\020\n\010doctorId\030\002 \001(\005\"E\n\037G" +
-      "eneralAttentionHospitalRequest\022\016\n\006userId" +
-      "\030\001 \001(\005\022\022\n\nhospitalId\030\002 \001(\005\"\254\001\n\013UserPatie" +
-      "nt\022\027\n\017user_patient_id\030\001 \001(\005\022\017\n\007user_id\030\002" +
-      " \001(\005\022\016\n\006mobile\030\003 \001(\t\022\014\n\004idNo\030\004 \001(\t\022\023\n\013pa" +
-      "rent_name\030\005 \001(\t\022\014\n\004name\030\006 \001(\t\022\013\n\003sex\030\007 \001" +
-      "(\005\022\024\n\014relationship\030\010 \001(\005\022\017\n\007address\030\t \001(" +
-      "\t\"Q\n\031GetUserPatientListRequest\022\017\n\007user_i" +
-      "d\030\001 \001(\005\022\020\n\010pageSize\030\002 \001(\005\022\021\n\tpageIndex\030\003" +
-      " \001(\005\"\232\001\n\032GetUserPatientListResponse\022$\n\006r" +
-      "esult\030\001 \001(\0132\024.com.ywt.gapi.Result\0223\n\013use" +
-      "rPatient\030\002 \003(\0132\036.com.ywt.gapi.user.UserP" +
-      "atient\022\r\n\005count\030\003 \001(\005\022\022\n\ntotalPages\030\004 \001(" +
-      "\005\"L\n\025UpdateUserPatientInfo\0223\n\013userPatien" +
-      "t\030\001 \001(\0132\036.com.ywt.gapi.user.UserPatient\"" +
-      "4\n\031GetUserPatientByIdRequest\022\027\n\017user_pat" +
-      "ient_id\030\001 \001(\005\"w\n\032GetUserPatientByIdRespo" +
-      "nse\022$\n\006result\030\001 \001(\0132\024.com.ywt.gapi.Resul" +
-      "t\0223\n\013userPatient\030\002 \001(\0132\036.com.ywt.gapi.us" +
-      "er.UserPatient\"\336\001\n\026SaveSnsUserInfoReques" +
-      "t\022\016\n\006openId\030\001 \001(\t\022\017\n\007unionId\030\002 \001(\t\022\016\n\006us" +
-      "erId\030\003 \001(\005\022\020\n\010nickname\030\004 \001(\t\022\013\n\003sex\030\005 \001(" +
-      "\005\022\020\n\010province\030\006 \001(\t\022\014\n\004city\030\007 \001(\t\022\017\n\007cou" +
-      "ntry\030\010 \001(\t\022\016\n\006avatar\030\t \001(\t\022\020\n\010language\030\n" +
-      " \001(\t\022\017\n\007snsType\030\013 \001(\005\022\020\n\010terminal\030\014 \001(\005\"" +
-      "D\n\026SaveSnsUserInfoRespose\022\014\n\004code\030\001 \001(\005\022" +
-      "\014\n\004info\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\">\n\025DelUser" +
-      "PatientRequest\022\025\n\ruserPatientId\030\001 \001(\005\022\016\n" +
-      "\006userId\030\002 \001(\005\"S\n\036CheckAndUpdateSnsUserId" +
-      "Request\022\020\n\010terminal\030\001 \001(\005\022\017\n\007unionId\030\002 \001" +
-      "(\t\022\016\n\006userId\030\003 \001(\005\"O\n\033UpdateFollowedStat" +
-      "usRequest\022\016\n\006userId\030\001 \001(\005\022\020\n\010doctorId\030\002 " +
-      "\001(\005\022\016\n\006status\030\003 \001(\005\"\335\001\n\025SaveMinAppUserRe" +
+      "birthday\030\014 \001(\t\022\024\n\014hisPatientId\030\r \001(\t\022\024\n\014" +
+      "relationship\030\016 \001(\005\"a\n\027WithdrawToWeChatRe" +
+      "quest\022\016\n\006userId\030\001 \001(\005\022\016\n\006amount\030\002 \001(\001\022\016\n" +
+      "\006openid\030\003 \001(\t\022\026\n\016spbillCreateIp\030\004 \001(\t\"Q\n" +
+      "\030WithdrawToWeChatResponse\022$\n\006result\030\001 \001(" +
+      "\0132\024.com.ywt.gapi.Result\022\017\n\007orderNo\030\002 \001(\t" +
+      "\":\n\027WithdrawOrderPayRequest\022\017\n\007orderNo\030\001" +
+      " \001(\t\022\016\n\006openid\030\002 \001(\t\"@\n\030WithdrawOrderPay" +
+      "Response\022$\n\006result\030\001 \001(\0132\024.com.ywt.gapi." +
+      "Result\">\n\032UserAttentionDoctorRequest\022\016\n\006" +
+      "userId\030\001 \001(\005\022\020\n\010doctorId\030\002 \001(\005\"A\n\035Genera" +
+      "lAttentionDoctorRequest\022\016\n\006userId\030\001 \001(\005\022" +
+      "\020\n\010doctorId\030\002 \001(\005\"E\n\037GeneralAttentionHos" +
+      "pitalRequest\022\016\n\006userId\030\001 \001(\005\022\022\n\nhospital" +
+      "Id\030\002 \001(\005\"\254\001\n\013UserPatient\022\027\n\017user_patient" +
+      "_id\030\001 \001(\005\022\017\n\007user_id\030\002 \001(\005\022\016\n\006mobile\030\003 \001" +
+      "(\t\022\014\n\004idNo\030\004 \001(\t\022\023\n\013parent_name\030\005 \001(\t\022\014\n" +
+      "\004name\030\006 \001(\t\022\013\n\003sex\030\007 \001(\005\022\024\n\014relationship" +
+      "\030\010 \001(\005\022\017\n\007address\030\t \001(\t\"Q\n\031GetUserPatien" +
+      "tListRequest\022\017\n\007user_id\030\001 \001(\005\022\020\n\010pageSiz" +
+      "e\030\002 \001(\005\022\021\n\tpageIndex\030\003 \001(\005\"\232\001\n\032GetUserPa" +
+      "tientListResponse\022$\n\006result\030\001 \001(\0132\024.com." +
+      "ywt.gapi.Result\0223\n\013userPatient\030\002 \003(\0132\036.c" +
+      "om.ywt.gapi.user.UserPatient\022\r\n\005count\030\003 " +
+      "\001(\005\022\022\n\ntotalPages\030\004 \001(\005\"L\n\025UpdateUserPat" +
+      "ientInfo\0223\n\013userPatient\030\001 \001(\0132\036.com.ywt." +
+      "gapi.user.UserPatient\"4\n\031GetUserPatientB" +
+      "yIdRequest\022\027\n\017user_patient_id\030\001 \001(\005\"w\n\032G" +
+      "etUserPatientByIdResponse\022$\n\006result\030\001 \001(" +
+      "\0132\024.com.ywt.gapi.Result\0223\n\013userPatient\030\002" +
+      " \001(\0132\036.com.ywt.gapi.user.UserPatient\"\336\001\n" +
+      "\026SaveSnsUserInfoRequest\022\016\n\006openId\030\001 \001(\t\022" +
+      "\017\n\007unionId\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\022\020\n\010nick" +
+      "name\030\004 \001(\t\022\013\n\003sex\030\005 \001(\005\022\020\n\010province\030\006 \001(" +
+      "\t\022\014\n\004city\030\007 \001(\t\022\017\n\007country\030\010 \001(\t\022\016\n\006avat" +
+      "ar\030\t \001(\t\022\020\n\010language\030\n \001(\t\022\017\n\007snsType\030\013 " +
+      "\001(\005\022\020\n\010terminal\030\014 \001(\005\"D\n\026SaveSnsUserInfo" +
+      "Respose\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(\t\022\016\n\006u" +
+      "serId\030\003 \001(\005\">\n\025DelUserPatientRequest\022\025\n\r" +
+      "userPatientId\030\001 \001(\005\022\016\n\006userId\030\002 \001(\005\"S\n\036C" +
+      "heckAndUpdateSnsUserIdRequest\022\020\n\010termina" +
+      "l\030\001 \001(\005\022\017\n\007unionId\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005" +
+      "\"O\n\033UpdateFollowedStatusRequest\022\016\n\006userI" +
+      "d\030\001 \001(\005\022\020\n\010doctorId\030\002 \001(\005\022\016\n\006status\030\003 \001(" +
+      "\005\"\335\001\n\025SaveMinAppUserRequest\022\016\n\006openId\030\001 " +
+      "\001(\t\022\017\n\007unionId\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\022\020\n\010" +
+      "nickname\030\004 \001(\t\022\013\n\003sex\030\005 \001(\005\022\020\n\010province\030" +
+      "\006 \001(\t\022\014\n\004city\030\007 \001(\t\022\017\n\007country\030\010 \001(\t\022\016\n\006" +
+      "avatar\030\t \001(\t\022\020\n\010language\030\n \001(\t\022\017\n\007snsTyp" +
+      "e\030\013 \001(\005\022\020\n\010terminal\030\014 \001(\005\"\202\001\n\026SaveMinApp" +
+      "UserResponse\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030\002 \001(\t\022" +
+      "\016\n\006userId\030\003 \001(\005\022\016\n\006mobile\030\004 \001(\t\022\020\n\010nickn" +
+      "ame\030\005 \001(\t\022\013\n\003sex\030\006 \001(\005\022\016\n\006avatar\030\007 \001(\t\"\203" +
+      "\002\n\013SnsUserInfo\022\n\n\002id\030\001 \001(\005\022\016\n\006openId\030\002 \001" +
+      "(\t\022\017\n\007unionId\030\003 \001(\t\022\016\n\006userId\030\004 \001(\005\022\020\n\010n" +
+      "ickname\030\005 \001(\t\022\013\n\003sex\030\006 \001(\005\022\020\n\010province\030\007" +
+      " \001(\t\022\014\n\004city\030\010 \001(\t\022\017\n\007country\030\t \001(\t\022\016\n\006a" +
+      "vatar\030\n \001(\t\022\020\n\010language\030\013 \001(\t\022\017\n\007snsType" +
+      "\030\014 \001(\005\022\016\n\006status\030\r \001(\005\022\022\n\ncreateTime\030\016 \001" +
+      "(\003\022\020\n\010terminal\030\017 \001(\005\"Z\n\025GetSnsUserInfoRe" +
       "quest\022\016\n\006openId\030\001 \001(\t\022\017\n\007unionId\030\002 \001(\t\022\016" +
-      "\n\006userId\030\003 \001(\005\022\020\n\010nickname\030\004 \001(\t\022\013\n\003sex\030" +
-      "\005 \001(\005\022\020\n\010province\030\006 \001(\t\022\014\n\004city\030\007 \001(\t\022\017\n" +
-      "\007country\030\010 \001(\t\022\016\n\006avatar\030\t \001(\t\022\020\n\010langua" +
-      "ge\030\n \001(\t\022\017\n\007snsType\030\013 \001(\005\022\020\n\010terminal\030\014 " +
-      "\001(\005\"\202\001\n\026SaveMinAppUserResponse\022\014\n\004code\030\001" +
-      " \001(\005\022\013\n\003msg\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\022\016\n\006mob" +
-      "ile\030\004 \001(\t\022\020\n\010nickname\030\005 \001(\t\022\013\n\003sex\030\006 \001(\005" +
-      "\022\016\n\006avatar\030\007 \001(\t\"\203\002\n\013SnsUserInfo\022\n\n\002id\030\001" +
-      " \001(\005\022\016\n\006openId\030\002 \001(\t\022\017\n\007unionId\030\003 \001(\t\022\016\n" +
-      "\006userId\030\004 \001(\005\022\020\n\010nickname\030\005 \001(\t\022\013\n\003sex\030\006" +
-      " \001(\005\022\020\n\010province\030\007 \001(\t\022\014\n\004city\030\010 \001(\t\022\017\n\007" +
-      "country\030\t \001(\t\022\016\n\006avatar\030\n \001(\t\022\020\n\010languag" +
-      "e\030\013 \001(\t\022\017\n\007snsType\030\014 \001(\005\022\016\n\006status\030\r \001(\005" +
-      "\022\022\n\ncreateTime\030\016 \001(\003\022\020\n\010terminal\030\017 \001(\005\"Z" +
-      "\n\025GetSnsUserInfoRequest\022\016\n\006openId\030\001 \001(\t\022" +
-      "\017\n\007unionId\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\022\020\n\010term" +
-      "inal\030\004 \001(\005\"h\n\026GetSnsUserInfoResponse\022\014\n\004" +
-      "code\030\001 \001(\005\022\013\n\003msg\030\002 \001(\t\0223\n\013snsUserInfo\030\003" +
-      " \001(\0132\036.com.ywt.gapi.user.SnsUserInfo\"\266\001\n" +
-      " UpdateSnsUserInfoByUserIdRequest\022\016\n\006use" +
-      "rId\030\001 \001(\005\022\020\n\010nickname\030\002 \001(\t\022\013\n\003sex\030\003 \001(\005" +
-      "\022\020\n\010province\030\004 \001(\t\022\014\n\004city\030\005 \001(\t\022\017\n\007coun" +
-      "try\030\006 \001(\t\022\016\n\006avatar\030\007 \001(\t\022\020\n\010language\030\010 " +
-      "\001(\t\022\020\n\010terminal\030\t \001(\005\">\n!UpdateSnsUserIn" +
-      "foByUserIdResponse\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030" +
-      "\002 \001(\t\"Z\n\023AuthenticateRequest\022\020\n\010idCardNo" +
-      "\030\001 \001(\t\022\020\n\010realName\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005" +
-      "\022\017\n\007address\030\004 \001(\t\"1\n\024AuthenticateRespons" +
-      "e\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030\002 \001(\t\"L\n(GetSnsUs" +
-      "erInfoByUserIdAndTerminalRequest\022\016\n\006user" +
-      "Id\030\001 \001(\005\022\020\n\010terminal\030\002 \001(\005\"{\n)GetSnsUser" +
-      "InfoByUserIdAndTerminalResponse\022\014\n\004code\030" +
-      "\001 \001(\005\022\013\n\003msg\030\002 \001(\t\0223\n\013snsUserInfo\030\003 \001(\0132" +
-      "\036.com.ywt.gapi.user.SnsUserInfo\"k\n\022GetUs" +
-      "erListRequest\022\016\n\006userId\030\001 \001(\005\022\020\n\010userNam" +
-      "e\030\002 \001(\t\022\016\n\006mobile\030\003 \001(\t\022\021\n\tpageIndex\030\004 \001" +
-      "(\005\022\020\n\010pageSize\030\005 \001(\005\"\205\001\n\023GetUserListResp" +
-      "onse\022$\n\006result\030\001 \001(\0132\024.com.ywt.gapi.Resu",
-      "lt\022%\n\004user\030\002 \003(\0132\027.com.ywt.gapi.user.Use" +
-      "r\022\r\n\005count\030\003 \001(\005\022\022\n\ntotalPages\030\004 \001(\005\"3\n\021" +
-      "SelectCardRequest\022\016\n\006cardId\030\001 \001(\005\022\016\n\006use" +
-      "rId\030\002 \001(\005\"f\n!UpdateHospMedRecordSettingR" +
-      "equest\022\016\n\006userId\030\001 \001(\005\022\016\n\006idCard\030\002 \001(\t\022\017" +
-      "\n\007visible\030\003 \001(\010\022\020\n\010doctorId\030\004 \001(\005\"@\n\"Upd" +
-      "ateHospMedRecordSettingResponse\022\014\n\004code\030" +
-      "\001 \001(\005\022\014\n\004info\030\002 \001(\t\"R\n\036GetHospMedRecordS" +
-      "ettingRequest\022\016\n\006userId\030\001 \001(\005\022\016\n\006idCard\030" +
-      "\002 \001(\t\022\020\n\010doctorId\030\003 \001(\005\"N\n\037GetHospMedRec" +
-      "ordSettingResponse\022\014\n\004code\030\001 \001(\005\022\014\n\004info" +
-      "\030\002 \001(\t\022\017\n\007visible\030\003 \001(\010\"K\n\023CheckHasCardR" +
-      "equest\022\016\n\006openId\030\001 \001(\t\022\020\n\010terminal\030\002 \001(\005" +
-      "\022\022\n\nhospitalId\030\003 \001(\005\"6\n\023SaveUserSignRequ" +
-      "est\022\017\n\007signUrl\030\001 \001(\t\022\016\n\006userId\030\002 \001(\005\"A\n\024" +
-      "SaveUserSignResponse\022\014\n\004code\030\001 \001(\005\022\014\n\004in" +
-      "fo\030\002 \001(\t\022\r\n\005value\030\003 \001(\005\"_\n\030GetUserListBy" +
-      "ListRequest\022\016\n\006userId\030\001 \003(\005\022\016\n\006mobile\030\003 " +
-      "\003(\t\022\021\n\tpageIndex\030\004 \001(\005\022\020\n\010pageSize\030\005 \001(\005" +
-      "\"L\n\022SyncMedCardRequest\022\021\n\tmedCardId\030\001 \001(" +
-      "\005\022\023\n\013forceUpdate\030\002 \001(\010\022\016\n\006userId\030\003 \001(\005\"1" +
-      "\n\023SyncMedCardResponse\022\014\n\004code\030\001 \001(\005\022\014\n\004i" +
-      "nfo\030\002 \001(\t\"T\n\033UpdateLastChosenTimeRequest" +
-      "\022\021\n\tmedCardId\030\001 \001(\005\022\016\n\006userId\030\002 \001(\005\022\022\n\nh" +
-      "ospitalId\030\003 \001(\005\"\257\001\n\031BindAlipayUserInfoRe" +
-      "quest\022\021\n\talipayUid\030\001 \001(\t\022\020\n\010terminal\030\002 \001" +
-      "(\005\022\016\n\006avatar\030\003 \001(\t\022\020\n\010realName\030\004 \001(\t\022\020\n\010" +
-      "nickName\030\005 \001(\t\022\016\n\006mobile\030\006 \001(\t\022\013\n\003age\030\007 " +
-      "\001(\005\022\020\n\010idCardNo\030\010 \001(\t\022\n\n\002ip\030\t \001(\t\"H\n\032Bin" +
-      "dAlipayUserInfoResponse\022\014\n\004code\030\001 \001(\005\022\014\n" +
-      "\004info\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\"u\n\030UpdateMed" +
-      "icalCardRequest\022\016\n\006mobile\030\001 \001(\t\022\024\n\014relat" +
-      "ionship\030\002 \001(\005\022\023\n\013defaultFlag\030\003 \001(\005\022\016\n\006ca" +
-      "rdId\030\004 \001(\005\022\016\n\006userId\030\005 \001(\0052\345A\n\013UserServi" +
-      "ce\022N\n\013findByPhone\022\036.com.ywt.gapi.user.Us" +
-      "erRequest\032\037.com.ywt.gapi.user.UserRespon" +
-      "se\022O\n\014findByUserId\022\036.com.ywt.gapi.user.U" +
-      "serRequest\032\037.com.ywt.gapi.user.UserRespo" +
-      "nse\0228\n\007addUser\022\027.com.ywt.gapi.user.User\032" +
-      "\024.com.ywt.gapi.Result\022\\\n\013addBankCard\022%.c" +
-      "om.ywt.gapi.user.AddBankCardRequest\032&.co" +
-      "m.ywt.gapi.user.AddBankCardResponse\022b\n\017g" +
-      "etBankCardList\022&.com.ywt.gapi.user.BankC" +
-      "ardListRequest\032\'.com.ywt.gapi.user.BankC" +
-      "ardListResponse\022Y\n\021getAccountBalance\022(.c" +
-      "om.ywt.gapi.user.AccountBalanceRequest\032\032" +
-      ".com.ywt.gapi.ResultDouble\022k\n\024getAccount" +
-      "BalanceNew\022(.com.ywt.gapi.user.AccountBa" +
-      "lanceRequest\032).com.ywt.gapi.user.Account" +
-      "BalanceResponse\022q\n\024getAccountDetailList\022" +
-      "+.com.ywt.gapi.user.AccountDetailListReq" +
-      "uest\032,.com.ywt.gapi.user.AccountDetailLi" +
-      "stResponse\022D\n\010withdraw\022\".com.ywt.gapi.us" +
-      "er.WithdrawRequest\032\024.com.ywt.gapi.Result" +
-      "\022D\n\010feedback\022\".com.ywt.gapi.user.Feedbac" +
-      "kRequest\032\024.com.ywt.gapi.Result\022t\n\025getWit" +
-      "hdrawRecordList\022,.com.ywt.gapi.user.With" +
-      "drawRecordListRequest\032-.com.ywt.gapi.use" +
-      "r.WithdrawRecordListResponse\022J\n\013delBankC" +
-      "ard\022%.com.ywt.gapi.user.DelBankCardReque" +
-      "st\032\024.com.ywt.gapi.Result\022b\n\rgetWxAppToke" +
-      "n\022\'.com.ywt.gapi.user.GetWxAppTokenReque" +
-      "st\032(.com.ywt.gapi.user.GetWxAppTokenResp" +
-      "onse\022R\n\017bindWxAppMobile\022).com.ywt.gapi.u" +
-      "ser.BindWxAppMobileRequest\032\024.com.ywt.gap" +
-      "i.Result\022Y\n\ngetSnsUser\022$.com.ywt.gapi.us" +
-      "er.GetSnsUserRequest\032%.com.ywt.gapi.user" +
-      ".GetSnsUserResponse\022i\n\022getSnsUserByOpenI" +
-      "d\022,.com.ywt.gapi.user.GetSnsUserByOpenId" +
-      "Request\032%.com.ywt.gapi.user.GetSnsUserRe" +
-      "sponse\022i\n\022getSnsUserByUserId\022,.com.ywt.g" +
-      "api.user.GetSnsUserByUserIdRequest\032%.com" +
-      ".ywt.gapi.user.GetSnsUserResponse\022S\n\016add" +
-      "MedicalCard\022(.com.ywt.gapi.user.AddMedic" +
-      "alCardRequest\032\027.com.ywt.gapi.ResultInt\022q" +
-      "\n\022getMedicalCardList\022,.com.ywt.gapi.user" +
-      ".GetMedicalCardListRequest\032-.com.ywt.gap" +
-      "i.user.GetMedicalCardListResponse\022Z\n\rlog" +
-      "inByMobile\022\'.com.ywt.gapi.user.LoginByMo" +
-      "bileRequest\032 .com.ywt.gapi.user.LoginRes" +
-      "ponse\022^\n\017loginByUserName\022).com.ywt.gapi." +
-      "user.LoginByUserNameRequest\032 .com.ywt.ga" +
-      "pi.user.LoginResponse\022V\n\021deleteMedicalCa" +
-      "rd\022+.com.ywt.gapi.user.DeleteMedicalCard" +
-      "Request\032\024.com.ywt.gapi.Result\022H\n\naddSnsU" +
-      "ser\022$.com.ywt.gapi.user.AddSnsUserReques" +
-      "t\032\024.com.ywt.gapi.Result\022@\n\006bindWx\022 .com." +
-      "ywt.gapi.user.BindWxRequest\032\024.com.ywt.ga" +
-      "pi.Result\022q\n\022getOffcialUserInfo\022,.com.yw" +
-      "t.gapi.user.GetOffcialUserInfoRequest\032-." +
-      "com.ywt.gapi.user.GetOffcialUserInfoResp" +
-      "onse\022z\n\025getMedicalRecordsList\022/.com.ywt." +
-      "gapi.user.GetMedicalRecordsListRequest\0320" +
-      ".com.ywt.gapi.user.GetMedicalRecordsList" +
-      "Response\022L\n\014changeMobile\022&.com.ywt.gapi." +
-      "user.ChangeMobileRequest\032\024.com.ywt.gapi." +
-      "Result\022t\n\023getOfficialUserInfo\022-.com.ywt." +
-      "gapi.user.GetOfficialUserInfoRequest\032..c" +
-      "om.ywt.gapi.user.GetOfficialUserInfoResp" +
-      "onse\022\217\001\n\034getMedicalRecordListByUserId\0226." +
-      "com.ywt.gapi.user.GetMedicalRecordListBy" +
-      "UserIdRequest\0327.com.ywt.gapi.user.GetMed" +
-      "icalRecordListByUserIdResponse\022\200\001\n\027getMe" +
-      "dicalRecordsDetail\0221.com.ywt.gapi.user.G" +
-      "etMedicalRecordsDetailRequest\0322.com.ywt." +
-      "gapi.user.GetMedicalRecordsDetailRespons" +
-      "e\022\200\001\n\027getInspectionReportList\0221.com.ywt." +
-      "gapi.user.GetInspectionReportListRequest" +
-      "\0322.com.ywt.gapi.user.GetInspectionReport" +
-      "ListResponse\022\252\001\n%getInspectionReportList" +
-      "ByHisPatientId\022?.com.ywt.gapi.user.GetIn" +
-      "spectionReportListByHisPatientIdRequest\032" +
-      "@.com.ywt.gapi.user.GetInspectionReportL" +
-      "istByHisPatientIdResponse\022\206\001\n\031getInspect" +
-      "ionReportDetail\0223.com.ywt.gapi.user.GetI" +
-      "nspectionReportDetailRequest\0324.com.ywt.g" +
-      "api.user.GetInspectionReportDetailRespon" +
-      "se\022\200\001\n\027getLaboratoryReportList\0221.com.ywt" +
-      ".gapi.user.GetLaboratoryReportListReques" +
-      "t\0322.com.ywt.gapi.user.GetLaboratoryRepor" +
-      "tListResponse\022\254\001\n\'getLaboratoryReportByL" +
-      "istByHisPatientId\022?.com.ywt.gapi.user.Ge" +
-      "tLaboratoryReportListByHisPatientIdReque" +
-      "st\032@.com.ywt.gapi.user.GetLaboratoryRepo" +
-      "rtListByHisPatientIdResponse\022\206\001\n\031getLabo" +
-      "ratoryReportDetail\0223.com.ywt.gapi.user.G" +
-      "etLaboratoryReportDetailRequest\0324.com.yw" +
-      "t.gapi.user.GetLaboratoryReportDetailRes" +
-      "ponse\022\217\001\n\034getMedicalRecordByClinicCode\0226" +
-      ".com.ywt.gapi.user.GetMedicalRecordByCli" +
-      "nicCodeRequest\0327.com.ywt.gapi.user.GetMe" +
-      "dicalRecordByClinicCodeResponse\022t\n\023login" +
-      "WithUserAndPsd\022-.com.ywt.gapi.user.Login" +
-      "WithUserAndPsdRequest\032..com.ywt.gapi.use" +
-      "r.LoginWithUserAndPsdResponse\022P\n\016updateP" +
-      "assword\022(.com.ywt.gapi.user.UpdatePasswo" +
-      "rdRequest\032\024.com.ywt.gapi.Result\022P\n\016chang" +
-      "ePassword\022(.com.ywt.gapi.user.ChangePass" +
-      "wordRequest\032\024.com.ywt.gapi.Result\022n\n\021get" +
-      "UserInfoByCode\022+.com.ywt.gapi.user.GetUs" +
-      "erInfoByCodeRequest\032,.com.ywt.gapi.user." +
-      "GetUserInfoByCodeResponse\022z\n\025getSchedule" +
-      "DoctorList\022/.com.ywt.gapi.user.GetSchedu" +
-      "leDoctorListRequest\0320.com.ywt.gapi.user." +
-      "GetScheduleDoctorListResponse\022b\n\027userCre" +
-      "ateMedicalRecord\0221.com.ywt.gapi.user.Use" +
-      "rCreateMedicalRecordRequest\032\024.com.ywt.ga" +
-      "pi.Result\022z\n\025getDoctorListByDeptId\022/.com" +
-      ".ywt.gapi.user.GetDoctorListByDeptIdRequ" +
-      "est\0320.com.ywt.gapi.user.GetDoctorListByD" +
-      "eptIdResponse\022X\n\022getDoctorTeamCount\022,.co" +
-      "m.ywt.gapi.user.GetDoctorTeamCountReques" +
-      "t\032\024.com.ywt.gapi.Result\022d\n\030getDoctorAddi" +
-      "tionalCount\0222.com.ywt.gapi.user.GetDocto" +
-      "rAdditionalCountRequest\032\024.com.ywt.gapi.R" +
-      "esult\022h\n\017getHospitalById\022).com.ywt.gapi." +
-      "user.GetHospitalByIdRequest\032*.com.ywt.ga" +
-      "pi.user.GetHospitalByIdResponse\022]\n\023addTa" +
-      "iheMedicalCard\022-.com.ywt.gapi.user.AddTa" +
-      "iheMedicalCardRequest\032\027.com.ywt.gapi.Res" +
-      "ultInt\022k\n\020withdrawToWeChat\022*.com.ywt.gap" +
-      "i.user.WithdrawToWeChatRequest\032+.com.ywt" +
-      ".gapi.user.WithdrawToWeChatResponse\022k\n\020w" +
-      "ithdrawOrderPay\022*.com.ywt.gapi.user.With" +
-      "drawOrderPayRequest\032+.com.ywt.gapi.user." +
-      "WithdrawOrderPayResponse\022Z\n\023userAttentio" +
-      "nDoctor\022-.com.ywt.gapi.user.UserAttentio" +
-      "nDoctorRequest\032\024.com.ywt.gapi.Result\022c\n\031" +
-      "saveAttentionDoctorStatus\0220.com.ywt.gapi" +
-      ".user.GeneralAttentionDoctorRequest\032\024.co" +
-      "m.ywt.gapi.Result\022g\n\033saveAttentionHospit" +
-      "alStatus\0222.com.ywt.gapi.user.GeneralAtte" +
-      "ntionHospitalRequest\032\024.com.ywt.gapi.Resu" +
-      "lt\022q\n\022getUserPatientById\022,.com.ywt.gapi." +
-      "user.GetUserPatientByIdRequest\032-.com.ywt" +
-      ".gapi.user.GetUserPatientByIdResponse\022W\n" +
-      "\025updateUserPatientInfo\022(.com.ywt.gapi.us" +
-      "er.UpdateUserPatientInfo\032\024.com.ywt.gapi." +
-      "Result\022q\n\022getUserPatientList\022,.com.ywt.g" +
-      "api.user.GetUserPatientListRequest\032-.com" +
-      ".ywt.gapi.user.GetUserPatientListRespons" +
-      "e\022g\n\017saveSnsUserInfo\022).com.ywt.gapi.user" +
-      ".SaveSnsUserInfoRequest\032).com.ywt.gapi.u" +
-      "ser.SaveSnsUserInfoRespose\022\\\n\032checkAndAd" +
-      "dUserPatientInfo\022(.com.ywt.gapi.user.Upd" +
-      "ateUserPatientInfo\032\024.com.ywt.gapi.Result" +
-      "\022C\n\tbindWxNew\022 .com.ywt.gapi.user.BindWx" +
-      "Request\032\024.com.ywt.gapi.Result\022P\n\016delUser" +
-      "Patient\022(.com.ywt.gapi.user.DelUserPatie" +
-      "ntRequest\032\024.com.ywt.gapi.Result\022b\n\027check" +
-      "AndUpdateSnsUserId\0221.com.ywt.gapi.user.C" +
-      "heckAndUpdateSnsUserIdRequest\032\024.com.ywt." +
-      "gapi.Result\022t\n\023getUserInfoByOpenId\022-.com" +
-      ".ywt.gapi.user.GetUserInfoByOpenIdReques" +
-      "t\032..com.ywt.gapi.user.GetUserInfoByOpenI" +
-      "dResponse\022\225\001\n\036getUserInfoByUserIdAndTerm" +
-      "inal\0228.com.ywt.gapi.user.GetUserInfoByUs" +
-      "erIdAndTerminalRequest\0329.com.ywt.gapi.us" +
-      "er.GetUserInfoByUserIdAndTerminalRespons" +
-      "e\022\\\n\024updateFollowedStatus\022..com.ywt.gapi" +
-      ".user.UpdateFollowedStatusRequest\032\024.com." +
-      "ywt.gapi.Result\022e\n\016saveMinAppUser\022(.com." +
-      "ywt.gapi.user.SaveMinAppUserRequest\032).co" +
-      "m.ywt.gapi.user.SaveMinAppUserResponse\022e" +
-      "\n\016getSnsUserInfo\022(.com.ywt.gapi.user.Get" +
-      "SnsUserInfoRequest\032).com.ywt.gapi.user.G" +
-      "etSnsUserInfoResponse\022\206\001\n\031updateSnsUserI" +
-      "nfoByUserId\0223.com.ywt.gapi.user.UpdateSn" +
-      "sUserInfoByUserIdRequest\0324.com.ywt.gapi." +
-      "user.UpdateSnsUserInfoByUserIdResponse\022_" +
-      "\n\014authenticate\022&.com.ywt.gapi.user.Authe" +
-      "nticateRequest\032\'.com.ywt.gapi.user.Authe" +
-      "nticateResponse\022\236\001\n!getSnsUserInfoByUser" +
-      "IdAndTerminal\022;.com.ywt.gapi.user.GetSns" +
-      "UserInfoByUserIdAndTerminalRequest\032<.com" +
-      ".ywt.gapi.user.GetSnsUserInfoByUserIdAnd" +
-      "TerminalResponse\022\\\n\013getUserList\022%.com.yw" +
-      "t.gapi.user.GetUserListRequest\032&.com.ywt" +
-      ".gapi.user.GetUserListResponse\022H\n\nselect" +
-      "Card\022$.com.ywt.gapi.user.SelectCardReque" +
-      "st\032\024.com.ywt.gapi.Result\022\211\001\n\032updateHospM" +
-      "edRecordSetting\0224.com.ywt.gapi.user.Upda" +
-      "teHospMedRecordSettingRequest\0325.com.ywt." +
-      "gapi.user.UpdateHospMedRecordSettingResp" +
-      "onse\022\200\001\n\027getHospMedRecordSetting\0221.com.y" +
-      "wt.gapi.user.GetHospMedRecordSettingRequ" +
-      "est\0322.com.ywt.gapi.user.GetHospMedRecord" +
-      "SettingResponse\022L\n\014checkHasCard\022&.com.yw" +
-      "t.gapi.user.CheckHasCardRequest\032\024.com.yw" +
-      "t.gapi.Result\022[\n\010saveSign\022&.com.ywt.gapi" +
-      ".user.SaveUserSignRequest\032\'.com.ywt.gapi" +
-      ".user.SaveUserSignResponse\022h\n\021getUserLis" +
-      "tByList\022+.com.ywt.gapi.user.GetUserListB" +
-      "yListRequest\032&.com.ywt.gapi.user.GetUser" +
-      "ListResponse\022\\\n\013syncMedCard\022%.com.ywt.ga" +
-      "pi.user.SyncMedCardRequest\032&.com.ywt.gap" +
-      "i.user.SyncMedCardResponse\022\\\n\024updateLast" +
-      "ChosenTime\022..com.ywt.gapi.user.UpdateLas" +
-      "tChosenTimeRequest\032\024.com.ywt.gapi.Result" +
-      "\022q\n\022bindAlipayUserInfo\022,.com.ywt.gapi.us" +
-      "er.BindAlipayUserInfoRequest\032-.com.ywt.g" +
-      "api.user.BindAlipayUserInfoResponse\022]\n\030u" +
-      "pdateMedicalCardRequest\022+.com.ywt.gapi.u" +
-      "ser.UpdateMedicalCardRequest\032\024.com.ywt.g" +
-      "api.ResultB\037\n\021com.ywt.gapi.userP\001Z\005/user" +
-      "\210\001\001b\006proto3"
+      "\n\006userId\030\003 \001(\005\022\020\n\010terminal\030\004 \001(\005\"h\n\026GetS" +
+      "nsUserInfoResponse\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030" +
+      "\002 \001(\t\0223\n\013snsUserInfo\030\003 \001(\0132\036.com.ywt.gap" +
+      "i.user.SnsUserInfo\"\266\001\n UpdateSnsUserInfo" +
+      "ByUserIdRequest\022\016\n\006userId\030\001 \001(\005\022\020\n\010nickn" +
+      "ame\030\002 \001(\t\022\013\n\003sex\030\003 \001(\005\022\020\n\010province\030\004 \001(\t" +
+      "\022\014\n\004city\030\005 \001(\t\022\017\n\007country\030\006 \001(\t\022\016\n\006avata" +
+      "r\030\007 \001(\t\022\020\n\010language\030\010 \001(\t\022\020\n\010terminal\030\t " +
+      "\001(\005\">\n!UpdateSnsUserInfoByUserIdResponse" +
+      "\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030\002 \001(\t\"Z\n\023Authentic" +
+      "ateRequest\022\020\n\010idCardNo\030\001 \001(\t\022\020\n\010realName" +
+      "\030\002 \001(\t\022\016\n\006userId\030\003 \001(\005\022\017\n\007address\030\004 \001(\t\"" +
+      "1\n\024AuthenticateResponse\022\014\n\004code\030\001 \001(\005\022\013\n" +
+      "\003msg\030\002 \001(\t\"L\n(GetSnsUserInfoByUserIdAndT" +
+      "erminalRequest\022\016\n\006userId\030\001 \001(\005\022\020\n\010termin" +
+      "al\030\002 \001(\005\"{\n)GetSnsUserInfoByUserIdAndTer" +
+      "minalResponse\022\014\n\004code\030\001 \001(\005\022\013\n\003msg\030\002 \001(\t" +
+      "\0223\n\013snsUserInfo\030\003 \001(\0132\036.com.ywt.gapi.use" +
+      "r.SnsUserInfo\"k\n\022GetUserListRequest\022\016\n\006u" +
+      "serId\030\001 \001(\005\022\020\n\010userName\030\002 \001(\t\022\016\n\006mobile\030" +
+      "\003 \001(\t\022\021\n\tpageIndex\030\004 \001(\005\022\020\n\010pageSize\030\005 \001" +
+      "(\005\"\205\001\n\023GetUserListResponse\022$\n\006result\030\001 \001",
+      "(\0132\024.com.ywt.gapi.Result\022%\n\004user\030\002 \003(\0132\027" +
+      ".com.ywt.gapi.user.User\022\r\n\005count\030\003 \001(\005\022\022" +
+      "\n\ntotalPages\030\004 \001(\005\"3\n\021SelectCardRequest\022" +
+      "\016\n\006cardId\030\001 \001(\005\022\016\n\006userId\030\002 \001(\005\"f\n!Updat" +
+      "eHospMedRecordSettingRequest\022\016\n\006userId\030\001" +
+      " \001(\005\022\016\n\006idCard\030\002 \001(\t\022\017\n\007visible\030\003 \001(\010\022\020\n" +
+      "\010doctorId\030\004 \001(\005\"@\n\"UpdateHospMedRecordSe" +
+      "ttingResponse\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(" +
+      "\t\"R\n\036GetHospMedRecordSettingRequest\022\016\n\006u" +
+      "serId\030\001 \001(\005\022\016\n\006idCard\030\002 \001(\t\022\020\n\010doctorId\030" +
+      "\003 \001(\005\"N\n\037GetHospMedRecordSettingResponse" +
+      "\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(\t\022\017\n\007visible\030" +
+      "\003 \001(\010\"K\n\023CheckHasCardRequest\022\016\n\006openId\030\001" +
+      " \001(\t\022\020\n\010terminal\030\002 \001(\005\022\022\n\nhospitalId\030\003 \001" +
+      "(\005\"6\n\023SaveUserSignRequest\022\017\n\007signUrl\030\001 \001" +
+      "(\t\022\016\n\006userId\030\002 \001(\005\"A\n\024SaveUserSignRespon" +
+      "se\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(\t\022\r\n\005value\030" +
+      "\003 \001(\005\"_\n\030GetUserListByListRequest\022\016\n\006use" +
+      "rId\030\001 \003(\005\022\016\n\006mobile\030\003 \003(\t\022\021\n\tpageIndex\030\004" +
+      " \001(\005\022\020\n\010pageSize\030\005 \001(\005\"L\n\022SyncMedCardReq" +
+      "uest\022\021\n\tmedCardId\030\001 \001(\005\022\023\n\013forceUpdate\030\002" +
+      " \001(\010\022\016\n\006userId\030\003 \001(\005\"1\n\023SyncMedCardRespo" +
+      "nse\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(\t\"T\n\033Updat" +
+      "eLastChosenTimeRequest\022\021\n\tmedCardId\030\001 \001(" +
+      "\005\022\016\n\006userId\030\002 \001(\005\022\022\n\nhospitalId\030\003 \001(\005\"\257\001" +
+      "\n\031BindAlipayUserInfoRequest\022\021\n\talipayUid" +
+      "\030\001 \001(\t\022\020\n\010terminal\030\002 \001(\005\022\016\n\006avatar\030\003 \001(\t" +
+      "\022\020\n\010realName\030\004 \001(\t\022\020\n\010nickName\030\005 \001(\t\022\016\n\006" +
+      "mobile\030\006 \001(\t\022\013\n\003age\030\007 \001(\005\022\020\n\010idCardNo\030\010 " +
+      "\001(\t\022\n\n\002ip\030\t \001(\t\"H\n\032BindAlipayUserInfoRes" +
+      "ponse\022\014\n\004code\030\001 \001(\005\022\014\n\004info\030\002 \001(\t\022\016\n\006use" +
+      "rId\030\003 \001(\005\"u\n\030UpdateMedicalCardRequest\022\016\n" +
+      "\006mobile\030\001 \001(\t\022\024\n\014relationship\030\002 \001(\005\022\023\n\013d" +
+      "efaultFlag\030\003 \001(\005\022\016\n\006cardId\030\004 \001(\005\022\016\n\006user" +
+      "Id\030\005 \001(\0052\345A\n\013UserService\022N\n\013findByPhone\022" +
+      "\036.com.ywt.gapi.user.UserRequest\032\037.com.yw" +
+      "t.gapi.user.UserResponse\022O\n\014findByUserId" +
+      "\022\036.com.ywt.gapi.user.UserRequest\032\037.com.y" +
+      "wt.gapi.user.UserResponse\0228\n\007addUser\022\027.c" +
+      "om.ywt.gapi.user.User\032\024.com.ywt.gapi.Res" +
+      "ult\022\\\n\013addBankCard\022%.com.ywt.gapi.user.A" +
+      "ddBankCardRequest\032&.com.ywt.gapi.user.Ad" +
+      "dBankCardResponse\022b\n\017getBankCardList\022&.c" +
+      "om.ywt.gapi.user.BankCardListRequest\032\'.c" +
+      "om.ywt.gapi.user.BankCardListResponse\022Y\n" +
+      "\021getAccountBalance\022(.com.ywt.gapi.user.A" +
+      "ccountBalanceRequest\032\032.com.ywt.gapi.Resu" +
+      "ltDouble\022k\n\024getAccountBalanceNew\022(.com.y" +
+      "wt.gapi.user.AccountBalanceRequest\032).com" +
+      ".ywt.gapi.user.AccountBalanceResponse\022q\n" +
+      "\024getAccountDetailList\022+.com.ywt.gapi.use" +
+      "r.AccountDetailListRequest\032,.com.ywt.gap" +
+      "i.user.AccountDetailListResponse\022D\n\010with" +
+      "draw\022\".com.ywt.gapi.user.WithdrawRequest" +
+      "\032\024.com.ywt.gapi.Result\022D\n\010feedback\022\".com" +
+      ".ywt.gapi.user.FeedbackRequest\032\024.com.ywt" +
+      ".gapi.Result\022t\n\025getWithdrawRecordList\022,." +
+      "com.ywt.gapi.user.WithdrawRecordListRequ" +
+      "est\032-.com.ywt.gapi.user.WithdrawRecordLi" +
+      "stResponse\022J\n\013delBankCard\022%.com.ywt.gapi" +
+      ".user.DelBankCardRequest\032\024.com.ywt.gapi." +
+      "Result\022b\n\rgetWxAppToken\022\'.com.ywt.gapi.u" +
+      "ser.GetWxAppTokenRequest\032(.com.ywt.gapi." +
+      "user.GetWxAppTokenResponse\022R\n\017bindWxAppM" +
+      "obile\022).com.ywt.gapi.user.BindWxAppMobil" +
+      "eRequest\032\024.com.ywt.gapi.Result\022Y\n\ngetSns" +
+      "User\022$.com.ywt.gapi.user.GetSnsUserReque" +
+      "st\032%.com.ywt.gapi.user.GetSnsUserRespons" +
+      "e\022i\n\022getSnsUserByOpenId\022,.com.ywt.gapi.u" +
+      "ser.GetSnsUserByOpenIdRequest\032%.com.ywt." +
+      "gapi.user.GetSnsUserResponse\022i\n\022getSnsUs" +
+      "erByUserId\022,.com.ywt.gapi.user.GetSnsUse" +
+      "rByUserIdRequest\032%.com.ywt.gapi.user.Get" +
+      "SnsUserResponse\022S\n\016addMedicalCard\022(.com." +
+      "ywt.gapi.user.AddMedicalCardRequest\032\027.co" +
+      "m.ywt.gapi.ResultInt\022q\n\022getMedicalCardLi" +
+      "st\022,.com.ywt.gapi.user.GetMedicalCardLis" +
+      "tRequest\032-.com.ywt.gapi.user.GetMedicalC" +
+      "ardListResponse\022Z\n\rloginByMobile\022\'.com.y" +
+      "wt.gapi.user.LoginByMobileRequest\032 .com." +
+      "ywt.gapi.user.LoginResponse\022^\n\017loginByUs" +
+      "erName\022).com.ywt.gapi.user.LoginByUserNa" +
+      "meRequest\032 .com.ywt.gapi.user.LoginRespo" +
+      "nse\022V\n\021deleteMedicalCard\022+.com.ywt.gapi." +
+      "user.DeleteMedicalCardRequest\032\024.com.ywt." +
+      "gapi.Result\022H\n\naddSnsUser\022$.com.ywt.gapi" +
+      ".user.AddSnsUserRequest\032\024.com.ywt.gapi.R" +
+      "esult\022@\n\006bindWx\022 .com.ywt.gapi.user.Bind" +
+      "WxRequest\032\024.com.ywt.gapi.Result\022q\n\022getOf" +
+      "fcialUserInfo\022,.com.ywt.gapi.user.GetOff" +
+      "cialUserInfoRequest\032-.com.ywt.gapi.user." +
+      "GetOffcialUserInfoResponse\022z\n\025getMedical" +
+      "RecordsList\022/.com.ywt.gapi.user.GetMedic" +
+      "alRecordsListRequest\0320.com.ywt.gapi.user" +
+      ".GetMedicalRecordsListResponse\022L\n\014change" +
+      "Mobile\022&.com.ywt.gapi.user.ChangeMobileR" +
+      "equest\032\024.com.ywt.gapi.Result\022t\n\023getOffic" +
+      "ialUserInfo\022-.com.ywt.gapi.user.GetOffic" +
+      "ialUserInfoRequest\032..com.ywt.gapi.user.G" +
+      "etOfficialUserInfoResponse\022\217\001\n\034getMedica" +
+      "lRecordListByUserId\0226.com.ywt.gapi.user." +
+      "GetMedicalRecordListByUserIdRequest\0327.co" +
+      "m.ywt.gapi.user.GetMedicalRecordListByUs" +
+      "erIdResponse\022\200\001\n\027getMedicalRecordsDetail" +
+      "\0221.com.ywt.gapi.user.GetMedicalRecordsDe" +
+      "tailRequest\0322.com.ywt.gapi.user.GetMedic" +
+      "alRecordsDetailResponse\022\200\001\n\027getInspectio" +
+      "nReportList\0221.com.ywt.gapi.user.GetInspe" +
+      "ctionReportListRequest\0322.com.ywt.gapi.us" +
+      "er.GetInspectionReportListResponse\022\252\001\n%g" +
+      "etInspectionReportListByHisPatientId\022?.c" +
+      "om.ywt.gapi.user.GetInspectionReportList" +
+      "ByHisPatientIdRequest\032@.com.ywt.gapi.use" +
+      "r.GetInspectionReportListByHisPatientIdR" +
+      "esponse\022\206\001\n\031getInspectionReportDetail\0223." +
+      "com.ywt.gapi.user.GetInspectionReportDet" +
+      "ailRequest\0324.com.ywt.gapi.user.GetInspec" +
+      "tionReportDetailResponse\022\200\001\n\027getLaborato" +
+      "ryReportList\0221.com.ywt.gapi.user.GetLabo" +
+      "ratoryReportListRequest\0322.com.ywt.gapi.u" +
+      "ser.GetLaboratoryReportListResponse\022\254\001\n\'" +
+      "getLaboratoryReportByListByHisPatientId\022" +
+      "?.com.ywt.gapi.user.GetLaboratoryReportL" +
+      "istByHisPatientIdRequest\032@.com.ywt.gapi." +
+      "user.GetLaboratoryReportListByHisPatient" +
+      "IdResponse\022\206\001\n\031getLaboratoryReportDetail" +
+      "\0223.com.ywt.gapi.user.GetLaboratoryReport" +
+      "DetailRequest\0324.com.ywt.gapi.user.GetLab" +
+      "oratoryReportDetailResponse\022\217\001\n\034getMedic" +
+      "alRecordByClinicCode\0226.com.ywt.gapi.user" +
+      ".GetMedicalRecordByClinicCodeRequest\0327.c" +
+      "om.ywt.gapi.user.GetMedicalRecordByClini" +
+      "cCodeResponse\022t\n\023loginWithUserAndPsd\022-.c" +
+      "om.ywt.gapi.user.LoginWithUserAndPsdRequ" +
+      "est\032..com.ywt.gapi.user.LoginWithUserAnd" +
+      "PsdResponse\022P\n\016updatePassword\022(.com.ywt." +
+      "gapi.user.UpdatePasswordRequest\032\024.com.yw" +
+      "t.gapi.Result\022P\n\016changePassword\022(.com.yw" +
+      "t.gapi.user.ChangePasswordRequest\032\024.com." +
+      "ywt.gapi.Result\022n\n\021getUserInfoByCode\022+.c" +
+      "om.ywt.gapi.user.GetUserInfoByCodeReques" +
+      "t\032,.com.ywt.gapi.user.GetUserInfoByCodeR" +
+      "esponse\022z\n\025getScheduleDoctorList\022/.com.y" +
+      "wt.gapi.user.GetScheduleDoctorListReques" +
+      "t\0320.com.ywt.gapi.user.GetScheduleDoctorL" +
+      "istResponse\022b\n\027userCreateMedicalRecord\0221" +
+      ".com.ywt.gapi.user.UserCreateMedicalReco" +
+      "rdRequest\032\024.com.ywt.gapi.Result\022z\n\025getDo" +
+      "ctorListByDeptId\022/.com.ywt.gapi.user.Get" +
+      "DoctorListByDeptIdRequest\0320.com.ywt.gapi" +
+      ".user.GetDoctorListByDeptIdResponse\022X\n\022g" +
+      "etDoctorTeamCount\022,.com.ywt.gapi.user.Ge" +
+      "tDoctorTeamCountRequest\032\024.com.ywt.gapi.R" +
+      "esult\022d\n\030getDoctorAdditionalCount\0222.com." +
+      "ywt.gapi.user.GetDoctorAdditionalCountRe" +
+      "quest\032\024.com.ywt.gapi.Result\022h\n\017getHospit" +
+      "alById\022).com.ywt.gapi.user.GetHospitalBy" +
+      "IdRequest\032*.com.ywt.gapi.user.GetHospita" +
+      "lByIdResponse\022]\n\023addTaiheMedicalCard\022-.c" +
+      "om.ywt.gapi.user.AddTaiheMedicalCardRequ" +
+      "est\032\027.com.ywt.gapi.ResultInt\022k\n\020withdraw" +
+      "ToWeChat\022*.com.ywt.gapi.user.WithdrawToW" +
+      "eChatRequest\032+.com.ywt.gapi.user.Withdra" +
+      "wToWeChatResponse\022k\n\020withdrawOrderPay\022*." +
+      "com.ywt.gapi.user.WithdrawOrderPayReques" +
+      "t\032+.com.ywt.gapi.user.WithdrawOrderPayRe" +
+      "sponse\022Z\n\023userAttentionDoctor\022-.com.ywt." +
+      "gapi.user.UserAttentionDoctorRequest\032\024.c" +
+      "om.ywt.gapi.Result\022c\n\031saveAttentionDocto" +
+      "rStatus\0220.com.ywt.gapi.user.GeneralAtten" +
+      "tionDoctorRequest\032\024.com.ywt.gapi.Result\022" +
+      "g\n\033saveAttentionHospitalStatus\0222.com.ywt" +
+      ".gapi.user.GeneralAttentionHospitalReque" +
+      "st\032\024.com.ywt.gapi.Result\022q\n\022getUserPatie" +
+      "ntById\022,.com.ywt.gapi.user.GetUserPatien" +
+      "tByIdRequest\032-.com.ywt.gapi.user.GetUser" +
+      "PatientByIdResponse\022W\n\025updateUserPatient" +
+      "Info\022(.com.ywt.gapi.user.UpdateUserPatie" +
+      "ntInfo\032\024.com.ywt.gapi.Result\022q\n\022getUserP" +
+      "atientList\022,.com.ywt.gapi.user.GetUserPa" +
+      "tientListRequest\032-.com.ywt.gapi.user.Get" +
+      "UserPatientListResponse\022g\n\017saveSnsUserIn" +
+      "fo\022).com.ywt.gapi.user.SaveSnsUserInfoRe" +
+      "quest\032).com.ywt.gapi.user.SaveSnsUserInf" +
+      "oRespose\022\\\n\032checkAndAddUserPatientInfo\022(" +
+      ".com.ywt.gapi.user.UpdateUserPatientInfo" +
+      "\032\024.com.ywt.gapi.Result\022C\n\tbindWxNew\022 .co" +
+      "m.ywt.gapi.user.BindWxRequest\032\024.com.ywt." +
+      "gapi.Result\022P\n\016delUserPatient\022(.com.ywt." +
+      "gapi.user.DelUserPatientRequest\032\024.com.yw" +
+      "t.gapi.Result\022b\n\027checkAndUpdateSnsUserId" +
+      "\0221.com.ywt.gapi.user.CheckAndUpdateSnsUs" +
+      "erIdRequest\032\024.com.ywt.gapi.Result\022t\n\023get" +
+      "UserInfoByOpenId\022-.com.ywt.gapi.user.Get" +
+      "UserInfoByOpenIdRequest\032..com.ywt.gapi.u" +
+      "ser.GetUserInfoByOpenIdResponse\022\225\001\n\036getU" +
+      "serInfoByUserIdAndTerminal\0228.com.ywt.gap" +
+      "i.user.GetUserInfoByUserIdAndTerminalReq" +
+      "uest\0329.com.ywt.gapi.user.GetUserInfoByUs" +
+      "erIdAndTerminalResponse\022\\\n\024updateFollowe" +
+      "dStatus\022..com.ywt.gapi.user.UpdateFollow" +
+      "edStatusRequest\032\024.com.ywt.gapi.Result\022e\n" +
+      "\016saveMinAppUser\022(.com.ywt.gapi.user.Save" +
+      "MinAppUserRequest\032).com.ywt.gapi.user.Sa" +
+      "veMinAppUserResponse\022e\n\016getSnsUserInfo\022(" +
+      ".com.ywt.gapi.user.GetSnsUserInfoRequest" +
+      "\032).com.ywt.gapi.user.GetSnsUserInfoRespo" +
+      "nse\022\206\001\n\031updateSnsUserInfoByUserId\0223.com." +
+      "ywt.gapi.user.UpdateSnsUserInfoByUserIdR" +
+      "equest\0324.com.ywt.gapi.user.UpdateSnsUser" +
+      "InfoByUserIdResponse\022_\n\014authenticate\022&.c" +
+      "om.ywt.gapi.user.AuthenticateRequest\032\'.c" +
+      "om.ywt.gapi.user.AuthenticateResponse\022\236\001" +
+      "\n!getSnsUserInfoByUserIdAndTerminal\022;.co" +
+      "m.ywt.gapi.user.GetSnsUserInfoByUserIdAn" +
+      "dTerminalRequest\032<.com.ywt.gapi.user.Get" +
+      "SnsUserInfoByUserIdAndTerminalResponse\022\\" +
+      "\n\013getUserList\022%.com.ywt.gapi.user.GetUse" +
+      "rListRequest\032&.com.ywt.gapi.user.GetUser" +
+      "ListResponse\022H\n\nselectCard\022$.com.ywt.gap" +
+      "i.user.SelectCardRequest\032\024.com.ywt.gapi." +
+      "Result\022\211\001\n\032updateHospMedRecordSetting\0224." +
+      "com.ywt.gapi.user.UpdateHospMedRecordSet" +
+      "tingRequest\0325.com.ywt.gapi.user.UpdateHo" +
+      "spMedRecordSettingResponse\022\200\001\n\027getHospMe" +
+      "dRecordSetting\0221.com.ywt.gapi.user.GetHo" +
+      "spMedRecordSettingRequest\0322.com.ywt.gapi" +
+      ".user.GetHospMedRecordSettingResponse\022L\n" +
+      "\014checkHasCard\022&.com.ywt.gapi.user.CheckH" +
+      "asCardRequest\032\024.com.ywt.gapi.Result\022[\n\010s" +
+      "aveSign\022&.com.ywt.gapi.user.SaveUserSign" +
+      "Request\032\'.com.ywt.gapi.user.SaveUserSign" +
+      "Response\022h\n\021getUserListByList\022+.com.ywt." +
+      "gapi.user.GetUserListByListRequest\032&.com" +
+      ".ywt.gapi.user.GetUserListResponse\022\\\n\013sy" +
+      "ncMedCard\022%.com.ywt.gapi.user.SyncMedCar" +
+      "dRequest\032&.com.ywt.gapi.user.SyncMedCard" +
+      "Response\022\\\n\024updateLastChosenTime\022..com.y" +
+      "wt.gapi.user.UpdateLastChosenTimeRequest" +
+      "\032\024.com.ywt.gapi.Result\022q\n\022bindAlipayUser" +
+      "Info\022,.com.ywt.gapi.user.BindAlipayUserI" +
+      "nfoRequest\032-.com.ywt.gapi.user.BindAlipa" +
+      "yUserInfoResponse\022]\n\030updateMedicalCardRe" +
+      "quest\022+.com.ywt.gapi.user.UpdateMedicalC" +
+      "ardRequest\032\024.com.ywt.gapi.ResultB\037\n\021com." +
+      "ywt.gapi.userP\001Z\005/user\210\001\001b\006proto3"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
         new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
@@ -1935,7 +1935,7 @@ public final class UserOuterClass {
     internal_static_com_ywt_gapi_user_AddTaiheMedicalCardRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_com_ywt_gapi_user_AddTaiheMedicalCardRequest_descriptor,
-        new java.lang.String[] { "UserId", "HospitalId", "CardNo", "RealName", "Mobile", "Guardian", "Address", "IdNo", "IdType", "Sex", "Birthday", "HisPatientId", });
+        new java.lang.String[] { "UserId", "HospitalId", "CardNo", "RealName", "Mobile", "Guardian", "Address", "IdNo", "IdType", "Sex", "Birthday", "HisPatientId", "Relationship", });
     internal_static_com_ywt_gapi_user_WithdrawToWeChatRequest_descriptor =
       getDescriptor().getMessageTypes().get(93);
     internal_static_com_ywt_gapi_user_WithdrawToWeChatRequest_fieldAccessorTable = new

+ 8 - 2
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/MedicCardController.java

@@ -184,8 +184,14 @@ public class MedicCardController {
      */
     @PostMapping("isvRequest.patient.add")
     public ResponseVO<AddPatientResponse> addPatient(AddPatientRequest request) throws Exception {
-
-        return ResponseVO.success(medicCardService.addPatient(request));
+        try {
+            return ResponseVO.success(medicCardService.addPatient(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("MedicCardController#addPatient(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
     /**
      * 添加就诊人