| 1 | SPNLCNV0 ;HISC/DAD-CONVERSION ;11/7/95  12:35
 | 
|---|
| 2 |  ;;2.0;Spinal Cord Dysfunction;;01/02/1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  I $O(^SPNL(154,0))'>0 Q
 | 
|---|
| 5 |  W !!,"This routine will convert the following fields in the SCD (SPINAL CORD)"
 | 
|---|
| 6 |  W !,"REGISTRY file (#154):",!
 | 
|---|
| 7 |  W !?3,"Old Fields (V1.0)               New Fields (V1.5)"
 | 
|---|
| 8 |  W !?3,"=================               ================="
 | 
|---|
| 9 |  W !?3,"REGISTRATION STATUS (154,.03)   REGISTRATION STATUS (154,.03)"
 | 
|---|
| 10 |  W !?3,"COMPLETENESS OF NLOI (154,2.2)  COMPLETE / INCOMPLETE (154,6.09)"
 | 
|---|
| 11 |  W !?3,"SOURCE OF NLOI (154,2.3)        INFORMATION SOURCE FOR SCD (154,2.3)"
 | 
|---|
| 12 |  W !?3,"DATE OF ONSET (154,3.2)         DATE OF ONSET (154.004,.01)"
 | 
|---|
| 13 |  W !?3,"ETIOLOGY (154,3.3)              ETIOLOGY (154.004,.02)",!
 | 
|---|
| 14 |  W !,"The DATE OF ONSET and ETIOLOGY fields will be converted to a multiple.  The"
 | 
|---|
| 15 |  W !,"codes for REGISTRATION STATUS and SOURCE OF NLOI have been changed, the old"
 | 
|---|
| 16 |  W !,"values will be converted.  The COMPLETENESS OF NLOI data will be moved to its"
 | 
|---|
| 17 |  W !,"new location.  This conversion may be run multiple times without adversely"
 | 
|---|
| 18 |  W !,"affecting the database.  When the conversion finishes you will receive a"
 | 
|---|
| 19 |  W !,"MailMan message listing any problems found during the conversion process."
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  K DIR S DIR(0)="SOM^R:Run now;Q:Queue later;"
 | 
|---|
| 22 |  S DIR("A")="When do you want to do the conversion"
 | 
|---|
| 23 |  S DIR("?",1)="   Enter 'R' to run the conversion now"
 | 
|---|
| 24 |  S DIR("?",2)="   Enter 'Q' to queue the conversion"
 | 
|---|
| 25 |  S DIR("?")="Choose 'R' or 'Q'"
 | 
|---|
| 26 |  D ^DIR W ! S SPN=Y I $D(DIRUT) G EXIT
 | 
|---|
| 27 |  I SPN="Q" D  G EXIT
 | 
|---|
| 28 |  . S ZTRTN="TASK^SPNLCNV0",ZTDESC="SCD Registry conversion",ZTIO=""
 | 
|---|
| 29 |  . D ^%ZTLOAD
 | 
|---|
| 30 |  . I $G(ZTSK) W !,"Task queued, task number: ",ZTSK
 | 
|---|
| 31 |  . E  W !,"Task NOT queued"
 | 
|---|
| 32 |  . Q
 | 
|---|
| 33 | TASK ;
 | 
|---|
| 34 |  I '$D(ZTQUEUED) W !,"Working..."
 | 
|---|
| 35 |  D EXIT S SPNERR=0
 | 
|---|
| 36 |  D ^SPNLCNV1
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  S SPND0=0
 | 
|---|
| 39 |  F  S SPND0=$O(^SPNL(154,SPND0)) Q:SPND0'>0  D
 | 
|---|
| 40 |  . I '$D(ZTQUEUED) W "."
 | 
|---|
| 41 |  . F SPN=0:1:3 S SPNDATA(SPN)=$G(^SPNL(154,SPND0,SPN))
 | 
|---|
| 42 |  . S SPNDFN=+$P(SPNDATA(0),U),SPNDFN(0)=$P($G(^DPT(SPNDFN,0)),U)
 | 
|---|
| 43 |  . I SPNDFN(0)="" Q
 | 
|---|
| 44 |  . S SPNLCOMP=$P(SPNDATA(2),U,2)
 | 
|---|
| 45 |  . S SPNREGST("OLD")=$P(SPNDATA(0),U,3),SPNNLOI("OLD")=$P(SPNDATA(2),U,3)
 | 
|---|
| 46 |  . S SPNDATE=$P(SPNDATA(3),U,2),SPNETIOL("OLD")=+$P(SPNDATA(3),U,3)
 | 
|---|
| 47 |  . S (SPNREGST("NEW"),SPNNLOI("NEW"))=""
 | 
|---|
| 48 |  . I SPNREGST("OLD")]"" S SPNREGST("NEW")=$G(^TMP($J,"SPN REGSTAT",SPNREGST("OLD")))
 | 
|---|
| 49 |  . I SPNNLOI("OLD")]"" S SPNNLOI("NEW")=$G(^TMP($J,"SPN NLOI",SPNNLOI("OLD")))
 | 
|---|
| 50 |  . I SPNREGST("OLD")]"",SPNREGST("NEW")="" D
 | 
|---|
| 51 |  .. S X="Cannot convert REGISTRATION STATUS '"_SPNREGST("OLD")
 | 
|---|
| 52 |  .. S X=X_"' for "_SPNDFN(0)_", SCD Registry record #"_SPND0
 | 
|---|
| 53 |  .. D ERR(X)
 | 
|---|
| 54 |  .. Q
 | 
|---|
| 55 |  . I SPNNLOI("OLD")]"",SPNNLOI("NEW")="" D
 | 
|---|
| 56 |  .. S X="Cannot convert SOURCE OF NLOI '"_SPNNLOI("OLD")
 | 
|---|
| 57 |  .. S X=X_"' for "_SPNDFN(0)_", SCD Registry record #"_SPND0
 | 
|---|
| 58 |  .. D ERR(X)
 | 
|---|
| 59 |  .. Q
 | 
|---|
| 60 |  . I SPNDATE'?7N D  Q  ; *** Bad date of onset
 | 
|---|
| 61 |  .. I SPNREGST("OLD")?1N Q
 | 
|---|
| 62 |  .. I SPNDATE="" S SPNDATE="<NULL>"
 | 
|---|
| 63 |  .. S X="Cannot convert DATE OF ONSET '"_SPNDATE
 | 
|---|
| 64 |  .. S X=X_"' for "_SPNDFN(0)_", SCD Registry record #"_SPND0
 | 
|---|
| 65 |  .. D ERR(X)
 | 
|---|
| 66 |  .. Q
 | 
|---|
| 67 |  . D CONV1
 | 
|---|
| 68 |  . I $O(^TMP($J,"SPN ETIOLOGY",""))="" Q  ; *** No etiology conv table
 | 
|---|
| 69 |  . S SPNETIOL("NEW")=+$G(^TMP($J,"SPN ETIOLOGY",SPNETIOL("OLD")))
 | 
|---|
| 70 |  . I SPNETIOL("OLD")>0,SPNETIOL("NEW")'>0 D  Q  ; *** Bad etiology
 | 
|---|
| 71 |  .. S SPNETIOL=$P($G(^SPNL(154.02,SPNETIOL("OLD"),0)),U)
 | 
|---|
| 72 |  .. I SPNETIOL="" S SPNETIOL=SPNETIOL("OLD")
 | 
|---|
| 73 |  .. S X="Cannot convert ETIOLOGY '"_SPNETIOL
 | 
|---|
| 74 |  .. S X=X_"' for "_SPNDFN(0)_", SCD Registry record #"_SPND0
 | 
|---|
| 75 |  .. D ERR(X)
 | 
|---|
| 76 |  .. Q
 | 
|---|
| 77 |  . D CONV2
 | 
|---|
| 78 |  . Q
 | 
|---|
| 79 | MAIL ;
 | 
|---|
| 80 |  N DIFROM D KILL^XM
 | 
|---|
| 81 |  I SPNERR=0 D
 | 
|---|
| 82 |  . S ^TMP($J,"SPN ERROR",1)="Conversion finished, no problems found"
 | 
|---|
| 83 |  . Q
 | 
|---|
| 84 |  S XMY(DUZ)="",(XMDUN,XMDUZ)="<Spinal Cord Dysfunction Package>"
 | 
|---|
| 85 |  S XMTEXT="^TMP($J,""SPN ERROR"","
 | 
|---|
| 86 |  S XMSUB="SCD Registry Conversion"
 | 
|---|
| 87 |  D ^XMD
 | 
|---|
| 88 | EXIT ;
 | 
|---|
| 89 |  D KILL^XM
 | 
|---|
| 90 |  F SPN="ERROR","ETIOLOGY","NLOI","REGSTAT" K ^TMP($J,"SPN "_SPN)
 | 
|---|
| 91 |  K DA,DD,DIC,DIE,DINUM,DIR,DIRUT,DLAYGO,DO,DR,DTOUT,DUOUT,OFFSET,SPN
 | 
|---|
| 92 |  K SPND0,SPNDATA,SPNDATE,SPNDFN,SPNERR,SPNETIOL,SPNEXIT,SPNLCOMP
 | 
|---|
| 93 |  K SPNLINE,SPNNEW,SPNNEWD0,SPNNLOI,SPNOLD,SPNREGST,SPNTYPE,X,Y
 | 
|---|
| 94 |  K ZTDESC,ZTIO,ZTRTN,ZTSK
 | 
|---|
| 95 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | CONV1 ; *** Registration Status and Source of NLOI
 | 
|---|
| 99 |  K DA,DIE,DR
 | 
|---|
| 100 |  I (SPNREGST("NEW")]"")&(SPNREGST("NEW")'=SPNREGST("OLD")) D
 | 
|---|
| 101 |  . S DR=".03///^S X="_SPNREGST("NEW")
 | 
|---|
| 102 |  . Q
 | 
|---|
| 103 |  I (SPNNLOI("NEW")]"")&(SPNNLOI("NEW")'=SPNNLOI("OLD")) D
 | 
|---|
| 104 |  . S DR=$S($G(DR)]"":DR_";",1:"")_"2.3///^S X="_SPNNLOI("NEW")
 | 
|---|
| 105 |  . Q
 | 
|---|
| 106 |  I SPNLCOMP]"" D
 | 
|---|
| 107 |  . S DR=$S($G(DR)]"":DR_";",1:"")_"6.09///^S X="""_SPNLCOMP_""""
 | 
|---|
| 108 |  . Q
 | 
|---|
| 109 |  I $G(DR)]"" S DIE="^SPNL(154,",DA=SPND0 D ^DIE
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | CONV2 ; *** Etiology
 | 
|---|
| 113 |  I $O(^SPNL(154,SPND0,"E","B",SPNDATE,0))'>0 D
 | 
|---|
| 114 |  . K DA,DD,DIC,DINUM,DO
 | 
|---|
| 115 |  . S DIC="^SPNL(154,"_SPND0_",""E"",",DIC(0)="L"
 | 
|---|
| 116 |  . S DIC("P")=$P(^DD(154,4,0),U,2),DLAYGO=+DIC("P")
 | 
|---|
| 117 |  . S (D0,DA(1))=SPND0,X=SPNDATE
 | 
|---|
| 118 |  . I SPNETIOL("NEW") S DIC("DR")=".02///`"_SPNETIOL("NEW")
 | 
|---|
| 119 |  . D FILE^DICN
 | 
|---|
| 120 |  . Q
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | ERR(X) ;
 | 
|---|
| 123 |  S SPNERR=SPNERR+1
 | 
|---|
| 124 |  S ^TMP($J,"SPN ERROR",SPNERR)=X
 | 
|---|
| 125 |  Q
 | 
|---|