| 1 | SPNFSRV0 ;HISC/DAD-SCD REGISTRY VETERAN SURVEY SERVER ;2/6/96  09:34
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;;01/02/1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  D XIT
 | 
|---|
| 5 |  S SPNFXMZ=XMZ
 | 
|---|
| 6 |  S SPNFTYPE=$$XMREC,SPNERROR=0
 | 
|---|
| 7 |  I ";***154^REG;***154.1^FIM;"'[(";"_SPNFTYPE_";") D  G EXIT
 | 
|---|
| 8 |  . S X="Invalid message format, rest of message ignored."
 | 
|---|
| 9 |  . D ERROR(X)
 | 
|---|
| 10 |  . Q
 | 
|---|
| 11 |  K SPNFDATA
 | 
|---|
| 12 |  S (SPNFREGC,SPNFFIMC,SPNFEXIT,SPNFDATA("E"))=0
 | 
|---|
| 13 |  F  S SPNFDATA=$$XMREC Q:SPNFDATA=""!SPNFEXIT  D
 | 
|---|
| 14 |  . ;
 | 
|---|
| 15 |  . I SPNFDATA="***^END" D  Q
 | 
|---|
| 16 |  .. S X=$O(SPNFDATA("")) I (X="")!(X="E") Q
 | 
|---|
| 17 |  .. S SPNFDFN(0)=$P($G(SPNFDATA(0)),U)
 | 
|---|
| 18 |  .. S SPNFDFN=$$FINDDFN(SPNFDFN(0))
 | 
|---|
| 19 |  .. I SPNFDFN'>0 D  Q
 | 
|---|
| 20 |  ... S SPNFNAME=$P(SPNFDFN(0),";"),SPNFSEX=$P(SPNFDFN(0),";",2)
 | 
|---|
| 21 |  ... S SPNFDOB=$P(SPNFDFN(0),";",3),SPNFSSN=$P(SPNFDFN(0),";",4)
 | 
|---|
| 22 |  ... S SPNFDOB=$E(SPNFDOB,4,5)_"-"_$E(SPNFDOB,6,7)_"-"_$E(SPNFDOB,2,3)
 | 
|---|
| 23 |  ... S SPNFSEX=$S(SPNFSEX="M":"MALE",SPNFSEX="F":"FEMALE",1:"UNKNOWN")
 | 
|---|
| 24 |  ... S X="Patient not found: "_SPNFNAME_"  ("_SPNFSEX_")  "
 | 
|---|
| 25 |  ... S X=X_SPNFDOB_"  "_SPNFSSN_"."
 | 
|---|
| 26 |  ... K SPNFDATA S SPNFDATA("E")=0
 | 
|---|
| 27 |  ... D ERROR(X)
 | 
|---|
| 28 |  ... Q
 | 
|---|
| 29 |  .. I $P(SPNFTYPE,U,2)="REG" D REG^SPNFSRV1
 | 
|---|
| 30 |  .. I $P(SPNFTYPE,U,2)="FIM" D FIM^SPNFSRV2
 | 
|---|
| 31 |  .. K SPNFDATA S SPNFDATA("E")=0
 | 
|---|
| 32 |  .. Q
 | 
|---|
| 33 |  . ;
 | 
|---|
| 34 |  . S SPNFTAG=$P(SPNFDATA,U),SPNFDATA=$P(SPNFDATA,U,2,99)
 | 
|---|
| 35 |  . S SPNFSUB=$TR(SPNFTAG,"*")
 | 
|---|
| 36 |  . I (SPNFTAG'?1"*"1E1"*")!("^0^2^5^E^"'[(U_SPNFSUB_U)) D  Q
 | 
|---|
| 37 |  .. S X="Invalid message format, rest of message ignored."
 | 
|---|
| 38 |  .. D ERROR(X)
 | 
|---|
| 39 |  .. S SPNFEXIT=1
 | 
|---|
| 40 |  .. Q
 | 
|---|
| 41 |  . I SPNFSUB?1N S SPNFDATA(SPNFSUB)=SPNFDATA
 | 
|---|
| 42 |  . E  D
 | 
|---|
| 43 |  .. S SPNFDATA("E")=SPNFDATA("E")+1
 | 
|---|
| 44 |  .. S SPNFDATA("E",SPNFDATA("E"))=SPNFDATA
 | 
|---|
| 45 |  .. Q
 | 
|---|
| 46 |  . Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | EXIT ; *** Send error/info msg, Clean-up, Quit
 | 
|---|
| 49 |  I SPNERROR'>0 S XMSER="SPNFSURVEY",XMZ=SPNFXMZ D REMSBMSG^XMA1C
 | 
|---|
| 50 |  D MESSAGE
 | 
|---|
| 51 | XIT K D0,D1,DA,DD,DESC,DFN,DIC,DIE,DINUM,DLAYGO,DO,DOB,DPT,DR,DTOUT,IEN
 | 
|---|
| 52 |  K NAM,SEX,SPND0,SPND1,SPNDATE,SPNDR,SPNERROR,SPNETIOL,SPNFDATA
 | 
|---|
| 53 |  K SPNFDATE,SPNFDFN,SPNFDOB,SPNFEXIT,SPNFFIMC,SPNFFLDS,SPNFFTYP
 | 
|---|
| 54 |  K SPNFNAME,SPNFREGC,SPNFSEX,SPNFSSN,SPNFSTAT,SPNFSUB,SPNFTAG,SPNFTYPE
 | 
|---|
| 55 |  K SPNFXMZ,SPNONSET,SPNOTHER,SPNPIECE,SPNX,SSN,TYPE,X,Y
 | 
|---|
| 56 |  K ^TMP($J,"SPNERROR")
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | MESSAGE ; *** Send user error/info message
 | 
|---|
| 60 |  I SPNERROR D
 | 
|---|
| 61 |  . S X="The SCD Registry Veteran Survey Server has encountered the"
 | 
|---|
| 62 |  . S ^TMP($J,"SPNERROR",.1)=X
 | 
|---|
| 63 |  . S X="following problems with MailMan server message # "_SPNFXMZ_":"
 | 
|---|
| 64 |  . S ^TMP($J,"SPNERROR",.2)=X
 | 
|---|
| 65 |  . S ^TMP($J,"SPNERROR",.3)=""
 | 
|---|
| 66 |  . Q
 | 
|---|
| 67 |  E  D
 | 
|---|
| 68 |  . S X="The SCD Registry Veteran Survey Server has added or modified"
 | 
|---|
| 69 |  . S ^TMP($J,"SPNERROR",.1)=X
 | 
|---|
| 70 |  . S X="the following number of records:"
 | 
|---|
| 71 |  . S ^TMP($J,"SPNERROR",.2)=X
 | 
|---|
| 72 |  . I $P(SPNFTYPE,U,2)="REG" D
 | 
|---|
| 73 |  .. S ^TMP($J,"SPNERROR",.3)="   SCD Registry records: "_SPNFREGC
 | 
|---|
| 74 |  .. Q
 | 
|---|
| 75 |  . I $P(SPNFTYPE,U,2)="FIM" D
 | 
|---|
| 76 |  .. S ^TMP($J,"SPNERROR",.3)="            FIM records: "_SPNFFIMC
 | 
|---|
| 77 |  .. Q
 | 
|---|
| 78 |  . Q
 | 
|---|
| 79 |  S XMSUB="SCD Registry Veteran Survey Server"
 | 
|---|
| 80 |  S XMTEXT="^TMP($J,""SPNERROR"","
 | 
|---|
| 81 |  S XMY("G.SPNL SCD COORDINATOR")=""
 | 
|---|
| 82 |  S XMY("G.SPNZ SCD COORDINATOR")=""
 | 
|---|
| 83 |  D ^XMD
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | FINDDFN(X) ; *** Find a patient DFN
 | 
|---|
| 87 |  ;  X = Name ; Sex ; DOB ; SSN ; LAST NAME
 | 
|---|
| 88 |  N D0,DFN,DOB,DPT,LNM,NAM,SEX,SSN
 | 
|---|
| 89 |  S NAM=$P(X,";",1),SEX=$P(X,";",2)
 | 
|---|
| 90 |  S DOB=$P(X,";",3),SSN=$P(X,";",4)
 | 
|---|
| 91 |  S LNM=$P(X,";",5)
 | 
|---|
| 92 |  S (D0,DFN)=0
 | 
|---|
| 93 |  F  S D0=$O(^DPT("SSN",SSN,D0)) Q:D0'>0!DFN  D
 | 
|---|
| 94 |  . S DPT=$G(^DPT(D0,0))
 | 
|---|
| 95 |  . S NAM(0)=$P(DPT,U,1),SEX(0)=$P(DPT,U,2)
 | 
|---|
| 96 |  . S DOB(0)=$P(DPT,U,3),SSN(0)=$P(DPT,U,9)
 | 
|---|
| 97 |  . I NAM=NAM(0),SEX=SEX(0),DOB=DOB(0),SSN=SSN(0) S DFN=D0
 | 
|---|
| 98 |  . I DFN'>0,SSN=SSN(0),LNM=$P(NAM(0),",") S DFN=D0
 | 
|---|
| 99 |  . Q
 | 
|---|
| 100 |  Q DFN
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | ERROR(X) ; *** Save error messages
 | 
|---|
| 103 |  ;  X = Text of the error msg
 | 
|---|
| 104 |  S SPNERROR=SPNERROR+1
 | 
|---|
| 105 |  S ^TMP($J,"SPNERROR",SPNERROR)=X
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | XMREC() ; *** Return next line of message
 | 
|---|
| 109 |  X XMREC
 | 
|---|
| 110 |  Q $S(XMER=0:XMRG,1:"")
 | 
|---|