| 1 | EASEZF3 ;ALB/jap - Filing 1010EZ Data to Patient Database ;10/31/00  13:07
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**1,57**;Mar 15, 2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SP ;file Spouse data
 | 
|---|
| 5 |  N C,MULTIPLE,FILE,SUBFILE,FLD,XDATA,ACCEPT,SUBIEN,SEX,EZDATA,EAS,ERR
 | 
|---|
| 6 |  N KEY,X,Y,XLINK,DIC
 | 
|---|
| 7 |  ;process sequence must be 408.13 - 408.12 - 408.21 - 408.22
 | 
|---|
| 8 |  ;set sex of spouse
 | 
|---|
| 9 |  S KEY=+$$KEY711^EASEZU1("APPLICANT SEX")
 | 
|---|
| 10 |  S X=$$DATA712^EASEZU1(EASAPP,KEY,1),APSEX=$P(X,U,1),SEX=$S(APSEX="M":"FEMALE",1:"MALE")
 | 
|---|
| 11 |  S XLINK=$G(FLINK("SP",1,408.13)),PTDATA="" I XLINK D
 | 
|---|
| 12 |  .S FFF="408.13^408.13^.02" S PTDATA=$$GET^EASEZC1(XLINK,FFF)
 | 
|---|
| 13 |  .S SP(1,408.13,408.13,.02)=SEX_U_2_U_U_PTDATA_U_XLINK
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  F FILE=408.13,408.12,408.21,408.22 D
 | 
|---|
| 16 |  .S MULTIPLE=1,SUBFILE=FILE,FLD=""
 | 
|---|
| 17 |  .S XLINK=$G(FLINK("SP",MULTIPLE,FILE))
 | 
|---|
| 18 |  .;record in file #408.13 is needed for all further data filng
 | 
|---|
| 19 |  .Q:(FILE'=408.13)&('$G(FLINK("SP",MULTIPLE,408.13)))
 | 
|---|
| 20 |  .;for data elements with link to database, 
 | 
|---|
| 21 |  .;only file 1010EZ data if accepted by user;
 | 
|---|
| 22 |  .;data in external format
 | 
|---|
| 23 |  .I XLINK D
 | 
|---|
| 24 |  ..;when #408.12 record exists, don't try to update subfile #408.1275
 | 
|---|
| 25 |  ..S FLD="" F  S FLD=$O(SP(MULTIPLE,FILE,SUBFILE,FLD)) Q:FLD=""  D
 | 
|---|
| 26 |  ...S XDATA=SP(MULTIPLE,FILE,SUBFILE,FLD),ACCEPT=$P(XDATA,U,2)
 | 
|---|
| 27 |  ...I FILE=408.13,FLD=.09 S XDATA=$TR(XDATA,"-","")
 | 
|---|
| 28 |  ...I ACCEPT D LINK^EASEZF2(XDATA,FILE,FLD,"SP",MULTIPLE)
 | 
|---|
| 29 |  .;for data elements with no link to database, 
 | 
|---|
| 30 |  .;always create new record(s) to store 1010EZ data;
 | 
|---|
| 31 |  .;put data in internal format
 | 
|---|
| 32 |  .I 'XLINK D
 | 
|---|
| 33 |  ..K EAS,ERR
 | 
|---|
| 34 |  ..;supplement data and convert to internal format
 | 
|---|
| 35 |  ..S FLD="" F  S FLD=$O(SP(MULTIPLE,FILE,SUBFILE,FLD)) Q:FLD=""  D
 | 
|---|
| 36 |  ...S EZDATA=$P(SP(MULTIPLE,FILE,SUBFILE,FLD),U,1)
 | 
|---|
| 37 |  ...S EAS(EASAPP,FILE,"+1,",FLD)=EZDATA
 | 
|---|
| 38 |  ..I FILE=408.13 D
 | 
|---|
| 39 |  ...S X=$G(EAS(EASAPP,FILE,"+1,",".03")) I X'="" D ^%DT S EAS(EASAPP,FILE,"+1,",".03")=Y
 | 
|---|
| 40 |  ...S X=$G(EAS(EASAPP,FILE,"+1,",".09")) I X'="" D
 | 
|---|
| 41 |  ....S SSN=$TR(X,"-","") S EAS(EASAPP,FILE,"+1,",".09")=SSN
 | 
|---|
| 42 |  ....I $D(^DGPR(408.13,"SSN",SSN)) S EAS(EASAPP,FILE,"+1,",".09")=""
 | 
|---|
| 43 |  ...S KEY=+$$KEY711^EASEZU1("APPLICANT SEX")
 | 
|---|
| 44 |  ...S X=$P($$DATA712^EASEZU1(EASAPP,KEY,1),U,1),SEX=$S(X="M":"F",1:"M")
 | 
|---|
| 45 |  ...S EAS(EASAPP,FILE,"+1,",".02")=SEX
 | 
|---|
| 46 |  ...S X=$G(EAS(EASAPP,FILE,"+1,","1.6")) I X'="" D
 | 
|---|
| 47 |  ....S DIC=5,DIC(0)="X" D ^DIC
 | 
|---|
| 48 |  ....S EAS(EASAPP,FILE,"+1,","1.6")=$S(+Y:+Y,1:"")
 | 
|---|
| 49 |  ..I FILE=408.12,$G(FLINK("SP",MULTIPLE,408.13)) D F40812("SP",1)
 | 
|---|
| 50 |  ..I FILE=408.21,$G(FLINK("SP",MULTIPLE,408.12)) D
 | 
|---|
| 51 |  ...S EAS(EASAPP,FILE,"+1,",".01")=INCYR
 | 
|---|
| 52 |  ...S EAS(EASAPP,FILE,"+1,",".02")=FLINK("SP",MULTIPLE,408.12)
 | 
|---|
| 53 |  ...S EAS(EASAPP,FILE,"+1,","101")=DUZ
 | 
|---|
| 54 |  ...S EAS(EASAPP,FILE,"+1,","102")=DT
 | 
|---|
| 55 |  ...S EAS(EASAPP,FILE,"+1,","103")=DUZ
 | 
|---|
| 56 |  ...S EAS(EASAPP,FILE,"+1,","104")=DT
 | 
|---|
| 57 |  ..I FILE=408.22,$G(FLINK("SP",MULTIPLE,408.21)) D
 | 
|---|
| 58 |  ...S EAS(EASAPP,FILE,"+1,",".01")=EASDFN
 | 
|---|
| 59 |  ...S EAS(EASAPP,FILE,"+1,",".02")=FLINK("SP",MULTIPLE,408.21)
 | 
|---|
| 60 |  ..I FILE'=408.12 D
 | 
|---|
| 61 |  ...S FLINK("SP",MULTIPLE,FILE)=$$NOLINK^EASEZF2(.EAS,"SP",MULTIPLE)
 | 
|---|
| 62 |  ...S FLD="" F  S FLD=$O(SP(MULTIPLE,FILE,SUBFILE,FLD)) Q:FLD=""  D
 | 
|---|
| 63 |  ....S $P(SP(MULTIPLE,FILE,SUBFILE,FLD),U,5)=FLINK("SP",MULTIPLE,FILE)
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | F40812(TYPE,MULT) ;create a new record in file #408.12
 | 
|---|
| 67 |  ;input TYPE = "SP" for Souse or "CN" for Child
 | 
|---|
| 68 |  ;      MULT = always 1 for spouse; or
 | 
|---|
| 69 |  ;             1st subscript of CN array for child
 | 
|---|
| 70 |  ;can't use normal FileMan data entry
 | 
|---|
| 71 |  N C,ARR,FILE,SUBFILE,FLD,DGPRIEN,XDATE,SUBIEN,RELATE,XX,X,Y,DA,DIK,EAS,ERR
 | 
|---|
| 72 |  S DGPRIEN=""
 | 
|---|
| 73 |  S ARR=TYPE
 | 
|---|
| 74 |  S FILE=408.12,SUBFILE=408.12
 | 
|---|
| 75 |  I TYPE="SP" S RELATE=2
 | 
|---|
| 76 |  I TYPE="CN" D
 | 
|---|
| 77 |  .S X=$P($G(CN(MULT,FILE,SUBFILE,".02")),U,1)
 | 
|---|
| 78 |  .S RELATE=$S(X="SON":3,X="DAUGHTER":4,1:99)
 | 
|---|
| 79 |  ;verify that no record points to known file #408.13 record
 | 
|---|
| 80 |  S C=FLINK(TYPE,MULT,408.13)_";DGPR(408.13,"
 | 
|---|
| 81 |  I $D(^DGPR(408.12,"C",C)) S DGPRIEN=$O(^DGPR(408.12,"C",C,0))
 | 
|---|
| 82 |  ;if it does, quit w/o filing
 | 
|---|
| 83 |  Q:DGPRIEN
 | 
|---|
| 84 |  ;otherwise create a new entry
 | 
|---|
| 85 |  L +^DGPR(408.12,0):30
 | 
|---|
| 86 |  K DA,DIK
 | 
|---|
| 87 |  S DGPRIEN=$P(^DGPR(408.12,0),U,3)+1,$P(^DGPR(408.12,0),U,3)=DGPRIEN
 | 
|---|
| 88 |  S ^DGPR(408.12,DGPRIEN,0)=EASDFN_U_RELATE_U_C
 | 
|---|
| 89 |  S DA=DGPRIEN,DIK="^DGPR(408.12,",DIK(1)=".01^" D EN^DIK S DIK(1)=".03" D EN^DIK
 | 
|---|
| 90 |  S X=$P(^DGPR(408.12,0),U,4),$P(^DGPR(408.12,0),U,4)=X+1
 | 
|---|
| 91 |  L -^DGPR(408.12,0)
 | 
|---|
| 92 |  S FLINK(TYPE,MULT,408.12)=DGPRIEN
 | 
|---|
| 93 |  ;don't continue if file#408.12 record doesn't exist
 | 
|---|
| 94 |  Q:'$G(FLINK(TYPE,MULT,408.12))
 | 
|---|
| 95 |  ;store the link in subfile #712.01 record
 | 
|---|
| 96 |  S FLD="" F  S FLD=$O(@ARR@(MULT,FILE,SUBFILE,FLD)) Q:FLD=""  D
 | 
|---|
| 97 |  .S SUBIEN=$P(@ARR@(MULT,FILE,SUBFILE,FLD),U,3)
 | 
|---|
| 98 |  .S $P(@ARR@(MULT,FILE,SUBFILE,FLD),U,5)=FLINK(TYPE,MULT,FILE)
 | 
|---|
| 99 |  ;there's never more than one array node for subfile #408.1275; for field #.01;
 | 
|---|
| 100 |  S SUBFILE=408.1275,FLD=".01"
 | 
|---|
| 101 |  S XX=$G(@ARR@(MULT,FILE,SUBFILE,FLD))
 | 
|---|
| 102 |  K EAS
 | 
|---|
| 103 |  S XDATE=$P(XX,U,1)
 | 
|---|
| 104 |  S SUBIEN=$P(XX,U,3)
 | 
|---|
| 105 |  Q:XDATE=""
 | 
|---|
| 106 |  S X=XDATE D ^%DT S XDATE=Y
 | 
|---|
| 107 |  S EAS(EASAPP,SUBFILE,"+1,"_FLINK(TYPE,MULT,408.12)_",",".01")=XDATE
 | 
|---|
| 108 |  S EAS(EASAPP,SUBFILE,"+1,"_FLINK(TYPE,MULT,408.12)_",",".02")=1
 | 
|---|
| 109 |  S FLINK(TYPE,MULT,SUBFILE)=$$NOLINK^EASEZF2(.EAS,TYPE,MULT)
 | 
|---|
| 110 |  Q:FLINK(TYPE,MULT,SUBFILE)=""
 | 
|---|
| 111 |  ;store link to new subrecord in subfile #712.01
 | 
|---|
| 112 |  S $P(@ARR@(MULT,FILE,SUBFILE,FLD),U,5)=FLINK(TYPE,MULT,FILE)_";"_FLINK(TYPE,MULT,SUBFILE)
 | 
|---|
| 113 |  Q
 | 
|---|