| 1 | SPNMSR1 ;SAN/WDE/MS Canned report/10-26-2001
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;**12,14,16**;01/02/1997
 | 
|---|
| 3 | EN ;
 | 
|---|
| 4 |  ;ask if they want all patients or just one
 | 
|---|
| 5 |  S SPNTRUE=0
 | 
|---|
| 6 |  S DIR(0)="YAO" ; Answer yes or no
 | 
|---|
| 7 |  S DIR("A")="Would you like all patients: "
 | 
|---|
| 8 |  S DIR("B")="NO"
 | 
|---|
| 9 |  S DIR("?")="Enter yes for all patients or no for a single patient."
 | 
|---|
| 10 |  D ^DIR I $D(DIRUT) D EXIT Q
 | 
|---|
| 11 |  I Y'=1 D PTLK I SPNTRUE=1 I +SPNDFN G DEV Q  D EXIT Q
 | 
|---|
| 12 |  I Y'=1 I SPNTRUE=0 D EXIT Q
 | 
|---|
| 13 | REG ;Ask if they want to sort on a particular REGISTRATION STATUS
 | 
|---|
| 14 |  S DIR(0)="SO^A:ALL;0:NOT SCD;1:SCD - CURRENTLY SERVED;2:SCD - NOT CURRENTLY SERVED;X:EXPIRED"
 | 
|---|
| 15 |  S DIR("B")="A",DIR("A")="Select a Registration Status"
 | 
|---|
| 16 |  D ^DIR
 | 
|---|
| 17 |  I (Y="")!(Y["^") G EXIT Q
 | 
|---|
| 18 |  S SPNRET=Y
 | 
|---|
| 19 | SCI ;Ask if they want to sort out any SCI NETWORK
 | 
|---|
| 20 |  S DIR(0)="SO^A:ALL;Y:SCI NETWORK YES;N:SCI NETWORK NO"
 | 
|---|
| 21 |  S DIR("A")="Select a SCI NETWORK",DIR("B")="A"
 | 
|---|
| 22 |  D ^DIR
 | 
|---|
| 23 |  I (Y="")!(Y["^") G EXIT Q
 | 
|---|
| 24 |  I Y="Y" S Y=1
 | 
|---|
| 25 |  I Y="N" S Y=0
 | 
|---|
| 26 |  S SPNNET=Y
 | 
|---|
| 27 | MSTYPE ;Ask if user want a particular MS Subtype value
 | 
|---|
| 28 |  S DIR(0)="SO^A:ALL;UN:UNKNOWN;RR:RELAPSING-REMITTING;PP:PRIMARY PROGRESSIVE;SP:SECONDARY PROGRESSIVE;PR:PROGRESSIVE RELAPSING"
 | 
|---|
| 29 |  S DIR("B")="A",DIR("A")="Select a MS Subtype value"
 | 
|---|
| 30 |  D ^DIR
 | 
|---|
| 31 |  I (Y="")!(Y["^") G EXIT Q
 | 
|---|
| 32 |  S SPNMSS=Y
 | 
|---|
| 33 | DEV ;put the device call in calls here
 | 
|---|
| 34 |  S ZTSAVE("SPN*")=""
 | 
|---|
| 35 |  S SPNLEXIT=""
 | 
|---|
| 36 |  D DEVICE^SPNPRTMT("EN2^SPNMSR1","Print MS patients",.ZTSAVE) Q:SPNLEXIT
 | 
|---|
| 37 |  I SPNIO="Q" D EXIT Q
 | 
|---|
| 38 |  I IO'="" D EN2 D EXIT Q
 | 
|---|
| 39 | EN2 ;Start the search
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  K ^UTILITY($J)
 | 
|---|
| 42 |  I $D(SPNDFN) D EDSS D COLL D ^SPNMSR2 D EXIT Q
 | 
|---|
| 43 |  S SPNDFN=0 F  S SPNDFN=$O(^SPNL(154,SPNDFN)) Q:(SPNDFN="")!('+SPNDFN)  D
 | 
|---|
| 44 |  .Q:$P($G(^SPNL(154,SPNDFN,0)),U,1)=""  ;patch 16
 | 
|---|
| 45 |  .D TESTMS Q:SPNTRUE=0
 | 
|---|
| 46 |  .I SPNTRUE=1 I SPNRET'="A" D TEST1 Q:SPNTRUE=0
 | 
|---|
| 47 |  .I SPNTRUE=1 I SPNNET'="A" D TEST2 Q:SPNTRUE=0
 | 
|---|
| 48 |  .I SPNTRUE=1 I SPNMSS'="A" D TEST3 Q:SPNTRUE=0
 | 
|---|
| 49 |  .I SPNTRUE=1 D EDSS D COLL
 | 
|---|
| 50 |  .Q
 | 
|---|
| 51 |  D ^SPNMSR2  ;print routine
 | 
|---|
| 52 | EXIT ;
 | 
|---|
| 53 |  K ^UTILITY($J)
 | 
|---|
| 54 |  K SPNTRUE,SPNTYP,SPNNU,SPNMSS,SPNDFN,Y,DIR,SPNRET,SPNNET,SPNMSS,ZTSAVE,SPNLEXIT,SPNIO,SPNDAT,SPNFDT2,SPNFD0,SPNEDS,SPNFDT,SPNEDSS
 | 
|---|
| 55 |  K SPNNAME,SPNSSN,SPNSUB,SPNPRO,SPNLAS,SPNNEX
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 | TESTMS ;test patient for a etiology of MS
 | 
|---|
| 58 |  S SPNTRUE=0
 | 
|---|
| 59 |  S SPNTYP="",SPNNU=""
 | 
|---|
| 60 |  S SPNNU=0 F  S SPNNU=$O(^SPNL(154,SPNDFN,"E",SPNNU)) Q:(SPNNU="")!('+SPNNU)  D
 | 
|---|
| 61 |  .S SPNTYP=$P($G(^SPNL(154,SPNDFN,"E",SPNNU,0)),U,1)
 | 
|---|
| 62 |  .S SPNTYP=$G(^SPNL(154.03,SPNTYP,0))
 | 
|---|
| 63 |  .I SPNTYP["MULTIPLE SCLEROSIS" S SPNTRUE=1 S SPNONS=$P($G(^SPNL(154,SPNDFN,"E",SPNNU,0)),U,2) S SPNNU=99999
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 | TEST1 ;
 | 
|---|
| 66 |  S SPNDAT=""
 | 
|---|
| 67 |  S SPNDAT=$G(^SPNL(154,SPNDFN,0)) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 68 |  S SPNDAT=$P($G(SPNDAT),U,3) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 69 |  S:SPNDAT'=SPNRET SPNTRUE=0 Q  ;Failed
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 | TEST2   ;test for SCI NETWORK
 | 
|---|
| 72 |  S SPNDAT=""
 | 
|---|
| 73 |  S SPNDAT=$G(^SPNL(154,SPNDFN,1)) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 74 |  S SPNDAT=$P($G(SPNDAT),U,1) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 75 |  I SPNDAT'=SPNNET S SPNTRUE=0 Q  ;Failed
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 | TEST3   ;test for MS SUBTYPE
 | 
|---|
| 78 |  S SPNDAT=""
 | 
|---|
| 79 |  S SPNDAT=$G(^SPNL(154,SPNDFN,2)) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 80 |  S SPNDAT=$P($G(SPNDAT),U,2) I SPNDAT="" S SPNTRUE=0 Q
 | 
|---|
| 81 |  I SPNDAT'=SPNMSS S SPNTRUE=0 Q  ;Failed
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | EDSS ;Get patients latest EDSS score from 154.1
 | 
|---|
| 84 |  S SPNFDT2="",SPNEDSS=""
 | 
|---|
| 85 |  S SPNFD0=0 F  S SPNFD0=$O(^SPNL(154.1,"B",SPNDFN,SPNFD0)) Q:(SPNFD0="")!('+SPNFD0)  D
 | 
|---|
| 86 |  .S SPNEDS=$G(^SPNL(154.1,SPNFD0,"MS"))
 | 
|---|
| 87 |  .S SPNEDS=$P($G(SPNEDS),U,9)
 | 
|---|
| 88 |  .Q:SPNEDS=""
 | 
|---|
| 89 |  .S SPNFDT=$G(^SPNL(154.1,SPNFD0,0)) Q:SPNFDT=""
 | 
|---|
| 90 |  .S SPNFDT=$P($G(SPNFDT),U,4) Q:SPNFDT=""
 | 
|---|
| 91 |  .I SPNFDT>SPNFDT2 S SPNFDT2=SPNFDT,SPNEDSS=$P($G(^SPNL(154.2,SPNEDS,0)),U,1)
 | 
|---|
| 92 |  .Q
 | 
|---|
| 93 |  I $G(SPNFDT2) S Y=SPNFDT2 X ^DD("DD") S SPNFDT2=Y K Y
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | COLL    ;patient passed the test and we want them
 | 
|---|
| 96 |  S Y=SPNONS X ^DD("DD") S SPNONS=Y
 | 
|---|
| 97 |  S SPNAME=$$GET1^DIQ(154,SPNDFN_",",.01)
 | 
|---|
| 98 |  S SPNSSN=$$GET1^DIQ(2,SPNDFN_",",.09)
 | 
|---|
| 99 |  S SPNSUB=$$GET1^DIQ(154,SPNDFN_",",2.2)
 | 
|---|
| 100 |  S SPNPRO=$$GET1^DIQ(154,SPNDFN_",",8.1)
 | 
|---|
| 101 |  S SPNLAS=$$GET1^DIQ(154,SPNDFN_",",999.07)
 | 
|---|
| 102 |  S SPNNEX=$$GET1^DIQ(154,SPNDFN_",",999.08)
 | 
|---|
| 103 |  S ^UTILITY($J,SPNAME,SPNDFN)=SPNAME_"^"_SPNSSN_"^"_SPNSUB_"^"_SPNPRO_"^"_SPNLAS_"^"_SPNNEX_"^"_SPNONS_"^"_SPNFDT2_"^"_SPNEDSS
 | 
|---|
| 104 |  S (SPNAME,SPNSSN,SPNSUB,SPNPRO,SPNLAS,SPNNEX,SPNONS,SPNFDT2,SPNEDSS)=""
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | PTLK ;
 | 
|---|
| 107 |  S DIC="^SPNL(154,",DIC(0)="AEQMNZ",DIC("A")="Select Patient: "
 | 
|---|
| 108 |  D ^DIC
 | 
|---|
| 109 |  S SPNDFN=$P(Y,U,1)
 | 
|---|
| 110 |  I '+Y G EXIT Q
 | 
|---|
| 111 |  D TESTMS
 | 
|---|
| 112 |  I +SPNDFN I SPNTRUE=0 W !!,"Patient does not have an etiology of MS."
 | 
|---|
| 113 |  Q
 | 
|---|