| 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:"") | 
|---|